From 6db081f1a815ed28c6639fcdb4c9c0c169808a4b Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Mon, 29 Nov 2004 02:21:28 +0000 Subject: [PATCH] [multiple changes] 2004-11-18 Andrew Pinski PR middle-end/18164 * gimplify.c (gimplify_asm_expr): If the length of an output operand is zero, do not process it, just let it go through. 2004-11-28 Andrew Pinski * gcc.dg/pr18164.c: New test. From-SVN: r91459 --- gcc/ChangeLog | 6 ++++++ gcc/gimplify.c | 5 ++++- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/pr18164.c | 7 +++++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/pr18164.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9b2dba2458c..6e2afa3cc24 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-11-18 Andrew Pinski + + PR middle-end/18164 + * gimplify.c (gimplify_asm_expr): If the length of an output operand + is zero, do not process it, just let it go through. + 2004-11-28 Richard Kenner Diego Novillo diff --git a/gcc/gimplify.c b/gcc/gimplify.c index c6256fa7ac7..ecd42717f05 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -3120,8 +3120,12 @@ gimplify_asm_expr (tree *expr_p, tree *pre_p, tree *post_p) ret = GS_ALL_DONE; for (i = 0, link = ASM_OUTPUTS (expr); link; ++i, link = TREE_CHAIN (link)) { + size_t constraint_len; oconstraints[i] = constraint = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (link))); + constraint_len = strlen (constraint); + if (constraint_len == 0) + continue; parse_output_constraint (&constraint, i, 0, 0, &allows_mem, &allows_reg, &is_inout); @@ -3145,7 +3149,6 @@ gimplify_asm_expr (tree *expr_p, tree *pre_p, tree *post_p) operands. */ tree input; char buf[10]; - size_t constraint_len = strlen (constraint); /* Turn the in/out constraint into an output constraint. */ char *p = xstrdup (constraint); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 94174d97259..78033c61b07 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-11-28 Andrew Pinski + + * gcc.dg/pr18164.c: New test. + 2004-11-28 Matt Kraai * gcc.dg/funroll-loops-all.c: New. diff --git a/gcc/testsuite/gcc.dg/pr18164.c b/gcc/testsuite/gcc.dg/pr18164.c new file mode 100644 index 00000000000..1b3651e7be0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr18164.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +void +f (void) +{ + int x; + asm ("" : "" (x)); /* {dg-error "output operand constraint lacks" } */ +} -- 2.30.2