openbsd-ports/devel/llvm/patches/patch-lib_Target_AArch64_AArch64AsmPrinter_cpp
jca 75c7843086 Update to llvm-8.0.0
Most patch merges inspired from patrick's work on base-clang.  Consumer
ports fixed/marked BROKEN as discussed with bcallah@ and rsadowski@.
powerpc tests and PLIST fixes from cwen@, thanks!  rust-1.36 tests by
semarie@
2019-07-06 15:06:36 +00:00

28 lines
935 B
Plaintext

$OpenBSD: patch-lib_Target_AArch64_AArch64AsmPrinter_cpp,v 1.3 2019/07/06 15:06:36 jca Exp $
Add retguard for arm64.
Index: lib/Target/AArch64/AArch64AsmPrinter.cpp
--- lib/Target/AArch64/AArch64AsmPrinter.cpp.orig
+++ lib/Target/AArch64/AArch64AsmPrinter.cpp
@@ -986,6 +986,19 @@ void AArch64AsmPrinter::EmitInstruction(const MachineI
case AArch64::SEH_EpilogEnd:
TS->EmitARM64WinCFIEpilogEnd();
return;
+
+ case AArch64::RETGUARD_JMP_TRAP:
+ {
+ MCSymbol *RGSuccSym = OutContext.createTempSymbol();
+ /* Compare and branch */
+ EmitToStreamer(*OutStreamer, MCInstBuilder(AArch64::CBZX)
+ .addReg(MI->getOperand(0).getReg())
+ .addExpr(MCSymbolRefExpr::create(RGSuccSym, OutContext)));
+ EmitToStreamer(*OutStreamer, MCInstBuilder(AArch64::BRK).addImm(1));
+ OutStreamer->EmitLabel(RGSuccSym);
+ return;
+ }
+
}
// Finally, do the automated lowerings for everything else.