On Linux/x86-64, revision 146839 gave FAIL: gcc.dg/pr34989-1.c (internal compiler error) FAIL: gcc.dg/pr34989-1.c (internal compiler error) FAIL: gcc.dg/pr34989-1.c (test for excess errors) FAIL: gcc.dg/pr34989-1.c (test for excess errors) FAIL: gcc.dg/struct/wo_prof_double_malloc.c (internal compiler error) FAIL: gcc.dg/struct/wo_prof_double_malloc.c (internal compiler error) FAIL: gcc.dg/struct/wo_prof_double_malloc.c (test for excess errors) FAIL: gcc.dg/struct/wo_prof_double_malloc.c (test for excess errors) FAIL: gcc.dg/vect/pr32421.c (internal compiler error) FAIL: gcc.dg/vect/pr32421.c (internal compiler error) FAIL: gcc.dg/vect/pr32421.c (test for excess errors) FAIL: gcc.dg/vect/pr32421.c (test for excess errors) FAIL: gcc.target/i386/pr37101.c (internal compiler error) FAIL: gcc.target/i386/pr37101.c (internal compiler error) FAIL: gcc.target/i386/pr37101.c (test for excess errors) FAIL: gcc.target/i386/pr37101.c (test for excess errors) FAIL: libgomp.c++/task-4.C -O (internal compiler error) FAIL: libgomp.c++/task-4.C -O (internal compiler error) FAIL: libgomp.c++/task-4.C -O (test for excess errors) FAIL: libgomp.c++/task-4.C -O (test for excess errors) ERROR: gcc.target/i386/pr37101.c: error executing dg-final: couldn't open "pr37101.s": no such file or directory ERROR: gcc.target/i386/pr37101.c: error executing dg-final: couldn't open "pr37101.s": no such file or directory Revision 146829 is OK.
Revision 146831: http://gcc.gnu.org/ml/gcc-cvs/2009-04/msg01473.html is the cause.
On Linux/ia64, revision 146841 gave FAIL: gcc.c-torture/execute/20050604-1.c compilation, -O1 (internal compiler error) FAIL: gcc.c-torture/execute/20050604-1.c compilation, -O2 (internal compiler error) FAIL: gcc.c-torture/execute/20050604-1.c compilation, -O3 -fomit-frame-pointer (internal compiler error) FAIL: gcc.c-torture/execute/20050604-1.c compilation, -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (internal compiler error) FAIL: gcc.c-torture/execute/20050604-1.c compilation, -O3 -fomit-frame-pointer -funroll-loops (internal compiler error) FAIL: gcc.c-torture/execute/20050604-1.c compilation, -O3 -g (internal compiler error) FAIL: gcc.c-torture/execute/20050604-1.c compilation, -Os (internal compiler error) FAIL: gcc.dg/pr32912-2.c (internal compiler error) FAIL: gcc.dg/pr32912-2.c (test for excess errors) FAIL: gcc.dg/pr32912-3.c (internal compiler error) FAIL: gcc.dg/pr32912-3.c (test for excess errors) FAIL: gcc.dg/pr32912-3.c scan-tree-dump-not optimized "~{": dump file does not exist FAIL: gcc.dg/pr34989-1.c (internal compiler error) FAIL: gcc.dg/pr34989-1.c (test for excess errors) FAIL: gcc.dg/struct/wo_prof_double_malloc.c (internal compiler error) FAIL: gcc.dg/struct/wo_prof_double_malloc.c (test for excess errors) FAIL: gcc.dg/torture/pr21817-1.c -O1 (internal compiler error) FAIL: gcc.dg/torture/pr21817-1.c -O1 (test for excess errors) FAIL: gcc.dg/torture/pr21817-1.c -O2 (internal compiler error) FAIL: gcc.dg/torture/pr21817-1.c -O2 (test for excess errors) FAIL: gcc.dg/torture/pr21817-1.c -O3 -fomit-frame-pointer (internal compiler error) FAIL: gcc.dg/torture/pr21817-1.c -O3 -fomit-frame-pointer (test for excess errors) FAIL: gcc.dg/torture/pr21817-1.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (internal compiler error) FAIL: gcc.dg/torture/pr21817-1.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) FAIL: gcc.dg/torture/pr21817-1.c -O3 -fomit-frame-pointer -funroll-loops (internal compiler error) FAIL: gcc.dg/torture/pr21817-1.c -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) FAIL: gcc.dg/torture/pr21817-1.c -O3 -g (internal compiler error) FAIL: gcc.dg/torture/pr21817-1.c -O3 -g (test for excess errors) FAIL: gcc.dg/torture/pr21817-1.c -Os (internal compiler error) FAIL: gcc.dg/torture/pr21817-1.c -Os (test for excess errors) FAIL: libgomp.c++/task-4.C -O (internal compiler error) FAIL: libgomp.c++/task-4.C -O (test for excess errors) Revision 146825 is OK.
There error I get on cc.c-torture/execute/20050604-1.c and gcc.dg/torture/pr21817-1.c with optimization level 1 or greater is: x.c:6: error: invalid expression for min lvalue D.2000_6 = BIT_FIELD_REF <{ 1.0e+9, 1.0e+9, 1.0e+9, 1.0e+9 }, 64, 64>; pr21817.c is pretty small already but I did cut it down to: typedef float v4sf __attribute__((vector_size(16))); v4sf value; void foo(void) { value += (v4sf){1e9f,1e9f,1e9f,1e9f}; } It is not clear if we have generated bad gimple or if the verifier is wrong.
(In reply to comment #3) > There error I get on cc.c-torture/execute/20050604-1.c and > gcc.dg/torture/pr21817-1.c with optimization level 1 or greater is: > > x.c:6: error: invalid expression for min lvalue > D.2000_6 = BIT_FIELD_REF <{ 1.0e+9, 1.0e+9, 1.0e+9, 1.0e+9 }, 64, 64>; > > pr21817.c is pretty small already but I did cut it down to: > > typedef float v4sf __attribute__((vector_size(16))); > v4sf value; > void foo(void) > { > value += (v4sf){1e9f,1e9f,1e9f,1e9f}; > } > > It is not clear if we have generated bad gimple or if the verifier is wrong. Part of both, CONSTRUCTOR for VECTOR_TYPE with CONSTANT set is a valid invariant but really BIT_FIELD_REF <{ 1.0e+9, 1.0e+9, 1.0e+9, 1.0e+9 }, 64, 64> should simplify to just 1.0e+9.
Subject: Re: [4.5 Regression] Revision 146831 caused many test failures On Tue, 28 Apr 2009, pinskia at gcc dot gnu dot org wrote: > (In reply to comment #3) > > There error I get on cc.c-torture/execute/20050604-1.c and > > gcc.dg/torture/pr21817-1.c with optimization level 1 or greater is: > > > > x.c:6: error: invalid expression for min lvalue > > D.2000_6 = BIT_FIELD_REF <{ 1.0e+9, 1.0e+9, 1.0e+9, 1.0e+9 }, 64, 64>; > > > > pr21817.c is pretty small already but I did cut it down to: > > > > typedef float v4sf __attribute__((vector_size(16))); > > v4sf value; > > void foo(void) > > { > > value += (v4sf){1e9f,1e9f,1e9f,1e9f}; > > } > > > > It is not clear if we have generated bad gimple or if the verifier is wrong. > > Part of both, CONSTRUCTOR for VECTOR_TYPE with CONSTANT set is a valid > invariant but really BIT_FIELD_REF <{ 1.0e+9, 1.0e+9, 1.0e+9, 1.0e+9 }, 64, 64> > should simplify to just 1.0e+9. It indeed doesn't look invalid from a first glance. But shouldn't this be VECTOR_CST instead of CONSTRUCTOR? The question is of course what the type of D.2000 is. floats are certainly not 64bits at least. Richard.
;; Function foo (foo) foo () { vector float D.2002; vector float D.2001; vector float D.2000; vector float D.1999; vector float D.1998; vector float D.1997; v4sf value.1; v4sf value.0; <bb 2>: value.0_2 = value; D.1997_3 = BIT_FIELD_REF <{ 1.0e+9, 1.0e+9, 1.0e+9, 1.0e+9 }, 64, 0>; D.1998_4 = BIT_FIELD_REF <value.0_2, 64, 0>; D.1999_5 = D.1997_3 + D.1998_4; D.2000_6 = BIT_FIELD_REF <{ 1.0e+9, 1.0e+9, 1.0e+9, 1.0e+9 }, 64, 64>; D.2001_7 = BIT_FIELD_REF <value.0_2, 64, 64>; D.2002_8 = D.2000_6 + D.2001_7; value.1_9 = {D.1999_5, D.2002_8}; value = value.1_9; return; }
Subject: Re: [4.5 Regression] Revision 146831 caused many test failures On Tue, 28 Apr 2009, sje at cup dot hp dot com wrote: > ------- Comment #6 from sje at cup dot hp dot com 2009-04-28 21:25 ------- > ;; Function foo (foo) > > foo () > { > vector float D.2002; > vector float D.2001; > vector float D.2000; > vector float D.1999; > vector float D.1998; > vector float D.1997; > v4sf value.1; > v4sf value.0; > <bb 2>: > value.0_2 = value; > D.1997_3 = BIT_FIELD_REF <{ 1.0e+9, 1.0e+9, 1.0e+9, 1.0e+9 }, 64, 0>; > D.1998_4 = BIT_FIELD_REF <value.0_2, 64, 0>; > D.1999_5 = D.1997_3 + D.1998_4; > D.2000_6 = BIT_FIELD_REF <{ 1.0e+9, 1.0e+9, 1.0e+9, 1.0e+9 }, 64, 64>; > D.2001_7 = BIT_FIELD_REF <value.0_2, 64, 64>; > D.2002_8 = D.2000_6 + D.2001_7; > value.1_9 = {D.1999_5, D.2002_8}; > value = value.1_9; > return; That looks all odd. vector float is supposedly v2sf here. Especially the definition of value.1_9 looks odd. I suppose this is our generic vector support at work? Richard.
Ok, so one issue with the verifier is that it doesn't distinguish between lvalues and rvalues when verifying verify_types_in_gimple_reference. I will fix this.
The only expected fails left should now be FAIL: gcc.dg/pr34989-1.c (internal compiler error) FAIL: gcc.dg/pr34989-1.c (internal compiler error) FAIL: gcc.dg/pr34989-1.c (test for excess errors) FAIL: gcc.dg/pr34989-1.c (test for excess errors) FAIL: gcc.dg/struct/wo_prof_double_malloc.c (internal compiler error) FAIL: gcc.dg/struct/wo_prof_double_malloc.c (internal compiler error) FAIL: gcc.dg/struct/wo_prof_double_malloc.c (test for excess errors) FAIL: gcc.dg/struct/wo_prof_double_malloc.c (test for excess errors) all --combine ones, and FAIL: libgomp.c++/task-4.C -O (internal compiler error) FAIL: libgomp.c++/task-4.C -O (internal compiler error) FAIL: libgomp.c++/task-4.C -O (test for excess errors) FAIL: libgomp.c++/task-4.C -O (test for excess errors) a bug wrt missing gimplification of VLA array type bounds. This bug is now very confusing (as are all "revision blabla caused many regression" bugs). I will open two new bugs for the above and close this one.
Three actually. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39958 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39959 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39960 Fixed.