Skip to content

Commit c27b24f

Browse files
committed
Revert "[X86] Handle ifuncs in TargetMachine::isLargeGlobalObject() (llvm#74911)"
This reverts commit 3850131.
1 parent fdea82a commit c27b24f

File tree

2 files changed

+13
-136
lines changed

2 files changed

+13
-136
lines changed

llvm/lib/Target/TargetMachine.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,10 @@ bool TargetMachine::isLargeGlobalObject(const GlobalObject *GO) const {
4343
if (getTargetTriple().getArch() != Triple::x86_64)
4444
return false;
4545

46-
if (getCodeModel() != CodeModel::Medium && getCodeModel() != CodeModel::Large)
47-
return false;
48-
4946
if (isa<Function>(GO))
5047
return getCodeModel() == CodeModel::Large;
5148

52-
// Functions/GlobalIFuncs are only large under the large code model.
53-
if (!GV)
54-
return getCodeModel() == CodeModel::Large;
49+
auto *GV = cast<GlobalVariable>(GO);
5550

5651
if (GV->isThreadLocal())
5752
return false;

llvm/test/CodeGen/X86/code-model-elf.ll

Lines changed: 12 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -702,18 +702,6 @@ define internal void @static_fn() #0 {
702702

703703
declare void @extern_fn()
704704

705-
@ifunc_func = ifunc void (), ptr @resolver
706-
@dso_local_ifunc_func = dso_local ifunc void (), ptr @resolver
707-
708-
define internal ptr @resolver() {
709-
; CHECK-LABEL: resolver:
710-
; CHECK: # %bb.0: # %entry
711-
; CHECK-NEXT: xorl %eax, %eax
712-
; CHECK-NEXT: retq
713-
entry:
714-
ret ptr null
715-
}
716-
717705
define dso_local ptr @lea_static_fn() #0 {
718706
; SMALL-STATIC-LABEL: lea_static_fn:
719707
; SMALL-STATIC: # %bb.0:
@@ -747,9 +735,9 @@ define dso_local ptr @lea_static_fn() #0 {
747735
;
748736
; LARGE-PIC-LABEL: lea_static_fn:
749737
; LARGE-PIC: # %bb.0:
750-
; LARGE-PIC-NEXT: .L14$pb:
751-
; LARGE-PIC-NEXT: leaq .L14$pb(%rip), %rax
752-
; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L14$pb, %rcx
738+
; LARGE-PIC-NEXT: .L13$pb:
739+
; LARGE-PIC-NEXT: leaq .L13$pb(%rip), %rax
740+
; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L13$pb, %rcx
753741
; LARGE-PIC-NEXT: addq %rax, %rcx
754742
; LARGE-PIC-NEXT: movabsq $static_fn@GOTOFF, %rax
755743
; LARGE-PIC-NEXT: addq %rcx, %rax
@@ -800,9 +788,9 @@ define dso_local ptr @lea_global_fn() #0 {
800788
;
801789
; LARGE-PIC-LABEL: lea_global_fn:
802790
; LARGE-PIC: # %bb.0:
803-
; LARGE-PIC-NEXT: .L15$pb:
804-
; LARGE-PIC-NEXT: leaq .L15$pb(%rip), %rax
805-
; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L15$pb, %rcx
791+
; LARGE-PIC-NEXT: .L14$pb:
792+
; LARGE-PIC-NEXT: leaq .L14$pb(%rip), %rax
793+
; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L14$pb, %rcx
806794
; LARGE-PIC-NEXT: addq %rax, %rcx
807795
; LARGE-PIC-NEXT: movabsq $global_fn@GOTOFF, %rax
808796
; LARGE-PIC-NEXT: addq %rcx, %rax
@@ -853,9 +841,9 @@ define dso_local ptr @lea_extern_fn() #0 {
853841
;
854842
; LARGE-PIC-LABEL: lea_extern_fn:
855843
; LARGE-PIC: # %bb.0:
856-
; LARGE-PIC-NEXT: .L16$pb:
857-
; LARGE-PIC-NEXT: leaq .L16$pb(%rip), %rax
858-
; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L16$pb, %rcx
844+
; LARGE-PIC-NEXT: .L15$pb:
845+
; LARGE-PIC-NEXT: leaq .L15$pb(%rip), %rax
846+
; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L15$pb, %rcx
859847
; LARGE-PIC-NEXT: addq %rax, %rcx
860848
; LARGE-PIC-NEXT: movabsq $extern_fn@GOT, %rax
861849
; LARGE-PIC-NEXT: movq (%rcx,%rax), %rax
@@ -873,112 +861,6 @@ define dso_local ptr @lea_extern_fn() #0 {
873861
ret ptr @extern_fn
874862
}
875863

876-
define dso_local ptr @lea_ifunc() #0 {
877-
; SMALL-STATIC-LABEL: lea_ifunc:
878-
; SMALL-STATIC: # %bb.0:
879-
; SMALL-STATIC-NEXT: movq ifunc_func@GOTPCREL(%rip), %rax
880-
; SMALL-STATIC-NEXT: retq
881-
;
882-
; MEDIUM-STATIC-LABEL: lea_ifunc:
883-
; MEDIUM-STATIC: # %bb.0:
884-
; MEDIUM-STATIC-NEXT: movq ifunc_func@GOTPCREL(%rip), %rax
885-
; MEDIUM-STATIC-NEXT: retq
886-
;
887-
; LARGE-STATIC-LABEL: lea_ifunc:
888-
; LARGE-STATIC: # %bb.0:
889-
; LARGE-STATIC-NEXT: movabsq $ifunc_func, %rax
890-
; LARGE-STATIC-NEXT: retq
891-
;
892-
; SMALL-PIC-LABEL: lea_ifunc:
893-
; SMALL-PIC: # %bb.0:
894-
; SMALL-PIC-NEXT: movq ifunc_func@GOTPCREL(%rip), %rax
895-
; SMALL-PIC-NEXT: retq
896-
;
897-
; MEDIUM-SMALL-DATA-PIC-LABEL: lea_ifunc:
898-
; MEDIUM-SMALL-DATA-PIC: # %bb.0:
899-
; MEDIUM-SMALL-DATA-PIC-NEXT: movq ifunc_func@GOTPCREL(%rip), %rax
900-
; MEDIUM-SMALL-DATA-PIC-NEXT: retq
901-
;
902-
; MEDIUM-PIC-LABEL: lea_ifunc:
903-
; MEDIUM-PIC: # %bb.0:
904-
; MEDIUM-PIC-NEXT: movq ifunc_func@GOTPCREL(%rip), %rax
905-
; MEDIUM-PIC-NEXT: retq
906-
;
907-
; LARGE-PIC-LABEL: lea_ifunc:
908-
; LARGE-PIC: # %bb.0:
909-
; LARGE-PIC-NEXT: .L17$pb:
910-
; LARGE-PIC-NEXT: leaq .L17$pb(%rip), %rax
911-
; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L17$pb, %rcx
912-
; LARGE-PIC-NEXT: addq %rax, %rcx
913-
; LARGE-PIC-NEXT: movabsq $ifunc_func@GOT, %rax
914-
; LARGE-PIC-NEXT: movq (%rcx,%rax), %rax
915-
; LARGE-PIC-NEXT: retq
916-
;
917-
; LARGE-SMALL-DATA-PIC-LABEL: lea_ifunc:
918-
; LARGE-SMALL-DATA-PIC: # %bb.0:
919-
; LARGE-SMALL-DATA-PIC-NEXT: .L18$pb:
920-
; LARGE-SMALL-DATA-PIC-NEXT: leaq .L18$pb(%rip), %rax
921-
; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L18$pb, %rcx
922-
; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx
923-
; LARGE-SMALL-DATA-PIC-NEXT: movabsq $ifunc_func@GOT, %rax
924-
; LARGE-SMALL-DATA-PIC-NEXT: movq (%rcx,%rax), %rax
925-
; LARGE-SMALL-DATA-PIC-NEXT: retq
926-
ret ptr @ifunc_func
927-
}
928-
929-
define dso_local ptr @lea_dso_local_ifunc() #0 {
930-
; SMALL-STATIC-LABEL: lea_dso_local_ifunc:
931-
; SMALL-STATIC: # %bb.0:
932-
; SMALL-STATIC-NEXT: movl $dso_local_ifunc_func, %eax
933-
; SMALL-STATIC-NEXT: retq
934-
;
935-
; MEDIUM-STATIC-LABEL: lea_dso_local_ifunc:
936-
; MEDIUM-STATIC: # %bb.0:
937-
; MEDIUM-STATIC-NEXT: movabsq $dso_local_ifunc_func, %rax
938-
; MEDIUM-STATIC-NEXT: retq
939-
;
940-
; LARGE-STATIC-LABEL: lea_dso_local_ifunc:
941-
; LARGE-STATIC: # %bb.0:
942-
; LARGE-STATIC-NEXT: movabsq $dso_local_ifunc_func, %rax
943-
; LARGE-STATIC-NEXT: retq
944-
;
945-
; SMALL-PIC-LABEL: lea_dso_local_ifunc:
946-
; SMALL-PIC: # %bb.0:
947-
; SMALL-PIC-NEXT: leaq dso_local_ifunc_func(%rip), %rax
948-
; SMALL-PIC-NEXT: retq
949-
;
950-
; MEDIUM-SMALL-DATA-PIC-LABEL: lea_dso_local_ifunc:
951-
; MEDIUM-SMALL-DATA-PIC: # %bb.0:
952-
; MEDIUM-SMALL-DATA-PIC-NEXT: leaq dso_local_ifunc_func(%rip), %rax
953-
; MEDIUM-SMALL-DATA-PIC-NEXT: retq
954-
;
955-
; MEDIUM-PIC-LABEL: lea_dso_local_ifunc:
956-
; MEDIUM-PIC: # %bb.0:
957-
; MEDIUM-PIC-NEXT: leaq dso_local_ifunc_func(%rip), %rax
958-
; MEDIUM-PIC-NEXT: retq
959-
;
960-
; LARGE-PIC-LABEL: lea_dso_local_ifunc:
961-
; LARGE-PIC: # %bb.0:
962-
; LARGE-PIC-NEXT: .L18$pb:
963-
; LARGE-PIC-NEXT: leaq .L18$pb(%rip), %rax
964-
; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L18$pb, %rcx
965-
; LARGE-PIC-NEXT: addq %rax, %rcx
966-
; LARGE-PIC-NEXT: movabsq $dso_local_ifunc_func@GOTOFF, %rax
967-
; LARGE-PIC-NEXT: addq %rcx, %rax
968-
; LARGE-PIC-NEXT: retq
969-
;
970-
; LARGE-SMALL-DATA-PIC-LABEL: lea_dso_local_ifunc:
971-
; LARGE-SMALL-DATA-PIC: # %bb.0:
972-
; LARGE-SMALL-DATA-PIC-NEXT: .L19$pb:
973-
; LARGE-SMALL-DATA-PIC-NEXT: leaq .L19$pb(%rip), %rax
974-
; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L19$pb, %rcx
975-
; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx
976-
; LARGE-SMALL-DATA-PIC-NEXT: movabsq $dso_local_ifunc_func@GOTOFF, %rax
977-
; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax
978-
; LARGE-SMALL-DATA-PIC-NEXT: retq
979-
ret ptr @dso_local_ifunc_func
980-
}
981-
982864
; FIXME: The result is same for small, medium and large model, because we
983865
; specify pie option in the test case. And the type of tls is initial exec tls.
984866
; For pic code. The large model code for pic tls should be emitted as below.
@@ -1047,9 +929,9 @@ define dso_local float @load_constant_pool(float %x) #0 {
1047929
;
1048930
; LARGE-PIC-LABEL: load_constant_pool:
1049931
; LARGE-PIC: # %bb.0:
1050-
; LARGE-PIC-NEXT: .L20$pb:
1051-
; LARGE-PIC-NEXT: leaq .L20$pb(%rip), %rax
1052-
; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L20$pb, %rcx
932+
; LARGE-PIC-NEXT: .L17$pb:
933+
; LARGE-PIC-NEXT: leaq .L17$pb(%rip), %rax
934+
; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L17$pb, %rcx
1053935
; LARGE-PIC-NEXT: addq %rax, %rcx
1054936
; LARGE-PIC-NEXT: movabsq ${{\.?LCPI[0-9]+_[0-9]+}}@GOTOFF, %rax
1055937
; LARGE-PIC-NEXT: addss (%rcx,%rax), %xmm0

0 commit comments

Comments
 (0)