From: Matt Arsenault Date: Mon, 29 Aug 2016 19:01:48 +0000 (+0000) Subject: AMDGPU/R600: Fix fixups used for constant arrays X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b90fc9b3b48cb91ee5b21f8f16b9ef1e95dec63f;p=platform%2Fupstream%2Fllvm.git AMDGPU/R600: Fix fixups used for constant arrays Fixes bug 29289 llvm-svn: 279986 --- diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp index c807b76..2e02cba 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp @@ -120,6 +120,7 @@ static uint64_t adjustFixupValue(const MCFixup &Fixup, uint64_t Value, case FK_Data_4: case FK_Data_8: case FK_PCRel_4: + case FK_SecRel_4: return Value; default: llvm_unreachable("unhandled fixup kind"); diff --git a/llvm/test/CodeGen/AMDGPU/r600-constant-array-fixup.ll b/llvm/test/CodeGen/AMDGPU/r600-constant-array-fixup.ll new file mode 100644 index 0000000..d5bf9c8 --- /dev/null +++ b/llvm/test/CodeGen/AMDGPU/r600-constant-array-fixup.ll @@ -0,0 +1,28 @@ +; RUN: llc -filetype=obj -march=r600 -mcpu=cypress -verify-machineinstrs < %s | llvm-readobj -relocations -symbols | FileCheck %s + +@arr = internal unnamed_addr addrspace(2) constant [4 x i32] [i32 4, i32 5, i32 6, i32 7], align 4 + +; CHECK: Relocations [ +; CHECK: Section (3) .rel.text { +; CHECK: 0x58 R_AMDGPU_ABS32 .text 0x0 +; CHECK: } +; CHECK: ] + +; CHECK: Symbol { +; CHECK: Name: arr (11) +; CHECK: Value: 0x70 +; CHECK: Size: 16 +; CHECK: Binding: Local (0x0) +; CHECK: Type: Object (0x1) +; CHECK: Other: 0 +; CHECK: Section: .text (0x2) +; CHECK: } +define amdgpu_kernel void @test_constant_array_fixup(i32 addrspace(1)* nocapture %out, i32 %idx) #0 { +entry: + %arrayidx = getelementptr inbounds [4 x i32], [4 x i32] addrspace(2)* @arr, i32 0, i32 %idx + %val = load i32, i32 addrspace(2)* %arrayidx + store i32 %val, i32 addrspace(1)* %out, align 4 + ret void +} + +attributes #0 = { nounwind }