diff options
author | Chris Dewhurst <chris.dewhurst@lero.ie> | 2016-04-22 08:13:47 +0000 |
---|---|---|
committer | Chris Dewhurst <chris.dewhurst@lero.ie> | 2016-04-22 08:13:47 +0000 |
commit | 431fc8af7bece9bfc733227218254b3d64d8a0f6 (patch) | |
tree | 695579b352acd6a4496068ab0ac3744049a11739 /llvm/lib/Target/Sparc | |
parent | f8997cf5aee8b4bf0210ca156e1b2fbb8cf6bc07 (diff) | |
download | bcm5719-llvm-431fc8af7bece9bfc733227218254b3d64d8a0f6.tar.gz bcm5719-llvm-431fc8af7bece9bfc733227218254b3d64d8a0f6.zip |
The following code would not work before this patch, due to the inability to take the address of a global object:
void func1() {
...
}
int main(int argc, char** argv) {
void (*pFunc)();
pFunc = &func1
pFunc();
...
}
Phabricator review: http://reviews.llvm.org/D19368
llvm-svn: 267120
Diffstat (limited to 'llvm/lib/Target/Sparc')
-rw-r--r-- | llvm/lib/Target/Sparc/DelaySlotFiller.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Target/Sparc/DelaySlotFiller.cpp b/llvm/lib/Target/Sparc/DelaySlotFiller.cpp index 31244398ca4..0062428f40a 100644 --- a/llvm/lib/Target/Sparc/DelaySlotFiller.cpp +++ b/llvm/lib/Target/Sparc/DelaySlotFiller.cpp @@ -296,7 +296,7 @@ void Filler::insertCallDefsUses(MachineBasicBlock::iterator MI, RegUses.insert(Reg.getReg()); const MachineOperand &RegOrImm = MI->getOperand(1); - if (RegOrImm.isImm()) + if (RegOrImm.isImm() || RegOrImm.isGlobal()) break; assert(RegOrImm.isReg() && "CALLrr second operand is not a register."); assert(RegOrImm.isUse() && "CALLrr second operand is not a use."); |