diff options
author | Roger Sayle <roger@nextmovesoftware.com> | 2023-01-11 16:54:58 +0000 |
---|---|---|
committer | Roger Sayle <roger@nextmovesoftware.com> | 2023-01-11 16:54:58 +0000 |
commit | 98837d6e79dd27c15f5218f3f1ddf838cda4796c (patch) | |
tree | fde16497c0e452d16b312eee25175a6a745a0882 /gcc/function.cc | |
parent | c7279270a2deda81eaeba37a87d721bee0ed6004 (diff) | |
download | gcc-98837d6e79dd27c15f5218f3f1ddf838cda4796c.zip gcc-98837d6e79dd27c15f5218f3f1ddf838cda4796c.tar.gz gcc-98837d6e79dd27c15f5218f3f1ddf838cda4796c.tar.bz2 |
PR tree-optimization/71343: Value number X<<2 as X*4.
This patch is the second part of a fix for PR tree-optimization/71343,
that implements Richard Biener's suggestion of using tree-ssa's value
numbering instead of match.pd. The change is that when assigning a
value number for the expression X<<C, we actually look-up or insert
the value number for the multiplication X*(1<<C). This elegantly
handles the fact that we (intentionally) don't canonicalize these as
equivalent in GIMPLE, and the optimization/equivalence in PR 71343 now
happens by (tree-ssa SCCVN) magic.
2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
gcc/ChangeLog
PR tree-optimization/71343
* tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
the value number of the expression X << C the same as the value
number for the multiplication X * (1<<C).
gcc/testsuite/ChangeLog
PR tree-optimization/71343
* gcc.dg/pr71343-2.c: New test case.
Diffstat (limited to 'gcc/function.cc')
0 files changed, 0 insertions, 0 deletions