diff options
author | Jakub Jelinek <jakub@redhat.com> | 2007-09-05 01:29:58 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2007-09-05 01:29:58 +0200 |
commit | d3079c44fc5087b8e6f39379062a4b50e42bf49d (patch) | |
tree | 47fa3e7b4caef2ebb6aed121cfd5527f9d330763 /gcc/tree-data-ref.c | |
parent | ce629d4d9819052db871ac510c010d7321ad1b30 (diff) | |
download | gcc-d3079c44fc5087b8e6f39379062a4b50e42bf49d.zip gcc-d3079c44fc5087b8e6f39379062a4b50e42bf49d.tar.gz gcc-d3079c44fc5087b8e6f39379062a4b50e42bf49d.tar.bz2 |
re PR tree-optimization/33017 (tree check fail for legal code)
PR tree-optimization/33017
* tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
recurse for pure or const function calls.
* gcc.dg/pr33017.c: New test.
From-SVN: r128107
Diffstat (limited to 'gcc/tree-data-ref.c')
-rw-r--r-- | gcc/tree-data-ref.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index 6ad2e96..720c94d 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -574,7 +574,8 @@ split_constant_offset (tree exp, tree *var, tree *off) if (!TREE_SIDE_EFFECTS (def_stmt_rhs) && EXPR_P (def_stmt_rhs) - && !REFERENCE_CLASS_P (def_stmt_rhs)) + && !REFERENCE_CLASS_P (def_stmt_rhs) + && !get_call_expr_in (def_stmt_rhs)) { split_constant_offset (def_stmt_rhs, &var0, &off0); var0 = fold_convert (type, var0); |