diff options
Diffstat (limited to 'llvm/test/CodeGen/ARM/2010-08-04-StackVariable.ll')
-rw-r--r-- | llvm/test/CodeGen/ARM/2010-08-04-StackVariable.ll | 63 |
1 files changed, 33 insertions, 30 deletions
diff --git a/llvm/test/CodeGen/ARM/2010-08-04-StackVariable.ll b/llvm/test/CodeGen/ARM/2010-08-04-StackVariable.ll index a90ea137cb7..1bfb892d52f 100644 --- a/llvm/test/CodeGen/ARM/2010-08-04-StackVariable.ll +++ b/llvm/test/CodeGen/ARM/2010-08-04-StackVariable.ll @@ -1,4 +1,4 @@ -; RUN: llc -O0 -mtriple=arm-apple-darwin < %s | grep DW_OP_breg +; RUN: llc -mtriple arm-apple-darwin -O0 -filetype asm -o - %s | FileCheck %s ; Use DW_OP_breg in variable's location expression if the variable is in a stack slot. target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:64" @@ -8,43 +8,43 @@ target triple = "arm-apple-darwin" define i32 @_Z3fooi4SVal(i32 %i, %struct.SVal* noalias %location) nounwind ssp !dbg !17 { entry: - %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + %"alloca point" = bitcast i32 0 to i32 call void @llvm.dbg.value(metadata i32 %i, i64 0, metadata !23, metadata !DIExpression()), !dbg !24 call void @llvm.dbg.value(metadata %struct.SVal* %location, i64 0, metadata !25, metadata !DIExpression()), !dbg !24 - %0 = icmp ne i32 %i, 0, !dbg !27 ; <i1> [#uses=1] + %0 = icmp ne i32 %i, 0, !dbg !27 br i1 %0, label %bb, label %bb1, !dbg !27 -bb: ; preds = %entry - %1 = getelementptr inbounds %struct.SVal, %struct.SVal* %location, i32 0, i32 1, !dbg !29 ; <i32*> [#uses=1] - %2 = load i32, i32* %1, align 8, !dbg !29 ; <i32> [#uses=1] - %3 = add i32 %2, %i, !dbg !29 ; <i32> [#uses=1] +bb: + %1 = getelementptr inbounds %struct.SVal, %struct.SVal* %location, i32 0, i32 1, !dbg !29 + %2 = load i32, i32* %1, align 8, !dbg !29 + %3 = add i32 %2, %i, !dbg !29 br label %bb2, !dbg !29 -bb1: ; preds = %entry - %4 = getelementptr inbounds %struct.SVal, %struct.SVal* %location, i32 0, i32 1, !dbg !30 ; <i32*> [#uses=1] - %5 = load i32, i32* %4, align 8, !dbg !30 ; <i32> [#uses=1] - %6 = sub i32 %5, 1, !dbg !30 ; <i32> [#uses=1] +bb1: + %4 = getelementptr inbounds %struct.SVal, %struct.SVal* %location, i32 0, i32 1, !dbg !30 + %5 = load i32, i32* %4, align 8, !dbg !30 + %6 = sub i32 %5, 1, !dbg !30 br label %bb2, !dbg !30 -bb2: ; preds = %bb1, %bb - %.0 = phi i32 [ %3, %bb ], [ %6, %bb1 ] ; <i32> [#uses=1] +bb2: + %.0 = phi i32 [ %3, %bb ], [ %6, %bb1 ] br label %return, !dbg !29 -return: ; preds = %bb2 +return: ret i32 %.0, !dbg !29 } define linkonce_odr void @_ZN4SValC1Ev(%struct.SVal* %this) nounwind ssp align 2 !dbg !16 { entry: - %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + %"alloca point" = bitcast i32 0 to i32 call void @llvm.dbg.value(metadata %struct.SVal* %this, i64 0, metadata !31, metadata !DIExpression()), !dbg !34 - %0 = getelementptr inbounds %struct.SVal, %struct.SVal* %this, i32 0, i32 0, !dbg !34 ; <i8**> [#uses=1] + %0 = getelementptr inbounds %struct.SVal, %struct.SVal* %this, i32 0, i32 0, !dbg !34 store i8* null, i8** %0, align 8, !dbg !34 - %1 = getelementptr inbounds %struct.SVal, %struct.SVal* %this, i32 0, i32 1, !dbg !34 ; <i32*> [#uses=1] + %1 = getelementptr inbounds %struct.SVal, %struct.SVal* %this, i32 0, i32 1, !dbg !34 store i32 0, i32* %1, align 8, !dbg !34 br label %return, !dbg !34 -return: ; preds = %entry +return: ret void, !dbg !35 } @@ -52,26 +52,26 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone define i32 @main() nounwind ssp !dbg !20 { entry: - %0 = alloca %struct.SVal ; <%struct.SVal*> [#uses=3] - %v = alloca %struct.SVal ; <%struct.SVal*> [#uses=4] - %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + %0 = alloca %struct.SVal + %v = alloca %struct.SVal + %"alloca point" = bitcast i32 0 to i32 call void @llvm.dbg.declare(metadata %struct.SVal* %v, metadata !38, metadata !DIExpression()), !dbg !41 call void @_ZN4SValC1Ev(%struct.SVal* %v) nounwind, !dbg !41 - %1 = getelementptr inbounds %struct.SVal, %struct.SVal* %v, i32 0, i32 1, !dbg !42 ; <i32*> [#uses=1] + %1 = getelementptr inbounds %struct.SVal, %struct.SVal* %v, i32 0, i32 1, !dbg !42 store i32 1, i32* %1, align 8, !dbg !42 - %2 = getelementptr inbounds %struct.SVal, %struct.SVal* %0, i32 0, i32 0, !dbg !43 ; <i8**> [#uses=1] - %3 = getelementptr inbounds %struct.SVal, %struct.SVal* %v, i32 0, i32 0, !dbg !43 ; <i8**> [#uses=1] - %4 = load i8*, i8** %3, align 8, !dbg !43 ; <i8*> [#uses=1] + %2 = getelementptr inbounds %struct.SVal, %struct.SVal* %0, i32 0, i32 0, !dbg !43 + %3 = getelementptr inbounds %struct.SVal, %struct.SVal* %v, i32 0, i32 0, !dbg !43 + %4 = load i8*, i8** %3, align 8, !dbg !43 store i8* %4, i8** %2, align 8, !dbg !43 - %5 = getelementptr inbounds %struct.SVal, %struct.SVal* %0, i32 0, i32 1, !dbg !43 ; <i32*> [#uses=1] - %6 = getelementptr inbounds %struct.SVal, %struct.SVal* %v, i32 0, i32 1, !dbg !43 ; <i32*> [#uses=1] - %7 = load i32, i32* %6, align 8, !dbg !43 ; <i32> [#uses=1] + %5 = getelementptr inbounds %struct.SVal, %struct.SVal* %0, i32 0, i32 1, !dbg !43 + %6 = getelementptr inbounds %struct.SVal, %struct.SVal* %v, i32 0, i32 1, !dbg !43 + %7 = load i32, i32* %6, align 8, !dbg !43 store i32 %7, i32* %5, align 8, !dbg !43 - %8 = call i32 @_Z3fooi4SVal(i32 2, %struct.SVal* noalias %0) nounwind, !dbg !43 ; <i32> [#uses=0] + %8 = call i32 @_Z3fooi4SVal(i32 2, %struct.SVal* noalias %0) nounwind, !dbg !43 call void @llvm.dbg.value(metadata i32 %8, i64 0, metadata !44, metadata !DIExpression()), !dbg !43 br label %return, !dbg !45 -return: ; preds = %entry +return: ret i32 0, !dbg !45 } @@ -129,3 +129,6 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon !47 = !{} !48 = !DIFile(filename: "small.cc", directory: "/Users/manav/R8248330") !49 = !{i32 1, !"Debug Info Version", i32 3} + +; CHECK: @ DW_OP_breg + |