karthik-man wrote:

I am debugging a Triton issue 
(https://github.com/triton-lang/triton/issues/4060), where an {i32, i32, i32, 
i64} struct passed to _vprintf_ is printing the wrong value for the i64. The 
issue here seems to be that Triton creates a llvm:Module with a default 
DataLayout. In the default layout, i64 abi alignment is 4(DefaultAlignments in 
DataLayout.cpp). This causes the optimization in this PR to rewrite the GEP to 
the i64 as follows: 

`%8 = alloca { i32, i32, i32, i64 }, align 8`
`%12 = getelementptr { i32, i32, i32, i64 }, ptr %8, i32 0, i32 3` 
to
`%6 = alloca { i32, i32, i32, i64 }, align 8`
`%9 = getelementptr inbounds i8, ptr %6, i64 12`  

But _vprintf_ expects the i64 to be at offset 16. 
Is it legal for InstCombine to assume that the DL attached to the Module is the 
right DL for the target? In other words, is it ok for InstCombine to do 
optimizations that are target-dependent?

https://github.com/llvm/llvm-project/pull/68882
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to