aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple.h
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2012-11-28 09:27:10 +0000
committerRichard Biener <rguenther@suse.de>2012-11-28 09:27:10 +0000
commitd5c4dfb70a2156a2da3605877a0c2960b1f32cde (patch)
tree708df4dc743c4f6d7778396707a8a1254049b1dd /gcc/gimple.h
parentca2dd887382c9ea98b92685bf894a815200dced0 (diff)
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. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@193882 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gimple.h')
-rw-r--r--gcc/gimple.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/gimple.h b/gcc/gimple.h
index 2d6cef4f4d6..5fcaac60d08 100644
--- a/gcc/gimple.h
+++ b/gcc/gimple.h
@@ -979,6 +979,8 @@ extern enum gimplify_status gimplify_expr (tree *, gimple_seq *, gimple_seq *,
bool (*) (tree), fallback_t);
extern void gimplify_type_sizes (tree, gimple_seq *);
extern void gimplify_one_sizepos (tree *, gimple_seq *);
+enum gimplify_status gimplify_self_mod_expr (tree *, gimple_seq *, gimple_seq *,
+ bool, tree);
extern bool gimplify_stmt (tree *, gimple_seq *);
extern gimple gimplify_body (tree, bool);
extern void push_gimplify_context (struct gimplify_ctx *);