mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-07 12:30:44 +00:00
a4a23eae96
The exit-on-error flag was necessary in order to avoid an assertion when handling DYNAMIC_STACKALLOC nodes in SelectionDAGLegalize. We can avoid the assertion by creating some dummy nodes. This enables us to remove the exit-on-error flag on the first 2 run lines (SI), but on the third run line (R600) we would run into another assertion when trying to reserve indirect registers. This patch also replaces that assertion with an early exit from the function. Fixes PR27761. Differential Revision: http://reviews.llvm.org/D20852 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273550 91177308-0d34-0410-b5e6-96231b3b80d8
22 lines
744 B
LLVM
22 lines
744 B
LLVM
; RUN: not llc -verify-machineinstrs -march=amdgcn %s -o /dev/null 2>&1 | FileCheck %s
|
|
; RUN: not llc -verify-machineinstrs -march=amdgcn -mcpu=tonga %s -o /dev/null 2>&1 | FileCheck %s
|
|
|
|
; Make sure promote alloca pass doesn't crash
|
|
|
|
; CHECK: unsupported call
|
|
|
|
declare i32 @foo(i32*) nounwind
|
|
|
|
define void @call_private(i32 addrspace(1)* %out, i32 %in) nounwind {
|
|
entry:
|
|
%tmp = alloca [2 x i32]
|
|
%tmp1 = getelementptr [2 x i32], [2 x i32]* %tmp, i32 0, i32 0
|
|
%tmp2 = getelementptr [2 x i32], [2 x i32]* %tmp, i32 0, i32 1
|
|
store i32 0, i32* %tmp1
|
|
store i32 1, i32* %tmp2
|
|
%tmp3 = getelementptr [2 x i32], [2 x i32]* %tmp, i32 0, i32 %in
|
|
%val = call i32 @foo(i32* %tmp3) nounwind
|
|
store i32 %val, i32 addrspace(1)* %out
|
|
ret void
|
|
}
|