| Index: unittests/Bitcode/NaClParseInstsTest.cpp
|
| diff --git a/unittests/Bitcode/NaClParseInstsTest.cpp b/unittests/Bitcode/NaClParseInstsTest.cpp
|
| index 82d2a715cba76293c0bfe4fc493f9cffa24b1052..63ef745381eb61ec93b78b86d294e216d48c9f5e 100644
|
| --- a/unittests/Bitcode/NaClParseInstsTest.cpp
|
| +++ b/unittests/Bitcode/NaClParseInstsTest.cpp
|
| @@ -12,18 +12,14 @@
|
|
|
| // TODO(kschimpf) Add more tests.
|
|
|
| -#include "llvm/ADT/STLExtras.h"
|
| -#include "llvm/Bitcode/NaCl/NaClBitcodeMunge.h"
|
| -#include "llvm/Bitcode/NaCl/NaClBitcodeParser.h"
|
| -#include "llvm/Bitcode/NaCl/NaClLLVMBitCodes.h"
|
|
|
| -#include "gtest/gtest.h"
|
| +#include "NaClMungeTest.h"
|
|
|
| -using namespace llvm;
|
| +#include "llvm/Bitcode/NaCl/NaClLLVMBitCodes.h"
|
|
|
| -namespace {
|
| +using namespace llvm;
|
|
|
| -static const uint64_t Terminator = 0x5768798008978675LL;
|
| +namespace naclmungetest {
|
|
|
| // Note: alignment stored as 0 or log2(Alignment)+1.
|
| uint64_t getEncAlignPower(unsigned Power) {
|
| @@ -53,9 +49,8 @@ TEST(NaClParseInstsTest, NonexistantCallArg) {
|
| };
|
|
|
| // Show text of base input.
|
| - NaClObjDumpMunger DumpMunger(BitcodeRecords,
|
| - array_lengthof(BitcodeRecords), Terminator);
|
| - EXPECT_FALSE(DumpMunger.runTest("Nonexistant call arg"));
|
| + NaClObjDumpMunger DumpMunger(ARRAY_TERM(BitcodeRecords));
|
| + EXPECT_FALSE(DumpMunger.runTest());
|
| EXPECT_EQ(
|
| " 0:0|<65532, 80, 69, 88, 69, 1, 0,|Magic Number: 'PEXE' (80, 69, "
|
| "88, 69)\n"
|
| @@ -86,9 +81,8 @@ TEST(NaClParseInstsTest, NonexistantCallArg) {
|
| " 76:0|0: <65534> |}\n",
|
| DumpMunger.getTestResults());
|
|
|
| - NaClParseBitcodeMunger Munger(BitcodeRecords,
|
| - array_lengthof(BitcodeRecords), Terminator);
|
| - EXPECT_FALSE(Munger.runTest("Nonexistant call arg", true));
|
| + NaClParseBitcodeMunger Munger(ARRAY_TERM(BitcodeRecords));
|
| + EXPECT_FALSE(Munger.runTest(true));
|
| EXPECT_EQ(
|
| "Error(72:6): Invalid call argument: Index 1\n"
|
| "Error: Invalid value in record\n",
|
| @@ -118,9 +112,8 @@ TEST(NaClParseInstsTests, BadAllocaAlignment) {
|
| const uint64_t ReplaceIndex = 11; // index for FUNC_CODE_INST_ALLOCA
|
|
|
| // Show text when alignment is 1.
|
| - NaClObjDumpMunger DumpMunger(BitcodeRecords,
|
| - array_lengthof(BitcodeRecords), Terminator);
|
| - EXPECT_TRUE(DumpMunger.runTest("BadAllocaAlignment"));
|
| + NaClObjDumpMunger DumpMunger(ARRAY_TERM(BitcodeRecords));
|
| + EXPECT_TRUE(DumpMunger.runTest());
|
| EXPECT_EQ(
|
| " 0:0|<65532, 80, 69, 88, 69, 1, 0,|Magic Number: 'PEXE' (80, 69, "
|
| "88, 69)\n"
|
| @@ -148,19 +141,16 @@ TEST(NaClParseInstsTests, BadAllocaAlignment) {
|
| " 67:4| 0: <65534> | }\n"
|
| " 68:0|0: <65534> |}\n",
|
| DumpMunger.getTestResults());
|
| - NaClParseBitcodeMunger Munger(BitcodeRecords,
|
| - array_lengthof(BitcodeRecords), Terminator);
|
| - EXPECT_TRUE(Munger.runTest("BadAllocaAlignment", true));
|
| + NaClParseBitcodeMunger Munger(ARRAY_TERM(BitcodeRecords));
|
| + EXPECT_TRUE(Munger.runTest(true));
|
|
|
| // Show what happens when changing alignment to 0.
|
| const uint64_t Align0[] = {
|
| ReplaceIndex, NaClMungedBitcode::Replace,
|
| 3, naclbitc::FUNC_CODE_INST_ALLOCA, 1, getEncAlignZero(), Terminator,
|
| };
|
| - EXPECT_TRUE(Munger.runTest(
|
| - "BadAllocaAlignment-0", Align0, array_lengthof(Align0), true));
|
| - EXPECT_TRUE(DumpMunger.runTestForAssembly(
|
| - "BadAllocaAlignment-0", Align0, array_lengthof(Align0)));
|
| + EXPECT_TRUE(Munger.runTest(ARRAY(Align0), true));
|
| + EXPECT_TRUE(DumpMunger.runTestForAssembly(ARRAY(Align0)));
|
| EXPECT_EQ(
|
| " %v0 = alloca i8, i32 %p0, align 0;\n",
|
| DumpMunger.getLinesWithSubstring("alloca"));
|
| @@ -170,14 +160,12 @@ TEST(NaClParseInstsTests, BadAllocaAlignment) {
|
| ReplaceIndex, NaClMungedBitcode::Replace,
|
| 3, naclbitc::FUNC_CODE_INST_ALLOCA, 1, getEncAlignPower(30), Terminator,
|
| };
|
| - EXPECT_FALSE(Munger.runTest(
|
| - "BadAllocaAlignment-30", Align30, array_lengthof(Align30), true));
|
| + EXPECT_FALSE(Munger.runTest(ARRAY(Align30), true));
|
| EXPECT_EQ(
|
| "Error(65:6): Alignment can't be greater than 2**29. Found: 2**30\n"
|
| "Error: Invalid value in record\n",
|
| Munger.getTestResults());
|
| - EXPECT_FALSE(DumpMunger.runTestForAssembly(
|
| - "BadAllocaAlignment-30", Align30, array_lengthof(Align30)));
|
| + EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align30)));
|
| EXPECT_EQ(
|
| " %v0 = alloca i8, i32 %p0, align 0;\n",
|
| DumpMunger.getLinesWithSubstring("alloca"));
|
| @@ -190,13 +178,11 @@ TEST(NaClParseInstsTests, BadAllocaAlignment) {
|
| ReplaceIndex, NaClMungedBitcode::Replace,
|
| 3, naclbitc::FUNC_CODE_INST_ALLOCA, 1, getEncAlignPower(29), Terminator,
|
| };
|
| - EXPECT_TRUE(Munger.runTest(
|
| - "BadAllocaAlignment-29", Align29, array_lengthof(Align29), true));
|
| + EXPECT_TRUE(Munger.runTest(ARRAY(Align29), true));
|
| EXPECT_EQ(
|
| "Successful parse!\n",
|
| Munger.getTestResults());
|
| - EXPECT_TRUE(DumpMunger.runTestForAssembly(
|
| - "BadAllocaAlignment-29", Align29, array_lengthof(Align29)));
|
| + EXPECT_TRUE(DumpMunger.runTestForAssembly(ARRAY(Align29)));
|
| EXPECT_EQ(
|
| " %v0 = alloca i8, i32 %p0, align 536870912;\n",
|
| DumpMunger.getLinesWithSubstring("alloca"));
|
| @@ -223,9 +209,8 @@ TEST(NaClParseInstsTests, BadLoadAlignment) {
|
| const uint64_t ReplaceIndex = 9; // index for FUNC_CODE_INST_LOAD
|
|
|
| // Show text when alignment is 1.
|
| - NaClObjDumpMunger DumpMunger(BitcodeRecords,
|
| - array_lengthof(BitcodeRecords), Terminator);
|
| - EXPECT_TRUE(DumpMunger.runTest("BadLoadAlignment-1"));
|
| + NaClObjDumpMunger DumpMunger(ARRAY_TERM(BitcodeRecords));
|
| + EXPECT_TRUE(DumpMunger.runTest());
|
| EXPECT_EQ(
|
| " 0:0|<65532, 80, 69, 88, 69, 1, 0,|Magic Number: 'PEXE' (80, 69, "
|
| "88, 69)\n"
|
| @@ -251,9 +236,8 @@ TEST(NaClParseInstsTests, BadLoadAlignment) {
|
| " 65:0| 0: <65534> | }\n"
|
| " 68:0|0: <65534> |}\n",
|
| DumpMunger.getTestResults());
|
| - NaClParseBitcodeMunger Munger(BitcodeRecords,
|
| - array_lengthof(BitcodeRecords), Terminator);
|
| - EXPECT_TRUE(Munger.runTest("BadLoadAlignment", true));
|
| + NaClParseBitcodeMunger Munger(ARRAY_TERM(BitcodeRecords));
|
| + EXPECT_TRUE(Munger.runTest(true));
|
|
|
| // Show what happens when changing alignment to 0.
|
| const uint64_t Align0[] = {
|
| @@ -264,10 +248,8 @@ TEST(NaClParseInstsTests, BadLoadAlignment) {
|
| // bitcode reader). It is checked later by the PNaCl ABI checker in
|
| // pnacl-llc. On the other hand, the DumpMunger checks alignment for
|
| // loads while parsing.
|
| - EXPECT_TRUE(Munger.runTest(
|
| - "BadLoadAlignment-0", Align0, array_lengthof(Align0), true));
|
| - EXPECT_FALSE(DumpMunger.runTestForAssembly(
|
| - "BadLoadAlignment-0", Align0, array_lengthof(Align0)));
|
| + EXPECT_TRUE(Munger.runTest(ARRAY(Align0), true));
|
| + EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align0)));
|
| EXPECT_EQ(
|
| " %v0 = load i32* %p0, align 0;\n"
|
| "Error(58:4): load: Illegal alignment for i32. Expects: 1\n",
|
| @@ -278,10 +260,8 @@ TEST(NaClParseInstsTests, BadLoadAlignment) {
|
| ReplaceIndex, NaClMungedBitcode::Replace,
|
| 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(2), 0, Terminator,
|
| };
|
| - EXPECT_TRUE(Munger.runTest(
|
| - "BadLoadAlignment-4", Align4, array_lengthof(Align4), true));
|
| - EXPECT_FALSE(DumpMunger.runTestForAssembly(
|
| - "BadLoadAlignment-4", Align4, array_lengthof(Align4)));
|
| + EXPECT_TRUE(Munger.runTest(ARRAY(Align4), true));
|
| + EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align4)));
|
| EXPECT_EQ(
|
| " %v0 = load i32* %p0, align 4;\n"
|
| "Error(58:4): load: Illegal alignment for i32. Expects: 1\n",
|
| @@ -292,10 +272,8 @@ TEST(NaClParseInstsTests, BadLoadAlignment) {
|
| ReplaceIndex, NaClMungedBitcode::Replace,
|
| 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(29), 0, Terminator,
|
| };
|
| - EXPECT_TRUE(Munger.runTest(
|
| - "BadLoadAlignment-29", Align29, array_lengthof(Align29), true));
|
| - EXPECT_FALSE(DumpMunger.runTestForAssembly(
|
| - "BadLoadAlignment-29", Align29, array_lengthof(Align29)));
|
| + EXPECT_TRUE(Munger.runTest(ARRAY(Align29), true));
|
| + EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align29)));
|
| EXPECT_EQ(
|
| " %v0 = load i32* %p0, align 536870912;\n"
|
| "Error(58:4): load: Illegal alignment for i32. Expects: 1\n",
|
| @@ -306,14 +284,12 @@ TEST(NaClParseInstsTests, BadLoadAlignment) {
|
| ReplaceIndex, NaClMungedBitcode::Replace,
|
| 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(30), 0, Terminator,
|
| };
|
| - EXPECT_FALSE(Munger.runTest(
|
| - "BadLoadAlignment-30", Align30, array_lengthof(Align30), true));
|
| + EXPECT_FALSE(Munger.runTest(ARRAY(Align30), true));
|
| EXPECT_EQ(
|
| "Error(62:4): Alignment can't be greater than 2**29. Found: 2**30\n"
|
| "Error: Invalid value in record\n",
|
| Munger.getTestResults());
|
| - EXPECT_FALSE(DumpMunger.runTestForAssembly(
|
| - "BadLoadAlignment-30", Align30, array_lengthof(Align30)));
|
| + EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align30)));
|
| EXPECT_EQ(
|
| " %v0 = load i32* %p0, align 0;\n"
|
| "Error(58:4): load: Illegal alignment for i32. Expects: 1\n",
|
| @@ -342,9 +318,8 @@ TEST(NaClParseInstsTests, BadStoreAlignment) {
|
| const uint64_t ReplaceIndex = 10; // index for FUNC_CODE_INST_STORE
|
|
|
| // Show text when alignment is 1.
|
| - NaClObjDumpMunger DumpMunger(BitcodeRecords,
|
| - array_lengthof(BitcodeRecords), Terminator);
|
| - EXPECT_TRUE(DumpMunger.runTest("BadStoreAlignment"));
|
| + NaClObjDumpMunger DumpMunger(ARRAY_TERM(BitcodeRecords));
|
| + EXPECT_TRUE(DumpMunger.runTest());
|
| EXPECT_EQ(
|
| " 0:0|<65532, 80, 69, 88, 69, 1, 0,|Magic Number: 'PEXE' (80, 69, "
|
| "88, 69)\n"
|
| @@ -373,9 +348,8 @@ TEST(NaClParseInstsTests, BadStoreAlignment) {
|
| " 69:0| 0: <65534> | }\n"
|
| " 72:0|0: <65534> |}\n",
|
| DumpMunger.getTestResults());
|
| - NaClParseBitcodeMunger Munger(BitcodeRecords,
|
| - array_lengthof(BitcodeRecords), Terminator);
|
| - EXPECT_TRUE(Munger.runTest("BadStoreAlignment", true));
|
| + NaClParseBitcodeMunger Munger(ARRAY_TERM(BitcodeRecords));
|
| + EXPECT_TRUE(Munger.runTest(true));
|
|
|
| // Show what happens when changing alignment to 0.
|
| const uint64_t Align0[] = {
|
| @@ -386,10 +360,8 @@ TEST(NaClParseInstsTests, BadStoreAlignment) {
|
| // bitcode reader). It is checked later by the PNaCl ABI checker in
|
| // pnacl-llc. On the other hand, the DumpMunger checks alignment for
|
| // stores while parsing.
|
| - EXPECT_TRUE(Munger.runTest(
|
| - "BadStoreAlignment-0", Align0, array_lengthof(Align0), true));
|
| - EXPECT_FALSE(DumpMunger.runTestForAssembly(
|
| - "BadStoreAlignment-0", Align0, array_lengthof(Align0)));
|
| + EXPECT_TRUE(Munger.runTest(ARRAY(Align0), true));
|
| + EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align0)));
|
| EXPECT_EQ(
|
| " store float %p1, float* %p0, align 0;\n"
|
| "Error(62:4): store: Illegal alignment for float. Expects: 1 or 4\n",
|
| @@ -400,20 +372,16 @@ TEST(NaClParseInstsTests, BadStoreAlignment) {
|
| ReplaceIndex, NaClMungedBitcode::Replace,
|
| 3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignPower(2), Terminator,
|
| };
|
| - EXPECT_TRUE(Munger.runTest(
|
| - "BadStoreAlignment-4", Align4, array_lengthof(Align4), true));
|
| - EXPECT_TRUE(DumpMunger.runTestForAssembly(
|
| - "BadStoreAlignment-4", Align4, array_lengthof(Align4)));
|
| + EXPECT_TRUE(Munger.runTest(ARRAY(Align4), true));
|
| + EXPECT_TRUE(DumpMunger.runTestForAssembly(ARRAY(Align4)));
|
|
|
| // Show what happens when changing alignment to 8.
|
| const uint64_t Align8[] = {
|
| ReplaceIndex, NaClMungedBitcode::Replace,
|
| 3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignPower(3), Terminator,
|
| };
|
| - EXPECT_TRUE(Munger.runTest(
|
| - "BadStoreAlignment-8", Align8, array_lengthof(Align8), true));
|
| - EXPECT_FALSE(DumpMunger.runTestForAssembly(
|
| - "BadStoreAlignment-8", Align8, array_lengthof(Align8)));
|
| + EXPECT_TRUE(Munger.runTest(ARRAY(Align8), true));
|
| + EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align8)));
|
| EXPECT_EQ(
|
| " store float %p1, float* %p0, align 8;\n"
|
| "Error(62:4): store: Illegal alignment for float. Expects: 1 or 4\n",
|
| @@ -424,10 +392,8 @@ TEST(NaClParseInstsTests, BadStoreAlignment) {
|
| ReplaceIndex, NaClMungedBitcode::Replace,
|
| 3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignPower(29), Terminator,
|
| };
|
| - EXPECT_TRUE(Munger.runTest(
|
| - "BadStoreAlignment-29", Align29, array_lengthof(Align29), true));
|
| - EXPECT_FALSE(DumpMunger.runTestForAssembly(
|
| - "BadStoreAlignment-29", Align29, array_lengthof(Align29)));
|
| + EXPECT_TRUE(Munger.runTest(ARRAY(Align29), true));
|
| + EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align29)));
|
| EXPECT_EQ(
|
| " store float %p1, float* %p0, align 536870912;\n"
|
| "Error(62:4): store: Illegal alignment for float. Expects: 1 or 4\n",
|
| @@ -438,18 +404,16 @@ TEST(NaClParseInstsTests, BadStoreAlignment) {
|
| ReplaceIndex, NaClMungedBitcode::Replace,
|
| 3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignPower(30), Terminator,
|
| };
|
| - EXPECT_FALSE(Munger.runTest(
|
| - "BadStoreAlignment-30", Align30, array_lengthof(Align30), true));
|
| + EXPECT_FALSE(Munger.runTest(ARRAY(Align30), true));
|
| EXPECT_EQ(
|
| "Error(66:4): Alignment can't be greater than 2**29. Found: 2**30\n"
|
| "Error: Invalid value in record\n",
|
| Munger.getTestResults());
|
| - EXPECT_FALSE(DumpMunger.runTestForAssembly(
|
| - "BadStoreAlignment-30", Align30, array_lengthof(Align30)));
|
| + EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align30)));
|
| EXPECT_EQ(
|
| " store float %p1, float* %p0, align 0;\n"
|
| "Error(62:4): store: Illegal alignment for float. Expects: 1 or 4\n",
|
| DumpMunger.getLinesWithSubstring("store"));
|
| }
|
|
|
| -} // end of anonamous namespace.
|
| +} // end of namespace naclmungetest
|
|
|