summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-ivopts.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2011-01-11 14:10:54 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2011-01-11 14:10:54 +0000
commit6623b33f7d16cc941701e878e2de0d11b74d20b5 (patch)
tree7d96c9b801698d379786ad586c07da8c7dc931f8 /gcc/tree-ssa-loop-ivopts.c
parent140b70da5479420fcc50571743d42d72d481c0c4 (diff)
downloadgcc-6623b33f7d16cc941701e878e2de0d11b74d20b5.tar.gz
* PR tree-optimization/47086
* tree-ssa-loop-ivopts.c (find_givs_in_stmt_scev): Do not record IVs from statements that might throw. * PR tree-optimization/47086 * gcc.dg/pr47086.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168659 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r--gcc/tree-ssa-loop-ivopts.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index 59e2fef5976..479b46fb8dc 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -1,5 +1,5 @@
/* Induction variable optimizations.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
@@ -1102,6 +1102,12 @@ find_givs_in_stmt_scev (struct ivopts_data *data, gimple stmt, affine_iv *iv)
|| contains_abnormal_ssa_name_p (iv->step))
return false;
+ /* If STMT could throw, then do not consider STMT as defining a GIV.
+ While this will suppress optimizations, we can not safely delete this
+ GIV and associated statements, even if it appears it is not used. */
+ if (stmt_could_throw_p (stmt))
+ return false;
+
return true;
}