diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 743b89b4a552..e6caaeb5071b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-06-16 Jan Hubicka + + * cgraphunit.c (cgraph_expand_pending_functions): Give up at + syntax errors. + (cgraph_analyze_function): Likewise. + 2008-06-16 Jan Hubicka * cgraph.h (cgraph_mark_if_needed): New function. diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index dec221317127..b03913dc5bd8 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -496,7 +496,7 @@ cgraph_assemble_pending_functions (void) { bool output = false; - if (flag_unit_at_a_time) + if (flag_unit_at_a_time || errorcount || sorrycount) return false; cgraph_output_pending_asms (); @@ -857,7 +857,7 @@ cgraph_analyze_function (struct cgraph_node *node) cgraph_lower_function (node); node->analyzed = true; - if (!flag_unit_at_a_time) + if (!flag_unit_at_a_time && !sorrycount && !errorcount) { bitmap_obstack_initialize (NULL); tree_register_cfg_hooks (); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ff03e2f96680..6d2a7952d4c0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2008-06-16 Jan Hubicka + + * gcc.dg/asm-wide-1.c: Do not require extra errors we output + confused by earlier errors. + * gcc.target/i386/sseregparm-2.c: Remove markers for errors not + output at parsing time. + * gcc.target/i386/sseregparm-8.c: Move here compile time errors + from gcc.target/i386/sseregparm-2.c. + * gcc.dg/weak/weak-6.c: Do not require extra errors we output + confused by earlier errors. + * gcc.dg/weak/weak-7.c: Likewise. + 2008-06-18 Daniel Kraft PR fortran/36517, fortran/36492 diff --git a/gcc/testsuite/gcc.dg/asm-wide-1.c b/gcc/testsuite/gcc.dg/asm-wide-1.c index 5cc6b0784bbf..a42271fd4b1a 100644 --- a/gcc/testsuite/gcc.dg/asm-wide-1.c +++ b/gcc/testsuite/gcc.dg/asm-wide-1.c @@ -30,6 +30,3 @@ f (void) /* { dg-error "output" "output" { target *-*-* } 16 } */ /* { dg-error "output" "output" { target *-*-* } 18 } */ /* { dg-error "output" "output" { target *-*-* } 20 } */ -/* { dg-warning "match" "match" { target *-*-* } 21 } */ -/* { dg-error "register" "register" { target *-*-* } 23 } */ -/* { dg-error "register" "register" { target *-*-* } 25 } */ diff --git a/gcc/testsuite/gcc.dg/weak/weak-6.c b/gcc/testsuite/gcc.dg/weak/weak-6.c index 711003ccd037..3a660f71ba6e 100644 --- a/gcc/testsuite/gcc.dg/weak/weak-6.c +++ b/gcc/testsuite/gcc.dg/weak/weak-6.c @@ -3,5 +3,4 @@ extern void * foo (void); void * foo (void) { return (void *)foo; } /* { dg-error "precede" } */ -/* { dg-error "function pointer" "pointer conversion" { target *-*-* } 5 } */ #pragma weak foo diff --git a/gcc/testsuite/gcc.dg/weak/weak-7.c b/gcc/testsuite/gcc.dg/weak/weak-7.c index 7c4a4dc7c258..031f830783f6 100644 --- a/gcc/testsuite/gcc.dg/weak/weak-7.c +++ b/gcc/testsuite/gcc.dg/weak/weak-7.c @@ -3,5 +3,4 @@ extern void * foo (void); void * foo (void) { return (void *)foo; } /* { dg-error "precede" } */ -/* { dg-error "function pointer" "pointer conversion" { target *-*-* } 5 } */ extern void * foo (void) __attribute__((weak)); diff --git a/gcc/testsuite/gcc.target/i386/sseregparm-2.c b/gcc/testsuite/gcc.target/i386/sseregparm-2.c index 84bf58925c70..cca98ca82ba7 100644 --- a/gcc/testsuite/gcc.target/i386/sseregparm-2.c +++ b/gcc/testsuite/gcc.target/i386/sseregparm-2.c @@ -10,8 +10,8 @@ extern double d; extern float f; void test(void) { - f = essef(f); /* { dg-error "SSE" } */ - d = essed(d); /* { dg-error "SSE" } */ - f = ssef(f); /* { dg-error "SSE" } */ - d = ssed(d); /* { dg-error "SSE" } */ + f = essef(f); + d = essed(d); + f = ssef(f); + d = ssed(d); } diff --git a/gcc/testsuite/gcc.target/i386/sseregparm-8.c b/gcc/testsuite/gcc.target/i386/sseregparm-8.c new file mode 100644 index 000000000000..3a9d345a96b4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sseregparm-8.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mno-sse" } */ +/* { dg-require-effective-target ilp32 } */ + +float essef(float) __attribute__((sseregparm)); +double essed(double) __attribute__((sseregparm)); +float __attribute__((sseregparm)) ssef(float f); +double __attribute__((sseregparm)) ssed(double d); +extern double d; +extern float f; +void test(void) +{ + f = essef(f); /* { dg-error "SSE" } */ + d = essed(d); /* { dg-error "SSE" } */ + f = ssef(f); /* { dg-error "SSE" } */ + d = ssed(d); /* { dg-error "SSE" } */ +}