akhuang created this revision. akhuang added reviewers: dblaikie, aprantl, MaskRay. Herald added subscribers: cfe-commits, dang. Herald added a project: clang. akhuang requested review of this revision.
This adds a cc1 flag to enable constructor homing but doesn't turn on debug info if it wasn't enabled already (which is what using -debug-info-kind=constructor does). This will be used for testing, and won't be needed anymore once ctor homing is used as default / merged into =limited. Bug to enable ctor homing: https://bugs.llvm.org/show_bug.cgi?id=46537 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D85799 Files: clang/include/clang/Driver/Options.td clang/lib/Frontend/CompilerInvocation.cpp Index: clang/lib/Frontend/CompilerInvocation.cpp =================================================================== --- clang/lib/Frontend/CompilerInvocation.cpp +++ clang/lib/Frontend/CompilerInvocation.cpp @@ -775,6 +775,12 @@ else Opts.setDebugInfo(static_cast<codegenoptions::DebugInfoKind>(Val)); } + // If -fuse-ctor-homing is set and limited debug info is already on, then use + // constructor homing. + if (Arg *A = Args.getLastArg(OPT_fuse_ctor_homing)) + if (Opts.getDebugInfo() == codegenoptions::LimitedDebugInfo) + Opts.setDebugInfo(codegenoptions::DebugInfoConstructor); + if (Arg *A = Args.getLastArg(OPT_debugger_tuning_EQ)) { unsigned Val = llvm::StringSwitch<unsigned>(A->getValue()) .Case("gdb", unsigned(llvm::DebuggerKind::GDB)) Index: clang/include/clang/Driver/Options.td =================================================================== --- clang/include/clang/Driver/Options.td +++ clang/include/clang/Driver/Options.td @@ -3691,6 +3691,8 @@ AutoNormalizeEnum; def fno_math_builtin : Flag<["-"], "fno-math-builtin">, HelpText<"Disable implicit builtin knowledge of math functions">; +def fuse_ctor_homing: Flag<["-"], "fuse-ctor-homing">, + HelpText<"Use constructor homing if we are using limited debug info already">; } def disable_llvm_verifier : Flag<["-"], "disable-llvm-verifier">,
Index: clang/lib/Frontend/CompilerInvocation.cpp =================================================================== --- clang/lib/Frontend/CompilerInvocation.cpp +++ clang/lib/Frontend/CompilerInvocation.cpp @@ -775,6 +775,12 @@ else Opts.setDebugInfo(static_cast<codegenoptions::DebugInfoKind>(Val)); } + // If -fuse-ctor-homing is set and limited debug info is already on, then use + // constructor homing. + if (Arg *A = Args.getLastArg(OPT_fuse_ctor_homing)) + if (Opts.getDebugInfo() == codegenoptions::LimitedDebugInfo) + Opts.setDebugInfo(codegenoptions::DebugInfoConstructor); + if (Arg *A = Args.getLastArg(OPT_debugger_tuning_EQ)) { unsigned Val = llvm::StringSwitch<unsigned>(A->getValue()) .Case("gdb", unsigned(llvm::DebuggerKind::GDB)) Index: clang/include/clang/Driver/Options.td =================================================================== --- clang/include/clang/Driver/Options.td +++ clang/include/clang/Driver/Options.td @@ -3691,6 +3691,8 @@ AutoNormalizeEnum; def fno_math_builtin : Flag<["-"], "fno-math-builtin">, HelpText<"Disable implicit builtin knowledge of math functions">; +def fuse_ctor_homing: Flag<["-"], "fuse-ctor-homing">, + HelpText<"Use constructor homing if we are using limited debug info already">; } def disable_llvm_verifier : Flag<["-"], "disable-llvm-verifier">,
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits