mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
llc: Add a 'run-pass' option.
This commit adds a 'run-pass' option to llc, which instructs the compiler to run one specific code generation pass only. Llc already has the 'start-after' and the 'stop-after' options, and this new option complements the other two by making it easier to write tests that want to invoke a single pass only. Reviewers: Duncan P. N. Exon Smith Differential Revision: http://reviews.llvm.org/D10776 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241476 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -206,6 +206,10 @@ cl::opt<std::string> StartAfter("start-after",
|
||||
cl::value_desc("pass-name"),
|
||||
cl::init(""));
|
||||
|
||||
cl::opt<std::string>
|
||||
RunPass("run-pass", cl::desc("Run compiler only for one specific pass"),
|
||||
cl::value_desc("pass-name"), cl::init(""));
|
||||
|
||||
cl::opt<bool> DataSections("data-sections",
|
||||
cl::desc("Emit data into separate sections"),
|
||||
cl::init(false));
|
||||
|
@ -101,7 +101,7 @@ public:
|
||||
|
||||
private:
|
||||
PassManagerBase *PM;
|
||||
AnalysisID StartAfter;
|
||||
AnalysisID StartBefore, StartAfter;
|
||||
AnalysisID StopAfter;
|
||||
bool Started;
|
||||
bool Stopped;
|
||||
@ -142,16 +142,24 @@ public:
|
||||
|
||||
CodeGenOpt::Level getOptLevel() const { return TM->getOptLevel(); }
|
||||
|
||||
/// setStartStopPasses - Set the StartAfter and StopAfter passes to allow
|
||||
/// running only a portion of the normal code-gen pass sequence. If the
|
||||
/// Start pass ID is zero, then compilation will begin at the normal point;
|
||||
/// otherwise, clear the Started flag to indicate that passes should not be
|
||||
/// added until the starting pass is seen. If the Stop pass ID is zero,
|
||||
/// then compilation will continue to the end.
|
||||
void setStartStopPasses(AnalysisID Start, AnalysisID Stop) {
|
||||
StartAfter = Start;
|
||||
StopAfter = Stop;
|
||||
Started = (StartAfter == nullptr);
|
||||
/// Set the StartAfter, StartBefore and StopAfter passes to allow running only
|
||||
/// a portion of the normal code-gen pass sequence.
|
||||
///
|
||||
/// If the StartAfter and StartBefore pass ID is zero, then compilation will
|
||||
/// begin at the normal point; otherwise, clear the Started flag to indicate
|
||||
/// that passes should not be added until the starting pass is seen. If the
|
||||
/// Stop pass ID is zero, then compilation will continue to the end.
|
||||
///
|
||||
/// This function expects that at least one of the StartAfter or the
|
||||
/// StartBefore pass IDs is null.
|
||||
void setStartStopPasses(AnalysisID StartBefore, AnalysisID StartAfter,
|
||||
AnalysisID StopAfter) {
|
||||
if (StartAfter)
|
||||
assert(!StartBefore && "Start after and start before passes are given");
|
||||
this->StartBefore = StartBefore;
|
||||
this->StartAfter = StartAfter;
|
||||
this->StopAfter = StopAfter;
|
||||
Started = (StartAfter == nullptr) && (StartBefore == nullptr);
|
||||
}
|
||||
|
||||
void setDisableVerify(bool Disable) { setOpt(DisableVerify, Disable); }
|
||||
|
Reference in New Issue
Block a user