Seen using r143187 on Ubuntu Hardy on x86. regehr@john-home:~/volatile/tmp116$ current-gcc -O0 -c small.c small.c: In function ‘foo’: small.c:1: error: non-trivial conversion in unary operation long long unsigned int long long int iftmp.0 = -p_37.1; small.c:1: error: non-trivial conversion in unary operation long long unsigned int long long int iftmp.0 = -p_37; small.c:1: internal compiler error: verify_gimple failed Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. regehr@john-home:~/volatile/tmp116$ cat small.c unsigned long long foo (long long p_37) { return -(unsigned long long) (p_37 ? : p_37); } regehr@john-home:~/volatile/tmp116$ current-gcc -v Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../configure --program-prefix=current- --enable-languages=c,c++ --prefix=/home/regehr : (reconfigured) ../configure --program-prefix=current- --enable-languages=c,c++ --prefix=/home/regehr : (reconfigured) ../configure --program-prefix=current- --enable-languages=c,c++ --prefix=/home/regehr : (reconfigured) ../configure --program-prefix=current- --prefix=/home/regehr --enable-languages=c,c++ --no-create --no-recursion : (reconfigured) ../configure --program-prefix=current- --prefix=/home/regehr --enable-languages=c,c++ --no-create --no-recursion : (reconfigured) ../configure --program-prefix=current- --prefix=/home/regehr --enable-languages=c,c++ --no-create --no-recursion : (reconfigured) ../configure --program-prefix=current- --prefix=/home/regehr --enable-languages=c,c++ --no-create --no-recursion : (reconfigured) ../configure --program-prefix=current- --prefix=/home/regehr --enable-languages=c,c++ --no-create --no-recursion Thread model: posix gcc version 4.4.0 20090108 (experimental) (GCC)
fold_unary bug.
Created attachment 17063 [details] gcc44-pr38771.patch Fix.
Subject: Bug 38771 Author: jakub Date: Fri Jan 9 13:41:08 2009 New Revision: 143202 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=143202 Log: PR middle-end/38771 * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR, fold_convert arg0 operands to TREE_TYPE (op0) first. * gcc.c-torture/compile/pr38771.c: New test. Added: trunk/gcc/testsuite/gcc.c-torture/compile/pr38771.c Modified: trunk/gcc/ChangeLog trunk/gcc/fold-const.c trunk/gcc/testsuite/ChangeLog
Fixed.