1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 12:33:33 +02:00
llvm-mirror/test/CodeGen/MIR/X86/external-symbol-operands.mir
Alex Lorenz 5694297a85 MIR Tests: Add liveins and successors to make tests pass with machine verifier.
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
2015-07-24 17:36:55 +00:00

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'
...