@@ -36,11 +36,14 @@ source_filename = "model.c"
36
36
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
37
37
target triple = "x86_64--linux"
38
38
39
+ %t = type opaque
40
+
39
41
@global_data = dso_local global [10 x i32 ] [i32 1 , i32 2 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 ], align 16
40
42
@static_data = internal global [10 x i32 ] zeroinitializer , align 16
41
43
@extern_data = external global [10 x i32 ], align 16
42
44
@thread_data = external thread_local global i32 , align 4
43
45
@unknown_size_data = dso_local global [0 x i32 ] zeroinitializer , align 16
46
+ @opaque = external dso_local global %t
44
47
@forced_small_data = dso_local global [10 x i32 ] zeroinitializer , code_model "small" , align 16
45
48
@forced_large_data = dso_local global [10 x i32 ] zeroinitializer , code_model "large" , align 16
46
49
@@ -567,6 +570,53 @@ define dso_local i32 @load_unknown_size_data() #0 {
567
570
ret i32 %rv
568
571
}
569
572
573
+ define dso_local ptr @lea_opaque () #0 {
574
+ ; SMALL-STATIC-LABEL: lea_opaque:
575
+ ; SMALL-STATIC: # %bb.0:
576
+ ; SMALL-STATIC-NEXT: movl $opaque, %eax
577
+ ; SMALL-STATIC-NEXT: retq
578
+ ;
579
+ ; MEDIUM-STATIC-LABEL: lea_opaque:
580
+ ; MEDIUM-STATIC: # %bb.0:
581
+ ; MEDIUM-STATIC-NEXT: movabsq $opaque, %rax
582
+ ; MEDIUM-STATIC-NEXT: retq
583
+ ;
584
+ ; LARGE-STATIC-LABEL: lea_opaque:
585
+ ; LARGE-STATIC: # %bb.0:
586
+ ; LARGE-STATIC-NEXT: movabsq $opaque, %rax
587
+ ; LARGE-STATIC-NEXT: retq
588
+ ;
589
+ ; SMALL-PIC-LABEL: lea_opaque:
590
+ ; SMALL-PIC: # %bb.0:
591
+ ; SMALL-PIC-NEXT: leaq opaque(%rip), %rax
592
+ ; SMALL-PIC-NEXT: retq
593
+ ;
594
+ ; MEDIUM-SMALL-DATA-PIC-LABEL: lea_opaque:
595
+ ; MEDIUM-SMALL-DATA-PIC: # %bb.0:
596
+ ; MEDIUM-SMALL-DATA-PIC-NEXT: leaq _GLOBAL_OFFSET_TABLE_(%rip), %rcx
597
+ ; MEDIUM-SMALL-DATA-PIC-NEXT: movabsq $opaque@GOTOFF, %rax
598
+ ; MEDIUM-SMALL-DATA-PIC-NEXT: addq %rcx, %rax
599
+ ; MEDIUM-SMALL-DATA-PIC-NEXT: retq
600
+ ;
601
+ ; MEDIUM-PIC-LABEL: lea_opaque:
602
+ ; MEDIUM-PIC: # %bb.0:
603
+ ; MEDIUM-PIC-NEXT: leaq _GLOBAL_OFFSET_TABLE_(%rip), %rcx
604
+ ; MEDIUM-PIC-NEXT: movabsq $opaque@GOTOFF, %rax
605
+ ; MEDIUM-PIC-NEXT: addq %rcx, %rax
606
+ ; MEDIUM-PIC-NEXT: retq
607
+ ;
608
+ ; LARGE-PIC-LABEL: lea_opaque:
609
+ ; LARGE-PIC: # %bb.0:
610
+ ; LARGE-PIC-NEXT: .L11$pb:
611
+ ; LARGE-PIC-NEXT: leaq .L11$pb(%rip), %rax
612
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L11$pb, %rcx
613
+ ; LARGE-PIC-NEXT: addq %rax, %rcx
614
+ ; LARGE-PIC-NEXT: movabsq $opaque@GOTOFF, %rax
615
+ ; LARGE-PIC-NEXT: addq %rcx, %rax
616
+ ; LARGE-PIC-NEXT: retq
617
+ ret ptr @opaque
618
+ }
619
+
570
620
define dso_local void @global_fn () #0 {
571
621
; CHECK-LABEL: global_fn:
572
622
; CHECK: # %bb.0:
@@ -628,9 +678,9 @@ define dso_local ptr @lea_static_fn() #0 {
628
678
;
629
679
; LARGE-PIC-LABEL: lea_static_fn:
630
680
; LARGE-PIC: # %bb.0:
631
- ; LARGE-PIC-NEXT: .L14 $pb:
632
- ; LARGE-PIC-NEXT: leaq .L14 $pb(%rip), %rax
633
- ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L14 $pb, %rcx
681
+ ; LARGE-PIC-NEXT: .L15 $pb:
682
+ ; LARGE-PIC-NEXT: leaq .L15 $pb(%rip), %rax
683
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L15 $pb, %rcx
634
684
; LARGE-PIC-NEXT: addq %rax, %rcx
635
685
; LARGE-PIC-NEXT: movabsq $static_fn@GOTOFF, %rax
636
686
; LARGE-PIC-NEXT: addq %rcx, %rax
@@ -671,9 +721,9 @@ define dso_local ptr @lea_global_fn() #0 {
671
721
;
672
722
; LARGE-PIC-LABEL: lea_global_fn:
673
723
; LARGE-PIC: # %bb.0:
674
- ; LARGE-PIC-NEXT: .L15 $pb:
675
- ; LARGE-PIC-NEXT: leaq .L15 $pb(%rip), %rax
676
- ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L15 $pb, %rcx
724
+ ; LARGE-PIC-NEXT: .L16 $pb:
725
+ ; LARGE-PIC-NEXT: leaq .L16 $pb(%rip), %rax
726
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L16 $pb, %rcx
677
727
; LARGE-PIC-NEXT: addq %rax, %rcx
678
728
; LARGE-PIC-NEXT: movabsq $global_fn@GOTOFF, %rax
679
729
; LARGE-PIC-NEXT: addq %rcx, %rax
@@ -714,9 +764,9 @@ define dso_local ptr @lea_extern_fn() #0 {
714
764
;
715
765
; LARGE-PIC-LABEL: lea_extern_fn:
716
766
; LARGE-PIC: # %bb.0:
717
- ; LARGE-PIC-NEXT: .L16 $pb:
718
- ; LARGE-PIC-NEXT: leaq .L16 $pb(%rip), %rax
719
- ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L16 $pb, %rcx
767
+ ; LARGE-PIC-NEXT: .L17 $pb:
768
+ ; LARGE-PIC-NEXT: leaq .L17 $pb(%rip), %rax
769
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L17 $pb, %rcx
720
770
; LARGE-PIC-NEXT: addq %rax, %rcx
721
771
; LARGE-PIC-NEXT: movabsq $extern_fn@GOT, %rax
722
772
; LARGE-PIC-NEXT: movq (%rcx,%rax), %rax
@@ -757,9 +807,9 @@ define dso_local ptr @lea_ifunc() #0 {
757
807
;
758
808
; LARGE-PIC-LABEL: lea_ifunc:
759
809
; LARGE-PIC: # %bb.0:
760
- ; LARGE-PIC-NEXT: .L17 $pb:
761
- ; LARGE-PIC-NEXT: leaq .L17 $pb(%rip), %rax
762
- ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L17 $pb, %rcx
810
+ ; LARGE-PIC-NEXT: .L18 $pb:
811
+ ; LARGE-PIC-NEXT: leaq .L18 $pb(%rip), %rax
812
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L18 $pb, %rcx
763
813
; LARGE-PIC-NEXT: addq %rax, %rcx
764
814
; LARGE-PIC-NEXT: movabsq $ifunc_func@GOT, %rax
765
815
; LARGE-PIC-NEXT: movq (%rcx,%rax), %rax
@@ -800,9 +850,9 @@ define dso_local ptr @lea_dso_local_ifunc() #0 {
800
850
;
801
851
; LARGE-PIC-LABEL: lea_dso_local_ifunc:
802
852
; LARGE-PIC: # %bb.0:
803
- ; LARGE-PIC-NEXT: .L18 $pb:
804
- ; LARGE-PIC-NEXT: leaq .L18 $pb(%rip), %rax
805
- ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L18 $pb, %rcx
853
+ ; LARGE-PIC-NEXT: .L19 $pb:
854
+ ; LARGE-PIC-NEXT: leaq .L19 $pb(%rip), %rax
855
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L19 $pb, %rcx
806
856
; LARGE-PIC-NEXT: addq %rax, %rcx
807
857
; LARGE-PIC-NEXT: movabsq $dso_local_ifunc_func@GOTOFF, %rax
808
858
; LARGE-PIC-NEXT: addq %rcx, %rax
@@ -878,9 +928,9 @@ define dso_local float @load_constant_pool(float %x) #0 {
878
928
;
879
929
; LARGE-PIC-LABEL: load_constant_pool:
880
930
; LARGE-PIC: # %bb.0:
881
- ; LARGE-PIC-NEXT: .L20 $pb:
882
- ; LARGE-PIC-NEXT: leaq .L20 $pb(%rip), %rax
883
- ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L20 $pb, %rcx
931
+ ; LARGE-PIC-NEXT: .L21 $pb:
932
+ ; LARGE-PIC-NEXT: leaq .L21 $pb(%rip), %rax
933
+ ; LARGE-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L21 $pb, %rcx
884
934
; LARGE-PIC-NEXT: addq %rax, %rcx
885
935
; LARGE-PIC-NEXT: movabsq ${{\.?LCPI[0-9]+_[0-9]+}}@GOTOFF, %rax
886
936
; LARGE-PIC-NEXT: addss (%rcx,%rax), %xmm0
0 commit comments