Mercurial > hg > CbC > CbC_gcc
diff gcc/testsuite/gcc.dg/tree-ssa/vrp96.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp96.c Fri Oct 27 22:46:09 2017 +0900 @@ -0,0 +1,52 @@ +/* PR tree-optimization/65170 */ +/* { dg-do compile { target int128 } } */ +/* { dg-options "-O2 -fdump-tree-vrp1" } */ + +typedef unsigned __int128 T; +extern void link_error (void); +extern void required_check (void); + +T +foo (T b, T c) +{ + T a; + b &= 0xffffffffffffffffULL; + c &= 0xffffffffffffffffULL; + if (b < 7 || c < 7) + return 0; + a = b * c; + if (a < 49 || a > (((T) 0xfffffffffffffffeULL << 64) | 1)) + link_error (); + return a; +} + +T +bar (T b, T c) +{ + T a; + b &= 0xffffffffffffffffULL; + c &= 0xffffffffffffffffULL; + if (b < 7 || c < 7) + return 0; + a = b * c; + if (a == 49) + required_check (); + return a; +} + +T +baz (T b, T c) +{ + T a; + b &= 0xffffffffffffffffULL; + c &= 0xffffffffffffffffULL; + if (b < 7 || c < 7) + return 0; + a = b * c; + if (a == (((T) 0xfffffffffffffffeULL << 64) | 1)) + required_check (); + return a; +} + +/* { dg-final { scan-tree-dump-not "link_error" "vrp1" } } */ +/* { dg-final { scan-tree-dump-times "required_check" 2 "vrp1" } } */