mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-22 12:33:33 +02:00
5694297a85
This commit adds the liveins and successors properties to machine basic blocks in some of the MIR tests to ensure that the tests will pass when the MIR parser will run the machine verifier after initializing a machine function. llvm-svn: 243124
63 lines
2.3 KiB
YAML
63 lines
2.3 KiB
YAML
# RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s | FileCheck %s
|
|
# This test ensures that the MIR parser parses the external symbol machine
|
|
# operands correctly.
|
|
|
|
--- |
|
|
@__stack_chk_guard = external global i8*
|
|
|
|
define i32 @test(i32 %n) #0 {
|
|
entry:
|
|
%StackGuardSlot = alloca i8*
|
|
%StackGuard = load i8*, i8** @__stack_chk_guard
|
|
call void @llvm.stackprotector(i8* %StackGuard, i8** %StackGuardSlot)
|
|
%a = alloca [128 x i32], align 16
|
|
%idxprom = sext i32 %n to i64
|
|
%arrayidx = getelementptr inbounds [128 x i32], [128 x i32]* %a, i64 0, i64 %idxprom
|
|
%0 = load i32, i32* %arrayidx, align 4
|
|
call void @llvm.stackprotectorcheck(i8** @__stack_chk_guard)
|
|
ret i32 %0
|
|
}
|
|
|
|
declare void @llvm.stackprotector(i8*, i8**) #1
|
|
|
|
declare void @llvm.stackprotectorcheck(i8**) #1
|
|
|
|
attributes #0 = { ssp "stack-protector-buffer-size"="8" }
|
|
attributes #1 = { nounwind }
|
|
|
|
...
|
|
---
|
|
name: test
|
|
tracksRegLiveness: true
|
|
body:
|
|
- id: 0
|
|
name: entry
|
|
successors: [ '%bb.1.entry', '%bb.2.entry' ]
|
|
liveins: [ '%edi' ]
|
|
instructions:
|
|
- '%rsp = SUB64ri32 %rsp, 520, implicit-def %eflags'
|
|
- '%rcx = LOAD_STACK_GUARD'
|
|
- 'MOV64mr %rsp, 1, _, 512, _, %rcx'
|
|
- '%rax = MOVSX64rr32 %edi'
|
|
- '%eax = MOV32rm %rsp, 4, %rax, 0, _'
|
|
- 'CMP64rm %rcx, %rsp, 1, _, 512, _, implicit-def %eflags'
|
|
- 'JNE_1 %bb.2.entry, implicit %eflags'
|
|
- id: 1
|
|
name: entry
|
|
liveins: [ '%eax' ]
|
|
instructions:
|
|
- '%rsp = ADD64ri32 %rsp, 520, implicit-def %eflags'
|
|
- 'RETQ %eax'
|
|
- id: 2
|
|
name: entry
|
|
instructions:
|
|
# CHECK: CALL64pcrel32 $__stack_chk_fail,
|
|
# CHECK-NEXT: CALL64pcrel32 $__stack_chk_fail.09-_,
|
|
# CHECK-NEXT: CALL64pcrel32 $"__stack_chk_fail$",
|
|
# CHECK-NEXT: CALL64pcrel32 $"$Quoted \09 External symbol \11 ",
|
|
- 'CALL64pcrel32 $__stack_chk_fail, csr_64, implicit %rsp, implicit-def %rsp'
|
|
- 'CALL64pcrel32 $__stack_chk_fail.09-_, csr_64, implicit %rsp, implicit-def %rsp'
|
|
- 'CALL64pcrel32 $__stack_chk_fail$, csr_64, implicit %rsp, implicit-def %rsp'
|
|
- 'CALL64pcrel32 $"$Quoted \09 External symbol \11 ", csr_64, implicit %rsp, implicit-def %rsp'
|
|
...
|