mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2026-01-31 01:35:20 +01:00
Commit Message from @MaskRay:
Rust has a fragile embed-bitcode implementation
(bddb59cf07/compiler/rustc_codegen_llvm/src/back/write.rs (L970-L1017))
which relied on the previous LLVM MC behavior. Rust's LLVM fork
has carried a revert. This commit made the similar revert to help
distributions since they would otherwise probably carry a similar patch
(as they ship rust linked against system LLVM).
Fixes https://bugs.llvm.org/show_bug.cgi?id=51207.
Differential Revision: https://reviews.llvm.org/D107216
54 lines
1.5 KiB
LLVM
54 lines
1.5 KiB
LLVM
; RUN: llc < %s -march=mips -mcpu=mips32 -mips-ssection-threshold=8 \
|
|
; RUN: -relocation-model=static -mattr=+noabicalls -mgpopt \
|
|
; RUN: | FileCheck %s
|
|
|
|
; Test that object with an explicit section that is not .sdata or .sbss are not
|
|
; considered in the small data section if they would otherwise qualify to be in
|
|
; small data section. Also test that explicitly placing something in the small
|
|
; data section uses %gp_rel addressing mode.
|
|
|
|
@a = global [2 x i32] zeroinitializer, section ".rodata", align 4
|
|
@b = global [4 x i32] zeroinitializer, section ".sdata", align 4
|
|
@c = global [4 x i32] zeroinitializer, section ".sbss", align 4
|
|
|
|
; CHECK-LABEL: g
|
|
; CHECK: lui $[[R:[0-9]+]], %hi(a)
|
|
; CHECK: lw ${{[0-9]+}}, %lo(a)($[[R]])
|
|
|
|
define i32 @g() {
|
|
entry:
|
|
%0 = load i32, i32* getelementptr inbounds ([2 x i32], [2 x i32]* @a, i32 0, i32 0), align 4
|
|
ret i32 %0
|
|
}
|
|
|
|
; CHECK-LABEL: f:
|
|
; CHECK-LABEL: lw ${{[0-9]+}}, %gp_rel(b)($gp)
|
|
|
|
define i32 @f() {
|
|
entry:
|
|
%0 = load i32, i32* getelementptr inbounds ([4 x i32], [4 x i32]* @b, i32 0, i32 0), align 4
|
|
ret i32 %0
|
|
}
|
|
|
|
; CHECK-LABEL: h:
|
|
; CHECK-LABEL: lw ${{[0-9]+}}, %gp_rel(c)($gp)
|
|
|
|
define i32 @h() {
|
|
entry:
|
|
%0 = load i32, i32* getelementptr inbounds ([4 x i32], [4 x i32]* @c, i32 0, i32 0), align 4
|
|
ret i32 %0
|
|
}
|
|
|
|
|
|
; CHECK: .type a,@object
|
|
; CHECK: .section .rodata,"a",@progbits
|
|
; CHECK: .globl a
|
|
|
|
; CHECK: .type b,@object
|
|
; CHECK: .section .sdata,"aw",@progbits
|
|
; CHECK: .globl b
|
|
|
|
; CHECK: .type c,@object
|
|
; CHECK: .section .sbss,"aw",@nobits
|
|
; CHECK: .globl c
|