diff options
author | Richard Biener <rguenther@suse.de> | 2020-09-18 09:22:57 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2020-09-18 09:22:57 +0200 |
commit | 0f6150a5d368fc30540dac31e29f1d6d40f207d3 (patch) | |
tree | 4950cf039a69b990080203d23b75979879c42f14 /gcc | |
parent | 080ddd8a81ea39e92542fa7d7e2d7d27ee741710 (diff) | |
download | gcc-0f6150a5d368fc30540dac31e29f1d6d40f207d3.zip gcc-0f6150a5d368fc30540dac31e29f1d6d40f207d3.tar.gz gcc-0f6150a5d368fc30540dac31e29f1d6d40f207d3.tar.bz2 |
tree-optimization/97089 - fix bogus unsigned division replacement
This fixes bogus replacing of an unsigned (-x)/y division by
-(x/y).
2020-09-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/97089
* tree-ssa-sccvn.c (visit_nary_op): Do not replace unsigned
divisions.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree-ssa-sccvn.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index 64f1e8c..014b7bd 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -4824,8 +4824,11 @@ visit_nary_op (tree lhs, gassign *stmt) } } break; - case RDIV_EXPR: case TRUNC_DIV_EXPR: + if (TYPE_UNSIGNED (type)) + break; + /* Fallthru. */ + case RDIV_EXPR: case MULT_EXPR: /* Match up ([-]a){/,*}([-])b with v=a{/,*}b, replacing it with -v. */ if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)) |