re PR middle-end/37731 (long long may not work correctly on 32bit host)
gcc/ 2008-10-07 H.J. Lu <hongjiu.lu@intel.com> PR middle-end/37731 * expmed.c (expand_mult): Properly check DImode constant in CONST_DOUBLE. gcc/testsuite/ 2008-10-07 H.J. Lu <hongjiu.lu@intel.com> PR middle-end/37731 * gcc.dg/torture/pr37731-1.c: New. * gcc.dg/torture/pr37731-2.c: Likewise. From-SVN: r140947
This commit is contained in:
parent
c7c79a09d6
commit
aee857a2f4
5 changed files with 48 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2008-10-07 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR middle-end/37731
|
||||
* expmed.c (expand_mult): Properly check DImode constant in
|
||||
CONST_DOUBLE.
|
||||
|
||||
2008-10-07 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/37738
|
||||
|
|
|
@ -3075,7 +3075,8 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
|
|||
{
|
||||
/* If we are multiplying in DImode, it may still be a win
|
||||
to try to work with shifts and adds. */
|
||||
if (CONST_DOUBLE_HIGH (op1) == 0)
|
||||
if (CONST_DOUBLE_HIGH (op1) == 0
|
||||
&& CONST_DOUBLE_LOW (op1) > 0)
|
||||
coeff = CONST_DOUBLE_LOW (op1);
|
||||
else if (CONST_DOUBLE_LOW (op1) == 0
|
||||
&& EXACT_POWER_OF_2_OR_ZERO_P (CONST_DOUBLE_HIGH (op1)))
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2008-10-07 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR middle-end/37731
|
||||
* gcc.dg/torture/pr37731-1.c: New.
|
||||
* gcc.dg/torture/pr37731-2.c: Likewise.
|
||||
|
||||
2008-10-07 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/37738
|
||||
|
|
17
gcc/testsuite/gcc.dg/torture/pr37731-1.c
Normal file
17
gcc/testsuite/gcc.dg/torture/pr37731-1.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
/* { dg-do run } */
|
||||
|
||||
extern void abort ();
|
||||
|
||||
unsigned long long xh = 1;
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
unsigned long long yh = 0xffffffffull;
|
||||
unsigned long long z = xh * yh;
|
||||
|
||||
if (z != yh)
|
||||
abort ();
|
||||
|
||||
return 0;
|
||||
}
|
17
gcc/testsuite/gcc.dg/torture/pr37731-2.c
Normal file
17
gcc/testsuite/gcc.dg/torture/pr37731-2.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
/* { dg-do run } */
|
||||
|
||||
extern void abort ();
|
||||
|
||||
long long xh = 1;
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
long long yh = 0xffffffffll;
|
||||
long long z = xh * yh;
|
||||
|
||||
if (z != yh)
|
||||
abort ();
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Reference in a new issue