aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-prefetch.c
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@gcc.gnu.org>2019-06-18 22:44:57 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2019-06-18 22:44:57 +0000
commit5cf12989a937cadd57e32ae33c6901b431954361 (patch)
tree1fa3c2412bee25c5176a0095282e86104760525b /gcc/tree-ssa-loop-prefetch.c
parent30a4f38c782f626ae4300aceba830e9a8514e86b (diff)
downloadgcc-5cf12989a937cadd57e32ae33c6901b431954361.zip
gcc-5cf12989a937cadd57e32ae33c6901b431954361.tar.gz
gcc-5cf12989a937cadd57e32ae33c6901b431954361.tar.bz2
irange on value_range implementation.
Known failures: *** FAIL: gcc.dg/pr85598.c (test for excess errors) x_10 has a global range of [0, 256] x_10 = PHI <0(2), x_6(3)> is analyzed as [0, 255][257, 257] range_of_stmt calculates the intersection of both: range = [0, 255] On irange : value_range, the PHI range is [0, 257], so the intersection comes out as [0, 256]. This extra number causes sprintf to think we'll overflow. This is because the sprintf pass has been converted to the ranger. Presumably we can leave sprintf unconverted until we have more sub-ranges. *** FAIL: gcc.dg/tree-ssa/rvrp09.c scan-tree-dump-times rvrp "Branch rewritten" 4 The branch from BB9 -> BB10 below was previously removed as UNDEFINED, but we no longer know d_5 is UNDEFINED on that path because of the loss of precision in the original range for d_5. Note: fails for irange m_max_pairs=2 also. Was: =========== BB 8 ============ x_2(D) char VARYING <bb 8> : d_5 = x_2(D) & -16; if (d_5 > 0) goto <bb 9>; [INV] else goto <bb 11>; [INV] d_5 : char [-INF, -16][0, 0][16, 112] 8->9 (T) d_5 : char [16, 112] 8->11 (F) d_5 : char [-INF, -16][0, 0] =========== BB 9 ============ d_5 char [16, 112] <bb 9> : if (d_5 <= 15) goto <bb 10>; [INV] else goto <bb 11>; [INV] ===> 9->10 (T) d_5 : char UNDEFINED 9->11 (F) d_5 : char [16, 112] But is now: =========== BB 8 ============ x_2(D) char VARYING <bb 8> : d_5 = x_2(D) & -16; if (d_5 > 0) goto <bb 9>; [INV] else goto <bb 11>; [INV] d_5 : char [-INF, 112] 8->9 (T) d_5 : char [1, 112] 8->11 (F) d_5 : char [-INF, 0] =========== BB 9 ============ d_5 char [1, 112] <bb 9> : if (d_5 <= 15) goto <bb 10>; [INV] else goto <bb 11>; [INV] ===> 9->10 (T) d_5 : char [1, 15] 9->11 (F) d_5 : char [16, 112] From-SVN: r272458
Diffstat (limited to 'gcc/tree-ssa-loop-prefetch.c')
0 files changed, 0 insertions, 0 deletions