HelpText<"Run static analysis engine">;
def dump_tokens : Flag<["-"], "dump-tokens">,
HelpText<"Run preprocessor, dump internal rep of tokens">;
-def init_only : Flag<["-"], "init-only">,
- HelpText<"Only execute frontend initialization">;
def fixit : Flag<["-"], "fixit">,
HelpText<"Apply fix-it advice to the input source">;
def fixit_EQ : Joined<["-"], "fixit=">,
def emit_obj : Flag<["-"], "emit-obj">,
HelpText<"Emit native object files">;
+def init_only : Flag<["-"], "init-only">,
+ HelpText<"Only execute frontend initialization">;
} // let Group = Action_Group
} // let Flags = [CC1Option, FC1Option, NoDriverOption]
void ExecuteAction() override;
};
+class InitOnlyAction : public FrontendAction {
+ void ExecuteAction() override;
+};
+
//===----------------------------------------------------------------------===//
// Prescan Actions
//===----------------------------------------------------------------------===//
GetDefinition,
/// Parse, run semantics and then dump symbol sources map
- GetSymbolsSources
+ GetSymbolsSources,
+
+ /// Only execute frontend initialization
+ InitOnly
/// TODO: RunPreprocessor, EmitLLVM, EmitLLVMOnly,
/// EmitCodeGenOnly, EmitAssembly, (...)
case clang::driver::options::OPT_fget_definition:
opts.programAction_ = GetDefinition;
break;
+ case clang::driver::options::OPT_init_only:
+ opts.programAction_ = InitOnly;
+ break;
// TODO:
- // case calng::driver::options::OPT_emit_llvm:
+ // case clang::driver::options::OPT_emit_llvm:
// case clang::driver::options::OPT_emit_llvm_only:
// case clang::driver::options::OPT_emit_codegen_only:
// case clang::driver::options::OPT_emit_module:
clang::DiagnosticsEngine::Error, "code-generation is not available yet");
ci.diagnostics().Report(DiagID);
}
+
+void InitOnlyAction::ExecuteAction() {
+ CompilerInstance &ci = this->instance();
+ unsigned DiagID =
+ ci.diagnostics().getCustomDiagID(clang::DiagnosticsEngine::Warning,
+ "Use `-init-only` for testing purposes only");
+ ci.diagnostics().Report(DiagID);
+}
case GetSymbolsSources:
return std::make_unique<GetSymbolsSourcesAction>();
break;
+ case InitOnly:
+ return std::make_unique<InitOnlyAction>();
+ break;
default:
break;
// TODO:
! HELP-FC1-NEXT: -fopenmp Parse OpenMP pragmas and generate parallel code.
! HELP-FC1-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV.
! HELP-FC1-NEXT: -help Display available options
+! HELP-FC1-NEXT: -init-only Only execute frontend initialization
! HELP-FC1-NEXT: -I <dir> Add directory to the end of the list of include search paths
! HELP-FC1-NEXT: -module-dir <dir> Put MODULE files in <dir>
! HELP-FC1-NEXT: -module-suffix <suffix> Use <suffix> as the suffix for module files (the default value is `.mod`)
--- /dev/null
+! Verify that -init-only flag generates a diagnostic as expected
+
+! REQUIRES: new-flang-driver
+
+! RUN: %flang_fc1 -init-only 2>&1 | FileCheck %s
+
+! CHECK: warning: Use `-init-only` for testing purposes only