[llvm-branch-commits] [llvm] 6c57e39 - Revert "X86: Mark EFLAGS clobbers dead in global base register setup (#229337)"

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Oct 9 01:32:32 PDT 2026


Author: Ingo Müller
Date: 2026-10-09T10:32:26+02:00
New Revision: 6c57e390b3e267d08decd1de5e5c7a577d730861

URL: https://github.com/llvm/llvm-project/commit/6c57e390b3e267d08decd1de5e5c7a577d730861
DIFF: https://github.com/llvm/llvm-project/commit/6c57e390b3e267d08decd1de5e5c7a577d730861.diff

LOG: Revert "X86: Mark EFLAGS clobbers dead in global base register setup (#229337)"

This reverts commit 488f609ea360315c3306ab12c206ee89eae0c948.

Added: 
    

Modified: 
    llvm/lib/Target/X86/X86GlobalBaseReg.cpp
    llvm/test/CodeGen/X86/large-pic-jump-table.ll

Removed: 
    llvm/test/CodeGen/X86/global-base-reg-dead-eflags.ll


################################################################################
diff  --git a/llvm/lib/Target/X86/X86GlobalBaseReg.cpp b/llvm/lib/Target/X86/X86GlobalBaseReg.cpp
index 8aebedd2ac459..fb6c6b340521f 100644
--- a/llvm/lib/Target/X86/X86GlobalBaseReg.cpp
+++ b/llvm/lib/Target/X86/X86GlobalBaseReg.cpp
@@ -100,8 +100,7 @@ static bool initGlobalBaseReg(MachineFunction &MF) {
                              X86II::MO_PIC_BASE_OFFSET);
       BuildMI(FirstMBB, MBBI, DL, TII->get(X86::ADD64rr), PC)
           .addReg(PBReg, RegState::Kill)
-          .addReg(GOTReg, RegState::Kill)
-          .setOperandDead(3); // implicit-def $eflags
+          .addReg(GOTReg, RegState::Kill);
     } else {
       // In other code models, use a RIP-relative LEA to materialize the
       // GOT.
@@ -125,8 +124,7 @@ static bool initGlobalBaseReg(MachineFunction &MF) {
       BuildMI(FirstMBB, MBBI, DL, TII->get(X86::ADD32ri), GlobalBaseReg)
           .addReg(PC)
           .addExternalSymbol("_GLOBAL_OFFSET_TABLE_",
-                             X86II::MO_GOT_ABSOLUTE_ADDRESS)
-          .setOperandDead(3); // implicit-def $eflags
+                             X86II::MO_GOT_ABSOLUTE_ADDRESS);
     }
   }
 

diff  --git a/llvm/test/CodeGen/X86/global-base-reg-dead-eflags.ll b/llvm/test/CodeGen/X86/global-base-reg-dead-eflags.ll
deleted file mode 100644
index 44e82e29171d7..0000000000000
--- a/llvm/test/CodeGen/X86/global-base-reg-dead-eflags.ll
+++ /dev/null
@@ -1,29 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
-; RUN: llc < %s -mtriple=i686-unknown-linux-gnu -relocation-model=pic -stop-after=finalize-isel | FileCheck %s --check-prefix=X86
-; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -relocation-model=pic -code-model=large -stop-after=finalize-isel | FileCheck %s --check-prefix=LARGE
-
- at g = external global i32
-
-define i32 @use_global() {
-  ; X86-LABEL: name: use_global
-  ; X86: bb.0 (%ir-block.0):
-  ; X86-NEXT:   [[MOVPC32r:%[0-9]+]]:gr32 = MOVPC32r 0, implicit $esp, implicit $ssp
-  ; X86-NEXT:   [[ADD32ri:%[0-9]+]]:gr32_nosp = ADD32ri [[MOVPC32r]], target-flags(x86-got-absolute-address) &_GLOBAL_OFFSET_TABLE_, implicit-def dead $eflags
-  ; X86-NEXT:   [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm [[ADD32ri]], 1, $noreg, target-flags(x86-got) @g, $noreg :: (load (s32) from got)
-  ; X86-NEXT:   [[MOV32rm1:%[0-9]+]]:gr32 = MOV32rm killed [[MOV32rm]], 1, $noreg, 0, $noreg :: (dereferenceable load (s32) from @g)
-  ; X86-NEXT:   $eax = COPY [[MOV32rm1]]
-  ; X86-NEXT:   RET 0, $eax
-  ;
-  ; LARGE-LABEL: name: use_global
-  ; LARGE: bb.0 (%ir-block.0):
-  ; LARGE-NEXT:   [[LEA64r:%[0-9]+]]:gr64 = LEA64r $rip, 0, $noreg, <mcsymbol .L0$pb>, $noreg, pre-instr-symbol <mcsymbol .L0$pb>
-  ; LARGE-NEXT:   [[MOV64ri:%[0-9]+]]:gr64 = MOV64ri target-flags(x86-pic-base-offset) &_GLOBAL_OFFSET_TABLE_
-  ; LARGE-NEXT:   [[ADD64rr:%[0-9]+]]:gr64_nosp = ADD64rr killed [[LEA64r]], killed [[MOV64ri]], implicit-def dead $eflags
-  ; LARGE-NEXT:   [[MOV64ri1:%[0-9]+]]:gr64_nosp = MOV64ri target-flags(x86-got) @g
-  ; LARGE-NEXT:   [[MOV64rm:%[0-9]+]]:gr64 = MOV64rm [[ADD64rr]], 1, killed [[MOV64ri1]], 0, $noreg :: (load (s64) from got)
-  ; LARGE-NEXT:   [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm killed [[MOV64rm]], 1, $noreg, 0, $noreg :: (dereferenceable load (s32) from @g)
-  ; LARGE-NEXT:   $eax = COPY [[MOV32rm]]
-  ; LARGE-NEXT:   RET 0, $eax
-  %v = load i32, ptr @g
-  ret i32 %v
-}

diff  --git a/llvm/test/CodeGen/X86/large-pic-jump-table.ll b/llvm/test/CodeGen/X86/large-pic-jump-table.ll
index 47a010a6b215a..89e8521e700a0 100644
--- a/llvm/test/CodeGen/X86/large-pic-jump-table.ll
+++ b/llvm/test/CodeGen/X86/large-pic-jump-table.ll
@@ -28,9 +28,9 @@ bb4:
 }
 
 ; CHECK:      movabsq $.LJTI0_0 at GOTOFF, [[R1:%r[a-z]{2}]]
-; CHECK-NEXT: addq    [[R2:%r[a-z]{2}]], [[R1]]
-; CHECK-NEXT: addq    ([[R1]],[[R3:%r[a-z]{2}]],8), [[R1]]
-; CHECK-NEXT: jmpq    *[[R1]]
+; CHECK-NEXT: addq    [[R1]], [[R2:%r[a-z]{2}]]
+; CHECK-NEXT: addq    ([[R2]],[[R3:%r[a-z]{2}]],8), [[R2]]
+; CHECK-NEXT: jmpq    *[[R2]]
 
 ; CHECK: .LJTI0_0:
 ; CHECK-NEXT: .quad   .LBB0_2-.LJTI0_0


        


More information about the llvm-branch-commits mailing list