[llvm] 46fc75a - [NFC][2/n] Remove PrunePH pass
Arthur Eubanks via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 26 18:38:24 PDT 2022
Author: Sebastian Peryt
Date: 2022-09-26T18:38:04-07:00
New Revision: 46fc75ab28b78a730ea21fd7daba6443937bfaac
URL: https://github.com/llvm/llvm-project/commit/46fc75ab28b78a730ea21fd7daba6443937bfaac
DIFF: https://github.com/llvm/llvm-project/commit/46fc75ab28b78a730ea21fd7daba6443937bfaac.diff
LOG: [NFC][2/n] Remove PrunePH pass
Second patch in the series to remove legacy PM and
associated -enable-new-pm=0 flag targets pass that
has not been ported to new PM - PruneEH.
Discussion about this can be found in D44415.
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D134686
Added:
Modified:
llvm/bindings/go/llvm/transforms_ipo.go
llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c
llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml
llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli
llvm/include/llvm-c/Transforms/IPO.h
llvm/include/llvm/InitializePasses.h
llvm/include/llvm/LinkAllPasses.h
llvm/include/llvm/Transforms/IPO.h
llvm/lib/Transforms/IPO/CMakeLists.txt
llvm/lib/Transforms/IPO/IPO.cpp
llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
llvm/test/Bindings/OCaml/ipo.ml
llvm/utils/gn/secondary/llvm/lib/Transforms/IPO/BUILD.gn
Removed:
llvm/lib/Transforms/IPO/PruneEH.cpp
llvm/test/Transforms/Inline/2004-04-20-InlineLinkOnce.ll
llvm/test/Transforms/Inline/2006-01-14-CallGraphUpdate.ll
llvm/test/Transforms/Inline/2006-07-12-InlinePruneCGUpdate.ll
llvm/test/Transforms/Inline/2006-11-09-InlineCGUpdate-2.ll
llvm/test/Transforms/Inline/2006-11-09-InlineCGUpdate.ll
llvm/test/Transforms/JumpThreading/pr26096.ll
llvm/test/Transforms/PruneEH/2008-06-02-Weak.ll
llvm/test/Transforms/PruneEH/ipo-nounwind.ll
llvm/test/Transforms/PruneEH/looptest.ll
llvm/test/Transforms/PruneEH/musttail.ll
llvm/test/Transforms/PruneEH/operand-bundles.ll
llvm/test/Transforms/PruneEH/pr23971.ll
llvm/test/Transforms/PruneEH/pr26263.ll
llvm/test/Transforms/PruneEH/recursivetest.ll
llvm/test/Transforms/PruneEH/seh-nounwind.ll
llvm/test/Transforms/PruneEH/simplenoreturntest.ll
llvm/test/Transforms/PruneEH/simpletest.ll
################################################################################
diff --git a/llvm/bindings/go/llvm/transforms_ipo.go b/llvm/bindings/go/llvm/transforms_ipo.go
index 3f9ae5df6caf5..6a8cd979f613f 100644
--- a/llvm/bindings/go/llvm/transforms_ipo.go
+++ b/llvm/bindings/go/llvm/transforms_ipo.go
@@ -31,7 +31,6 @@ func (pm PassManager) AddFunctionAttrsPass() { C.LLVMAddFunctionAttrsPas
func (pm PassManager) AddFunctionInliningPass() { C.LLVMAddFunctionInliningPass(pm.C) }
func (pm PassManager) AddGlobalDCEPass() { C.LLVMAddGlobalDCEPass(pm.C) }
func (pm PassManager) AddGlobalOptimizerPass() { C.LLVMAddGlobalOptimizerPass(pm.C) }
-func (pm PassManager) AddPruneEHPass() { C.LLVMAddPruneEHPass(pm.C) }
func (pm PassManager) AddIPSCCPPass() { C.LLVMAddIPSCCPPass(pm.C) }
func (pm PassManager) AddInternalizePass(allButMain bool) {
C.LLVMAddInternalizePass(pm.C, boolToUnsigned(allButMain))
diff --git a/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c b/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c
index aeebf8a76551a..8d6e57e744672 100644
--- a/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c
+++ b/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c
@@ -67,12 +67,6 @@ value llvm_add_global_optimizer(LLVMPassManagerRef PM) {
return Val_unit;
}
-/* [`Module] Llvm.PassManager.t -> unit */
-value llvm_add_prune_eh(LLVMPassManagerRef PM) {
- LLVMAddPruneEHPass(PM);
- return Val_unit;
-}
-
/* [`Module] Llvm.PassManager.t -> unit */
value llvm_add_ipsccp(LLVMPassManagerRef PM) {
LLVMAddIPSCCPPass(PM);
diff --git a/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml b/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml
index 7b2f37992000b..99b79e532ee9b 100644
--- a/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml
+++ b/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml
@@ -30,9 +30,6 @@ external add_global_dce
external add_global_optimizer
: [ `Module ] Llvm.PassManager.t -> unit
= "llvm_add_global_optimizer"
-external add_prune_eh
- : [ `Module ] Llvm.PassManager.t -> unit
- = "llvm_add_prune_eh"
external add_ipsccp
: [ `Module ] Llvm.PassManager.t -> unit
= "llvm_add_ipsccp"
diff --git a/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli b/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli
index 31b8ed03f5d7e..f8612b17823ef 100644
--- a/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli
+++ b/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli
@@ -51,11 +51,6 @@ external add_global_optimizer
: [ `Module ] Llvm.PassManager.t -> unit
= "llvm_add_global_optimizer"
-(** See the [llvm::createPruneEHPass] function. *)
-external add_prune_eh
- : [ `Module ] Llvm.PassManager.t -> unit
- = "llvm_add_prune_eh"
-
(** See the [llvm::createIPSCCPPass] function. *)
external add_ipsccp
: [ `Module ] Llvm.PassManager.t -> unit
diff --git a/llvm/include/llvm-c/Transforms/IPO.h b/llvm/include/llvm-c/Transforms/IPO.h
index c806156281bd3..b049e9e67f341 100644
--- a/llvm/include/llvm-c/Transforms/IPO.h
+++ b/llvm/include/llvm-c/Transforms/IPO.h
@@ -54,9 +54,6 @@ void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM);
/** See llvm::createGlobalOptimizerPass function. */
void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM);
-/** See llvm::createPruneEHPass function. */
-void LLVMAddPruneEHPass(LLVMPassManagerRef PM);
-
/** See llvm::createIPSCCPPass function. */
void LLVMAddIPSCCPPass(LLVMPassManagerRef PM);
diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h
index 6a5d91661b03c..92ec0594b94b1 100644
--- a/llvm/include/llvm/InitializePasses.h
+++ b/llvm/include/llvm/InitializePasses.h
@@ -352,7 +352,6 @@ void initializePrintModulePassWrapperPass(PassRegistry&);
void initializeProcessImplicitDefsPass(PassRegistry&);
void initializeProfileSummaryInfoWrapperPassPass(PassRegistry&);
void initializePromoteLegacyPassPass(PassRegistry&);
-void initializePruneEHPass(PassRegistry&);
void initializeRABasicPass(PassRegistry&);
void initializePseudoProbeInserterPass(PassRegistry &);
void initializeRAGreedyPass(PassRegistry&);
diff --git a/llvm/include/llvm/LinkAllPasses.h b/llvm/include/llvm/LinkAllPasses.h
index 1a96ddf1e160c..b934ddbb0ee83 100644
--- a/llvm/include/llvm/LinkAllPasses.h
+++ b/llvm/include/llvm/LinkAllPasses.h
@@ -146,7 +146,6 @@ namespace {
(void) llvm::createPAEvalPass();
(void) llvm::createPromoteMemoryToRegisterPass();
(void) llvm::createDemoteRegisterToMemoryPass();
- (void) llvm::createPruneEHPass();
(void)llvm::createPostDomOnlyPrinterWrapperPassPass();
(void)llvm::createPostDomPrinterWrapperPassPass();
(void)llvm::createPostDomOnlyViewerWrapperPassPass();
diff --git a/llvm/include/llvm/Transforms/IPO.h b/llvm/include/llvm/Transforms/IPO.h
index e660a28835217..8853a64ba4d1a 100644
--- a/llvm/include/llvm/Transforms/IPO.h
+++ b/llvm/include/llvm/Transforms/IPO.h
@@ -110,12 +110,6 @@ Pass *createFunctionInliningPass(unsigned OptLevel, unsigned SizeOptLevel,
bool DisableInlineHotCallSite);
Pass *createFunctionInliningPass(InlineParams &Params);
-//===----------------------------------------------------------------------===//
-/// createPruneEHPass - Return a new pass object which transforms invoke
-/// instructions into calls, if the callee can _not_ unwind the stack.
-///
-Pass *createPruneEHPass();
-
//===----------------------------------------------------------------------===//
/// createInternalizePass - This pass loops over all of the functions in the
/// input module, internalizing all globals (functions and variables) it can.
diff --git a/llvm/lib/Transforms/IPO/CMakeLists.txt b/llvm/lib/Transforms/IPO/CMakeLists.txt
index f9833224d1424..772a85024a169 100644
--- a/llvm/lib/Transforms/IPO/CMakeLists.txt
+++ b/llvm/lib/Transforms/IPO/CMakeLists.txt
@@ -33,7 +33,6 @@ add_llvm_component_library(LLVMipo
OpenMPOpt.cpp
PartialInlining.cpp
PassManagerBuilder.cpp
- PruneEH.cpp
SampleContextTracker.cpp
SampleProfile.cpp
SampleProfileProbe.cpp
diff --git a/llvm/lib/Transforms/IPO/IPO.cpp b/llvm/lib/Transforms/IPO/IPO.cpp
index dfd434e61d5b4..c5032416870b1 100644
--- a/llvm/lib/Transforms/IPO/IPO.cpp
+++ b/llvm/lib/Transforms/IPO/IPO.cpp
@@ -50,7 +50,6 @@ void llvm::initializeIPO(PassRegistry &Registry) {
initializeAttributorCGSCCLegacyPassPass(Registry);
initializePostOrderFunctionAttrsLegacyPassPass(Registry);
initializeReversePostOrderFunctionAttrsLegacyPassPass(Registry);
- initializePruneEHPass(Registry);
initializeIPSCCPLegacyPassPass(Registry);
initializeStripDeadPrototypesLegacyPassPass(Registry);
initializeStripSymbolsPass(Registry);
@@ -97,10 +96,6 @@ void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM) {
unwrap(PM)->add(createGlobalOptimizerPass());
}
-void LLVMAddPruneEHPass(LLVMPassManagerRef PM) {
- unwrap(PM)->add(createPruneEHPass());
-}
-
void LLVMAddIPSCCPPass(LLVMPassManagerRef PM) {
unwrap(PM)->add(createIPSCCPPass());
}
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
index 2718a7e0bb4d0..52e4fa4011837 100644
--- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
+++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
@@ -647,7 +647,6 @@ void PassManagerBuilder::populateModulePassManager(
MPM.add(createGlobalsAAWrapperPass());
// Start of CallGraph SCC passes.
- MPM.add(createPruneEHPass()); // Remove dead EH info
bool RunInliner = false;
if (Inliner) {
MPM.add(Inliner);
diff --git a/llvm/lib/Transforms/IPO/PruneEH.cpp b/llvm/lib/Transforms/IPO/PruneEH.cpp
deleted file mode 100644
index 04d4351e16b04..0000000000000
--- a/llvm/lib/Transforms/IPO/PruneEH.cpp
+++ /dev/null
@@ -1,261 +0,0 @@
-//===- PruneEH.cpp - Pass which deletes unused exception handlers ---------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements a simple interprocedural pass which walks the
-// call-graph, turning invoke instructions into calls, iff the callee cannot
-// throw an exception, and marking functions 'nounwind' if they cannot throw.
-// It implements this as a bottom-up traversal of the call-graph.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ADT/SetVector.h"
-#include "llvm/ADT/Statistic.h"
-#include "llvm/Analysis/CallGraph.h"
-#include "llvm/Analysis/CallGraphSCCPass.h"
-#include "llvm/Analysis/EHPersonalities.h"
-#include "llvm/IR/CFG.h"
-#include "llvm/IR/Constants.h"
-#include "llvm/IR/Function.h"
-#include "llvm/IR/InlineAsm.h"
-#include "llvm/IR/Instructions.h"
-#include "llvm/InitializePasses.h"
-#include "llvm/Transforms/IPO.h"
-#include "llvm/Transforms/Utils/CallGraphUpdater.h"
-#include "llvm/Transforms/Utils/Local.h"
-#include <algorithm>
-
-using namespace llvm;
-
-#define DEBUG_TYPE "prune-eh"
-
-STATISTIC(NumRemoved, "Number of invokes removed");
-STATISTIC(NumUnreach, "Number of noreturn calls optimized");
-
-namespace {
- struct PruneEH : public CallGraphSCCPass {
- static char ID; // Pass identification, replacement for typeid
- PruneEH() : CallGraphSCCPass(ID) {
- initializePruneEHPass(*PassRegistry::getPassRegistry());
- }
-
- // runOnSCC - Analyze the SCC, performing the transformation if possible.
- bool runOnSCC(CallGraphSCC &SCC) override;
- };
-}
-static bool SimplifyFunction(Function *F, CallGraphUpdater &CGU);
-static void DeleteBasicBlock(BasicBlock *BB, CallGraphUpdater &CGU);
-
-char PruneEH::ID = 0;
-INITIALIZE_PASS_BEGIN(PruneEH, "prune-eh",
- "Remove unused exception handling info", false, false)
-INITIALIZE_PASS_DEPENDENCY(CallGraphWrapperPass)
-INITIALIZE_PASS_END(PruneEH, "prune-eh",
- "Remove unused exception handling info", false, false)
-
-Pass *llvm::createPruneEHPass() { return new PruneEH(); }
-
-static bool runImpl(CallGraphUpdater &CGU, SetVector<Function *> &Functions) {
-#ifndef NDEBUG
- for (auto *F : Functions)
- assert(F && "null Function");
-#endif
- bool MadeChange = false;
-
- // First pass, scan all of the functions in the SCC, simplifying them
- // according to what we know.
- for (Function *F : Functions)
- MadeChange |= SimplifyFunction(F, CGU);
-
- // Next, check to see if any callees might throw or if there are any external
- // functions in this SCC: if so, we cannot prune any functions in this SCC.
- // Definitions that are weak and not declared non-throwing might be
- // overridden at linktime with something that throws, so assume that.
- // If this SCC includes the unwind instruction, we KNOW it throws, so
- // obviously the SCC might throw.
- //
- bool SCCMightUnwind = false, SCCMightReturn = false;
- for (Function *F : Functions) {
- if (!F->hasExactDefinition()) {
- SCCMightUnwind |= !F->doesNotThrow();
- SCCMightReturn |= !F->doesNotReturn();
- } else {
- bool CheckUnwind = !SCCMightUnwind && !F->doesNotThrow();
- bool CheckReturn = !SCCMightReturn && !F->doesNotReturn();
- // Determine if we should scan for InlineAsm in a naked function as it
- // is the only way to return without a ReturnInst. Only do this for
- // no-inline functions as functions which may be inlined cannot
- // meaningfully return via assembly.
- bool CheckReturnViaAsm = CheckReturn &&
- F->hasFnAttribute(Attribute::Naked) &&
- F->hasFnAttribute(Attribute::NoInline);
-
- if (!CheckUnwind && !CheckReturn)
- continue;
-
- for (const BasicBlock &BB : *F) {
- const Instruction *TI = BB.getTerminator();
- if (CheckUnwind && TI->mayThrow()) {
- SCCMightUnwind = true;
- } else if (CheckReturn && isa<ReturnInst>(TI)) {
- SCCMightReturn = true;
- }
-
- for (const Instruction &I : BB) {
- if ((!CheckUnwind || SCCMightUnwind) &&
- (!CheckReturnViaAsm || SCCMightReturn))
- break;
-
- // Check to see if this function performs an unwind or calls an
- // unwinding function.
- if (CheckUnwind && !SCCMightUnwind && I.mayThrow()) {
- bool InstMightUnwind = true;
- if (const auto *CI = dyn_cast<CallInst>(&I)) {
- if (Function *Callee = CI->getCalledFunction()) {
- // If the callee is outside our current SCC then we may throw
- // because it might. If it is inside, do nothing.
- if (Functions.contains(Callee))
- InstMightUnwind = false;
- }
- }
- SCCMightUnwind |= InstMightUnwind;
- }
- if (CheckReturnViaAsm && !SCCMightReturn)
- if (const auto *CB = dyn_cast<CallBase>(&I))
- if (const auto *IA = dyn_cast<InlineAsm>(CB->getCalledOperand()))
- if (IA->hasSideEffects())
- SCCMightReturn = true;
- }
- }
- if (SCCMightUnwind && SCCMightReturn)
- break;
- }
- }
-
- // If the SCC doesn't unwind or doesn't throw, note this fact.
- if (!SCCMightUnwind || !SCCMightReturn)
- for (Function *F : Functions) {
- if (!SCCMightUnwind && !F->hasFnAttribute(Attribute::NoUnwind)) {
- F->addFnAttr(Attribute::NoUnwind);
- MadeChange = true;
- }
-
- if (!SCCMightReturn && !F->hasFnAttribute(Attribute::NoReturn)) {
- F->addFnAttr(Attribute::NoReturn);
- MadeChange = true;
- }
- }
-
- for (Function *F : Functions) {
- // Convert any invoke instructions to non-throwing functions in this node
- // into call instructions with a branch. This makes the exception blocks
- // dead.
- MadeChange |= SimplifyFunction(F, CGU);
- }
-
- return MadeChange;
-}
-
-bool PruneEH::runOnSCC(CallGraphSCC &SCC) {
- if (skipSCC(SCC))
- return false;
- SetVector<Function *> Functions;
- for (const auto &N : SCC) {
- if (auto *F = N->getFunction())
- Functions.insert(F);
- }
- CallGraph &CG = getAnalysis<CallGraphWrapperPass>().getCallGraph();
- CallGraphUpdater CGU;
- CGU.initialize(CG, SCC);
- return runImpl(CGU, Functions);
-}
-
-
-// SimplifyFunction - Given information about callees, simplify the specified
-// function if we have invokes to non-unwinding functions or code after calls to
-// no-return functions.
-static bool SimplifyFunction(Function *F, CallGraphUpdater &CGU) {
- bool MadeChange = false;
- for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) {
- if (InvokeInst *II = dyn_cast<InvokeInst>(BB->getTerminator()))
- if (II->doesNotThrow() && canSimplifyInvokeNoUnwind(F)) {
- BasicBlock *UnwindBlock = II->getUnwindDest();
- removeUnwindEdge(&*BB);
-
- // If the unwind block is now dead, nuke it.
- if (pred_empty(UnwindBlock))
- DeleteBasicBlock(UnwindBlock, CGU); // Delete the new BB.
-
- ++NumRemoved;
- MadeChange = true;
- }
-
- for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; )
- if (CallInst *CI = dyn_cast<CallInst>(I++))
- if (CI->doesNotReturn() && !CI->isMustTailCall() &&
- !isa<UnreachableInst>(I)) {
- // This call calls a function that cannot return. Insert an
- // unreachable instruction after it and simplify the code. Do this
- // by splitting the BB, adding the unreachable, then deleting the
- // new BB.
- BasicBlock *New = BB->splitBasicBlock(I);
-
- // Remove the uncond branch and add an unreachable.
- BB->getInstList().pop_back();
- new UnreachableInst(BB->getContext(), &*BB);
-
- DeleteBasicBlock(New, CGU); // Delete the new BB.
- MadeChange = true;
- ++NumUnreach;
- break;
- }
- }
-
- return MadeChange;
-}
-
-/// DeleteBasicBlock - remove the specified basic block from the program,
-/// updating the callgraph to reflect any now-obsolete edges due to calls that
-/// exist in the BB.
-static void DeleteBasicBlock(BasicBlock *BB, CallGraphUpdater &CGU) {
- assert(pred_empty(BB) && "BB is not dead!");
-
- Instruction *TokenInst = nullptr;
-
- for (BasicBlock::iterator I = BB->end(), E = BB->begin(); I != E; ) {
- --I;
-
- if (I->getType()->isTokenTy()) {
- TokenInst = &*I;
- break;
- }
-
- if (auto *Call = dyn_cast<CallBase>(&*I)) {
- const Function *Callee = Call->getCalledFunction();
- if (!Callee || !Intrinsic::isLeaf(Callee->getIntrinsicID()))
- CGU.removeCallSite(*Call);
- else if (!Callee->isIntrinsic())
- CGU.removeCallSite(*Call);
- }
-
- if (!I->use_empty())
- I->replaceAllUsesWith(PoisonValue::get(I->getType()));
- }
-
- if (TokenInst) {
- if (!TokenInst->isTerminator())
- changeToUnreachable(TokenInst->getNextNode());
- } else {
- // Get the list of successors of this block.
- std::vector<BasicBlock *> Succs(succ_begin(BB), succ_end(BB));
-
- for (unsigned i = 0, e = Succs.size(); i != e; ++i)
- Succs[i]->removePredecessor(BB);
-
- BB->eraseFromParent();
- }
-}
diff --git a/llvm/test/Bindings/OCaml/ipo.ml b/llvm/test/Bindings/OCaml/ipo.ml
index 55a3a1c61afc5..4ba02c756768b 100644
--- a/llvm/test/Bindings/OCaml/ipo.ml
+++ b/llvm/test/Bindings/OCaml/ipo.ml
@@ -54,7 +54,6 @@ let test_transforms () =
++ add_always_inliner
++ add_global_dce
++ add_global_optimizer
- ++ add_prune_eh
++ add_ipsccp
++ add_internalize ~all_but_main:true
++ add_strip_dead_prototypes
diff --git a/llvm/test/Transforms/Inline/2004-04-20-InlineLinkOnce.ll b/llvm/test/Transforms/Inline/2004-04-20-InlineLinkOnce.ll
deleted file mode 100644
index d194ab062e042..0000000000000
--- a/llvm/test/Transforms/Inline/2004-04-20-InlineLinkOnce.ll
+++ /dev/null
@@ -1,11 +0,0 @@
-; RUN: opt < %s -inline -prune-eh -disable-output -enable-new-pm=0
-
-define linkonce void @caller() {
- call void @callee( )
- ret void
-}
-
-define linkonce void @callee() {
- ret void
-}
-
diff --git a/llvm/test/Transforms/Inline/2006-01-14-CallGraphUpdate.ll b/llvm/test/Transforms/Inline/2006-01-14-CallGraphUpdate.ll
deleted file mode 100644
index 7e38da2b5fbc7..0000000000000
--- a/llvm/test/Transforms/Inline/2006-01-14-CallGraphUpdate.ll
+++ /dev/null
@@ -1,25 +0,0 @@
-; RUN: opt < %s -inline -prune-eh -disable-output -enable-new-pm=0
-
- %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>" = type { %"struct.std::locale::facet" }
- %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >" = type { i32 (...)**, i32*, i32*, i32*, i32*, i32*, i32*, %"struct.std::locale" }
- %"struct.std::ios_base" = type { i32 (...)**, i32, i32, i32, i32, i32, %"struct.std::ios_base::_Callback_list"*, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, %"struct.std::ios_base::_Words"*, %"struct.std::locale" }
- %"struct.std::ios_base::_Callback_list" = type { %"struct.std::ios_base::_Callback_list"*, void (i32, %"struct.std::ios_base"*, i32)*, i32, i32 }
- %"struct.std::ios_base::_Words" = type { i8*, i32 }
- %"struct.std::locale" = type { %"struct.std::locale::_Impl"* }
- %"struct.std::locale::_Impl" = type { i32, %"struct.std::locale::facet"**, i32, %"struct.std::locale::facet"**, i8** }
- %"struct.std::locale::facet" = type { i32 (...)**, i32 }
- %"struct.std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t> >" = type { %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >"*, i32 }
-
-define void @_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl(%"struct.std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t> >"* %agg.result, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"* %this, %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >"* %__s.0__, i32 %__s.1__, %"struct.std::ios_base"* %__io, i32 %__fill, i32 %__v) {
-entry:
- tail call fastcc void @_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_( )
- ret void
-}
-
-define fastcc void @_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_() {
-entry:
- %tmp.38 = shl i32 0, 3 ; <i32> [#uses=1]
- %tmp.39 = alloca i8, i32 %tmp.38 ; <i8*> [#uses=0]
- ret void
-}
-
diff --git a/llvm/test/Transforms/Inline/2006-07-12-InlinePruneCGUpdate.ll b/llvm/test/Transforms/Inline/2006-07-12-InlinePruneCGUpdate.ll
deleted file mode 100644
index f7fd4e6c851e5..0000000000000
--- a/llvm/test/Transforms/Inline/2006-07-12-InlinePruneCGUpdate.ll
+++ /dev/null
@@ -1,840 +0,0 @@
-; RUN: opt < %s -inline -prune-eh -disable-output -enable-new-pm=0
-; PR827
- at _ZTV8CRjii = internal global [1 x i32 (...)*] [ i32 (...)* @_ZN8CRjii12NlFeeEPN5Jr7sE ] ; <[1 x i32 (...)*]*> [#uses=0]
-
-define internal i32 @_ZN8CRjii12NlFeeEPN5Jr7sE(...) {
-entry:
- br i1 false, label %cond_true, label %cond_false179
-
-cond_true: ; preds = %entry
- br label %bb9
-
-bb: ; preds = %cond_true14
- br label %bb9
-
-bb9: ; preds = %bb, %cond_true
- br i1 false, label %cond_true14, label %cond_false
-
-cond_true14: ; preds = %bb9
- br label %bb
-
-cond_false: ; preds = %bb9
- br label %bb15
-
-cond_next: ; No predecessors!
- br label %bb15
-
-bb15: ; preds = %cond_next, %cond_false
- br label %bb24
-
-bb17: ; preds = %cond_true29
- br label %bb24
-
-bb24: ; preds = %bb17, %bb15
- br i1 false, label %cond_true29, label %cond_false30
-
-cond_true29: ; preds = %bb24
- br label %bb17
-
-cond_false30: ; preds = %bb24
- br label %bb32
-
-cond_next31: ; No predecessors!
- br label %bb32
-
-bb32: ; preds = %cond_next31, %cond_false30
- br label %bb41
-
-bb34: ; preds = %cond_true46
- br label %bb41
-
-bb41: ; preds = %bb34, %bb32
- br i1 false, label %cond_true46, label %cond_false47
-
-cond_true46: ; preds = %bb41
- br label %bb34
-
-cond_false47: ; preds = %bb41
- br label %bb49
-
-cond_next48: ; No predecessors!
- br label %bb49
-
-bb49: ; preds = %cond_next48, %cond_false47
- br label %bb58
-
-bb51: ; preds = %cond_true63
- br label %bb58
-
-bb58: ; preds = %bb51, %bb49
- br i1 false, label %cond_true63, label %cond_false64
-
-cond_true63: ; preds = %bb58
- br label %bb51
-
-cond_false64: ; preds = %bb58
- br label %bb66
-
-cond_next65: ; No predecessors!
- br label %bb66
-
-bb66: ; preds = %cond_next65, %cond_false64
- br label %bb76
-
-bb68: ; preds = %cond_true81
- br label %bb76
-
-bb76: ; preds = %bb68, %bb66
- br i1 false, label %cond_true81, label %cond_false82
-
-cond_true81: ; preds = %bb76
- br label %bb68
-
-cond_false82: ; preds = %bb76
- br label %bb84
-
-cond_next83: ; No predecessors!
- br label %bb84
-
-bb84: ; preds = %cond_next83, %cond_false82
- br label %bb94
-
-bb86: ; preds = %cond_true99
- br label %bb94
-
-bb94: ; preds = %bb86, %bb84
- br i1 false, label %cond_true99, label %cond_false100
-
-cond_true99: ; preds = %bb94
- br label %bb86
-
-cond_false100: ; preds = %bb94
- br label %bb102
-
-cond_next101: ; No predecessors!
- br label %bb102
-
-bb102: ; preds = %cond_next101, %cond_false100
- br label %bb112
-
-bb104: ; preds = %cond_true117
- br label %bb112
-
-bb112: ; preds = %bb104, %bb102
- br i1 false, label %cond_true117, label %cond_false118
-
-cond_true117: ; preds = %bb112
- br label %bb104
-
-cond_false118: ; preds = %bb112
- br label %bb120
-
-cond_next119: ; No predecessors!
- br label %bb120
-
-bb120: ; preds = %cond_next119, %cond_false118
- br label %bb130
-
-bb122: ; preds = %cond_true135
- br label %bb130
-
-bb130: ; preds = %bb122, %bb120
- br i1 false, label %cond_true135, label %cond_false136
-
-cond_true135: ; preds = %bb130
- br label %bb122
-
-cond_false136: ; preds = %bb130
- br label %bb138
-
-cond_next137: ; No predecessors!
- br label %bb138
-
-bb138: ; preds = %cond_next137, %cond_false136
- br label %bb148
-
-bb140: ; preds = %cond_true153
- call fastcc void @_Zjrf1( )
- br label %bb148
-
-bb148: ; preds = %bb140, %bb138
- br i1 false, label %cond_true153, label %cond_false154
-
-cond_true153: ; preds = %bb148
- br label %bb140
-
-cond_false154: ; preds = %bb148
- br label %bb156
-
-cond_next155: ; No predecessors!
- br label %bb156
-
-bb156: ; preds = %cond_next155, %cond_false154
- br label %bb166
-
-bb158: ; preds = %cond_true171
- br label %bb166
-
-bb166: ; preds = %bb158, %bb156
- br i1 false, label %cond_true171, label %cond_false172
-
-cond_true171: ; preds = %bb166
- br label %bb158
-
-cond_false172: ; preds = %bb166
- br label %bb174
-
-cond_next173: ; No predecessors!
- br label %bb174
-
-bb174: ; preds = %cond_next173, %cond_false172
- br label %cleanup
-
-cleanup: ; preds = %bb174
- br label %finally
-
-finally: ; preds = %cleanup
- br label %cond_next180
-
-cond_false179: ; preds = %entry
- br label %cond_next180
-
-cond_next180: ; preds = %cond_false179, %finally
- br label %return
-
-return: ; preds = %cond_next180
- ret i32 0
-}
-
-define internal fastcc void @_Zjrf2() {
-entry:
- br label %bb3
-
-bb: ; preds = %cond_true
- br label %bb3
-
-bb3: ; preds = %bb, %entry
- %tmp5 = load i8*, i8** null ; <i8*> [#uses=1]
- %tmp = icmp ne i8* null, %tmp5 ; <i1> [#uses=1]
- br i1 %tmp, label %cond_true, label %cond_false
-
-cond_true: ; preds = %bb3
- br label %bb
-
-cond_false: ; preds = %bb3
- br label %bb6
-
-cond_next: ; No predecessors!
- br label %bb6
-
-bb6: ; preds = %cond_next, %cond_false
- br label %return
-
-return: ; preds = %bb6
- ret void
-}
-
-define internal fastcc void @_Zjrf3() {
-entry:
- call fastcc void @_Zjrf2( )
- br label %return
-
-return: ; preds = %entry
- ret void
-}
-
-define internal fastcc void @_Zjrf4() {
-entry:
- br label %bb6
-
-bb: ; preds = %cond_true
- br label %bb6
-
-bb6: ; preds = %bb, %entry
- br i1 false, label %cond_true, label %cond_false
-
-cond_true: ; preds = %bb6
- br label %bb
-
-cond_false: ; preds = %bb6
- br label %bb8
-
-cond_next: ; No predecessors!
- br label %bb8
-
-bb8: ; preds = %cond_next, %cond_false
- br i1 false, label %cond_true9, label %cond_false12
-
-cond_true9: ; preds = %bb8
- call fastcc void @_Zjrf3( )
- br label %cond_next13
-
-cond_false12: ; preds = %bb8
- br label %cond_next13
-
-cond_next13: ; preds = %cond_false12, %cond_true9
- br label %return
-
-return: ; preds = %cond_next13
- ret void
-}
-
-define internal fastcc void @_Zjrf5() {
-entry:
- call fastcc void @_Zjrf4( )
- br label %return
-
-return: ; preds = %entry
- ret void
-}
-
-define internal fastcc void @_Zjrf6() {
-entry:
- call fastcc void @_Zjrf5( )
- br label %return
-
-return: ; preds = %entry
- ret void
-}
-
-define internal fastcc void @_Zjrf7() {
-entry:
- br label %cleanup
-
-cleanup: ; preds = %entry
- br label %finally
-
-finally: ; preds = %cleanup
- call fastcc void @_Zjrf6( )
- br label %cleanup9
-
-cleanup9: ; preds = %finally
- br label %finally8
-
-finally8: ; preds = %cleanup9
- br label %cleanup11
-
-cleanup11: ; preds = %finally8
- br label %finally10
-
-finally10: ; preds = %cleanup11
- br label %finally23
-
-finally23: ; preds = %finally10
- br label %return
-
-return: ; preds = %finally23
- ret void
-}
-
-define internal fastcc void @_Zjrf11() {
-entry:
- br label %bb7
-
-bb: ; preds = %cond_true
- br label %bb7
-
-bb7: ; preds = %bb, %entry
- br i1 false, label %cond_true, label %cond_false
-
-cond_true: ; preds = %bb7
- br label %bb
-
-cond_false: ; preds = %bb7
- br label %bb9
-
-cond_next: ; No predecessors!
- br label %bb9
-
-bb9: ; preds = %cond_next, %cond_false
- br label %return
- ; No predecessors!
- br i1 false, label %cond_true12, label %cond_false15
-
-cond_true12: ; preds = %0
- call fastcc void @_Zjrf3( )
- br label %cond_next16
-
-cond_false15: ; preds = %0
- br label %cond_next16
-
-cond_next16: ; preds = %cond_false15, %cond_true12
- br label %return
-
-return: ; preds = %cond_next16, %bb9
- ret void
-}
-
-define internal fastcc void @_Zjrf9() {
-entry:
- call fastcc void @_Zjrf11( )
- br label %return
-
-return: ; preds = %entry
- ret void
-}
-
-define internal fastcc void @_Zjrf10() {
-entry:
- call fastcc void @_Zjrf9( )
- br label %return
-
-return: ; preds = %entry
- ret void
-}
-
-define internal fastcc void @_Zjrf8() {
-entry:
- br i1 false, label %cond_true, label %cond_false201
-
-cond_true: ; preds = %entry
- br i1 false, label %cond_true36, label %cond_false
-
-cond_true36: ; preds = %cond_true
- br label %cleanup
-
-cleanup: ; preds = %cond_true36
- br label %finally
-
-finally: ; preds = %cleanup
- br label %cond_next189
-
-cond_false: ; preds = %cond_true
- br i1 false, label %cond_true99, label %cond_false137
-
-cond_true99: ; preds = %cond_false
- br label %cleanup136
-
-cleanup136: ; preds = %cond_true99
- br label %finally135
-
-finally135: ; preds = %cleanup136
- br label %cond_next
-
-cond_false137: ; preds = %cond_false
- call fastcc void @_Zjrf10( )
- br label %cleanup188
-
-cleanup188: ; preds = %cond_false137
- br label %finally187
-
-finally187: ; preds = %cleanup188
- br label %cond_next
-
-cond_next: ; preds = %finally187, %finally135
- br label %cond_next189
-
-cond_next189: ; preds = %cond_next, %finally
- br label %cond_next202
-
-cond_false201: ; preds = %entry
- br label %cond_next202
-
-cond_next202: ; preds = %cond_false201, %cond_next189
- br label %return
-
-return: ; preds = %cond_next202
- ret void
-}
-
-define internal fastcc void @_Zjrf1() {
-entry:
- br label %bb492
-
-bb: ; preds = %cond_true499
- br label %cleanup
-
-cleanup: ; preds = %bb
- br label %finally
-
-finally: ; preds = %cleanup
- br label %cleanup11
-
-cleanup11: ; preds = %finally
- br label %finally10
-
-finally10: ; preds = %cleanup11
- br i1 false, label %cond_true, label %cond_false286
-
-cond_true: ; preds = %finally10
- br label %cleanup26
-
-cleanup26: ; preds = %cond_true
- br label %finally25
-
-finally25: ; preds = %cleanup26
- br label %bb30
-
-bb27: ; preds = %cond_true37
- br label %bb30
-
-bb30: ; preds = %bb27, %finally25
- br i1 false, label %cond_true37, label %cond_false
-
-cond_true37: ; preds = %bb30
- br label %bb27
-
-cond_false: ; preds = %bb30
- br label %bb38
-
-cond_next: ; No predecessors!
- br label %bb38
-
-bb38: ; preds = %cond_next, %cond_false
- br label %bb148
-
-bb40: ; preds = %cond_true156
- br label %bb139
-
-bb41: ; preds = %cond_true142
- call fastcc void @_Zjrf7( )
- br label %bb105
-
-bb44: ; preds = %cond_true112
- br label %bb74
-
-bb66: ; preds = %cond_true80
- br label %bb74
-
-bb74: ; preds = %bb66, %bb44
- br i1 false, label %cond_true80, label %cond_false81
-
-cond_true80: ; preds = %bb74
- br label %bb66
-
-cond_false81: ; preds = %bb74
- br label %bb83
-
-cond_next82: ; No predecessors!
- br label %bb83
-
-bb83: ; preds = %cond_next82, %cond_false81
- br label %cleanup97
-
-cleanup97: ; preds = %bb83
- br label %finally96
-
-finally96: ; preds = %cleanup97
- br label %cleanup99
-
-cleanup99: ; preds = %finally96
- br label %finally98
-
-finally98: ; preds = %cleanup99
- br label %bb105
-
-bb105: ; preds = %finally98, %bb41
- br i1 false, label %cond_true112, label %cond_false113
-
-cond_true112: ; preds = %bb105
- br label %bb44
-
-cond_false113: ; preds = %bb105
- br label %bb115
-
-cond_next114: ; No predecessors!
- br label %bb115
-
-bb115: ; preds = %cond_next114, %cond_false113
- br i1 false, label %cond_true119, label %cond_false123
-
-cond_true119: ; preds = %bb115
- call fastcc void @_Zjrf8( )
- br label %cond_next124
-
-cond_false123: ; preds = %bb115
- br label %cond_next124
-
-cond_next124: ; preds = %cond_false123, %cond_true119
- br i1 false, label %cond_true131, label %cond_false132
-
-cond_true131: ; preds = %cond_next124
- br label %cleanup135
-
-cond_false132: ; preds = %cond_next124
- br label %cond_next133
-
-cond_next133: ; preds = %cond_false132
- br label %cleanup136
-
-cleanup135: ; preds = %cond_true131
- br label %done
-
-cleanup136: ; preds = %cond_next133
- br label %finally134
-
-finally134: ; preds = %cleanup136
- br label %bb139
-
-bb139: ; preds = %finally134, %bb40
- br i1 false, label %cond_true142, label %cond_false143
-
-cond_true142: ; preds = %bb139
- br label %bb41
-
-cond_false143: ; preds = %bb139
- br label %bb145
-
-cond_next144: ; No predecessors!
- br label %bb145
-
-bb145: ; preds = %cond_next144, %cond_false143
- br label %bb148
-
-bb148: ; preds = %bb145, %bb38
- br i1 false, label %cond_true156, label %cond_false157
-
-cond_true156: ; preds = %bb148
- br label %bb40
-
-cond_false157: ; preds = %bb148
- br label %bb159
-
-cond_next158: ; No predecessors!
- br label %bb159
-
-bb159: ; preds = %cond_next158, %cond_false157
- br label %done
-
-done: ; preds = %bb159, %cleanup135
- br label %bb214
-
-bb185: ; preds = %cond_true218
- br i1 false, label %cond_true193, label %cond_false206
-
-cond_true193: ; preds = %bb185
- br label %cond_next211
-
-cond_false206: ; preds = %bb185
- br label %cond_next211
-
-cond_next211: ; preds = %cond_false206, %cond_true193
- br label %bb214
-
-bb214: ; preds = %cond_next211, %done
- br i1 false, label %cond_true218, label %cond_false219
-
-cond_true218: ; preds = %bb214
- br label %bb185
-
-cond_false219: ; preds = %bb214
- br label %bb221
-
-cond_next220: ; No predecessors!
- br label %bb221
-
-bb221: ; preds = %cond_next220, %cond_false219
- br i1 false, label %cond_true236, label %cond_false245
-
-cond_true236: ; preds = %bb221
- br label %cond_next249
-
-cond_false245: ; preds = %bb221
- br label %cond_next249
-
-cond_next249: ; preds = %cond_false245, %cond_true236
- br i1 false, label %cond_true272, label %cond_false277
-
-cond_true272: ; preds = %cond_next249
- br label %cond_next278
-
-cond_false277: ; preds = %cond_next249
- br label %cond_next278
-
-cond_next278: ; preds = %cond_false277, %cond_true272
- br label %cleanup285
-
-cleanup285: ; preds = %cond_next278
- br label %finally284
-
-finally284: ; preds = %cleanup285
- br label %cond_next287
-
-cond_false286: ; preds = %finally10
- br label %cond_next287
-
-cond_next287: ; preds = %cond_false286, %finally284
- br i1 false, label %cond_true317, label %cond_false319
-
-cond_true317: ; preds = %cond_next287
- br label %cond_next321
-
-cond_false319: ; preds = %cond_next287
- br label %cond_next321
-
-cond_next321: ; preds = %cond_false319, %cond_true317
- br label %bb348
-
-bb335: ; preds = %cond_true355
- br label %bb348
-
-bb348: ; preds = %bb335, %cond_next321
- br i1 false, label %cond_true355, label %cond_false356
-
-cond_true355: ; preds = %bb348
- br label %bb335
-
-cond_false356: ; preds = %bb348
- br label %bb358
-
-cond_next357: ; No predecessors!
- br label %bb358
-
-bb358: ; preds = %cond_next357, %cond_false356
- br i1 false, label %cond_true363, label %cond_false364
-
-cond_true363: ; preds = %bb358
- br label %bb388
-
-cond_false364: ; preds = %bb358
- br label %cond_next365
-
-cond_next365: ; preds = %cond_false364
- br i1 false, label %cond_true370, label %cond_false371
-
-cond_true370: ; preds = %cond_next365
- br label %bb388
-
-cond_false371: ; preds = %cond_next365
- br label %cond_next372
-
-cond_next372: ; preds = %cond_false371
- br i1 false, label %cond_true385, label %cond_false386
-
-cond_true385: ; preds = %cond_next372
- br label %bb388
-
-cond_false386: ; preds = %cond_next372
- br label %cond_next387
-
-cond_next387: ; preds = %cond_false386
- br label %bb389
-
-bb388: ; preds = %cond_true385, %cond_true370, %cond_true363
- br label %bb389
-
-bb389: ; preds = %bb388, %cond_next387
- br i1 false, label %cond_true392, label %cond_false443
-
-cond_true392: ; preds = %bb389
- br label %bb419
-
-bb402: ; preds = %cond_true425
- br i1 false, label %cond_true406, label %cond_false412
-
-cond_true406: ; preds = %bb402
- br label %cond_next416
-
-cond_false412: ; preds = %bb402
- br label %cond_next416
-
-cond_next416: ; preds = %cond_false412, %cond_true406
- br label %bb419
-
-bb419: ; preds = %cond_next416, %cond_true392
- br i1 false, label %cond_true425, label %cond_false426
-
-cond_true425: ; preds = %bb419
- br label %bb402
-
-cond_false426: ; preds = %bb419
- br label %bb428
-
-cond_next427: ; No predecessors!
- br label %bb428
-
-bb428: ; preds = %cond_next427, %cond_false426
- br label %cond_next478
-
-cond_false443: ; preds = %bb389
- br label %bb460
-
-bb450: ; preds = %cond_true466
- br label %bb460
-
-bb460: ; preds = %bb450, %cond_false443
- br i1 false, label %cond_true466, label %cond_false467
-
-cond_true466: ; preds = %bb460
- br label %bb450
-
-cond_false467: ; preds = %bb460
- br label %bb469
-
-cond_next468: ; No predecessors!
- br label %bb469
-
-bb469: ; preds = %cond_next468, %cond_false467
- br label %cond_next478
-
-cond_next478: ; preds = %bb469, %bb428
- br label %cleanup485
-
-cleanup485: ; preds = %cond_next478
- br label %finally484
-
-finally484: ; preds = %cleanup485
- br label %cleanup487
-
-cleanup487: ; preds = %finally484
- br label %finally486
-
-finally486: ; preds = %cleanup487
- br label %cleanup489
-
-cleanup489: ; preds = %finally486
- br label %finally488
-
-finally488: ; preds = %cleanup489
- br label %bb492
-
-bb492: ; preds = %finally488, %entry
- br i1 false, label %cond_true499, label %cond_false500
-
-cond_true499: ; preds = %bb492
- br label %bb
-
-cond_false500: ; preds = %bb492
- br label %bb502
-
-cond_next501: ; No predecessors!
- br label %bb502
-
-bb502: ; preds = %cond_next501, %cond_false500
- br label %return
-
-return: ; preds = %bb502
- ret void
-}
-
-define internal fastcc void @_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEEEvT_S7_() {
-entry:
- br label %bb12
-
-bb: ; preds = %cond_true
- br label %cleanup
-
-cleanup: ; preds = %bb
- br label %finally
-
-finally: ; preds = %cleanup
- br label %bb12
-
-bb12: ; preds = %finally, %entry
- br i1 false, label %cond_true, label %cond_false
-
-cond_true: ; preds = %bb12
- br label %bb
-
-cond_false: ; preds = %bb12
- br label %bb14
-
-cond_next: ; No predecessors!
- br label %bb14
-
-bb14: ; preds = %cond_next, %cond_false
- br label %return
-
-return: ; preds = %bb14
- ret void
-}
diff --git a/llvm/test/Transforms/Inline/2006-11-09-InlineCGUpdate-2.ll b/llvm/test/Transforms/Inline/2006-11-09-InlineCGUpdate-2.ll
deleted file mode 100644
index c1e7c2ee3bf62..0000000000000
--- a/llvm/test/Transforms/Inline/2006-11-09-InlineCGUpdate-2.ll
+++ /dev/null
@@ -1,252 +0,0 @@
-; RUN: opt < %s -inline -prune-eh -disable-output -enable-new-pm=0
-; PR993
-target datalayout = "e-p:32:32"
-target triple = "i386-unknown-openbsd3.9"
- %"struct.__gnu_cxx::__normal_iterator<char*,std::basic_string<char, std::char_traits<char>, std::allocator<char> > >" = type { i8* }
- %"struct.__gnu_cxx::char_producer<char>" = type { i32 (...)** }
- %struct.__sFILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, i8*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
- %struct.__sbuf = type { i8*, i32 }
- %"struct.std::__basic_file<char>" = type { %struct.__sFILE*, i1 }
- %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>" = type { %"struct.std::locale::facet" }
- %"struct.std::bad_alloc" = type { %"struct.__gnu_cxx::char_producer<char>" }
- %"struct.std::basic_filebuf<char,std::char_traits<char> >" = type { %"struct.std::basic_streambuf<char,std::char_traits<char> >", i32, %"struct.std::__basic_file<char>", i32, %union.__mbstate_t, %union.__mbstate_t, i8*, i32, i1, i1, i1, i1, i8, i8*, i8*, i1, %"struct.std::codecvt<char,char,__mbstate_t>"*, i8*, i32, i8*, i8* }
- %"struct.std::basic_ios<char,std::char_traits<char> >" = type { %"struct.std::ios_base", %"struct.std::basic_ostream<char,std::char_traits<char> >"*, i8, i1, %"struct.std::basic_streambuf<char,std::char_traits<char> >"*, %"struct.std::ctype<char>"*, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"*, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"* }
- %"struct.std::basic_iostream<char,std::char_traits<char> >" = type { %"struct.std::locale::facet", %"struct.__gnu_cxx::char_producer<char>", %"struct.std::basic_ios<char,std::char_traits<char> >" }
- %"struct.std::basic_ofstream<char,std::char_traits<char> >" = type { %"struct.__gnu_cxx::char_producer<char>", %"struct.std::basic_filebuf<char,std::char_traits<char> >", %"struct.std::basic_ios<char,std::char_traits<char> >" }
- %"struct.std::basic_ostream<char,std::char_traits<char> >" = type { i32 (...)**, %"struct.std::basic_ios<char,std::char_traits<char> >" }
- %"struct.std::basic_streambuf<char,std::char_traits<char> >" = type { i32 (...)**, i8*, i8*, i8*, i8*, i8*, i8*, %"struct.std::locale" }
- %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >" = type { %"struct.__gnu_cxx::__normal_iterator<char*,std::basic_string<char, std::char_traits<char>, std::allocator<char> > >" }
- %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep" = type { %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep_base" }
- %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep_base" = type { i32, i32, i32 }
- %"struct.std::codecvt<char,char,__mbstate_t>" = type { %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>", i32* }
- %"struct.std::ctype<char>" = type { %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>", i32*, i1, i32*, i32*, i32* }
- %"struct.std::domain_error" = type { %"struct.std::logic_error" }
- %"struct.std::ios_base" = type { i32 (...)**, i32, i32, i32, i32, i32, %"struct.std::ios_base::_Callback_list"*, %struct.__sbuf, [8 x %struct.__sbuf], i32, %struct.__sbuf*, %"struct.std::locale" }
- %"struct.std::ios_base::_Callback_list" = type { %"struct.std::ios_base::_Callback_list"*, void (i32, %"struct.std::ios_base"*, i32)*, i32, i32 }
- %"struct.std::ios_base::_Words" = type { i8*, i32 }
- %"struct.std::locale" = type { %"struct.std::locale::_Impl"* }
- %"struct.std::locale::_Impl" = type { i32, %"struct.std::locale::facet"**, i32, %"struct.std::locale::facet"**, i8** }
- %"struct.std::locale::facet" = type { i32 (...)**, i32 }
- %"struct.std::logic_error" = type { %"struct.__gnu_cxx::char_producer<char>", %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >" }
- %union.__mbstate_t = type { i64, [120 x i8] }
- at .str_1 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
- at .str_9 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-
-define void @main() {
-entry:
- call fastcc void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode( )
- ret void
-}
-
-define fastcc void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode() {
-entry:
- %tmp.6 = icmp eq %"struct.std::basic_filebuf<char,std::char_traits<char> >"* null, null ; <i1> [#uses=1]
- br i1 %tmp.6, label %then, label %UnifiedReturnBlock
-
-then: ; preds = %entry
- tail call fastcc void @_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate( )
- ret void
-
-UnifiedReturnBlock: ; preds = %entry
- ret void
-}
-
-define fastcc void @_ZN10__cxxabiv111__terminateEPFvvE() {
-entry:
- unreachable
-}
-
-define void @_ZNSdD0Ev() {
-entry:
- unreachable
-}
-
-define void @_ZThn8_NSdD1Ev() {
-entry:
- ret void
-}
-
-define void @_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev() {
-entry:
- ret void
-}
-
-define void @_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi() {
-entry:
- unreachable
-}
-
-define fastcc void @_ZNSoD2Ev() {
-entry:
- unreachable
-}
-
-define fastcc void @_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev() {
-entry:
- unreachable
-}
-
-define fastcc void @_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate() {
-entry:
- tail call fastcc void @_ZSt19__throw_ios_failurePKc( )
- ret void
-}
-
-declare fastcc void @_ZNSaIcED1Ev()
-
-define fastcc void @_ZNSsC1EPKcRKSaIcE() {
-entry:
- tail call fastcc void @_ZNSs16_S_construct_auxIPKcEEPcT_S3_RKSaIcE12__false_type( )
- unreachable
-}
-
-define fastcc void @_ZSt14__convert_to_vIyEvPKcRT_RSt12_Ios_IostateRKPii() {
-entry:
- ret void
-}
-
-define fastcc void @_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej() {
-entry:
- ret void
-}
-
-define fastcc void @_ZSt19__throw_ios_failurePKc() {
-entry:
- call fastcc void @_ZNSsC1EPKcRKSaIcE( )
- unreachable
-}
-
-define void @_GLOBAL__D__ZSt23lexicographical_compareIPKaS1_EbT_S2_T0_S3_() {
-entry:
- ret void
-}
-
-define void @_ZNSt9bad_allocD1Ev() {
-entry:
- unreachable
-}
-
-define fastcc void @_ZSt19__throw_logic_errorPKc() personality i32 (...)* @__gxx_personality_v0 {
-entry:
- invoke fastcc void @_ZNSt11logic_errorC1ERKSs( )
- to label %try_exit.0 unwind label %try_catch.0
-
-try_catch.0: ; preds = %entry
- %exn = landingpad {i8*, i32}
- catch i8* null
- resume { i8*, i32 } %exn
-
-try_exit.0: ; preds = %entry
- unreachable
-}
-
-define fastcc void @_ZNSt11logic_errorC1ERKSs() {
-entry:
- call fastcc void @_ZNSsC1ERKSs( )
- ret void
-}
-
-define void @_ZNSt12domain_errorD1Ev() {
-entry:
- unreachable
-}
-
-define fastcc void @_ZSt20__throw_length_errorPKc() {
-entry:
- call fastcc void @_ZNSt12length_errorC1ERKSs( )
- unreachable
-}
-
-define fastcc void @_ZNSt12length_errorC1ERKSs() personality i32 (...)* @__gxx_personality_v0 {
-entry:
- invoke fastcc void @_ZNSsC1ERKSs( )
- to label %_ZNSt11logic_errorC2ERKSs.exit unwind label %invoke_catch.i
-
-invoke_catch.i: ; preds = %entry
- %exn = landingpad {i8*, i32}
- catch i8* null
- resume { i8*, i32 } %exn
-
-_ZNSt11logic_errorC2ERKSs.exit: ; preds = %entry
- ret void
-}
-
-define fastcc void @_ZNSs4_Rep9_S_createEjRKSaIcE() {
-entry:
- call fastcc void @_ZSt20__throw_length_errorPKc( )
- unreachable
-}
-
-define fastcc void @_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag() {
-entry:
- unreachable
-}
-
-define fastcc void @_ZNSs16_S_construct_auxIPKcEEPcT_S3_RKSaIcE12__false_type() {
-entry:
- br i1 false, label %then.1.i, label %endif.1.i
-
-then.1.i: ; preds = %entry
- call fastcc void @_ZSt19__throw_logic_errorPKc( )
- br label %endif.1.i
-
-endif.1.i: ; preds = %then.1.i, %entry
- call fastcc void @_ZNSs4_Rep9_S_createEjRKSaIcE( )
- unreachable
-}
-
-define fastcc void @_ZNSsC1ERKSs() personality i32 (...)* @__gxx_personality_v0 {
-entry:
- call fastcc void @_ZNSs4_Rep7_M_grabERKSaIcES2_( )
- invoke fastcc void @_ZNSaIcEC1ERKS_( )
- to label %invoke_cont.1 unwind label %invoke_catch.1
-
-invoke_catch.1: ; preds = %entry
- %exn = landingpad {i8*, i32}
- catch i8* null
- call fastcc void @_ZNSaIcED1Ev( )
- resume { i8*, i32 } %exn
-
-invoke_cont.1: ; preds = %entry
- call fastcc void @_ZNSaIcEC2ERKS_( )
- ret void
-}
-
-define fastcc void @_ZNSaIcEC1ERKS_() {
-entry:
- ret void
-}
-
-define fastcc void @_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc() {
-entry:
- ret void
-}
-
-define fastcc void @_ZNSs4_Rep7_M_grabERKSaIcES2_() {
-entry:
- br i1 false, label %else.i, label %cond_true
-
-cond_true: ; preds = %entry
- ret void
-
-else.i: ; preds = %entry
- tail call fastcc void @_ZNSs4_Rep9_S_createEjRKSaIcE( )
- unreachable
-}
-
-define fastcc void @_ZNSaIcEC2ERKS_() {
-entry:
- ret void
-}
-
-define fastcc void @_ZN9__gnu_cxx12__pool_allocILb1ELi0EE8allocateEj() {
-entry:
- ret void
-}
-
-define fastcc void @_ZN9__gnu_cxx12__pool_allocILb1ELi0EE9_S_refillEj() {
-entry:
- unreachable
-}
-
-declare i32 @__gxx_personality_v0(...)
diff --git a/llvm/test/Transforms/Inline/2006-11-09-InlineCGUpdate.ll b/llvm/test/Transforms/Inline/2006-11-09-InlineCGUpdate.ll
deleted file mode 100644
index e4323194f6230..0000000000000
--- a/llvm/test/Transforms/Inline/2006-11-09-InlineCGUpdate.ll
+++ /dev/null
@@ -1,343 +0,0 @@
-; RUN: opt < %s -inline -prune-eh -disable-output -enable-new-pm=0
-; PR992
-target datalayout = "e-p:32:32"
-target triple = "i686-pc-linux-gnu"
- %struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i32, [52 x i8] }
- %struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 }
- %"struct.__cxxabiv1::__array_type_info" = type { %"struct.std::type_info" }
- %"struct.__cxxabiv1::__si_class_type_info" = type { %"struct.__cxxabiv1::__array_type_info", %"struct.__cxxabiv1::__array_type_info"* }
- %"struct.__gnu_cxx::_Rope_rep_alloc_base<char,std::allocator<char>, true>" = type { i32 }
- %"struct.__gnu_cxx::__normal_iterator<char*,std::basic_string<char, std::char_traits<char>, std::allocator<char> > >" = type { i8* }
- %"struct.__gnu_cxx::__normal_iterator<const wchar_t*,std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >" = type { i32* }
- %"struct.__gnu_cxx::char_producer<char>" = type { i32 (...)** }
- %"struct.__gnu_cxx::stdio_sync_filebuf<char,std::char_traits<char> >" = type { %"struct.std::basic_streambuf<char,std::char_traits<char> >", %struct._IO_FILE*, i32 }
- %"struct.__gnu_cxx::stdio_sync_filebuf<wchar_t,std::char_traits<wchar_t> >" = type { %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >", %struct._IO_FILE*, i32 }
- %struct.__locale_struct = type { [13 x %struct.locale_data*], i16*, i32*, i32*, [13 x i8*] }
- %struct.__mbstate_t = type { i32, %"struct.__gnu_cxx::_Rope_rep_alloc_base<char,std::allocator<char>, true>" }
- %struct.locale_data = type opaque
- %"struct.std::__basic_file<char>" = type { %struct._IO_FILE*, i1 }
- %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>" = type { %"struct.std::locale::facet" }
- %"struct.std::basic_filebuf<char,std::char_traits<char> >" = type { %"struct.std::basic_streambuf<char,std::char_traits<char> >", i32, %"struct.std::__basic_file<char>", i32, %struct.__mbstate_t, %struct.__mbstate_t, i8*, i32, i1, i1, i1, i1, i8, i8*, i8*, i1, %"struct.std::codecvt<char,char,__mbstate_t>"*, i8*, i32, i8*, i8* }
- %"struct.std::basic_filebuf<wchar_t,std::char_traits<wchar_t> >" = type { %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >", i32, %"struct.std::__basic_file<char>", i32, %struct.__mbstate_t, %struct.__mbstate_t, i32*, i32, i1, i1, i1, i1, i32, i32*, i32*, i1, %"struct.std::codecvt<char,char,__mbstate_t>"*, i8*, i32, i8*, i8* }
- %"struct.std::basic_fstream<char,std::char_traits<char> >" = type { { %"struct.std::locale::facet", %"struct.__gnu_cxx::char_producer<char>" }, %"struct.std::basic_filebuf<char,std::char_traits<char> >", %"struct.std::basic_ios<char,std::char_traits<char> >" }
- %"struct.std::basic_fstream<wchar_t,std::char_traits<wchar_t> >" = type { { %"struct.std::locale::facet", %"struct.__gnu_cxx::char_producer<char>" }, %"struct.std::basic_filebuf<wchar_t,std::char_traits<wchar_t> >", %"struct.std::basic_ios<wchar_t,std::char_traits<wchar_t> >" }
- %"struct.std::basic_ios<char,std::char_traits<char> >" = type { %"struct.std::ios_base", %"struct.std::basic_ostream<char,std::char_traits<char> >"*, i8, i1, %"struct.std::basic_streambuf<char,std::char_traits<char> >"*, %"struct.std::ctype<char>"*, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"*, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"* }
- %"struct.std::basic_ios<wchar_t,std::char_traits<wchar_t> >" = type { %"struct.std::ios_base", %"struct.std::basic_ostream<wchar_t,std::char_traits<wchar_t> >"*, i32, i1, %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >"*, %"struct.std::codecvt<char,char,__mbstate_t>"*, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"*, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"* }
- %"struct.std::basic_iostream<wchar_t,std::char_traits<wchar_t> >" = type { %"struct.std::locale::facet", %"struct.__gnu_cxx::char_producer<char>", %"struct.std::basic_ios<wchar_t,std::char_traits<wchar_t> >" }
- %"struct.std::basic_ostream<char,std::char_traits<char> >" = type { i32 (...)**, %"struct.std::basic_ios<char,std::char_traits<char> >" }
- %"struct.std::basic_ostream<wchar_t,std::char_traits<wchar_t> >" = type { i32 (...)**, %"struct.std::basic_ios<wchar_t,std::char_traits<wchar_t> >" }
- %"struct.std::basic_streambuf<char,std::char_traits<char> >" = type { i32 (...)**, i8*, i8*, i8*, i8*, i8*, i8*, %"struct.std::locale" }
- %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >" = type { i32 (...)**, i32*, i32*, i32*, i32*, i32*, i32*, %"struct.std::locale" }
- %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >" = type { %"struct.__gnu_cxx::__normal_iterator<char*,std::basic_string<char, std::char_traits<char>, std::allocator<char> > >" }
- %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep" = type { %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep_base" }
- %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep_base" = type { i32, i32, i32 }
- %"struct.std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >" = type { %"struct.__gnu_cxx::__normal_iterator<const wchar_t*,std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >" }
- %"struct.std::codecvt<char,char,__mbstate_t>" = type { %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>", %struct.__locale_struct* }
- %"struct.std::collate<char>" = type { %"struct.std::locale::facet", %struct.__locale_struct* }
- %"struct.std::collate_byname<char>" = type { %"struct.std::collate<char>" }
- %"struct.std::ctype<char>" = type { %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>", %struct.__locale_struct*, i1, i32*, i32*, i16* }
- %"struct.std::ctype_byname<char>" = type { %"struct.std::ctype<char>" }
- %"struct.std::domain_error" = type { %"struct.std::logic_error" }
- %"struct.std::ios_base" = type { i32 (...)**, i32, i32, i32, i32, i32, %"struct.std::ios_base::_Callback_list"*, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, %"struct.std::ios_base::_Words"*, %"struct.std::locale" }
- %"struct.std::ios_base::_Callback_list" = type { %"struct.std::ios_base::_Callback_list"*, void (i32, %"struct.std::ios_base"*, i32)*, i32, i32 }
- %"struct.std::ios_base::_Words" = type { i8*, i32 }
- %"struct.std::istreambuf_iterator<char,std::char_traits<char> >" = type { %"struct.std::basic_streambuf<char,std::char_traits<char> >"*, i32 }
- %"struct.std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t> >" = type { %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >"*, i32 }
- %"struct.std::locale" = type { %"struct.std::locale::_Impl"* }
- %"struct.std::locale::_Impl" = type { i32, %"struct.std::locale::facet"**, i32, %"struct.std::locale::facet"**, i8** }
- %"struct.std::locale::facet" = type { i32 (...)**, i32 }
- %"struct.std::logic_error" = type { %"struct.__gnu_cxx::char_producer<char>", %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >" }
- %"struct.std::type_info" = type { i32 (...)**, i8* }
- at .str_11 = external global [42 x i8] ; <[42 x i8]*> [#uses=0]
- at .str_9 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
- at .str_1 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-
-define void @main() {
-entry:
- tail call fastcc void @_ZNSolsEi( )
- ret void
-}
-
-define fastcc void @_ZNSolsEi() {
-entry:
- %tmp.22 = icmp eq i32 0, 0 ; <i1> [#uses=1]
- br i1 %tmp.22, label %else, label %then
-
-then: ; preds = %entry
- ret void
-
-else: ; preds = %entry
- tail call fastcc void @_ZNSolsEl( )
- ret void
-}
-
-define void @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_() {
-entry:
- ret void
-}
-
-define fastcc void @_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate() {
-entry:
- tail call fastcc void @_ZSt19__throw_ios_failurePKc( )
- ret void
-}
-
-define fastcc void @_ZNSo3putEc() {
-entry:
- ret void
-}
-
-define fastcc void @_ZNSolsEl() {
-entry:
- %tmp.21.i = icmp eq %"struct.std::basic_ostream<char,std::char_traits<char> >"* null, null ; <i1> [#uses=1]
- br i1 %tmp.21.i, label %endif.0.i, label %shortcirc_next.i
-
-shortcirc_next.i: ; preds = %entry
- ret void
-
-endif.0.i: ; preds = %entry
- call fastcc void @_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate( )
- ret void
-}
-
-define fastcc void @_ZSt19__throw_ios_failurePKc() {
-entry:
- call fastcc void @_ZNSsC1EPKcRKSaIcE( )
- ret void
-}
-
-define fastcc void @_ZNSt8ios_baseD2Ev() {
-entry:
- unreachable
-}
-
-define void @_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv() {
-entry:
- unreachable
-}
-
-define void @_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev() {
-entry:
- unreachable
-}
-
-define void @_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci() {
-entry:
- ret void
-}
-
-define fastcc void @_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale() {
-entry:
- ret void
-}
-
-declare fastcc void @_ZNSaIcED1Ev()
-
-define fastcc void @_ZSt19__throw_logic_errorPKc() {
-entry:
- call fastcc void @_ZNSt11logic_errorC1ERKSs( )
- ret void
-}
-
-define fastcc void @_ZNSs4_Rep9_S_createEjRKSaIcE() {
-entry:
- br i1 false, label %then.0, label %endif.0
-
-then.0: ; preds = %entry
- call fastcc void @_ZSt20__throw_length_errorPKc( )
- ret void
-
-endif.0: ; preds = %entry
- ret void
-}
-
-define fastcc void @_ZSt20__throw_length_errorPKc() {
-entry:
- call fastcc void @_ZNSt12length_errorC1ERKSs( )
- ret void
-}
-
-define fastcc void @_ZNSs16_S_construct_auxIPKcEEPcT_S3_RKSaIcE12__false_type() {
-entry:
- br i1 false, label %then.1.i, label %endif.1.i
-
-then.1.i: ; preds = %entry
- call fastcc void @_ZSt19__throw_logic_errorPKc( )
- ret void
-
-endif.1.i: ; preds = %entry
- call fastcc void @_ZNSs4_Rep9_S_createEjRKSaIcE( )
- unreachable
-}
-
-define fastcc void @_ZNSsC1ERKSs() personality i32 (...)* @__gxx_personality_v0 {
-entry:
- call fastcc void @_ZNSs4_Rep7_M_grabERKSaIcES2_( )
- invoke fastcc void @_ZNSaIcEC1ERKS_( )
- to label %invoke_cont.1 unwind label %invoke_catch.1
-
-invoke_catch.1: ; preds = %entry
- %exn = landingpad {i8*, i32}
- catch i8* null
- call fastcc void @_ZNSaIcED1Ev( )
- resume { i8*, i32 } %exn
-
-invoke_cont.1: ; preds = %entry
- call fastcc void @_ZNSaIcEC2ERKS_( )
- ret void
-}
-
-define fastcc void @_ZNSs7reserveEj() {
-entry:
- ret void
-}
-
-define fastcc void @_ZNSaIcEC1ERKS_() {
-entry:
- ret void
-}
-
-define fastcc void @_ZNSs4_Rep7_M_grabERKSaIcES2_() {
-entry:
- br i1 false, label %else.i, label %cond_true
-
-cond_true: ; preds = %entry
- ret void
-
-else.i: ; preds = %entry
- tail call fastcc void @_ZNSs4_Rep9_S_createEjRKSaIcE( )
- ret void
-}
-
-define fastcc void @_ZNSsC1EPKcRKSaIcE() {
-entry:
- tail call fastcc void @_ZNSs16_S_construct_auxIPKcEEPcT_S3_RKSaIcE12__false_type( )
- unreachable
-}
-
-define fastcc void @_ZNSaIcEC2ERKS_() {
-entry:
- ret void
-}
-
-define void @_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev() {
-entry:
- unreachable
-}
-
-define void @_ZNSt14collate_bynameIcED1Ev() {
-entry:
- unreachable
-}
-
-define void @_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy() {
-entry:
- ret void
-}
-
-define void @_ZNSt23__codecvt_abstract_baseIcc11__mbstate_tED1Ev() {
-entry:
- unreachable
-}
-
-define void @_ZNSt12ctype_bynameIcED0Ev() {
-entry:
- unreachable
-}
-
-define fastcc void @_ZNSt8messagesIwEC1Ej() {
-entry:
- ret void
-}
-
-define fastcc void @_ZSt14__convert_to_vIlEvPKcRT_RSt12_Ios_IostateRKP15__locale_structi() {
-entry:
- ret void
-}
-
-define fastcc void @_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej() {
-entry:
- ret void
-}
-
-define fastcc void @_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej() {
-entry:
- ret void
-}
-
-define fastcc void @_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs() {
-entry:
- unreachable
-}
-
-define fastcc void @_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_() {
-entry:
- ret void
-}
-
-define void @_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev() {
-entry:
- unreachable
-}
-
-define void @_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv() {
-entry:
- ret void
-}
-
-define void @_ZNSt9exceptionD0Ev() {
-entry:
- unreachable
-}
-
-define fastcc void @_ZNSt11logic_errorC1ERKSs() {
-entry:
- call fastcc void @_ZNSsC1ERKSs( )
- ret void
-}
-
-define fastcc void @_ZNSt11logic_errorD2Ev() {
-entry:
- unreachable
-}
-
-define fastcc void @_ZNSt12length_errorC1ERKSs() personality i32 (...)* @__gxx_personality_v0 {
-entry:
- invoke fastcc void @_ZNSsC1ERKSs( )
- to label %_ZNSt11logic_errorC2ERKSs.exit unwind label %invoke_catch.i
-
-invoke_catch.i: ; preds = %entry
- %exn = landingpad {i8*, i32}
- catch i8* null
- resume { i8*, i32 } %exn
-
-_ZNSt11logic_errorC2ERKSs.exit: ; preds = %entry
- ret void
-}
-
-define void @_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_() {
-entry:
- ret void
-}
-
-define fastcc void @_ZNSbIwSt11char_traitsIwESaIwEE16_S_construct_auxIPKwEEPwT_S7_RKS1_12__false_type() {
-entry:
- ret void
-}
-
-define void @_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev() {
-entry:
- ret void
-}
-
-define void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev() {
-entry:
- unreachable
-}
-
-define fastcc void @_ZNSt5ctypeIcEC1EPKtbj() {
-entry:
- ret void
-}
-
-declare i32 @__gxx_personality_v0(...)
diff --git a/llvm/test/Transforms/JumpThreading/pr26096.ll b/llvm/test/Transforms/JumpThreading/pr26096.ll
deleted file mode 100644
index e410bb4dd0899..0000000000000
--- a/llvm/test/Transforms/JumpThreading/pr26096.ll
+++ /dev/null
@@ -1,73 +0,0 @@
-; RUN: opt -prune-eh -inline -jump-threading -S -enable-new-pm=0 < %s | FileCheck %s
-
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-linux-gnu"
-
- at d = external global i32*, align 8
-
-define void @fn3(i1 %B) {
-entry:
- br i1 %B, label %if.end, label %if.then
-
-if.then: ; preds = %entry
- call void @fn2(i1 %B)
- ret void
-
-if.end: ; preds = %entry
- call void @fn2(i1 %B)
- ret void
-}
-
-define internal void @fn2(i1 %B) unnamed_addr {
-entry:
- call void @fn1()
- call void @fn1()
- call void @fn1()
- br i1 %B, label %if.end, label %if.then
-if.then:
- unreachable
-
-if.end:
- unreachable
-}
-
-; CHECK-LABEL: define internal void @fn2(
-; CHECK: %[[LOAD:.*]] = load i32*, i32** @d, align 8
-; CHECK: %tobool1.i = icmp eq i32* %[[LOAD]], null
-
-define internal void @fn1() unnamed_addr {
-entry:
- br label %for.body
-
-for.body: ; preds = %entry
- %0 = load i32*, i32** @d, align 8
- %tobool1 = icmp eq i32* %0, null
- br i1 %tobool1, label %cond.false, label %cond.end
-
-cond.false: ; preds = %for.body
- call void @__assert_fail(i8* null)
- unreachable
-
-cond.end: ; preds = %for.body
- %1 = load i32*, i32** @d, align 8
- %cmp = icmp eq i32* %1, null
- br i1 %cmp, label %cond.end4, label %cond.false3
-
-cond.false3: ; preds = %cond.end
- call void @__assert_fail(i8* null)
- unreachable
-
-cond.end4: ; preds = %cond.end
- call void @__assert_fail(i8* null)
- unreachable
-
-for.end: ; No predecessors!
- ret void
-}
-
-declare void @__assert_fail(i8*)
-
-; Function Attrs: noreturn nounwind
-declare void @llvm.trap() #0
-
-attributes #0 = { noreturn nounwind }
diff --git a/llvm/test/Transforms/PruneEH/2008-06-02-Weak.ll b/llvm/test/Transforms/PruneEH/2008-06-02-Weak.ll
deleted file mode 100644
index 0e89ad65e4c83..0000000000000
--- a/llvm/test/Transforms/PruneEH/2008-06-02-Weak.ll
+++ /dev/null
@@ -1,20 +0,0 @@
-; RUN: opt < %s -prune-eh -enable-new-pm=0 -S | FileCheck %s
-; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | FileCheck %s
-
-; We should not infer 'nounwind' for/from a weak function,
-; since it can be overriden by throwing implementation.
-;
-; CHECK-LABEL: define weak void @f()
-define weak void @f() {
-entry:
- ret void
-}
-
-; CHECK-LABEL: define void @g()
-define void @g() {
-entry:
- call void @f()
- ret void
-}
-
-; CHECK-NOT: {{^}}attributes #{{[0-9].*}} nounwind
diff --git a/llvm/test/Transforms/PruneEH/ipo-nounwind.ll b/llvm/test/Transforms/PruneEH/ipo-nounwind.ll
deleted file mode 100644
index 12b52bcf26340..0000000000000
--- a/llvm/test/Transforms/PruneEH/ipo-nounwind.ll
+++ /dev/null
@@ -1,67 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -S -prune-eh -enable-new-pm=0 < %s | FileCheck --check-prefixes=ALL,OLDPM %s
-; RUN: opt -S -passes='function-attrs,function(simplifycfg)' < %s | FileCheck --check-prefixes=ALL,NEWPM %s
-
-declare void @may_throw()
-
-; @callee below may be an optimized form of this function, which can
-; throw at runtime (see r265762 for more details):
-;
-; define linkonce_odr void @callee(i32* %ptr) noinline {
-; entry:
-; %val0 = load atomic i32, i32* %ptr unordered, align 4
-; %val1 = load atomic i32, i32* %ptr unordered, align 4
-; %cmp = icmp eq i32 %val0, %val1
-; br i1 %cmp, label %left, label %right
-
-; left:
-; ret void
-
-; right:
-; call void @may_throw()
-; ret void
-; }
-
-define linkonce_odr void @callee(i32* %ptr) noinline {
-; ALL-LABEL: @callee(
-; ALL-NEXT: ret void
-;
- ret void
-}
-
-define i32 @caller(i32* %ptr) personality i32 3 {
-; OLDPM-LABEL: @caller(
-; OLDPM-NEXT: entry:
-; OLDPM-NEXT: invoke void @callee(i32* [[PTR:%.*]])
-; OLDPM-NEXT: to label [[NORMAL:%.*]] unwind label [[UNWIND:%.*]]
-; OLDPM: normal:
-; OLDPM-NEXT: ret i32 1
-; OLDPM: unwind:
-; OLDPM-NEXT: [[RES:%.*]] = landingpad { i8*, i32 }
-; OLDPM-NEXT: cleanup
-; OLDPM-NEXT: ret i32 2
-;
-; NEWPM-LABEL: @caller(
-; NEWPM-NEXT: entry:
-; NEWPM-NEXT: invoke void @callee(i32* [[PTR:%.*]])
-; NEWPM-NEXT: to label [[COMMON_RET:%.*]] unwind label [[UNWIND:%.*]]
-; NEWPM: common.ret:
-; NEWPM-NEXT: [[COMMON_RET_OP:%.*]] = phi i32 [ 2, [[UNWIND]] ], [ 1, [[ENTRY:%.*]] ]
-; NEWPM-NEXT: ret i32 [[COMMON_RET_OP]]
-; NEWPM: unwind:
-; NEWPM-NEXT: [[RES:%.*]] = landingpad { i8*, i32 }
-; NEWPM-NEXT: cleanup
-; NEWPM-NEXT: br label [[COMMON_RET]]
-;
-entry:
- invoke void @callee(i32* %ptr)
- to label %normal unwind label %unwind
-
-normal:
- ret i32 1
-
-unwind:
- %res = landingpad { i8*, i32 }
- cleanup
- ret i32 2
-}
diff --git a/llvm/test/Transforms/PruneEH/looptest.ll b/llvm/test/Transforms/PruneEH/looptest.ll
deleted file mode 100644
index 5f4413322cded..0000000000000
--- a/llvm/test/Transforms/PruneEH/looptest.ll
+++ /dev/null
@@ -1,45 +0,0 @@
-; RUN: opt < %s -prune-eh -S -enable-new-pm=0 | FileCheck %s
-; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | FileCheck %s
-
-declare void @nounwind() nounwind
-
-define internal void @foo() {
- call void @nounwind()
- ret void
-}
-
-; CHECK-LABEL: @caller
-define i32 @caller(i32 %n) personality i32 (...)* @__gxx_personality_v0 {
-entry:
- br label %for
-
-for:
- %j = phi i32 [0, %entry], [%j.inc, %inc]
- %j.cmp = icmp slt i32 %j, %n
- br i1 %j.cmp, label %body, label %exit, !llvm.loop !0
-
-body:
-; CHECK: call void @foo(), !llvm.mem.parallel_loop_access !0
- invoke void @foo( )
- to label %Normal unwind label %Except, !llvm.mem.parallel_loop_access !0
- br label %inc
-
-inc:
- %j.inc = add nuw nsw i32 %j, 1
- br label %for, !llvm.loop !0
-
-exit:
- br label %Normal
-
-Normal:
- ret i32 0
-
-Except:
- landingpad { i8*, i32 }
- catch i8* null
- ret i32 1
-}
-
-declare i32 @__gxx_personality_v0(...)
-
-!0 = distinct !{!0}
diff --git a/llvm/test/Transforms/PruneEH/musttail.ll b/llvm/test/Transforms/PruneEH/musttail.ll
deleted file mode 100644
index 7c97d6118d21c..0000000000000
--- a/llvm/test/Transforms/PruneEH/musttail.ll
+++ /dev/null
@@ -1,16 +0,0 @@
-; RUN: opt -prune-eh -enable-new-pm=0 -S < %s | FileCheck %s
-; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | FileCheck %s
-
-declare void @noreturn()
-
-define void @testfn() {
- ; A musttail call must be followed by (optional bitcast then) ret,
- ; so make sure we don't insert an unreachable
- ; CHECK: musttail call void @noreturn
- ; CHECK-NOT: unreachable
- ; CHECK-NEXT: ret void
- musttail call void @noreturn() #0
- ret void
-}
-
-attributes #0 = { noreturn }
diff --git a/llvm/test/Transforms/PruneEH/operand-bundles.ll b/llvm/test/Transforms/PruneEH/operand-bundles.ll
deleted file mode 100644
index 1f6eec0745660..0000000000000
--- a/llvm/test/Transforms/PruneEH/operand-bundles.ll
+++ /dev/null
@@ -1,27 +0,0 @@
-; RUN: opt < %s -prune-eh -enable-new-pm=0 -S | FileCheck %s
-; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | FileCheck %s
-
-declare void @nounwind() nounwind
-
-define internal void @foo() {
- call void @nounwind()
- ret void
-}
-
-define i32 @caller() personality i32 (...)* @__gxx_personality_v0 {
-; CHECK-LABEL: @caller(
-; CHECK-NOT: invoke
-; CHECK: call void @foo() [ "foo"(i32 0, i8 1) ]
- invoke void @foo() [ "foo"(i32 0, i8 1) ]
- to label %Normal unwind label %Except
-
-Normal: ; preds = %0
- ret i32 0
-
-Except: ; preds = %0
- landingpad { i8*, i32 }
- catch i8* null
- ret i32 1
-}
-
-declare i32 @__gxx_personality_v0(...)
diff --git a/llvm/test/Transforms/PruneEH/pr23971.ll b/llvm/test/Transforms/PruneEH/pr23971.ll
deleted file mode 100644
index f50898aefe167..0000000000000
--- a/llvm/test/Transforms/PruneEH/pr23971.ll
+++ /dev/null
@@ -1,22 +0,0 @@
-; RUN: opt -S -prune-eh -enable-new-pm=0 < %s | FileCheck %s
-; RUN: opt -S -passes='function-attrs,function(simplifycfg)' < %s | FileCheck %s
-
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-linux-gnu"
-
-define void @f() #0 {
-entry:
- call void asm sideeffect "ret\0A\09", "~{dirflag},~{fpsr},~{flags}"()
- unreachable
-}
-
-define i32 @g() {
-entry:
- call void @f()
- ret i32 42
-}
-
-; CHECK-LABEL: define i32 @g()
-; CHECK: ret i32 42
-
-attributes #0 = { naked noinline }
diff --git a/llvm/test/Transforms/PruneEH/pr26263.ll b/llvm/test/Transforms/PruneEH/pr26263.ll
deleted file mode 100644
index 91bf448cb075f..0000000000000
--- a/llvm/test/Transforms/PruneEH/pr26263.ll
+++ /dev/null
@@ -1,70 +0,0 @@
-; PruneEH is less powerful than simplifycfg in terms of cfg simplification,
-; so it leaves some of the unreachable stuff hanging around.
-; Checking it with CHECK-OLD.
-;
-; RUN: opt -prune-eh -enable-new-pm=0 -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-OLD
-; RUN: opt -passes='function-attrs,function(simplifycfg)' -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NEW
-
-target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
-target triple = "i386-pc-windows-msvc"
-
-declare void @neverthrows() nounwind
-
-define void @test1() personality i32 (...)* @__CxxFrameHandler3 {
- invoke void @neverthrows()
- to label %try.cont unwind label %cleanuppad
-
-try.cont:
- ret void
-
-cleanuppad:
- %cp = cleanuppad within none []
- br label %cleanupret
-
-cleanupret:
- cleanupret from %cp unwind to caller
-}
-
-; CHECK-LABEL: define void @test1(
-; CHECK: call void @neverthrows()
-; CHECK-NEW-NEXT: ret void
-; CHECK-NEW-NEXT: }
-; CHECK-OLD: ret void
-
-; CHECK-OLD: %[[cp:.*]] = cleanuppad within none []
-; CHECK-OLD-NEXT: unreachable
-
-; CHECK-OLD: cleanupret from %[[cp]] unwind to caller
-
-define void @test2() personality i32 (...)* @__CxxFrameHandler3 {
- invoke void @neverthrows()
- to label %try.cont unwind label %catchswitch
-
-try.cont:
- ret void
-
-catchswitch:
- %cs = catchswitch within none [label %catchpad] unwind to caller
-
-catchpad:
- %cp = catchpad within %cs []
- unreachable
-
-ret:
- ret void
-}
-
-; CHECK-LABEL: define void @test2(
-; CHECK: call void @neverthrows()
-; CHECK-NEW-NEXT: ret void
-; CHECK-NEW-NEXT: }
-; CHECK-OLD: ret void
-
-; CHECK-OLD: %[[cs:.*]] = catchswitch within none [label
-
-; CHECK-OLD: catchpad within %[[cs]] []
-; CHECK-OLD-NEXT: unreachable
-
-; CHECK-OLD:ret void
-
-declare i32 @__CxxFrameHandler3(...)
diff --git a/llvm/test/Transforms/PruneEH/recursivetest.ll b/llvm/test/Transforms/PruneEH/recursivetest.ll
deleted file mode 100644
index c90ee0e7104de..0000000000000
--- a/llvm/test/Transforms/PruneEH/recursivetest.ll
+++ /dev/null
@@ -1,30 +0,0 @@
-; RUN: opt < %s -prune-eh -enable-new-pm=0 -S | FileCheck %s
-; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | FileCheck %s
-
-; CHECK-LABEL: define internal i32 @foo()
-define internal i32 @foo() personality i32 (...)* @__gxx_personality_v0 {
-; CHECK-NOT: invoke i32 @foo()
- invoke i32 @foo( )
- to label %Normal unwind label %Except ; <i32>:1 [#uses=0]
-Normal: ; preds = %0
- ret i32 12
-Except: ; preds = %0
- landingpad { i8*, i32 }
- catch i8* null
- ret i32 123
-}
-
-; CHECK-LABEL: define i32 @caller()
-define i32 @caller() personality i32 (...)* @__gxx_personality_v0 {
-; CHECK-NOT: invoke i32 @foo()
- invoke i32 @foo( )
- to label %Normal unwind label %Except ; <i32>:1 [#uses=0]
-Normal: ; preds = %0
- ret i32 0
-Except: ; preds = %0
- landingpad { i8*, i32 }
- catch i8* null
- ret i32 1
-}
-
-declare i32 @__gxx_personality_v0(...)
diff --git a/llvm/test/Transforms/PruneEH/seh-nounwind.ll b/llvm/test/Transforms/PruneEH/seh-nounwind.ll
deleted file mode 100644
index 77c56e4eb5f71..0000000000000
--- a/llvm/test/Transforms/PruneEH/seh-nounwind.ll
+++ /dev/null
@@ -1,32 +0,0 @@
-; RUN: opt -S -prune-eh -enable-new-pm=0 < %s | FileCheck %s
-; RUN: opt -S -passes='function-attrs,function(simplifycfg)' < %s | FileCheck %s
-
-; Don't remove invokes of nounwind functions if the personality handles async
-; exceptions. The @div function in this test can fault, even though it can't
-; throw a synchronous exception.
-
-define i32 @div(i32 %n, i32 %d) nounwind {
-entry:
- %div = sdiv i32 %n, %d
- ret i32 %div
-}
-
-define i32 @main() nounwind personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*) {
-entry:
- %call = invoke i32 @div(i32 10, i32 0)
- to label %__try.cont unwind label %lpad
-
-lpad:
- %0 = landingpad { i8*, i32 }
- catch i8* null
- br label %__try.cont
-
-__try.cont:
- %retval.0 = phi i32 [ %call, %entry ], [ 0, %lpad ]
- ret i32 %retval.0
-}
-
-; CHECK-LABEL: define i32 @main()
-; CHECK: invoke i32 @div(i32 10, i32 0)
-
-declare i32 @__C_specific_handler(...)
diff --git a/llvm/test/Transforms/PruneEH/simplenoreturntest.ll b/llvm/test/Transforms/PruneEH/simplenoreturntest.ll
deleted file mode 100644
index ccb9f5eb6f59c..0000000000000
--- a/llvm/test/Transforms/PruneEH/simplenoreturntest.ll
+++ /dev/null
@@ -1,14 +0,0 @@
-; RUN: opt < %s -prune-eh -S -enable-new-pm=0 | not grep "ret i32"
-; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | not grep "ret i32"
-
-declare void @noreturn() noreturn
-
-define i32 @caller() {
- call void @noreturn()
- ret i32 17
-}
-
-define i32 @caller2() {
- %T = call i32 @caller()
- ret i32 %T
-}
diff --git a/llvm/test/Transforms/PruneEH/simpletest.ll b/llvm/test/Transforms/PruneEH/simpletest.ll
deleted file mode 100644
index efd30c60aa08a..0000000000000
--- a/llvm/test/Transforms/PruneEH/simpletest.ll
+++ /dev/null
@@ -1,26 +0,0 @@
-; RUN: opt < %s -prune-eh -enable-new-pm=0 -S | FileCheck %s
-; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | FileCheck %s
-
-declare void @nounwind() nounwind
-
-define internal void @foo() {
- call void @nounwind()
- ret void
-}
-
-; CHECK-LABEL: define i32 @caller()
-define i32 @caller() personality i32 (...)* @__gxx_personality_v0 {
-; CHECK-NOT: invoke void @foo
- invoke void @foo( )
- to label %Normal unwind label %Except
-
-Normal: ; preds = %0
- ret i32 0
-
-Except: ; preds = %0
- landingpad { i8*, i32 }
- catch i8* null
- ret i32 1
-}
-
-declare i32 @__gxx_personality_v0(...)
diff --git a/llvm/utils/gn/secondary/llvm/lib/Transforms/IPO/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Transforms/IPO/BUILD.gn
index 16aaaedbb6c8e..163ccc4e3cc6d 100644
--- a/llvm/utils/gn/secondary/llvm/lib/Transforms/IPO/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/lib/Transforms/IPO/BUILD.gn
@@ -53,7 +53,6 @@ static_library("IPO") {
"OpenMPOpt.cpp",
"PartialInlining.cpp",
"PassManagerBuilder.cpp",
- "PruneEH.cpp",
"SCCP.cpp",
"SampleContextTracker.cpp",
"SampleProfile.cpp",
More information about the llvm-commits
mailing list