For the lower vrp bound to be 2/-2, unsigned ints must be 4 bytes wide. This
breaks targets like avr. Explicitly using __UINT32_TYPE__ (behind a typedef)
makes the testcase pass for all targets.
gcc/testsuite/ChangeLog:
2016-09-21 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
* gcc.dg/tree-ssa/pr64130.c: Use __UINT32_TYPE__ instead of int.
From-SVN: r240300
+2016-09-21 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
+
+ * gcc.dg/tree-ssa/pr64130.c: Use __UINT32_TYPE__ instead of int.
+
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
PR tree-optimization/72835
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-evrp" } */
-int funsigned (unsigned a)
+__extension__ typedef __UINT32_TYPE__ uint32_t;
+
+int funsigned (uint32_t a)
{
return 0x1ffffffffL / a == 0;
}
-int funsigned2 (unsigned a)
+int funsigned2 (uint32_t a)
{
if (a < 1) return 1;
return (-1 * 0x1ffffffffL) / a == 0;