[PATCH] D23101: Align XRay return sleds to 2 byte boundaries
Dean Michael Berris via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 3 20:47:13 PDT 2016
dberris updated this revision to Diff 66754.
dberris marked 2 inline comments as done.
dberris added a comment.
Use 2-byte alignment for both entry and exit sleds.
https://reviews.llvm.org/D23101
Files:
lib/Target/X86/X86MCInstLower.cpp
test/CodeGen/X86/xray-attribute-instrumentation.ll
Index: test/CodeGen/X86/xray-attribute-instrumentation.ll
===================================================================
--- test/CodeGen/X86/xray-attribute-instrumentation.ll
+++ test/CodeGen/X86/xray-attribute-instrumentation.ll
@@ -2,12 +2,13 @@
define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" {
; CHECK-LABEL: Lxray_sled_0:
-; CHECK-NEXT: .p2align 2, 0x90
+; CHECK-NEXT: .p2align 1, 0x90
; CHECK-NEXT: .ascii "\353\t"
; CHECK-NEXT: nopw 512(%rax,%rax)
; CHECK-LABEL: Ltmp0:
ret i32 0
; CHECK-LABEL: Lxray_sled_1:
+; CHECK-NEXT: .p2align 1, 0x90
; CHECK-NEXT: retq
; CHECK-NEXT: nopw %cs:512(%rax,%rax)
}
Index: lib/Target/X86/X86MCInstLower.cpp
===================================================================
--- lib/Target/X86/X86MCInstLower.cpp
+++ lib/Target/X86/X86MCInstLower.cpp
@@ -1039,7 +1039,7 @@
// We want to emit the following pattern:
//
// .Lxray_sled_N:
- // .palign 2, ...
+ // .p2align 1, ...
// jmp .tmpN
// # 9 bytes worth of noops
// .tmpN
@@ -1052,7 +1052,7 @@
//
auto CurSled = OutContext.createTempSymbol("xray_sled_", true);
OutStreamer->EmitLabel(CurSled);
- OutStreamer->EmitCodeAlignment(4);
+ OutStreamer->EmitCodeAlignment(2);
auto Target = OutContext.createTempSymbol();
// Use a two-byte `jmp`. This version of JMP takes an 8-bit relative offset as
@@ -1075,12 +1075,14 @@
// We should emit the RET followed by sleds.
//
// .Lxray_sled_N:
+ // .p2align 1, ...
// ret # or equivalent instruction
// # 10 bytes worth of noops
//
// This just makes sure that the alignment for the next instruction is 2.
auto CurSled = OutContext.createTempSymbol("xray_sled_", true);
OutStreamer->EmitLabel(CurSled);
+ OutStreamer->EmitCodeAlignment(2);
unsigned OpCode = MI.getOperand(0).getImm();
MCInst Ret;
Ret.setOpcode(OpCode);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23101.66754.patch
Type: text/x-patch
Size: 1905 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160804/291eaced/attachment.bin>
More information about the llvm-commits
mailing list