| Index: test/NaCl/Bitcode/dump.ll
|
| diff --git a/test/NaCl/Bitcode/dump.ll b/test/NaCl/Bitcode/dump.ll
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..effe56106f26dcc0a62b1ca227ff742e58717a7e
|
| --- /dev/null
|
| +++ b/test/NaCl/Bitcode/dump.ll
|
| @@ -0,0 +1,247 @@
|
| +; Simple tests on dump flags for pnacl-bcanalyzer.
|
| +
|
| +@bytes = internal global [4 x i8] c"abcd"
|
| +
|
| +@ptr_to_ptr = internal global i32 ptrtoint (i32* @ptr to i32)
|
| +
|
| +@ptr = internal global i32 ptrtoint ([4 x i8]* @bytes to i32)
|
| +
|
| +declare i32 @bar(i32)
|
| +
|
| +define void @AllocCastSimple() {
|
| + %1 = alloca i8, i32 4, align 8
|
| + %2 = ptrtoint i8* %1 to i32
|
| + %3 = bitcast [4 x i8]* @bytes to i32*
|
| + store i32 %2, i32* %3, align 1
|
| + ret void
|
| +}
|
| +
|
| +define void @PhiBackwardRefs(i1) {
|
| + %2 = alloca i8, i32 4, align 8
|
| + %3 = alloca i8, i32 4, align 8
|
| + br i1 %0, label %true, label %false
|
| +
|
| +true: ; preds = %1
|
| + %4 = bitcast i8* %2 to i32*
|
| + %5 = load i32* %4
|
| + %6 = ptrtoint i8* %3 to i32
|
| + br label %merge
|
| +
|
| +false: ; preds = %1
|
| + %7 = bitcast i8* %2 to i32*
|
| + %8 = load i32* %7
|
| + %9 = ptrtoint i8* %3 to i32
|
| + br label %merge
|
| +
|
| +merge: ; preds = %false, %true
|
| + %10 = phi i32 [ %6, %true ], [ %9, %false ]
|
| + %11 = phi i32 [ %5, %true ], [ %8, %false ]
|
| + ret void
|
| +}
|
| +
|
| +; -------------------------------------------------
|
| +
|
| +; 1) Test dump of records.
|
| +; RUN: llvm-as < %s | pnacl-freeze \
|
| +; RUN: | pnacl-bcanalyzer --operands-per-line=4 \
|
| +; RUN: -dump-records \
|
| +; RUN: | FileCheck %s -check-prefix=DR
|
| +
|
| +; DR: <MODULE_BLOCK>
|
| +; DR: <VERSION op0=1/>
|
| +; DR: <BLOCKINFO_BLOCK/>
|
| +; DR: <TYPE_BLOCK_ID>
|
| +; DR: <NUMENTRY op0=7/>
|
| +; DR: <INTEGER op0=32/>
|
| +; DR: <VOID/>
|
| +; DR: <INTEGER op0=1/>
|
| +; DR: <INTEGER op0=8/>
|
| +; DR: <FUNCTION op0=0 op1=0 op2=0/>
|
| +; DR: <FUNCTION op0=0 op1=1/>
|
| +; DR: <FUNCTION op0=0 op1=1 op2=2/>
|
| +; DR: </TYPE_BLOCK_ID>
|
| +; DR: <FUNCTION op0=4 op1=0 op2=1 op3=0/>
|
| +; DR: <FUNCTION op0=5 op1=0 op2=0 op3=0/>
|
| +; DR: <FUNCTION op0=6 op1=0 op2=0 op3=0/>
|
| +; DR: <GLOBALVAR_BLOCK>
|
| +; DR: <COUNT op0=3/>
|
| +; DR: <VAR op0=0 op1=0/>
|
| +; DR: <DATA op0=97 op1=98 op2=99 op3=100/>
|
| +; DR: <VAR op0=0 op1=0/>
|
| +; DR: <RELOC op0=5/>
|
| +; DR: <VAR op0=0 op1=0/>
|
| +; DR: <RELOC op0=3/>
|
| +; DR: </GLOBALVAR_BLOCK>
|
| +; DR: <VALUE_SYMTAB>
|
| +; DR: <ENTRY op0=1 op1=65 op2=108 op3=108
|
| +; DR: op4=111 op5=99 op6=67 op7=97
|
| +; DR: op8=115 op9=116 op10=83 op11=105
|
| +; DR: op12=109 op13=112 op14=108 op15=101/>
|
| +; DR: <ENTRY op0=2 op1=80 op2=104 op3=105
|
| +; DR: op4=66 op5=97 op6=99 op7=107
|
| +; DR: op8=119 op9=97 op10=114 op11=100
|
| +; DR: op12=82 op13=101 op14=102 op15=115/>
|
| +; DR: <ENTRY op0=0 op1=98 op2=97 op3=114/>
|
| +; DR: <ENTRY op0=5 op1=112 op2=116 op3=114/>
|
| +; DR: <ENTRY op0=3 op1=98 op2=121 op3=116
|
| +; DR: op4=101 op5=115/>
|
| +; DR: <ENTRY op0=4 op1=112 op2=116 op3=114
|
| +; DR: op4=95 op5=116 op6=111 op7=95
|
| +; DR: op8=112 op9=116 op10=114/>
|
| +; DR: </VALUE_SYMTAB>
|
| +; DR: <FUNCTION_BLOCK>
|
| +; DR: <DECLAREBLOCKS op0=1/>
|
| +; DR: <CONSTANTS_BLOCK>
|
| +; DR: <SETTYPE op0=0/>
|
| +; DR: <INTEGER op0=8/>
|
| +; DR: </CONSTANTS_BLOCK>
|
| +; DR: <INST_ALLOCA op0=1 op1=4/>
|
| +; DR: <INST_STORE op0=5 op1=1 op2=1/>
|
| +; DR: <INST_RET/>
|
| +; DR: </FUNCTION_BLOCK>
|
| +; DR: <FUNCTION_BLOCK>
|
| +; DR: <DECLAREBLOCKS op0=4/>
|
| +; DR: <CONSTANTS_BLOCK>
|
| +; DR: <SETTYPE op0=0/>
|
| +; DR: <INTEGER op0=8/>
|
| +; DR: </CONSTANTS_BLOCK>
|
| +; DR: <INST_ALLOCA op0=1 op1=4/>
|
| +; DR: <INST_ALLOCA op0=2 op1=4/>
|
| +; DR: <INST_BR op0=1 op1=2 op2=4/>
|
| +; DR: <INST_LOAD op0=2 op1=0 op2=0/>
|
| +; DR: <INST_BR op0=3/>
|
| +; DR: <INST_LOAD op0=3 op1=0 op2=0/>
|
| +; DR: <INST_BR op0=3/>
|
| +; DR: <INST_PHI op0=0 op1=6 op2=1 op3=6
|
| +; DR: op4=2/>
|
| +; DR: <INST_PHI op0=0 op1=6 op2=1 op3=4
|
| +; DR: op4=2/>
|
| +; DR: <INST_RET/>
|
| +; DR: </FUNCTION_BLOCK>
|
| +; DR: </MODULE_BLOCK>
|
| +
|
| +; -------------------------------------------------
|
| +
|
| +; 2) Test dump of records with details.
|
| +; RUN: llvm-as < %s | pnacl-freeze \
|
| +; RUN: | pnacl-bcanalyzer --operands-per-line=4 \
|
| +; RUN: --dump-records --dump-details \
|
| +; RUN: | FileCheck %s -check-prefix=DRWD
|
| +
|
| +; DRWD: <MODULE_BLOCK abbrev='ENTER_SUBBLOCK' NumWords={{.*}} BlockCodeSize=2>
|
| +; DRWD: <VERSION abbrev='UNABBREVIATED' op0=1/>
|
| +; DRWD: <BLOCKINFO_BLOCK abbrev='ENTER_SUBBLOCK' NumWords=24 BlockCodeSize=2>
|
| +; DRWD: <SETBID abbrev='UNABBREVIATED' block='VALUE_SYMTAB'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Fixed(3)' op1='VBR(8)' op2='Array'
|
| +; DRWD: op3='Fixed(8)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(1)' op1='VBR(8)' op2='Array'
|
| +; DRWD: op3='Fixed(7)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(1)' op1='VBR(8)' op2='Array'
|
| +; DRWD: op3='Char6'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(2)' op1='VBR(8)' op2='Array'
|
| +; DRWD: op3='Char6'/>
|
| +; DRWD: <SETBID abbrev='UNABBREVIATED' block='CONSTANTS_BLOCK'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(1)' op1='Fixed(3)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(4)' op1='VBR(8)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(4)' op1='Literal(0)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(6)' op1='VBR(8)'/>
|
| +; DRWD: <SETBID abbrev='UNABBREVIATED' block='FUNCTION_BLOCK'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(20)' op1='VBR(6)' op2='VBR(4)'
|
| +; DRWD: op3='VBR(4)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(2)' op1='VBR(6)' op2='VBR(6)'
|
| +; DRWD: op3='Fixed(4)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(3)' op1='VBR(6)' op2='Fixed(3)'
|
| +; DRWD: op3='Fixed(4)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(10)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(10)' op1='VBR(6)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(15)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(43)' op1='VBR(6)' op2='Fixed(3)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(24)' op1='VBR(6)' op2='VBR(6)'
|
| +; DRWD: op3='VBR(4)'/>
|
| +; DRWD: <SETBID abbrev='UNABBREVIATED' block='GLOBALVAR_BLOCK'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(0)' op1='VBR(6)' op2='Fixed(1)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(1)' op1='VBR(8)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(2)' op1='VBR(8)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(3)' op1='Array' op2='Fixed(8)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(4)' op1='VBR(6)'/>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(4)' op1='VBR(6)' op2='VBR(6)'/>
|
| +; DRWD: </BLOCKINFO_BLOCK abbrev='END_BLOCK'>
|
| +; DRWD: <TYPE_BLOCK_ID abbrev='ENTER_SUBBLOCK' NumWords={{.*}} BlockCodeSize=3>
|
| +; DRWD: <DEFINE_ABBREV abbrev='DEFINE_ABBREV' op0='Literal(21)' op1='Fixed(1)' op2='Array'
|
| +; DRWD: op3='Fixed(3)'/>
|
| +; DRWD: <NUMENTRY abbrev='UNABBREVIATED' op0=7/>
|
| +; DRWD: <INTEGER abbrev='UNABBREVIATED' op0=32/>
|
| +; DRWD: <VOID abbrev='UNABBREVIATED'/>
|
| +; DRWD: <INTEGER abbrev='UNABBREVIATED' op0=1/>
|
| +; DRWD: <INTEGER abbrev='UNABBREVIATED' op0=8/>
|
| +; DRWD: <FUNCTION abbrev=4 op0=0 op1=0 op2=0/>
|
| +; DRWD: <FUNCTION abbrev=4 op0=0 op1=1/>
|
| +; DRWD: <FUNCTION abbrev=4 op0=0 op1=1 op2=2/>
|
| +; DRWD: </TYPE_BLOCK_ID abbrev='END_BLOCK'>
|
| +; DRWD: <FUNCTION abbrev='UNABBREVIATED' op0=4 op1=0 op2=1
|
| +; DRWD: op3=0/>
|
| +; DRWD: <FUNCTION abbrev='UNABBREVIATED' op0=5 op1=0 op2=0
|
| +; DRWD: op3=0/>
|
| +; DRWD: <FUNCTION abbrev='UNABBREVIATED' op0=6 op1=0 op2=0
|
| +; DRWD: op3=0/>
|
| +; DRWD: <GLOBALVAR_BLOCK abbrev='ENTER_SUBBLOCK' NumWords={{.*}} BlockCodeSize=4>
|
| +; DRWD: <COUNT abbrev='UNABBREVIATED' op0=3/>
|
| +; DRWD: <VAR abbrev=4 op0=0 op1=0/>
|
| +; DRWD: <DATA abbrev=7 op0=97 op1=98 op2=99
|
| +; DRWD: op3=100/>
|
| +; DRWD: <VAR abbrev=4 op0=0 op1=0/>
|
| +; DRWD: <RELOC abbrev=8 op0=5/>
|
| +; DRWD: <VAR abbrev=4 op0=0 op1=0/>
|
| +; DRWD: <RELOC abbrev=8 op0=3/>
|
| +; DRWD: </GLOBALVAR_BLOCK abbrev='END_BLOCK'>
|
| +; DRWD: <VALUE_SYMTAB abbrev='ENTER_SUBBLOCK' NumWords={{.*}} BlockCodeSize=3>
|
| +; DRWD: <ENTRY abbrev=6 op0=1 op1=65 op2=108
|
| +; DRWD: op3=108 op4=111 op5=99 op6=67
|
| +; DRWD: op7=97 op8=115 op9=116 op10=83
|
| +; DRWD: op11=105 op12=109 op13=112 op14=108
|
| +; DRWD: op15=101/>
|
| +; DRWD: <ENTRY abbrev=6 op0=2 op1=80 op2=104
|
| +; DRWD: op3=105 op4=66 op5=97 op6=99
|
| +; DRWD: op7=107 op8=119 op9=97 op10=114
|
| +; DRWD: op11=100 op12=82 op13=101 op14=102
|
| +; DRWD: op15=115/>
|
| +; DRWD: <ENTRY abbrev=6 op0=0 op1=98 op2=97
|
| +; DRWD: op3=114/>
|
| +; DRWD: <ENTRY abbrev=6 op0=5 op1=112 op2=116
|
| +; DRWD: op3=114/>
|
| +; DRWD: <ENTRY abbrev=6 op0=3 op1=98 op2=121
|
| +; DRWD: op3=116 op4=101 op5=115/>
|
| +; DRWD: <ENTRY abbrev=6 op0=4 op1=112 op2=116
|
| +; DRWD: op3=114 op4=95 op5=116 op6=111
|
| +; DRWD: op7=95 op8=112 op9=116 op10=114/>
|
| +; DRWD: </VALUE_SYMTAB abbrev='END_BLOCK'>
|
| +; DRWD: <FUNCTION_BLOCK abbrev='ENTER_SUBBLOCK' NumWords={{.*}} BlockCodeSize=4>
|
| +; DRWD: <DECLAREBLOCKS abbrev='UNABBREVIATED' op0=1/>
|
| +; DRWD: <CONSTANTS_BLOCK abbrev='ENTER_SUBBLOCK' NumWords={{.*}} BlockCodeSize=3>
|
| +; DRWD: <SETTYPE abbrev=4 op0=0/>
|
| +; DRWD: <INTEGER abbrev=5 op0=8/>
|
| +; DRWD: </CONSTANTS_BLOCK abbrev='END_BLOCK'>
|
| +; DRWD: <INST_ALLOCA abbrev='UNABBREVIATED' op0=1 op1=4/>
|
| +; DRWD: <INST_STORE abbrev=11 op0=5 op1=1 op2=1/>
|
| +; DRWD: <INST_RET abbrev=7/>
|
| +; DRWD: </FUNCTION_BLOCK abbrev='END_BLOCK'>
|
| +; DRWD: <FUNCTION_BLOCK abbrev='ENTER_SUBBLOCK' NumWords={{.*}} BlockCodeSize=4>
|
| +; DRWD: <DECLAREBLOCKS abbrev='UNABBREVIATED' op0=4/>
|
| +; DRWD: <CONSTANTS_BLOCK abbrev='ENTER_SUBBLOCK' NumWords={{.*}} BlockCodeSize=3>
|
| +; DRWD: <SETTYPE abbrev=4 op0=0/>
|
| +; DRWD: <INTEGER abbrev=5 op0=8/>
|
| +; DRWD: </CONSTANTS_BLOCK abbrev='END_BLOCK'>
|
| +; DRWD: <INST_ALLOCA abbrev='UNABBREVIATED' op0=1 op1=4/>
|
| +; DRWD: <INST_ALLOCA abbrev='UNABBREVIATED' op0=2 op1=4/>
|
| +; DRWD: <INST_BR abbrev='UNABBREVIATED' op0=1 op1=2 op2=4/>
|
| +; DRWD: <INST_LOAD abbrev=4 op0=2 op1=0 op2=0/>
|
| +; DRWD: <INST_BR abbrev='UNABBREVIATED' op0=3/>
|
| +; DRWD: <INST_LOAD abbrev=4 op0=3 op1=0 op2=0/>
|
| +; DRWD: <INST_BR abbrev='UNABBREVIATED' op0=3/>
|
| +; DRWD: <INST_PHI abbrev='UNABBREVIATED' op0=0 op1=6 op2=1
|
| +; DRWD: op3=6 op4=2/>
|
| +; DRWD: <INST_PHI abbrev='UNABBREVIATED' op0=0 op1=6 op2=1
|
| +; DRWD: op3=4 op4=2/>
|
| +; DRWD: <INST_RET abbrev=7/>
|
| +; DRWD: </FUNCTION_BLOCK abbrev='END_BLOCK'>
|
| +; DRWD: </MODULE_BLOCK abbrev='END_BLOCK'>
|
|
|