This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGfa32fd3bf7c0: [clang] Remove duplication in
types::getCompilationPhases() (authored by thakis).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110770/new/
https://reviews.llvm.org/D110770
Files:
clang/include/clang/Driver/Driver.h
clang/include/clang/Driver/Phases.h
clang/include/clang/Driver/Types.h
clang/lib/Driver/Driver.cpp
clang/lib/Driver/Types.cpp
Index: clang/lib/Driver/Types.cpp
===================================================================
--- clang/lib/Driver/Types.cpp
+++ clang/lib/Driver/Types.cpp
@@ -362,46 +362,7 @@
llvm::SmallVector<phases::ID, phases::MaxNumberOfPhases>
types::getCompilationPhases(const clang::driver::Driver &Driver,
llvm::opt::DerivedArgList &DAL, ID Id) {
- phases::ID LastPhase;
-
- // Filter to compiler mode. When the compiler is run as a preprocessor then
- // compilation is not an option.
- // -S runs the compiler in Assembly listing mode.
- if (Driver.CCCIsCPP() || DAL.getLastArg(options::OPT_E) ||
- DAL.getLastArg(options::OPT__SLASH_EP) ||
- DAL.getLastArg(options::OPT_M, options::OPT_MM) ||
- DAL.getLastArg(options::OPT__SLASH_P))
- LastPhase = phases::Preprocess;
-
- // --precompile only runs up to precompilation.
- // This is a clang extension and is not compatible with GCC.
- else if (DAL.getLastArg(options::OPT__precompile))
- LastPhase = phases::Precompile;
-
- // -{fsyntax-only,-analyze,emit-ast} only run up to the compiler.
- else if (DAL.getLastArg(options::OPT_fsyntax_only) ||
- DAL.getLastArg(options::OPT_print_supported_cpus) ||
- DAL.getLastArg(options::OPT_module_file_info) ||
- DAL.getLastArg(options::OPT_verify_pch) ||
- DAL.getLastArg(options::OPT_rewrite_objc) ||
- DAL.getLastArg(options::OPT_rewrite_legacy_objc) ||
- DAL.getLastArg(options::OPT__migrate) ||
- DAL.getLastArg(options::OPT__analyze) ||
- DAL.getLastArg(options::OPT_emit_ast))
- LastPhase = phases::Compile;
-
- else if (DAL.getLastArg(options::OPT_S) ||
- DAL.getLastArg(options::OPT_emit_llvm))
- LastPhase = phases::Backend;
-
- else if (DAL.getLastArg(options::OPT_c))
- LastPhase = phases::Assemble;
-
- // Generally means, do every phase until Link.
- else
- LastPhase = phases::LastPhase;
-
- return types::getCompilationPhases(Id, LastPhase);
+ return types::getCompilationPhases(Id, Driver.getFinalPhase(DAL));
}
ID types::lookupCXXTypeForCType(ID Id) {
Index: clang/lib/Driver/Driver.cpp
===================================================================
--- clang/lib/Driver/Driver.cpp
+++ clang/lib/Driver/Driver.cpp
@@ -304,6 +304,9 @@
} else if ((PhaseArg = DAL.getLastArg(options::OPT_c))) {
FinalPhase = phases::Assemble;
+ } else if ((PhaseArg = DAL.getLastArg(options::OPT_emit_interface_stubs))) {
+ FinalPhase = phases::IfsMerge;
+
// Otherwise do everything.
} else
FinalPhase = phases::Link;
@@ -3841,7 +3844,7 @@
if (Args.hasArg(options::OPT_emit_interface_stubs)) {
auto PhaseList = types::getCompilationPhases(
types::TY_IFS_CPP,
- Args.hasArg(options::OPT_c) ? phases::Compile : phases::LastPhase);
+ Args.hasArg(options::OPT_c) ? phases::Compile : phases::IfsMerge);
ActionList MergerInputs;
Index: clang/include/clang/Driver/Types.h
===================================================================
--- clang/include/clang/Driver/Types.h
+++ clang/include/clang/Driver/Types.h
@@ -111,7 +111,7 @@
/// getCompilationPhases - Get the list of compilation phases ('Phases') to be
/// done for type 'Id' up until including LastPhase.
llvm::SmallVector<phases::ID, phases::MaxNumberOfPhases>
- getCompilationPhases(ID Id, phases::ID LastPhase = phases::LastPhase);
+ getCompilationPhases(ID Id, phases::ID LastPhase = phases::IfsMerge);
llvm::SmallVector<phases::ID, phases::MaxNumberOfPhases>
getCompilationPhases(const clang::driver::Driver &Driver,
llvm::opt::DerivedArgList &DAL, ID Id);
Index: clang/include/clang/Driver/Phases.h
===================================================================
--- clang/include/clang/Driver/Phases.h
+++ clang/include/clang/Driver/Phases.h
@@ -22,11 +22,10 @@
Assemble,
Link,
IfsMerge,
- LastPhase = IfsMerge,
};
enum {
- MaxNumberOfPhases = LastPhase + 1
+ MaxNumberOfPhases = IfsMerge + 1
};
const char *getPhaseName(ID Id);
Index: clang/include/clang/Driver/Driver.h
===================================================================
--- clang/include/clang/Driver/Driver.h
+++ clang/include/clang/Driver/Driver.h
@@ -253,6 +253,14 @@
/// or when using the -gen-reproducer driver flag.
unsigned GenReproducer : 1;
+ // getFinalPhase - Determine which compilation mode we are in and record
+ // which option we used to determine the final phase.
+ // TODO: Much of what getFinalPhase returns are not actually true compiler
+ // modes. Fold this functionality into Types::getCompilationPhases and
+ // handleArguments.
+ phases::ID getFinalPhase(const llvm::opt::DerivedArgList &DAL,
+ llvm::opt::Arg **FinalPhaseArg = nullptr) const;
+
private:
/// Certain options suppress the 'no input files' warning.
unsigned SuppressMissingInputWarning : 1;
@@ -270,14 +278,6 @@
llvm::opt::DerivedArgList *
TranslateInputArgs(const llvm::opt::InputArgList &Args) const;
- // getFinalPhase - Determine which compilation mode we are in and record
- // which option we used to determine the final phase.
- // TODO: Much of what getFinalPhase returns are not actually true compiler
- // modes. Fold this functionality into Types::getCompilationPhases and
- // handleArguments.
- phases::ID getFinalPhase(const llvm::opt::DerivedArgList &DAL,
- llvm::opt::Arg **FinalPhaseArg = nullptr) const;
-
// handleArguments - All code related to claiming and printing diagnostics
// related to arguments to the driver are done here.
void handleArguments(Compilation &C, llvm::opt::DerivedArgList &Args,
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits