mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Teach dominator based simplifications to also thread dominated edges. The code now handles cond_br and switch_enum terminators for both value based simplifications (where the use is dominated) and jump threading edges (the edge is dominated). Update simplify_cfg.sil test cases for split edges. This also handles the test case from rdar://20390647. Swift SVN r27843
91 lines
2.4 KiB
C++
91 lines
2.4 KiB
C++
//===--- Passes.def - Swift SILPass Metaprogramming -------------*- C++ -*-===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See http://swift.org/LICENSE.txt for license information
|
|
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines macros used for macro-metaprogramming with SILPasses.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// PASS(ID)
|
|
/// The pass is identified by PassKind::ID, and there exists a
|
|
/// global function swift::create##ID().
|
|
/// This macro must be defined by the includer.
|
|
|
|
/// PASS_RANGE(RANGE_ID, START, END)
|
|
/// Pass IDs between PassKind::START and PassKind::END, inclusive,
|
|
/// fall within the set known as
|
|
#ifndef PASS_RANGE
|
|
#define PASS_RANGE(Id, First, Last)
|
|
#endif
|
|
|
|
PASS(AADumper)
|
|
PASS(ABCOpt)
|
|
PASS(AllocBoxToStack)
|
|
PASS(CFGPrinter)
|
|
PASS(COWArrayOpts)
|
|
PASS(CSE)
|
|
PASS(CapturePromotion)
|
|
PASS(CapturePropagation)
|
|
PASS(ClosureSpecializer)
|
|
PASS(EarlyCodeMotion)
|
|
PASS(LateCodeMotion)
|
|
PASS(CopyForwarding)
|
|
PASS(DCE)
|
|
PASS(DeadFunctionElimination)
|
|
PASS(ExternalFunctionDefinitionsElimination)
|
|
PASS(DeadObjectElimination)
|
|
PASS(DefiniteInitialization)
|
|
PASS(Devirtualizer)
|
|
PASS(DiagnoseUnreachable)
|
|
PASS(DiagnosticConstantPropagation)
|
|
PASS(EarlyInliner)
|
|
PASS(EmitDFDiagnostics)
|
|
PASS(FunctionSignatureOpts)
|
|
PASS(GenericSpecializer)
|
|
PASS(GlobalARCOpts)
|
|
PASS(GlobalLoadStoreOpts)
|
|
PASS(GlobalOpt)
|
|
PASS(GlobalPropertyOpt)
|
|
PASS(IVInfoPrinter)
|
|
PASS(InOutDeshadowing)
|
|
PASS(InlineCaches)
|
|
PASS(InstCount)
|
|
PASS(LICM)
|
|
PASS(LateInliner)
|
|
PASS(LoopInfoPrinter)
|
|
PASS(LoopRotate)
|
|
PASS(LowerAggregateInstrs)
|
|
PASS(MandatoryInlining)
|
|
PASS(Mem2Reg)
|
|
PASS(MergeCondFails)
|
|
PASS(CropOverflowChecks)
|
|
PASS(NoReturnFolding)
|
|
PASS(PerfInliner)
|
|
PASS(PerformanceConstantPropagation)
|
|
PASS(PredictableMemoryOptimizations)
|
|
PASS(RemovePins)
|
|
PASS(SILCleanup)
|
|
PASS(SILCombine)
|
|
PASS(SILLinker)
|
|
PASS(SROA)
|
|
PASS(SimplifyCFG)
|
|
PASS(JumpThreadSimplifyCFG)
|
|
PASS(SplitAllCriticalEdges)
|
|
PASS(SplitNonCondBrCriticalEdges)
|
|
PASS(SimplifyBBArgs)
|
|
PASS(StripDebugInfo)
|
|
PASS(SwiftArrayOpts)
|
|
PASS(ExternalDefsToDecls)
|
|
PASS_RANGE(AllPasses, AADumper, ExternalDefsToDecls)
|
|
|
|
#undef PASS
|
|
#undef PASS_RANGE
|