mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-04-09 19:21:44 +00:00

Issues identified by buildbots addressed since original review: - Fixed ARMLoadStoreOptimizer bug exposed by this change in r311907. - The pass no longer forwards COPYs to physical register uses, since doing so can break code that implicitly relies on the physical register number of the use. - The pass no longer forwards COPYs to undef uses, since doing so can break the machine verifier by creating LiveRanges that don't end on a use (since the undef operand is not considered a use). [MachineCopyPropagation] Extend pass to do COPY source forwarding This change extends MachineCopyPropagation to do COPY source forwarding. This change also extends the MachineCopyPropagation pass to be able to be run during register allocation, after physical registers have been assigned, but before the virtual registers have been re-written, which allows it to remove virtual register COPY LiveIntervals that become dead through the forwarding of all of their uses. llvm-svn: 312154
108 lines
4.4 KiB
C++
108 lines
4.4 KiB
C++
//===-- CodeGen.cpp -------------------------------------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file implements the common initialization routines for the
|
|
// CodeGen library.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm-c/Initialization.h"
|
|
#include "llvm/InitializePasses.h"
|
|
#include "llvm/PassRegistry.h"
|
|
|
|
using namespace llvm;
|
|
|
|
/// initializeCodeGen - Initialize all passes linked into the CodeGen library.
|
|
void llvm::initializeCodeGen(PassRegistry &Registry) {
|
|
initializeAtomicExpandPass(Registry);
|
|
initializeBranchFolderPassPass(Registry);
|
|
initializeBranchRelaxationPass(Registry);
|
|
initializeCodeGenPreparePass(Registry);
|
|
initializeCountingFunctionInserterPass(Registry);
|
|
initializeDeadMachineInstructionElimPass(Registry);
|
|
initializeDetectDeadLanesPass(Registry);
|
|
initializeDwarfEHPreparePass(Registry);
|
|
initializeEarlyIfConverterPass(Registry);
|
|
initializeExpandISelPseudosPass(Registry);
|
|
initializeExpandPostRAPass(Registry);
|
|
initializeFEntryInserterPass(Registry);
|
|
initializeFinalizeMachineBundlesPass(Registry);
|
|
initializeFuncletLayoutPass(Registry);
|
|
initializeGCMachineCodeAnalysisPass(Registry);
|
|
initializeGCModuleInfoPass(Registry);
|
|
initializeIfConverterPass(Registry);
|
|
initializeImplicitNullChecksPass(Registry);
|
|
initializeInterleavedAccessPass(Registry);
|
|
initializeLiveDebugValuesPass(Registry);
|
|
initializeLiveDebugVariablesPass(Registry);
|
|
initializeLiveIntervalsPass(Registry);
|
|
initializeLiveRangeShrinkPass(Registry);
|
|
initializeLiveStacksPass(Registry);
|
|
initializeLiveVariablesPass(Registry);
|
|
initializeLocalStackSlotPassPass(Registry);
|
|
initializeLowerIntrinsicsPass(Registry);
|
|
initializeMachineBlockFrequencyInfoPass(Registry);
|
|
initializeMachineBlockPlacementPass(Registry);
|
|
initializeMachineBlockPlacementStatsPass(Registry);
|
|
initializeMachineCSEPass(Registry);
|
|
initializeMachineCombinerPass(Registry);
|
|
initializeMachineCopyPropagationPass(Registry);
|
|
initializeMachineCopyPropagationPreRegRewritePass(Registry);
|
|
initializeMachineDominatorTreePass(Registry);
|
|
initializeMachineFunctionPrinterPassPass(Registry);
|
|
initializeMachineLICMPass(Registry);
|
|
initializeMachineLoopInfoPass(Registry);
|
|
initializeMachineModuleInfoPass(Registry);
|
|
initializeMachineOptimizationRemarkEmitterPassPass(Registry);
|
|
initializeMachineOutlinerPass(Registry);
|
|
initializeMachinePipelinerPass(Registry);
|
|
initializeMachinePostDominatorTreePass(Registry);
|
|
initializeMachineRegionInfoPassPass(Registry);
|
|
initializeMachineSchedulerPass(Registry);
|
|
initializeMachineSinkingPass(Registry);
|
|
initializeMachineVerifierPassPass(Registry);
|
|
initializeOptimizePHIsPass(Registry);
|
|
initializePEIPass(Registry);
|
|
initializePHIEliminationPass(Registry);
|
|
initializePatchableFunctionPass(Registry);
|
|
initializePeepholeOptimizerPass(Registry);
|
|
initializePostMachineSchedulerPass(Registry);
|
|
initializePostRAHazardRecognizerPass(Registry);
|
|
initializePostRASchedulerPass(Registry);
|
|
initializePreISelIntrinsicLoweringLegacyPassPass(Registry);
|
|
initializeProcessImplicitDefsPass(Registry);
|
|
initializeRABasicPass(Registry);
|
|
initializeRAFastPass(Registry);
|
|
initializeRAGreedyPass(Registry);
|
|
initializeRegisterCoalescerPass(Registry);
|
|
initializeRenameIndependentSubregsPass(Registry);
|
|
initializeSafeStackLegacyPassPass(Registry);
|
|
initializeScalarizeMaskedMemIntrinPass(Registry);
|
|
initializeShrinkWrapPass(Registry);
|
|
initializeSlotIndexesPass(Registry);
|
|
initializeStackColoringPass(Registry);
|
|
initializeStackMapLivenessPass(Registry);
|
|
initializeStackProtectorPass(Registry);
|
|
initializeStackSlotColoringPass(Registry);
|
|
initializeTailDuplicatePassPass(Registry);
|
|
initializeTargetPassConfigPass(Registry);
|
|
initializeTwoAddressInstructionPassPass(Registry);
|
|
initializeUnpackMachineBundlesPass(Registry);
|
|
initializeUnreachableBlockElimLegacyPassPass(Registry);
|
|
initializeUnreachableMachineBlockElimPass(Registry);
|
|
initializeVirtRegMapPass(Registry);
|
|
initializeVirtRegRewriterPass(Registry);
|
|
initializeWinEHPreparePass(Registry);
|
|
initializeXRayInstrumentationPass(Registry);
|
|
}
|
|
|
|
void LLVMInitializeCodeGen(LLVMPassRegistryRef R) {
|
|
initializeCodeGen(*unwrap(R));
|
|
}
|