Displaying 4 results from an estimated 4 matches for "sunkaddr".
2011 Sep 06
1
[LLVMdev] sunkaddr var names
When viewing generated IR code in a module I generated, I'm seeing %sunkaddr??
IR variables, being created that I did not generate. What is the point of these var names,
and implementations of their use such as:
%sunkaddr16 = sext i32 %25 to i64
%sunkaddr15 = ptrtoint i8* %addr to i64
%sunkaddr17 = mul i64 %sunkaddr16, 4
%sunkaddr18 = add i64 %sunkaddr15, %sunk...
2014 May 21
5
[LLVMdev] [CodeGenPrepare] Sinking incoming values of a PHI Node
...bel %if.else
if.then: ; preds = %entry
br label %merge
if.else: ; preds = %entry
br label %merge
merge: ; preds = %if.else,
%if.then
%0 = bitcast float* %a to i8*
%sunkaddr = getelementptr i8* %0, i64 16
%1 = bitcast i8* %sunkaddr to float*
%w1 = load float* %1
ret void
}
saving registers on %p1 and %q1.
However, this approach misses optimization opportunities in two cases.
First, if an incoming value of a PHI node is used in multiple memory
instructions, CGP...
2010 Oct 26
0
[LLVMdev] Reproducible testcase for r100044
Attached is a .ll with a reproducible test case for the bug addressed by r100044 -- "Fix a nasty dangling-pointer heisenbug that could generate wrong code pretty much anywhere AFAICT."
Doing
llvm-as < sunkaddr.ll | llc
which a llc after r100044 will generate
.LBB1_2: # %if-false-block
movl $1, 16(%rdi)
movl 120(%rdi), %eax
ret
while one before will generate:
.LBB1_2: # %if-false-block
movl $1, 1...
2018 Jun 29
2
Cleaning up ‘br i1 false’ cases in CodeGenPrepare
...loop until no more transformations are made
fixes this issue. Is this reasonable ?
My simple fix (without any indentation changes) is:
--- a/llvm/lib/CodeGen/CodeGenPrepare.cpp
+++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp
@@ -316,7 +316,9 @@ bool CodeGenPrepare::runOnFunction(Function &F) {
SunkAddrs.clear();
if (!DisableBranchOpts) {
+ MadeChange = true;
+ while (MadeChange) {
MadeChange = false;
SmallPtrSet<BasicBlock*, 8> WorkList;
for (BasicBlock &BB : F) {
@@ -352,6 +354,7 @@ bool CodeGenPrepare::runOnFunction(Function &F) {
EverMadeChange |= MadeC...