@@ -57,6 +57,7 @@ target triple = "x86_64--linux"
57
57
@opaque = external dso_local global %t
58
58
@forced_small_data = dso_local global [10 x i32 ] zeroinitializer , code_model "small" , align 16
59
59
@forced_large_data = dso_local global [10 x i32 ] zeroinitializer , code_model "large" , align 16
60
+ @__ehdr_start = external dso_local global i8
60
61
61
62
define dso_local ptr @lea_static_data () #0 {
62
63
; SMALL-STATIC-LABEL: lea_static_data:
@@ -800,6 +801,63 @@ define dso_local ptr @lea_opaque() #0 {
800
801
ret ptr @opaque
801
802
}
802
803
804
+ define dso_local ptr @lea_ehdr_start () #0 {
805
+ ; SMALL-STATIC-LABEL: lea_ehdr_start:
806
+ ; SMALL-STATIC: # %bb.0:
807
+ ; SMALL-STATIC-NEXT: movl $__ehdr_start, %eax
808
+ ; SMALL-STATIC-NEXT: retq
809
+ ;
810
+ ; MEDIUM-STATIC-LABEL: lea_ehdr_start:
811
+ ; MEDIUM-STATIC: # %bb.0:
812
+ ; MEDIUM-STATIC-NEXT: movabsq $__ehdr_start, %rax
813
+ ; MEDIUM-STATIC-NEXT: retq
814
+ ;
815
+ ; LARGE-STATIC-LABEL: lea_ehdr_start:
816
+ ; LARGE-STATIC: # %bb.0:
817
+ ; LARGE-STATIC-NEXT: movabsq $__ehdr_start, %rax
818
+ ; LARGE-STATIC-NEXT: retq
819
+ ;
820
+ ; SMALL-PIC-LABEL: lea_ehdr_start:
821
+ ; SMALL-PIC: # %bb.0:
822
+ ; SMALL-PIC-NEXT: leaq __ehdr_start(%rip), %rax
823
+ ; SMALL-PIC-NEXT: retq
824
+ ;
825
+ ; MEDIUM-SMALL-DATA-PIC-LABEL: lea_ehdr_start:
826
+ ; MEDIUM-SMALL-DATA-PIC: # %bb.0:
827
+ ; MEDIUM-SMALL-DATA-PIC-NEXT: leaq _GLOBAL_OFFSET_TABLE_(%rip), %rcx
828
+ ; MEDIUM-SMALL-DATA-PIC-NEXT: movabsq $__ehdr_start@GOTOFF, %rax
829
+ ; MEDIUM-SMALL-DATA-PIC-NEXT: addq %rcx, %rax
830
+ ; MEDIUM-SMALL-DATA-PIC-NEXT: retq
831
+ ;
832
+ ; MEDIUM-PIC-LABEL: lea_ehdr_start:
833
+ ; MEDIUM-PIC: # %bb.0:
834
+ ; MEDIUM-PIC-NEXT: leaq _GLOBAL_OFFSET_TABLE_(%rip), %rcx
835
+ ; MEDIUM-PIC-NEXT: movabsq $__ehdr_start@GOTOFF, %rax
836
+ ; MEDIUM-PIC-NEXT: addq %rcx, %rax
837
+ ; MEDIUM-PIC-NEXT: retq
838
+ ;
839
+ ; LARGE-PIC-LABEL: lea_ehdr_start:
840
+ ; LARGE-PIC: # %bb.0:
841
+ ; LARGE-PIC-NEXT: .L13$pb:
842
+ ; LARGE-PIC-NEXT: leaq .L13$pb(%rip), %rax
843
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L13$pb, %rcx
844
+ ; LARGE-PIC-NEXT: addq %rax, %rcx
845
+ ; LARGE-PIC-NEXT: movabsq $__ehdr_start@GOTOFF, %rax
846
+ ; LARGE-PIC-NEXT: addq %rcx, %rax
847
+ ; LARGE-PIC-NEXT: retq
848
+ ;
849
+ ; LARGE-SMALL-DATA-PIC-LABEL: lea_ehdr_start:
850
+ ; LARGE-SMALL-DATA-PIC: # %bb.0:
851
+ ; LARGE-SMALL-DATA-PIC-NEXT: .L13$pb:
852
+ ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L13$pb(%rip), %rax
853
+ ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L13$pb, %rcx
854
+ ; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx
855
+ ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $__ehdr_start@GOTOFF, %rax
856
+ ; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax
857
+ ; LARGE-SMALL-DATA-PIC-NEXT: retq
858
+ ret ptr @__ehdr_start
859
+ }
860
+
803
861
define dso_local void @global_fn () #0 {
804
862
; CHECK-LABEL: global_fn:
805
863
; CHECK: # %bb.0:
@@ -861,19 +919,19 @@ define dso_local ptr @lea_static_fn() #0 {
861
919
;
862
920
; LARGE-PIC-LABEL: lea_static_fn:
863
921
; LARGE-PIC: # %bb.0:
864
- ; LARGE-PIC-NEXT: .L16 $pb:
865
- ; LARGE-PIC-NEXT: leaq .L16 $pb(%rip), %rax
866
- ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L16 $pb, %rcx
922
+ ; LARGE-PIC-NEXT: .L17 $pb:
923
+ ; LARGE-PIC-NEXT: leaq .L17 $pb(%rip), %rax
924
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L17 $pb, %rcx
867
925
; LARGE-PIC-NEXT: addq %rax, %rcx
868
926
; LARGE-PIC-NEXT: movabsq $static_fn@GOTOFF, %rax
869
927
; LARGE-PIC-NEXT: addq %rcx, %rax
870
928
; LARGE-PIC-NEXT: retq
871
929
;
872
930
; LARGE-SMALL-DATA-PIC-LABEL: lea_static_fn:
873
931
; LARGE-SMALL-DATA-PIC: # %bb.0:
874
- ; LARGE-SMALL-DATA-PIC-NEXT: .L16 $pb:
875
- ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L16 $pb(%rip), %rax
876
- ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L16 $pb, %rcx
932
+ ; LARGE-SMALL-DATA-PIC-NEXT: .L17 $pb:
933
+ ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L17 $pb(%rip), %rax
934
+ ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L17 $pb, %rcx
877
935
; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx
878
936
; LARGE-SMALL-DATA-PIC-NEXT: movabsq $static_fn@GOTOFF, %rax
879
937
; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax
@@ -914,19 +972,19 @@ define dso_local ptr @lea_global_fn() #0 {
914
972
;
915
973
; LARGE-PIC-LABEL: lea_global_fn:
916
974
; LARGE-PIC: # %bb.0:
917
- ; LARGE-PIC-NEXT: .L17 $pb:
918
- ; LARGE-PIC-NEXT: leaq .L17 $pb(%rip), %rax
919
- ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L17 $pb, %rcx
975
+ ; LARGE-PIC-NEXT: .L18 $pb:
976
+ ; LARGE-PIC-NEXT: leaq .L18 $pb(%rip), %rax
977
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L18 $pb, %rcx
920
978
; LARGE-PIC-NEXT: addq %rax, %rcx
921
979
; LARGE-PIC-NEXT: movabsq $global_fn@GOTOFF, %rax
922
980
; LARGE-PIC-NEXT: addq %rcx, %rax
923
981
; LARGE-PIC-NEXT: retq
924
982
;
925
983
; LARGE-SMALL-DATA-PIC-LABEL: lea_global_fn:
926
984
; LARGE-SMALL-DATA-PIC: # %bb.0:
927
- ; LARGE-SMALL-DATA-PIC-NEXT: .L17 $pb:
928
- ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L17 $pb(%rip), %rax
929
- ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L17 $pb, %rcx
985
+ ; LARGE-SMALL-DATA-PIC-NEXT: .L18 $pb:
986
+ ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L18 $pb(%rip), %rax
987
+ ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L18 $pb, %rcx
930
988
; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx
931
989
; LARGE-SMALL-DATA-PIC-NEXT: movabsq $global_fn@GOTOFF, %rax
932
990
; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax
@@ -967,19 +1025,19 @@ define dso_local ptr @lea_extern_fn() #0 {
967
1025
;
968
1026
; LARGE-PIC-LABEL: lea_extern_fn:
969
1027
; LARGE-PIC: # %bb.0:
970
- ; LARGE-PIC-NEXT: .L18 $pb:
971
- ; LARGE-PIC-NEXT: leaq .L18 $pb(%rip), %rax
972
- ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L18 $pb, %rcx
1028
+ ; LARGE-PIC-NEXT: .L19 $pb:
1029
+ ; LARGE-PIC-NEXT: leaq .L19 $pb(%rip), %rax
1030
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L19 $pb, %rcx
973
1031
; LARGE-PIC-NEXT: addq %rax, %rcx
974
1032
; LARGE-PIC-NEXT: movabsq $extern_fn@GOT, %rax
975
1033
; LARGE-PIC-NEXT: movq (%rcx,%rax), %rax
976
1034
; LARGE-PIC-NEXT: retq
977
1035
;
978
1036
; LARGE-SMALL-DATA-PIC-LABEL: lea_extern_fn:
979
1037
; LARGE-SMALL-DATA-PIC: # %bb.0:
980
- ; LARGE-SMALL-DATA-PIC-NEXT: .L18 $pb:
981
- ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L18 $pb(%rip), %rax
982
- ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L18 $pb, %rcx
1038
+ ; LARGE-SMALL-DATA-PIC-NEXT: .L19 $pb:
1039
+ ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L19 $pb(%rip), %rax
1040
+ ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L19 $pb, %rcx
983
1041
; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx
984
1042
; LARGE-SMALL-DATA-PIC-NEXT: movabsq $extern_fn@GOT, %rax
985
1043
; LARGE-SMALL-DATA-PIC-NEXT: movq (%rcx,%rax), %rax
@@ -1020,19 +1078,19 @@ define dso_local ptr @lea_ifunc() #0 {
1020
1078
;
1021
1079
; LARGE-PIC-LABEL: lea_ifunc:
1022
1080
; LARGE-PIC: # %bb.0:
1023
- ; LARGE-PIC-NEXT: .L19 $pb:
1024
- ; LARGE-PIC-NEXT: leaq .L19 $pb(%rip), %rax
1025
- ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L19 $pb, %rcx
1081
+ ; LARGE-PIC-NEXT: .L20 $pb:
1082
+ ; LARGE-PIC-NEXT: leaq .L20 $pb(%rip), %rax
1083
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L20 $pb, %rcx
1026
1084
; LARGE-PIC-NEXT: addq %rax, %rcx
1027
1085
; LARGE-PIC-NEXT: movabsq $ifunc_func@GOT, %rax
1028
1086
; LARGE-PIC-NEXT: movq (%rcx,%rax), %rax
1029
1087
; LARGE-PIC-NEXT: retq
1030
1088
;
1031
1089
; LARGE-SMALL-DATA-PIC-LABEL: lea_ifunc:
1032
1090
; LARGE-SMALL-DATA-PIC: # %bb.0:
1033
- ; LARGE-SMALL-DATA-PIC-NEXT: .L19 $pb:
1034
- ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L19 $pb(%rip), %rax
1035
- ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L19 $pb, %rcx
1091
+ ; LARGE-SMALL-DATA-PIC-NEXT: .L20 $pb:
1092
+ ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L20 $pb(%rip), %rax
1093
+ ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L20 $pb, %rcx
1036
1094
; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx
1037
1095
; LARGE-SMALL-DATA-PIC-NEXT: movabsq $ifunc_func@GOT, %rax
1038
1096
; LARGE-SMALL-DATA-PIC-NEXT: movq (%rcx,%rax), %rax
@@ -1073,19 +1131,19 @@ define dso_local ptr @lea_dso_local_ifunc() #0 {
1073
1131
;
1074
1132
; LARGE-PIC-LABEL: lea_dso_local_ifunc:
1075
1133
; LARGE-PIC: # %bb.0:
1076
- ; LARGE-PIC-NEXT: .L20 $pb:
1077
- ; LARGE-PIC-NEXT: leaq .L20 $pb(%rip), %rax
1078
- ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L20 $pb, %rcx
1134
+ ; LARGE-PIC-NEXT: .L21 $pb:
1135
+ ; LARGE-PIC-NEXT: leaq .L21 $pb(%rip), %rax
1136
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L21 $pb, %rcx
1079
1137
; LARGE-PIC-NEXT: addq %rax, %rcx
1080
1138
; LARGE-PIC-NEXT: movabsq $dso_local_ifunc_func@GOTOFF, %rax
1081
1139
; LARGE-PIC-NEXT: addq %rcx, %rax
1082
1140
; LARGE-PIC-NEXT: retq
1083
1141
;
1084
1142
; LARGE-SMALL-DATA-PIC-LABEL: lea_dso_local_ifunc:
1085
1143
; LARGE-SMALL-DATA-PIC: # %bb.0:
1086
- ; LARGE-SMALL-DATA-PIC-NEXT: .L20 $pb:
1087
- ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L20 $pb(%rip), %rax
1088
- ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L20 $pb, %rcx
1144
+ ; LARGE-SMALL-DATA-PIC-NEXT: .L21 $pb:
1145
+ ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L21 $pb(%rip), %rax
1146
+ ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L21 $pb, %rcx
1089
1147
; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx
1090
1148
; LARGE-SMALL-DATA-PIC-NEXT: movabsq $dso_local_ifunc_func@GOTOFF, %rax
1091
1149
; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax
@@ -1160,19 +1218,19 @@ define dso_local float @load_constant_pool(float %x) #0 {
1160
1218
;
1161
1219
; LARGE-PIC-LABEL: load_constant_pool:
1162
1220
; LARGE-PIC: # %bb.0:
1163
- ; LARGE-PIC-NEXT: .L22 $pb:
1164
- ; LARGE-PIC-NEXT: leaq .L22 $pb(%rip), %rax
1165
- ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L22 $pb, %rcx
1221
+ ; LARGE-PIC-NEXT: .L23 $pb:
1222
+ ; LARGE-PIC-NEXT: leaq .L23 $pb(%rip), %rax
1223
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L23 $pb, %rcx
1166
1224
; LARGE-PIC-NEXT: addq %rax, %rcx
1167
1225
; LARGE-PIC-NEXT: movabsq ${{\.?LCPI[0-9]+_[0-9]+}}@GOTOFF, %rax
1168
1226
; LARGE-PIC-NEXT: addss (%rcx,%rax), %xmm0
1169
1227
; LARGE-PIC-NEXT: retq
1170
1228
;
1171
1229
; LARGE-SMALL-DATA-PIC-LABEL: load_constant_pool:
1172
1230
; LARGE-SMALL-DATA-PIC: # %bb.0:
1173
- ; LARGE-SMALL-DATA-PIC-NEXT: .L22 $pb:
1174
- ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L22 $pb(%rip), %rax
1175
- ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L22 $pb, %rcx
1231
+ ; LARGE-SMALL-DATA-PIC-NEXT: .L23 $pb:
1232
+ ; LARGE-SMALL-DATA-PIC-NEXT: leaq .L23 $pb(%rip), %rax
1233
+ ; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L23 $pb, %rcx
1176
1234
; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx
1177
1235
; LARGE-SMALL-DATA-PIC-NEXT: movabsq ${{\.?LCPI[0-9]+_[0-9]+}}@GOTOFF, %rax
1178
1236
; LARGE-SMALL-DATA-PIC-NEXT: addss (%rcx,%rax), %xmm0
0 commit comments