diff options
author | Jeff Law <law@redhat.com> | 2004-06-10 21:22:30 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2004-06-10 21:22:30 -0600 |
commit | 3100d647250b4209a601763e7887936d25899f3f (patch) | |
tree | 1f7da268e22cc234d32ba6f2a4c85f419a465a4d /gcc | |
parent | da291c876347aad7c585d2a7fe8a463af74dd422 (diff) | |
download | gcc-3100d647250b4209a601763e7887936d25899f3f.zip gcc-3100d647250b4209a601763e7887936d25899f3f.tar.gz gcc-3100d647250b4209a601763e7887936d25899f3f.tar.bz2 |
fold-const.c (fold_inf_compare): Avoid creating non-gimple code when we are in gimple form.
* fold-const.c (fold_inf_compare): Avoid creating non-gimple
code when we are in gimple form.
* gcc.c-torture/compile/20040610-1.c: New test.
From-SVN: r82958
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fold-const.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20040610-1.c | 5 |
4 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5c44fc3..ca94a49 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-06-10 Jeff Law <law@redhat.com> + + * fold-const.c (fold_inf_compare): Avoid creating non-gimple + code when we are in gimple form. + 2004-06-10 Diego Novillo <dnovillo@redhat.com> * Makefile.in (tree-ssanames.o): Depend on TREE_FLOW_H. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index f5bd659..3a7053e 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -5214,6 +5214,12 @@ fold_inf_compare (enum tree_code code, tree type, tree arg0, tree arg1) if (! HONOR_NANS (mode)) return fold (build2 (neg ? GE_EXPR : LE_EXPR, type, arg0, build_real (TREE_TYPE (arg0), max))); + + /* The transformation below creates non-gimple code and thus is + not appropriate if we are in gimple form. */ + if (in_gimple_form) + return NULL_TREE; + temp = fold (build2 (neg ? LT_EXPR : GT_EXPR, type, arg0, build_real (TREE_TYPE (arg0), max))); return fold (build1 (TRUTH_NOT_EXPR, type, temp)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d54502a..fc42f8b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-06-10 Jeff Law <law@redhat.com> + + * gcc.c-torture/compile/20040610-1.c: New test. + 2004-06-11 Giovanni Bajo <giovannibajo@gcc.gnu.org> * g++.old-deja/g++.robertl/eb4.C: Adjust error markers. diff --git a/gcc/testsuite/gcc.c-torture/compile/20040610-1.c b/gcc/testsuite/gcc.c-torture/compile/20040610-1.c new file mode 100644 index 0000000..37fb65c --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20040610-1.c @@ -0,0 +1,5 @@ +int foo (float x) +{ + float i = __builtin_inff (); + return x != i; +} |