2014-11-24 04:08:18 -05:00
; RUN: llc < %s -mtriple=arm-linux-unknown-gnueabi -verify-machineinstrs -filetype=asm | FileCheck %s -check-prefix=ARM-linux
; RUN: llc < %s -mtriple=arm-linux-unknown-gnueabi -filetype=obj
!llvm.dbg.cu = ! { !0 }
!llvm.module.flags = ! { !9 , !10 }
!llvm.ident = ! { !11 }
2015-12-30 06:46:15 -05:00
define void @test_basic ( ) #0 !dbg !4 {
2014-11-24 04:08:18 -05:00
%mem = alloca i32 , i32 10
call void @dummy_use ( i32 * %mem , i32 10 )
ret void
; ARM-linux: test_basic:
; ARM-linux: push {r4, r5}
; ARM-linux: .cfi_def_cfa_offset 8
; ARM-linux: .cfi_offset r5, -4
; ARM-linux: .cfi_offset r4, -8
; ARM-linux-NEXT: mrc p15, #0, r4, c13, c0, #3
; ARM-linux-NEXT: mov r5, sp
; ARM-linux-NEXT: ldr r4, [r4, #4]
; ARM-linux-NEXT: cmp r4, r5
; ARM-linux-NEXT: blo .LBB0_2
; ARM-linux: mov r4, #48
; ARM-linux-NEXT: mov r5, #0
; ARM-linux-NEXT: stmdb sp!, {lr}
; ARM-linux: .cfi_def_cfa_offset 12
; ARM-linux: .cfi_offset lr, -12
; ARM-linux-NEXT: bl __morestack
; ARM-linux-NEXT: ldm sp!, {lr}
; ARM-linux-NEXT: pop {r4, r5}
; ARM-linux: .cfi_def_cfa_offset 0
; ARM-linux-NEXT: bx lr
; ARM-linux: pop {r4, r5}
; ARM-linux: .cfi_def_cfa_offset 0
; ARM-linux .cfi_same_value r4
; ARM-linux .cfi_same_value r5
}
2016-07-23 16:41:05 -04:00
!0 = distinct !DICompileUnit ( language: D W _ L A N G _ C 99 , producer: "clang version 3.5 " , isOptimized: false , emissionKind: F u l l D e b u g , file: !1 , enums: !2 , retainedTypes: !2 , globals: !2 , imports: !2 )
2015-05-27 14:44:32 -04:00
!1 = !DIFile ( filename: "var.c" , directory: "/tmp" )
2015-01-18 11:17:27 -05:00
!2 = ! { }
2016-07-23 16:41:05 -04:00
!4 = distinct !DISubprogram ( name: "test_basic" , line: 5 , isLocal: false , isDefinition: true , virtualIndex: 6 , flags: D I F l a g P r o t o t y p e d , isOptimized: false , unit: !0 , scopeLine: 5 , file: !1 , scope: !5 , type: !6 , variables: !2 )
2015-05-27 14:44:32 -04:00
!5 = !DIFile ( filename: "var.c" , directory: "/tmp" )
!6 = !DISubroutineType ( types: !7 )
2015-01-18 11:17:27 -05:00
!7 = ! { !8 , !8 }
2015-05-27 14:44:32 -04:00
!8 = !DIBasicType ( tag: D W _ T A G _ b a s e _ type , name: "int" , size: 32 , align: 32 , encoding: D W _ A T E _ s i g n e d )
2015-01-18 11:17:27 -05:00
!9 = ! { i32 2 , !"Dwarf Version" , i32 4 }
2015-05-27 14:44:32 -04:00
!10 = ! { i32 1 , !"Debug Info Version" , i32 3 }
2015-01-18 11:17:27 -05:00
!11 = ! { !"clang version 3.5 " }
2015-12-30 06:46:15 -05:00
!12 = !DILocalVariable ( name: "count" , line: 5 , arg: 1 , scope: !4 , file: !5 , type: !8 )
2015-05-27 14:44:32 -04:00
!13 = !DILocation ( line: 5 , scope: !4 )
2015-12-30 06:46:15 -05:00
!14 = !DILocalVariable ( name: "vl" , line: 6 , scope: !4 , file: !5 , type: !15 )
2015-05-27 14:44:32 -04:00
!15 = !DIDerivedType ( tag: D W _ T A G _ t y p e d e f , name: "va_list" , line: 30 , file: !16 , baseType: !17 )
!16 = !DIFile ( filename: "/linux-x86_64-high/gcc_4.7.2/dbg/llvm/bin/../lib/clang/3.5/include/stdarg.h" , directory: "/tmp" )
!17 = !DIDerivedType ( tag: D W _ T A G _ t y p e d e f , name: "__builtin_va_list" , line: 6 , file: !1 , baseType: !18 )
!18 = !DICompositeType ( tag: D W _ T A G _ s t r u c t u r e _ type , name: "__va_list" , line: 6 , size: 32 , align: 32 , file: !1 , elements: !19 )
2015-01-18 11:17:27 -05:00
!19 = ! { !20 }
2015-05-27 14:44:32 -04:00
!20 = !DIDerivedType ( tag: D W _ T A G _ m e m b e r , name: "__ap" , line: 6 , size: 32 , align: 32 , file: !1 , scope: !18 , baseType: !21 )
!21 = !DIDerivedType ( tag: D W _ T A G _ p o i n t e r _ type , size: 32 , align: 32 , baseType: null )
!22 = !DILocation ( line: 6 , scope: !4 )
!23 = !DILocation ( line: 7 , scope: !4 )
2015-12-30 06:46:15 -05:00
!24 = !DILocalVariable ( name: "test_basic" , line: 8 , scope: !4 , file: !5 , type: !8 )
2015-05-27 14:44:32 -04:00
!25 = !DILocation ( line: 8 , scope: !4 )
2015-12-30 06:46:15 -05:00
!26 = !DILocalVariable ( name: "i" , line: 9 , scope: !27 , file: !5 , type: !8 )
2015-05-27 14:44:32 -04:00
!27 = distinct !DILexicalBlock ( line: 9 , column: 0 , file: !1 , scope: !4 )
!28 = !DILocation ( line: 9 , scope: !27 )
!29 = !DILocation ( line: 10 , scope: !30 )
!30 = distinct !DILexicalBlock ( line: 9 , column: 0 , file: !1 , scope: !27 )
!31 = !DILocation ( line: 11 , scope: !30 )
!32 = !DILocation ( line: 12 , scope: !4 )
!33 = !DILocation ( line: 13 , scope: !4 )
2014-11-24 04:08:18 -05:00
; Just to prevent the alloca from being optimized away
declare void @dummy_use ( i32 * , i32 )
attributes #0 = { "split-stack" }