diff options
author | Andrew Pinski <apinski@marvell.com> | 2021-06-05 21:25:58 -0700 |
---|---|---|
committer | Andrew Pinski <apinski@marvell.com> | 2021-06-09 12:19:43 -0700 |
commit | d4faa36e7540c573c5dc17850bcd938d0900b2e9 (patch) | |
tree | af39bfd8f989e69c6500ca2c01ee2d140994db8a /libgcc | |
parent | 87e1eecaa0d96c46eab948960904fee618f926c4 (diff) | |
download | gcc-d4faa36e7540c573c5dc17850bcd938d0900b2e9.zip gcc-d4faa36e7540c573c5dc17850bcd938d0900b2e9.tar.gz gcc-d4faa36e7540c573c5dc17850bcd938d0900b2e9.tar.bz2 |
Fix PR 100925: Limit some a?CST1:CST2 optimizations to intergal types only
The problem here is with offset (and pointer) types is we produce
a negative expression when this optimization hits.
It is easier to disable this optimization for all non-integeral types
instead of finding an integer type which is the same precission as the
type to do the negative expression on it.
OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.
gcc/ChangeLog:
PR tree-optimization/100925
* match.pd (a ? CST1 : CST2): Limit transformations
that would produce a negative to integeral types only.
Change !POINTER_TYPE_P to INTEGRAL_TYPE_P also.
gcc/testsuite/ChangeLog:
* g++.dg/torture/pr100925.C: New test.
Diffstat (limited to 'libgcc')
0 files changed, 0 insertions, 0 deletions