From 712d00bc64b9172e0d740d8126db08103ff845d3 Mon Sep 17 00:00:00 2001 From: David Blaikie <dblaikie@gmail.com> Date: Mon, 16 Mar 2015 22:03:50 +0000 Subject: [PATCH] Add testing for mismatched explicit type on a gep operator when loading from bitcode git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232427 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Bitcode/Reader/BitcodeReader.cpp | 3 ++- ...valid-gep-operator-mismatched-explicit-type.bc | Bin 0 -> 492 bytes test/Bitcode/invalid.test | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 test/Bitcode/Inputs/invalid-gep-operator-mismatched-explicit-type.bc diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index dd42bdb5804..a95ceead54e 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -1973,7 +1973,8 @@ std::error_code BitcodeReader::ParseConstants() { bitc::CST_CODE_CE_INBOUNDS_GEP); if (PointeeType && PointeeType != cast<GEPOperator>(V)->getSourceElementType()) - return Error("Invalid record"); + return Error("Explicit gep operator type does not match pointee type " + "of pointer operand"); break; } case bitc::CST_CODE_CE_SELECT: { // CE_SELECT: [opval#, opval#, opval#] diff --git a/test/Bitcode/Inputs/invalid-gep-operator-mismatched-explicit-type.bc b/test/Bitcode/Inputs/invalid-gep-operator-mismatched-explicit-type.bc new file mode 100644 index 0000000000000000000000000000000000000000..3af687f056f98ad1b5f8576f3798bac8dcdff0d2 GIT binary patch literal 492 zcmZ>AK5$Qwhk>Djfq{X$Nr8b0NDBiod!zD1#}h1`Yyw7>lNeigR9QJB<yg9t8hBip zoF;KQr3e^_Sa3*qa~T<RcuWvcaCYlh${=av^u&X2!bHU*0gi!<JrA3ocCkphv2`ji zFaWJ!Fj6|fp^(zbGFfp+3y^r+vT%ZkkWX6=cT0+ofJ`w9$3hlGUY0Y04F@@Zsu>up z_*Fa<lvN!V%o-HWfknVXN+XbB1!5z)861*=J`;L4)!dJ<I3EJ(s+0hV18HN92ALxd zWzs|#Z9AMTS`PO(HLzD!uourL<ax%x|5kwSO9P)VkCWV?gR<uq%A^^vf|WH(pJBE= z;cVN(Y<s4nr=)<rnuER4qrISjy{dq@tfIX@p<VKfAm5t_d=Cxy^9=YOf8hHNz-KIQ zME0Jd%ne1^Ly2-}2A$S>nyoK5TW(>t+0$&(!fbu!gGgBddvyl8c}9B?kZfo#n9yF3 zz+R@oUiO0(Xl!{ydpt*bp+tMpjP}YIjXLi>@V$G$_w@kZ8-_v!1_oxJf7k?K#2iFI xlz~i!L<L}60cl|tM;!qm4U)eiw16j+g)smW&XO(6jG%aA4-hyjk_co#0RWF6h4TOa literal 0 HcmV?d00001 diff --git a/test/Bitcode/invalid.test b/test/Bitcode/invalid.test index edf122b8dff..0eacb9dbbb1 100644 --- a/test/Bitcode/invalid.test +++ b/test/Bitcode/invalid.test @@ -16,6 +16,8 @@ RUN: not llvm-dis -disable-output %p/Inputs/invalid-gep-mismatched-explicit-type RUN: FileCheck --check-prefix=MISMATCHED-EXPLICIT-GEP %s RUN: not llvm-dis -disable-output %p/Inputs/invalid-load-mismatched-explicit-type.bc 2>&1 | \ RUN: FileCheck --check-prefix=MISMATCHED-EXPLICIT-LOAD %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-gep-operator-mismatched-explicit-type.bc 2>&1 | \ +RUN: FileCheck --check-prefix=MISMATCHED-EXPLICIT-GEP-OPERATOR %s INVALID-ENCODING: Invalid encoding BAD-ABBREV: Abbreviation starts with an Array or a Blob @@ -26,6 +28,7 @@ BAD-BITWIDTH: Bitwidth for integer type out of range BAD-ALIGN: Invalid alignment value MISMATCHED-EXPLICIT-GEP: Explicit gep type does not match pointee type of pointer operand MISMATCHED-EXPLICIT-LOAD: Explicit load type does not match pointee type of pointer operand +MISMATCHED-EXPLICIT-GEP-OPERATOR: Explicit gep operator type does not match pointee type of pointer operand RUN: not llvm-dis -disable-output %p/Inputs/invalid-extractval-array-idx.bc 2>&1 | \ RUN: FileCheck --check-prefix=EXTRACT-ARRAY %s -- 2.34.1