summaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop-manip.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2012-11-28 09:27:10 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-11-28 09:27:10 +0000
commitcc3c4f62f32c2945e5bbd85c084dae1f7046280b (patch)
tree708df4dc743c4f6d7778396707a8a1254049b1dd /gcc/tree-vect-loop-manip.c
parentb1c2b51b6662adebbc37c6590d697e9fe3439076 (diff)
downloadgcc-cc3c4f62f32c2945e5bbd85c084dae1f7046280b.tar.gz
re PR c/35634 (operand of pre-/postin-/decrement not promoted)
2012-11-28 Richard Biener <rguenther@suse.de> PR c/35634 * gimple.h (gimplify_self_mod_expr): Declare. * gimplify.c (gimplify_self_mod_expr): Export. Take a different type for performing the arithmetic in. (gimplify_expr): Adjust. * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Strip sign conversions we can re-apply after adjusting the IV. c-family/ * c-gimplify.c (c_gimplify_expr): Gimplify self-modify expressions here and use a type with proper overflow behavior for types that would need to be promoted for the arithmetic. * gcc.dg/torture/pr35634.c: New testcase. * g++.dg/torture/pr35634.C: Likewise. * gcc.dg/vect/pr18536.c: Mark worker function noinline. From-SVN: r193882
Diffstat (limited to 'gcc/tree-vect-loop-manip.c')
-rw-r--r--gcc/tree-vect-loop-manip.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c
index 34bde34ef25..d3f23c995d6 100644
--- a/gcc/tree-vect-loop-manip.c
+++ b/gcc/tree-vect-loop-manip.c
@@ -1727,6 +1727,7 @@ vect_can_advance_ivs_p (loop_vec_info loop_vinfo)
return false;
}
+ STRIP_NOPS (access_fn);
if (dump_enabled_p ())
{
dump_printf_loc (MSG_NOTE, vect_location,