diff options
author | Dean Michael Berris <dberris@google.com> | 2016-11-21 03:01:43 +0000 |
---|---|---|
committer | Dean Michael Berris <dberris@google.com> | 2016-11-21 03:01:43 +0000 |
commit | 31761f300d8237bca7320e17461a3a7df49aee69 (patch) | |
tree | a04a487cf2fa3c43e8b3bf7693ac7fb7fb1be74b /llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp | |
parent | 0b1b695a9e2e747abc650f33c0553edd1bce4802 (diff) | |
download | bcm5719-llvm-31761f300d8237bca7320e17461a3a7df49aee69.tar.gz bcm5719-llvm-31761f300d8237bca7320e17461a3a7df49aee69.zip |
[XRay][AArch64] Implemented a test for the compile-time sleds emitted, and fixed a bug in the jump instruction
This patch adds a test for the assembly code emitted with XRay
instrumentation. It also fixes a bug where the operand of a jump
instruction must be not the number of bytes to jump over, but rather the
number of 4-byte instructions.
Author: rSerge
Reviewers: dberris, rengolin
Differential Revision: https://reviews.llvm.org/D26805
llvm-svn: 287516
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp index f0564ef0b89..2d49ccc46d4 100644 --- a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp +++ b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp @@ -223,7 +223,9 @@ void AArch64AsmPrinter::EmitSled(const MachineInstr &MI, SledKind Kind) auto Target = OutContext.createTempSymbol(); // Emit "B #32" instruction, which jumps over the next 28 bytes. - EmitToStreamer(*OutStreamer, MCInstBuilder(AArch64::B).addImm(32)); + // The operand has to be the number of 4-byte instructions to jump over, + // including the current instruction. + EmitToStreamer(*OutStreamer, MCInstBuilder(AArch64::B).addImm(8)); for (int8_t I = 0; I < NoopsInSledCount; I++) EmitToStreamer(*OutStreamer, MCInstBuilder(AArch64::HINT).addImm(0)); |