aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.h
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-09-12 20:28:20 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2018-09-12 20:28:20 +0200
commitc0cbe5260fab673f7cd755df2226422b88b28837 (patch)
tree80f2a40dc45418305b5aabf0aed406735df224de /gcc/expr.h
parent8e36332cf65b4ec5a1ea6b4b3a6ae8cb6ed9f455 (diff)
downloadgcc-c0cbe5260fab673f7cd755df2226422b88b28837.zip
gcc-c0cbe5260fab673f7cd755df2226422b88b28837.tar.gz
gcc-c0cbe5260fab673f7cd755df2226422b88b28837.tar.bz2
re PR middle-end/82853 (Optimize x % 3 == 0 without modulo)
PR middle-end/82853 * expr.h (maybe_optimize_mod_cmp): Declare. * expr.c (mod_inv): New function. (maybe_optimize_mod_cmp): New function. (do_store_flag): Use it. * cfgexpand.c (expand_gimple_cond): Likewise. * gcc.target/i386/pr82853-1.c: New test. * gcc.target/i386/pr82853-2.c: New test. From-SVN: r264248
Diffstat (limited to 'gcc/expr.h')
-rw-r--r--gcc/expr.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/expr.h b/gcc/expr.h
index 4177de8..19028f0 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -290,6 +290,8 @@ expand_normal (tree exp)
a string constant. */
extern tree string_constant (tree, tree *, tree *, tree *);
+extern enum tree_code maybe_optimize_mod_cmp (enum tree_code, tree *, tree *);
+
/* Two different ways of generating switch statements. */
extern int try_casesi (tree, tree, tree, tree, rtx, rtx, rtx, profile_probability);
extern int try_tablejump (tree, tree, tree, tree, rtx, rtx, profile_probability);