Displaying 2 results from an estimated 2 matches for "loadg1_1".
Did you mean:
loadg1_2
2016 Jun 27
2
[MemorySSA] Potential bug in MemoryUse defining access calculation
...i32
+ %i.0 = phi i32 [ 0, %entry ], [ %i.1, %for.body ]
+ %cmp = icmp slt i32 %i.0, %N
+ br i1 %cmp, label %for.body, label %cleanup
+
+for.body:
+; this load doesn't alias either of the stores, so should have a defining access of LiveOnEntry
+; CHECK: MemoryUse(liveOnEntry)
+; CHECK-NEXT: %loadG1_1 = load
+ %loadG1_1 = load i16, i16* @G1, align 2
+; CHECK: 1 = MemoryDef(3)
+; CHECK-NEXT: store i16 0
+ store i16 0, i16* @G2, align 2
+ ; ditto for this identical load
+; CHECK: MemoryUse(liveOnEntry)
+; CHECK-NEXT: %loadG1_2 = load
+ %loadG1_2 = load i16, i16* @G1, align 2
+; CHECK: 2 = Memo...
2016 Jun 27
0
[MemorySSA] Potential bug in MemoryUse defining access calculation
This is definitely a caching bug related to this code:
1038 // Don't try to optimize this phi again if we've already tried
to do so.
1039 if (!Q.Visited.insert(PHIPair).second) {
1040 ModifyingAccess = CurrAccess;
1041 break;
1042 }
We don't differentiate elsewhere between having stopped at a phi because we
were path walking and discovered that path