[llvm] r293931 - [Hexagon] Fix relocation kind for extended predicated calls
Krzysztof Parzyszek via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 2 12:21:56 PST 2017
Author: kparzysz
Date: Thu Feb 2 14:21:56 2017
New Revision: 293931
URL: http://llvm.org/viewvc/llvm-project?rev=293931&view=rev
Log:
[Hexagon] Fix relocation kind for extended predicated calls
Patch by Sid Manning.
Added:
llvm/trunk/test/MC/Hexagon/ext-callt-rel.s
Modified:
llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp
Modified: llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp?rev=293931&r1=293930&r2=293931&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp Thu Feb 2 14:21:56 2017
@@ -253,14 +253,16 @@ Hexagon::Fixups HexagonMCCodeEmitter::ge
return Hexagon::fixup_Hexagon_B32_PCREL_X;
case MCSymbolRefExpr::VK_None: {
auto Insts = HexagonMCInstrInfo::bundleInstructions(**CurrentBundle);
- for (auto I = Insts.begin(), N = Insts.end(); I != N; ++I)
+ for (auto I = Insts.begin(), N = Insts.end(); I != N; ++I) {
if (I->getInst() == &MI) {
- if (HexagonMCInstrInfo::getDesc(MCII, *(I + 1)->getInst()).isBranch() ||
- (HexagonMCInstrInfo::getType(MCII, *(I + 1)->getInst()) == HexagonII::TypeCR))
+ const MCInst &NextI = *(I+1)->getInst();
+ const MCInstrDesc &D = HexagonMCInstrInfo::getDesc(MCII, NextI);
+ if (D.isBranch() || D.isCall() ||
+ HexagonMCInstrInfo::getType(MCII, NextI) == HexagonII::TypeCR)
return Hexagon::fixup_Hexagon_B32_PCREL_X;
- else
- return Hexagon::fixup_Hexagon_32_6_X;
+ return Hexagon::fixup_Hexagon_32_6_X;
}
+ }
raise_relocation_error(0, kind);
}
default:
Added: llvm/trunk/test/MC/Hexagon/ext-callt-rel.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Hexagon/ext-callt-rel.s?rev=293931&view=auto
==============================================================================
--- llvm/trunk/test/MC/Hexagon/ext-callt-rel.s (added)
+++ llvm/trunk/test/MC/Hexagon/ext-callt-rel.s Thu Feb 2 14:21:56 2017
@@ -0,0 +1,6 @@
+# RUN: llvm-mc -arch=hexagon -filetype=obj %s -o - | llvm-objdump -r - | FileCheck %s
+
+if (p0) call foo
+#CHECK: R_HEX_B32_PCREL_X
+#CHECK: R_HEX_B15_PCREL_X
+
More information about the llvm-commits
mailing list