diff options
-rw-r--r-- | include/llvm/Bitcode/NaCl/NaClLLVMBitCodes.h | 2 | ||||
-rw-r--r-- | lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp | 4 | ||||
-rw-r--r-- | lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp | 1 | ||||
-rw-r--r-- | lib/Bitcode/NaCl/Writer/NaClValueEnumerator.cpp | 4 | ||||
-rw-r--r-- | test/NaCl/Bitcode/ptrtoint-elide.ll | 110 | ||||
-rw-r--r-- | test/NaCl/Bitcode/switch.ll | 7 |
6 files changed, 68 insertions, 60 deletions
diff --git a/include/llvm/Bitcode/NaCl/NaClLLVMBitCodes.h b/include/llvm/Bitcode/NaCl/NaClLLVMBitCodes.h index 32e3920b7d..384b03661e 100644 --- a/include/llvm/Bitcode/NaCl/NaClLLVMBitCodes.h +++ b/include/llvm/Bitcode/NaCl/NaClLLVMBitCodes.h @@ -82,6 +82,8 @@ namespace naclbitc { TYPE_CODE_VOID = 2, // VOID TYPE_CODE_FLOAT = 3, // FLOAT TYPE_CODE_DOUBLE = 4, // DOUBLE + // TODO(mseaborn): Remove LABEL when we drop support for v1 of the + // PNaCl bitcode format. The writer no longer generates it. TYPE_CODE_LABEL = 5, // LABEL TYPE_CODE_OPAQUE = 6, // Not used in PNaCl. TYPE_CODE_INTEGER = 7, // INTEGER: [width] diff --git a/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp b/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp index cccc5cee5a..eaaa85a164 100644 --- a/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp +++ b/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp @@ -449,6 +449,10 @@ bool NaClBitcodeReader::ParseTypeTableBody() { ResultTy = Type::getDoubleTy(Context); break; case naclbitc::TYPE_CODE_LABEL: // LABEL + // TODO(mseaborn): Remove this case when we drop support for v1 + // of the PNaCl bitcode format. + if (GetPNaClVersion() >= 2) + return Error("Label type not supported in PNaCl bitcode"); ResultTy = Type::getLabelTy(Context); break; case naclbitc::TYPE_CODE_INTEGER: // INTEGER: [width] diff --git a/lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp b/lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp index ec13266221..166a95bb23 100644 --- a/lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp +++ b/lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp @@ -224,7 +224,6 @@ static void WriteTypeTable(const NaClValueEnumerator &VE, case Type::VoidTyID: Code = naclbitc::TYPE_CODE_VOID; break; case Type::FloatTyID: Code = naclbitc::TYPE_CODE_FLOAT; break; case Type::DoubleTyID: Code = naclbitc::TYPE_CODE_DOUBLE; break; - case Type::LabelTyID: Code = naclbitc::TYPE_CODE_LABEL; break; case Type::IntegerTyID: // INTEGER: [width] Code = naclbitc::TYPE_CODE_INTEGER; diff --git a/lib/Bitcode/NaCl/Writer/NaClValueEnumerator.cpp b/lib/Bitcode/NaCl/Writer/NaClValueEnumerator.cpp index a58a421db2..64d7661415 100644 --- a/lib/Bitcode/NaCl/Writer/NaClValueEnumerator.cpp +++ b/lib/Bitcode/NaCl/Writer/NaClValueEnumerator.cpp @@ -299,6 +299,10 @@ void NaClValueEnumerator::EnumerateValue(const Value *VIn) { void NaClValueEnumerator::EnumerateType(Type *Ty, bool InsideOptimizeTypes) { + // The label type does not need to be given a type ID. + if (Ty->isLabelTy()) + return; + // This function is used to enumerate types referenced by the given // module. This function is called in two phases, based on the value // of TypeCountMap. These phases are: diff --git a/test/NaCl/Bitcode/ptrtoint-elide.ll b/test/NaCl/Bitcode/ptrtoint-elide.ll index 3ef7909fe7..bfca601d3f 100644 --- a/test/NaCl/Bitcode/ptrtoint-elide.ll +++ b/test/NaCl/Bitcode/ptrtoint-elide.ll @@ -42,8 +42,8 @@ define void @AllocCastSimple() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=1 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> -; PF1-NEXT: <INST_CAST op0=4 op1=4 op2=11/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> +; PF1-NEXT: <INST_CAST op0=4 op1={{.*}} op2=11/> ; PF1-NEXT: <INST_STORE op0=1 op1=2 op2=1 op3=0/> ; PF1-NEXT: <INST_RET/> ; PF1-NEXT: </FUNCTION_BLOCK> @@ -87,8 +87,8 @@ define void @AllocCastSimpleReversed() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=1 op1=4/> -; PF1-NEXT: <INST_CAST op0=3 op1=4 op2=11/> -; PF1-NEXT: <INST_CAST op0=2 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=3 op1={{.*}} op2=11/> +; PF1-NEXT: <INST_CAST op0=2 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_STORE op0=2 op1=1 op2=1 op3=0/> ; PF1-NEXT: <INST_RET/> ; PF1-NEXT: </FUNCTION_BLOCK> @@ -130,9 +130,9 @@ define void @AllocCastDelete() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=1 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_ALLOCA op0=3 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_RET/> ; PF1-NEXT: </FUNCTION_BLOCK> @@ -175,8 +175,8 @@ define void @AllocCastOpt() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=1 op1=4/> -; PF1-NEXT: <INST_CAST op0=3 op1=4 op2=11/> -; PF1-NEXT: <INST_CAST op0=2 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=3 op1={{.*}} op2=11/> +; PF1-NEXT: <INST_CAST op0=2 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_STORE op0=2 op1=1 op2=1 op3=0/> ; PF1-NEXT: <INST_STORE op0=2 op1=1 op2=1 op3=0/> ; PF1-NEXT: <INST_RET/> @@ -224,8 +224,8 @@ define void @AllocCastMove(i32) { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=2 op1=4/> -; PF1-NEXT: <INST_CAST op0=5 op1=4 op2=11/> -; PF1-NEXT: <INST_CAST op0=2 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=5 op1={{.*}} op2=11/> +; PF1-NEXT: <INST_CAST op0=2 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_BINOP op0=6 op1=4 op2=0/> ; PF1-NEXT: <INST_STORE op0=3 op1=2 op2=1 op3=0/> ; PF1-NEXT: <INST_RET/> @@ -271,8 +271,8 @@ define void @StoreGlobal() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=1 op1=4/> -; PF1-NEXT: <INST_CAST op0=3 op1=0 op2=9/> -; PF1-NEXT: <INST_CAST op0=2 op1=4 op2=11/> +; PF1-NEXT: <INST_CAST op0=3 op1={{.*}} op2=9/> +; PF1-NEXT: <INST_CAST op0=2 op1={{.*}} op2=11/> ; PF1-NEXT: <INST_STORE op0=1 op1=2 op2=1 op3=0/> ; PF1-NEXT: <INST_RET/> ; PF1-NEXT: </FUNCTION_BLOCK> @@ -314,8 +314,8 @@ define void @StoreGlobalCastsReversed() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=1 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=4 op2=11/> -; PF1-NEXT: <INST_CAST op0=4 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=11/> +; PF1-NEXT: <INST_CAST op0=4 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_STORE op0=2 op1=1 op2=1 op3=0/> ; PF1-NEXT: <INST_RET/> ; PF1-NEXT: </FUNCTION_BLOCK> @@ -356,9 +356,9 @@ define i32 @StoreGlobalMovePtr2Int() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> -; PF1-NEXT: <INST_CAST op0=3 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=3 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_ALLOCA op0=3 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=4 op2=11/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=11/> ; PF1-NEXT: <INST_STORE op0=1 op1=3 op2=1 op3=0/> ; PF1-NEXT: <INST_RET op0=4/> ; PF1-NEXT: </FUNCTION_BLOCK> @@ -413,7 +413,7 @@ define void @CastAddAlloca() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=1 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_BINOP op0=5 op1=4 op2=0/> ; PF1-NEXT: <INST_BINOP op0=2 op1=5 op2=0/> ; PF1-NEXT: <INST_BINOP op0=7 op1=3 op2=0/> @@ -472,7 +472,7 @@ define void @CastAddGlobal() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> -; PF1-NEXT: <INST_CAST op0=3 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=3 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_BINOP op0=3 op1=2 op2=0/> ; PF1-NEXT: <INST_BINOP op0=2 op1=3 op2=0/> ; PF1-NEXT: <INST_BINOP op0=5 op1=3 op2=0/> @@ -540,8 +540,8 @@ define void @CastBinop() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=1 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> -; PF1-NEXT: <INST_CAST op0=4 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> +; PF1-NEXT: <INST_CAST op0=4 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_BINOP op0=2 op1=1 op2=1/> ; PF1-NEXT: <INST_BINOP op0=3 op1=2 op2=2/> ; PF1-NEXT: <INST_BINOP op0=4 op1=3 op2=3/> @@ -635,17 +635,17 @@ define void @TestCasts() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=2 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> -; PF1-NEXT: <INST_CAST op0=6 op1=2 op2=0/> -; PF1-NEXT: <INST_CAST op0=2 op1=2 op2=0/> -; PF1-NEXT: <INST_CAST op0=8 op1=11 op2=1/> -; PF1-NEXT: <INST_CAST op0=4 op1=11 op2=1/> -; PF1-NEXT: <INST_CAST op0=9 op1=11 op2=2/> -; PF1-NEXT: <INST_CAST op0=6 op1=11 op2=2/> -; PF1-NEXT: <INST_CAST op0=9 op1=12 op2=5/> -; PF1-NEXT: <INST_CAST op0=8 op1=12 op2=5/> -; PF1-NEXT: <INST_CAST op0=13 op1=12 op2=6/> -; PF1-NEXT: <INST_CAST op0=10 op1=12 op2=6/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> +; PF1-NEXT: <INST_CAST op0=6 op1={{.*}} op2=0/> +; PF1-NEXT: <INST_CAST op0=2 op1={{.*}} op2=0/> +; PF1-NEXT: <INST_CAST op0=8 op1={{.*}} op2=1/> +; PF1-NEXT: <INST_CAST op0=4 op1={{.*}} op2=1/> +; PF1-NEXT: <INST_CAST op0=9 op1={{.*}} op2=2/> +; PF1-NEXT: <INST_CAST op0=6 op1={{.*}} op2=2/> +; PF1-NEXT: <INST_CAST op0=9 op1={{.*}} op2=5/> +; PF1-NEXT: <INST_CAST op0=8 op1={{.*}} op2=5/> +; PF1-NEXT: <INST_CAST op0=13 op1={{.*}} op2=6/> +; PF1-NEXT: <INST_CAST op0=10 op1={{.*}} op2=6/> ; PF1-NEXT: <INST_RET/> ; PF1-NEXT: </FUNCTION_BLOCK> @@ -668,16 +668,16 @@ define void @TestCasts() { ; PF2: <FUNCTION_BLOCK> ; PF2: </CONSTANTS_BLOCK> ; PF2-NEXT: <INST_ALLOCA op0=2 op1=4/> -; PF2-NEXT: <INST_CAST op0=5 op1=2 op2=0/> -; PF2-NEXT: <INST_CAST op0=2 op1=2 op2=0/> -; PF2-NEXT: <INST_CAST op0=7 op1=11 op2=1/> -; PF2-NEXT: <INST_CAST op0=4 op1=11 op2=1/> -; PF2-NEXT: <INST_CAST op0=8 op1=11 op2=2/> -; PF2-NEXT: <INST_CAST op0=6 op1=11 op2=2/> -; PF2-NEXT: <INST_CAST op0=8 op1=12 op2=5/> -; PF2-NEXT: <INST_CAST op0=8 op1=12 op2=5/> -; PF2-NEXT: <INST_CAST op0=12 op1=12 op2=6/> -; PF2-NEXT: <INST_CAST op0=10 op1=12 op2=6/> +; PF2-NEXT: <INST_CAST op0=5 op1={{.*}} op2=0/> +; PF2-NEXT: <INST_CAST op0=2 op1={{.*}} op2=0/> +; PF2-NEXT: <INST_CAST op0=7 op1={{.*}} op2=1/> +; PF2-NEXT: <INST_CAST op0=4 op1={{.*}} op2=1/> +; PF2-NEXT: <INST_CAST op0=8 op1={{.*}} op2=2/> +; PF2-NEXT: <INST_CAST op0=6 op1={{.*}} op2=2/> +; PF2-NEXT: <INST_CAST op0=8 op1={{.*}} op2=5/> +; PF2-NEXT: <INST_CAST op0=8 op1={{.*}} op2=5/> +; PF2-NEXT: <INST_CAST op0=12 op1={{.*}} op2=6/> +; PF2-NEXT: <INST_CAST op0=10 op1={{.*}} op2=6/> ; PF2-NEXT: <INST_RET/> ; PF2-NEXT: </FUNCTION_BLOCK> @@ -703,7 +703,7 @@ define void @TestSavedPtrToInt() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=2 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_BINOP op0=1 op1=3 op2=0/> ; PF1-NEXT: <INST_CALL op0=0 op1=26 op2=2/> ; PF1-NEXT: <INST_RET/> @@ -755,8 +755,8 @@ define void @CastIcmp() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=1 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> -; PF1-NEXT: <INST_CAST op0=6 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> +; PF1-NEXT: <INST_CAST op0=6 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_CMP2 op0=6 op1=5 op2=32/> ; PF1-NEXT: <INST_CMP2 op0=3 op1=6 op2=32/> ; PF1-NEXT: <INST_CMP2 op0=8 op1=3 op2=32/> @@ -818,8 +818,8 @@ define void @CastSelect() { ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=2 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> -; PF1-NEXT: <INST_CAST op0=7 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> +; PF1-NEXT: <INST_CAST op0=7 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_VSELECT op0=7 op1=6 op2=4/> ; PF1-NEXT: <INST_VSELECT op0=3 op1=7 op2=5/> ; PF1-NEXT: <INST_VSELECT op0=9 op1=3 op2=6/> @@ -897,9 +897,9 @@ merge: ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=1 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=4 op2=11/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=11/> ; PF1-NEXT: <INST_ALLOCA op0=3 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_BR op0=1 op1=2 op2=6/> ; PF1-NEXT: <INST_LOAD op0=3 op1=0 op2=0/> ; PF1-NEXT: <INST_BR op0=3/> @@ -1007,9 +1007,9 @@ start: ; PF1-NEXT: <INST_LOAD op0=4294967294 op1=0 op2=0/> ; PF1-NEXT: <INST_BR op0=1/> ; PF1-NEXT: <INST_ALLOCA op0=5 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=4 op2=11/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=11/> ; PF1-NEXT: <INST_ALLOCA op0=7 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_BR op0=2 op1=3 op2=10/> ; PF1: </FUNCTION_BLOCK> @@ -1105,12 +1105,12 @@ merge: ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=1 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=4 op2=11/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=11/> ; PF1-NEXT: <INST_ALLOCA op0=3 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_BR op0=1 op1=2 op2=6/> ; PF1-NEXT: <INST_LOAD op0=3 op1=0 op2=0/> -; PF1-NEXT: <INST_CAST op0=3 op1=0 op2=9/> +; PF1-NEXT: <INST_CAST op0=3 op1={{.*}} op2=9/> ; PF1-NEXT: <INST_BINOP op0=2 op1=1 op2=0/> ; PF1-NEXT: <INST_BR op0=3/> ; PF1-NEXT: <INST_LOAD op0=6 op1=0 op2=0/> @@ -1223,8 +1223,8 @@ b4: ; PF1: <FUNCTION_BLOCK> ; PF1: </CONSTANTS_BLOCK> ; PF1-NEXT: <INST_ALLOCA op0=1 op1=4/> -; PF1-NEXT: <INST_CAST op0=1 op1=0 op2=9/> -; PF1-NEXT: <INST_CAST op0=5 op1=4 op2=11/> +; PF1-NEXT: <INST_CAST op0=1 op1={{.*}} op2=9/> +; PF1-NEXT: <INST_CAST op0=5 op1={{.*}} op2=11/> ; PF1-NEXT: <INST_BR op0=1 op1=2 op2=5/> ; PF1-NEXT: <INST_BR op0=3 op1=4 op2=5/> ; PF1-NEXT: <INST_BR op0=5 op1=6 op2=5/> diff --git a/test/NaCl/Bitcode/switch.ll b/test/NaCl/Bitcode/switch.ll index 9da6667bed..f15001f504 100644 --- a/test/NaCl/Bitcode/switch.ll +++ b/test/NaCl/Bitcode/switch.ll @@ -48,11 +48,10 @@ end: } ; CHECK: <TYPE_BLOCK_ID> -; CHECK-NEXT: <NUMENTRY op0=5/> +; CHECK-NEXT: <NUMENTRY op0=4/> ; CHECK-NEXT: <VOID/> -; CHECK-NEXT: <LABEL/> ; CHECK-NEXT: <INTEGER op0=32/> -; CHECK-NEXT: <FUNCTION op0=0 op1=0 op2=2/> -; CHECK-NEXT: <POINTER op0=3 op1=0/> +; CHECK-NEXT: <FUNCTION op0={{.*}} op1={{.*}} op2={{.*}}/> +; CHECK-NEXT: <POINTER op0={{.*}} op1={{.*}}/> ; CHECK-NEXT: </TYPE_BLOCK_ID> |