On Nov 8, 2018, Jeff Law <l...@redhat.com> wrote: >> PR rtl-optimization/86438 >> * gcc.dg/torture/pr86438.c: New. > OK.
Thanks. I ended up tweaking the test a bit further, when it occurred to me that I might be able to trigger the same problem with -m32, but no such luck. Here's the test I'm installing, instead of the one I'd posted. diff --git a/gcc/testsuite/gcc.dg/torture/pr86438.c b/gcc/testsuite/gcc.dg/torture/pr86438.c new file mode 100644 index 000000000000..3e95515ae6a6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr86438.c @@ -0,0 +1,29 @@ +/* { dg-do run } */ + +typedef unsigned int u32; +#if __SIZEOF_INT128__ +typedef unsigned long long u64; +typedef unsigned __int128 u128; +#else +typedef unsigned long u64; +typedef unsigned long long u128; +#endif + +u128 g; + +static __attribute__ ((noinline, noclone)) +void check (u64 a, u64 b) +{ + if (a != 0 || b != 4) + __builtin_abort (); +} + +int +main (void) +{ + u64 d = (g ? 5 : 4); + u32 f = __builtin_sub_overflow_p (d, (u128) d, (u64) 0); + u128 x = g + f + d; + check (x >> (sizeof (u64) * __CHAR_BIT__), x); + return 0; +} -- Alexandre Oliva, freedom fighter https://FSFLA.org/blogs/lxo Be the change, be Free! FSF Latin America board member GNU Toolchain Engineer Free Software Evangelist Hay que enGNUrecerse, pero sin perder la terGNUra jamás-GNUChe