Mercurial > hg > CbC > CbC_llvm
view unittests/Transforms/Utils/Local.cpp @ 40:e34ccae0bb26
create if(setjmp) statement automatically.
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 26 Dec 2013 19:56:35 +0900 |
parents | 95c75e76d11b |
children | afa8332a0e37 |
line wrap: on
line source
//===- Local.cpp - Unit tests for Local -----------------------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "llvm/Transforms/Utils/Local.h" #include "llvm/IR/BasicBlock.h" #include "llvm/IR/IRBuilder.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/LLVMContext.h" #include "gtest/gtest.h" using namespace llvm; TEST(Local, RecursivelyDeleteDeadPHINodes) { LLVMContext &C(getGlobalContext()); IRBuilder<> builder(C); // Make blocks BasicBlock *bb0 = BasicBlock::Create(C); BasicBlock *bb1 = BasicBlock::Create(C); builder.SetInsertPoint(bb0); PHINode *phi = builder.CreatePHI(Type::getInt32Ty(C), 2); BranchInst *br0 = builder.CreateCondBr(builder.getTrue(), bb0, bb1); builder.SetInsertPoint(bb1); BranchInst *br1 = builder.CreateBr(bb0); phi->addIncoming(phi, bb0); phi->addIncoming(phi, bb1); // The PHI will be removed EXPECT_TRUE(RecursivelyDeleteDeadPHINode(phi)); // Make sure the blocks only contain the branches EXPECT_EQ(&bb0->front(), br0); EXPECT_EQ(&bb1->front(), br1); builder.SetInsertPoint(bb0); phi = builder.CreatePHI(Type::getInt32Ty(C), 0); EXPECT_TRUE(RecursivelyDeleteDeadPHINode(phi)); builder.SetInsertPoint(bb0); phi = builder.CreatePHI(Type::getInt32Ty(C), 0); builder.CreateAdd(phi, phi); EXPECT_TRUE(RecursivelyDeleteDeadPHINode(phi)); bb0->dropAllReferences(); bb1->dropAllReferences(); delete bb0; delete bb1; }