[PATCH] D92695: [X86ISelLowering] don't emit frame pointers for eflags intrinsics.
Nick Desaulniers via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 9 11:16:37 PST 2022
nickdesaulniers updated this revision to Diff 407219.
nickdesaulniers added a comment.
- rebase, check for wincfi
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D92695/new/
https://reviews.llvm.org/D92695
Files:
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/X86/X86Subtarget.h
llvm/test/CodeGen/X86/x86-64-flags-intrinsics.ll
llvm/test/CodeGen/X86/x86-flags-intrinsics.ll
Index: llvm/test/CodeGen/X86/x86-flags-intrinsics.ll
===================================================================
--- llvm/test/CodeGen/X86/x86-flags-intrinsics.ll
+++ llvm/test/CodeGen/X86/x86-flags-intrinsics.ll
@@ -11,11 +11,8 @@
}
; CHECK-LABEL: _read_flags:
-; CHECK: pushl %ebp
-; CHECK-NEXT: movl %esp, %ebp
-; CHECK-NEXT: pushfl
+; CHECK: pushfl
; CHECK-NEXT: popl %eax
-; CHECK-NEXT: popl %ebp
define x86_fastcallcc void @write_flags(i32 inreg %arg) {
entry:
@@ -24,8 +21,5 @@
}
; CHECK-LABEL: @write_flags at 4:
-; CHECK: pushl %ebp
-; CHECK-NEXT: movl %esp, %ebp
-; CHECK-NEXT: pushl %ecx
+; CHECK: pushl %ecx
; CHECK-NEXT: popfl
-; CHECK-NEXT: popl %ebp
Index: llvm/test/CodeGen/X86/x86-64-flags-intrinsics.ll
===================================================================
--- llvm/test/CodeGen/X86/x86-64-flags-intrinsics.ll
+++ llvm/test/CodeGen/X86/x86-64-flags-intrinsics.ll
@@ -11,14 +11,8 @@
}
; CHECK-LABEL: read_flags:
-; CHECK: pushq %rbp
-; CHECK: .seh_pushreg %rbp
-; CHECK: movq %rsp, %rbp
-; CHECK: .seh_setframe %rbp, 0
-; CHECK: .seh_endprologue
-; CHECK-NEXT: pushfq
+; CHECK: pushfq
; CHECK-NEXT: popq %rax
-; CHECK-NEXT: popq %rbp
define void @write_flags(i64 %arg) {
entry:
@@ -27,11 +21,5 @@
}
; CHECK-LABEL: write_flags:
-; CHECK: pushq %rbp
-; CHECK: .seh_pushreg %rbp
-; CHECK: movq %rsp, %rbp
-; CHECK: .seh_setframe %rbp, 0
-; CHECK: .seh_endprologue
-; CHECK-NEXT: pushq %rcx
+; CHECK: pushq %rcx
; CHECK-NEXT: popfq
-; CHECK-NEXT: popq %rbp
Index: llvm/lib/Target/X86/X86Subtarget.h
===================================================================
--- llvm/lib/Target/X86/X86Subtarget.h
+++ llvm/lib/Target/X86/X86Subtarget.h
@@ -637,6 +637,7 @@
PICStyles::Style getPICStyle() const { return PICStyle; }
void setPICStyle(PICStyles::Style Style) { PICStyle = Style; }
+ const TargetMachine &getTargetMachine() const { return TM; }
bool hasX87() const { return HasX87; }
bool hasCmpxchg8b() const { return HasCmpxchg8b; }
Index: llvm/lib/Target/X86/X86ISelLowering.cpp
===================================================================
--- llvm/lib/Target/X86/X86ISelLowering.cpp
+++ llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -27264,8 +27264,10 @@
case llvm::Intrinsic::x86_flags_write_u64: {
// We need a frame pointer because this will get lowered to a PUSH/POP
// sequence.
- MachineFrameInfo &MFI = DAG.getMachineFunction().getFrameInfo();
- MFI.setHasCopyImplyingStackAdjustment(true);
+ if(Subtarget.getTargetMachine().getMCAsmInfo()->usesWindowsCFI()) {
+ MachineFrameInfo &MFI = DAG.getMachineFunction().getFrameInfo();
+ MFI.setHasCopyImplyingStackAdjustment(true);
+ }
// Don't do anything here, we will expand these intrinsics out later
// during FinalizeISel in EmitInstrWithCustomInserter.
return Op;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D92695.407219.patch
Type: text/x-patch
Size: 3011 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220209/400533c3/attachment.bin>
More information about the llvm-commits
mailing list