Comment 1 for bug 843775

Revision history for this message
In , Andrew Stubbs (ams-codesourcery) wrote :

The widening mulitply pass creates a bad expression when using constants with types that don't match the other operand:

(This testcase is reduced from the Linux kernel)

long long test (unsigned int sec, unsigned long long nsecs)
{
 return (long long)(long)sec * 1000000000L + (long long)(unsigned
long)nsecs;
}

dummy.i: In function ‘test’:
dummy.i:2:11: error: type mismatch in widening multiply-accumulate
expression
long long int
unsigned int
long int
long long int
D.4708_8 = WIDEN_MULT_PLUS_EXPR <sec_1(D), 1000000000, D.4720_11>;

dummy.i:2:11: internal compiler error: verify_gimple failed