remember to emit weak reference in one more case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36438 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Lauro Ramos Venancio 2007-04-25 14:50:40 +00:00
parent 77d0f970b3
commit 305b8a5f62
2 changed files with 24 additions and 1 deletions

View File

@ -639,8 +639,13 @@ void ARMAsmPrinter::printCPInstOperand(const MachineInstr *MI, int OpNo,
if (MCPE.isMachineConstantPoolEntry())
EmitMachineConstantPoolValue(MCPE.Val.MachineCPVal);
else
else {
EmitGlobalConstant(MCPE.Val.ConstVal);
// remember to emit the weak reference
if (const GlobalValue *GV = dyn_cast<GlobalValue>(MCPE.Val.ConstVal))
if (GV->hasExternalWeakLinkage())
ExtWeakSymbols.insert(GV);
}
}
}

18
test/CodeGen/ARM/weak2.ll Normal file
View File

@ -0,0 +1,18 @@
; RUN: llvm-as < %s | llc -march=arm | grep .weak
define i32 @f(i32 %a) {
entry:
%tmp2 = icmp eq i32 %a, 0 ; <i1> [#uses=1]
%t.0 = select i1 %tmp2, i32 (...)* null, i32 (...)* @test_weak ; <i32 (...)*> [#uses=2]
%tmp5 = icmp eq i32 (...)* %t.0, null ; <i1> [#uses=1]
br i1 %tmp5, label %UnifiedReturnBlock, label %cond_true8
cond_true8: ; preds = %entry
%tmp10 = tail call i32 (...)* %t.0( ) ; <i32> [#uses=1]
ret i32 %tmp10
UnifiedReturnBlock: ; preds = %entry
ret i32 250
}
declare extern_weak i32 @test_weak(...)