Currently, the LowerConstantIntrinsics pass does an RPO traversal of every function... only to find that many functions don't have constant intrinsics (is.constant, objectsize). In the CodeGen pipeline, there is already a pre-isel intrinsic lowering pass, which iterates over intrinsic declarations and lowers all users. Call lowerConstantIntrinsics from this pass to avoid the extra iteration over the entire IR and the RPO traversal.
52 lines
2.3 KiB
C++
52 lines
2.3 KiB
C++
//===-- Scalar.cpp --------------------------------------------------------===//
|
|
//
|
|
// 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 common infrastructure for libLLVMScalarOpts.a, which
|
|
// implements several scalar transformations over the LLVM intermediate
|
|
// representation, including the C bindings for that library.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/InitializePasses.h"
|
|
|
|
using namespace llvm;
|
|
|
|
/// initializeScalarOptsPasses - Initialize all passes linked into the
|
|
/// ScalarOpts library.
|
|
void llvm::initializeScalarOpts(PassRegistry &Registry) {
|
|
initializeConstantHoistingLegacyPassPass(Registry);
|
|
initializeDCELegacyPassPass(Registry);
|
|
initializeGVNLegacyPassPass(Registry);
|
|
initializeEarlyCSELegacyPassPass(Registry);
|
|
initializeEarlyCSEMemSSALegacyPassPass(Registry);
|
|
initializeFlattenCFGLegacyPassPass(Registry);
|
|
initializeInferAddressSpacesPass(Registry);
|
|
initializeInstSimplifyLegacyPassPass(Registry);
|
|
initializeLegacyLICMPassPass(Registry);
|
|
initializeLoopDataPrefetchLegacyPassPass(Registry);
|
|
initializeLoopStrengthReducePass(Registry);
|
|
initializeLoopUnrollPass(Registry);
|
|
initializeLowerAtomicLegacyPassPass(Registry);
|
|
initializeMergeICmpsLegacyPassPass(Registry);
|
|
initializeNaryReassociateLegacyPassPass(Registry);
|
|
initializePartiallyInlineLibCallsLegacyPassPass(Registry);
|
|
initializeReassociateLegacyPassPass(Registry);
|
|
initializeScalarizeMaskedMemIntrinLegacyPassPass(Registry);
|
|
initializeSROALegacyPassPass(Registry);
|
|
initializeCFGSimplifyPassPass(Registry);
|
|
initializeStructurizeCFGLegacyPassPass(Registry);
|
|
initializeSinkingLegacyPassPass(Registry);
|
|
initializeTailCallElimPass(Registry);
|
|
initializeTLSVariableHoistLegacyPassPass(Registry);
|
|
initializeSeparateConstOffsetFromGEPLegacyPassPass(Registry);
|
|
initializeSpeculativeExecutionLegacyPassPass(Registry);
|
|
initializeStraightLineStrengthReduceLegacyPassPass(Registry);
|
|
initializePlaceBackedgeSafepointsLegacyPassPass(Registry);
|
|
initializePostInlineEntryExitInstrumenterPass(Registry);
|
|
}
|