There is no need to try different alignment on variable of error_mark_node.
OK for trunk if there is no regression? Thanks. H.J. -- gcc/ PR target/66810 * varasm.c (align_variable): Don't try different alignment on variable of error_mark_node. gcc/testsuite/ PR target/66810 * gcc.target/i386/pr66810.c: New test. --- gcc/testsuite/gcc.target/i386/pr66810.c | 10 ++++++++++ gcc/varasm.c | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr66810.c diff --git a/gcc/testsuite/gcc.target/i386/pr66810.c b/gcc/testsuite/gcc.target/i386/pr66810.c new file mode 100644 index 0000000..4778b37 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr66810.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target ia32 } } */ +/* { dg-options "-mno-sse -mno-mmx -miamcu" } */ + +int vv; + +void +i (void) +{ + static int a[vv]; /* { dg-error "storage size" } */ +} diff --git a/gcc/varasm.c b/gcc/varasm.c index b69b3a3..be33cb4 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1016,7 +1016,8 @@ align_variable (tree decl, bool dont_output_data) align = MAX_OFILE_ALIGNMENT; } - if (! DECL_USER_ALIGN (decl)) + /* Don't try different alignment for error_mark_node. */ + if (! DECL_USER_ALIGN (decl) && TREE_TYPE (decl) != error_mark_node) { #ifdef DATA_ABI_ALIGNMENT unsigned int data_abi_align -- 2.4.3