DKLoehr wrote:

Further investigation: `opt-bisect-limit` narrows down the relevant pass to 
`dse`. If I write out the IR, the relevant part of the diff is this (everything 
else only differs in variable names, since the `dse` version defines two fewer 
variables at this part):

```
@@ -1043,155 +1043,151 @@ define internal void 
@_ZN12_GLOBAL__N_144RangeAdapterLValueTest_TrivialOperation
   store i32 0, ptr %16, align 4, !tbaa !115
   %17 = getelementptr inbounds nuw i8, ptr %16, i64 4
   store i32 1, ptr %17, align 4, !tbaa !115
-  %18 = getelementptr inbounds nuw i8, ptr %16, i64 8
-  store i32 2, ptr %18, align 4, !tbaa !115
-  %19 = getelementptr inbounds nuw i8, ptr %16, i64 12
-  store i32 3, ptr %19, align 4, !tbaa !115
-  %20 = getelementptr inbounds nuw i8, ptr %16, i64 16
-  %21 = ptrtoaddr ptr %20 to i64
+  %18 = getelementptr inbounds nuw i8, ptr %16, i64 16
+  %19 = ptrtoaddr ptr %18 to i64
   call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 4) ]
```

That is, those first 4 lines get eliminated by `dse` after this change, which 
seems to be causing the problems.

https://github.com/llvm/llvm-project/pull/210729
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to