X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=unittests%2FIR%2FIRBuilderTest.cpp;h=0c602ed2b789e6f47e2c651e5160a4457fef2bd5;hp=f3db68feacce5cea7c6093f9def9b7711b058838;hb=5f220beefcb655de6aae7c80b456fd4e5cb76ac0;hpb=838b35dbd435e585a046a8ed064866d837b2e821 diff --git a/unittests/IR/IRBuilderTest.cpp b/unittests/IR/IRBuilderTest.cpp index f3db68feacc..0c602ed2b78 100644 --- a/unittests/IR/IRBuilderTest.cpp +++ b/unittests/IR/IRBuilderTest.cpp @@ -130,8 +130,8 @@ TEST_F(IRBuilderTest, GetIntTy) { TEST_F(IRBuilderTest, FastMathFlags) { IRBuilder<> Builder(BB); - Value *F; - Instruction *FDiv, *FAdd; + Value *F, *FC; + Instruction *FDiv, *FAdd, *FCmp; F = Builder.CreateLoad(GV); F = Builder.CreateFAdd(F, F); @@ -190,6 +190,24 @@ TEST_F(IRBuilderTest, FastMathFlags) { Builder.clearFastMathFlags(); + FC = Builder.CreateFCmpOEQ(F, F); + ASSERT_TRUE(isa(FC)); + FCmp = cast(FC); + EXPECT_FALSE(FCmp->hasAllowReciprocal()); + + FMF.clear(); + FMF.setAllowReciprocal(); + Builder.SetFastMathFlags(FMF); + + FC = Builder.CreateFCmpOEQ(F, F); + EXPECT_TRUE(Builder.getFastMathFlags().any()); + EXPECT_TRUE(Builder.getFastMathFlags().AllowReciprocal); + ASSERT_TRUE(isa(FC)); + FCmp = cast(FC); + EXPECT_TRUE(FCmp->hasAllowReciprocal()); + + Builder.clearFastMathFlags(); + // To test a copy, make sure that a '0' and a '1' change state. F = Builder.CreateFDiv(F, F); ASSERT_TRUE(isa(F)); @@ -281,7 +299,7 @@ TEST_F(IRBuilderTest, RAIIHelpersTest) { { IRBuilder<>::InsertPointGuard Guard(Builder); Builder.SetInsertPoint(cast(F)); - EXPECT_EQ(F, Builder.GetInsertPoint()); + EXPECT_EQ(F, &*Builder.GetInsertPoint()); } EXPECT_EQ(BB->end(), Builder.GetInsertPoint()); @@ -294,11 +312,13 @@ TEST_F(IRBuilderTest, DIBuilder) { auto File = DIB.createFile("F.CBL", "/"); auto CU = DIB.createCompileUnit(dwarf::DW_LANG_Cobol74, "F.CBL", "/", "llvm-cobol74", true, "", 0); - auto Type = DIB.createSubroutineType(File, DIB.getOrCreateTypeArray(None)); - DIB.createFunction(CU, "foo", "", File, 1, Type, false, true, 1, 0, true, F); + auto Type = DIB.createSubroutineType(DIB.getOrCreateTypeArray(None)); + auto SP = + DIB.createFunction(CU, "foo", "", File, 1, Type, false, true, 1, 0, true); + F->setSubprogram(SP); AllocaInst *I = Builder.CreateAlloca(Builder.getInt8Ty()); - auto BarSP = DIB.createFunction(CU, "bar", "", File, 1, Type, false, true, 1, - 0, true, nullptr); + auto BarSP = + DIB.createFunction(CU, "bar", "", File, 1, Type, false, true, 1, 0, true); auto BadScope = DIB.createLexicalBlockFile(BarSP, File, 0); I->setDebugLoc(DebugLoc::get(2, 0, BadScope)); DIB.finalize(); @@ -344,7 +364,7 @@ TEST_F(IRBuilderTest, DebugLoc) { auto File = DIB.createFile("tmp.cpp", "/"); auto CU = DIB.createCompileUnit(dwarf::DW_LANG_C_plus_plus_11, "tmp.cpp", "/", "", true, "", 0); - auto SPType = DIB.createSubroutineType(File, DIB.getOrCreateTypeArray(None)); + auto SPType = DIB.createSubroutineType(DIB.getOrCreateTypeArray(None)); auto SP = DIB.createFunction(CU, "foo", "foo", File, 1, SPType, false, true, 1); DebugLoc DL1 = DILocation::get(Ctx, 2, 0, SP); @@ -361,7 +381,7 @@ TEST_F(IRBuilderTest, DebugLoc) { EXPECT_EQ(DL1, Call1->getDebugLoc()); Call1->setDebugLoc(DL2); - Builder.SetInsertPoint(Call1->getParent(), Call1); + Builder.SetInsertPoint(Call1->getParent(), Call1->getIterator()); EXPECT_EQ(DL2, Builder.getCurrentDebugLocation()); auto Call2 = Builder.CreateCall(Callee, None); EXPECT_EQ(DL2, Call2->getDebugLoc());