diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-09-12 20:28:20 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-09-12 20:28:20 +0200 |
commit | c0cbe5260fab673f7cd755df2226422b88b28837 (patch) | |
tree | 80f2a40dc45418305b5aabf0aed406735df224de /gcc/expr.h | |
parent | 8e36332cf65b4ec5a1ea6b4b3a6ae8cb6ed9f455 (diff) | |
download | gcc-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.h | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -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); |