diff options
author | Dan McGregor <dan.mcgregor@usask.ca> | 2019-11-26 14:23:07 -0800 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2019-11-26 15:17:49 -0800 |
commit | 6c92cdff72251a7d13ab3958b04fba72dfcaebb1 (patch) | |
tree | 109f389b97c23284a0af76927c7f1650f1fb9787 /clang/lib/Driver/ToolChains/Gnu.cpp | |
parent | e177c5a00da34ba61b762e2b32bd96e33b0c10b4 (diff) | |
download | bcm5719-llvm-6c92cdff72251a7d13ab3958b04fba72dfcaebb1.tar.gz bcm5719-llvm-6c92cdff72251a7d13ab3958b04fba72dfcaebb1.zip |
Initial implementation of -fmacro-prefix-map and -ffile-prefix-map
GCC 8 implements -fmacro-prefix-map. Like -fdebug-prefix-map, it replaces a string prefix for the __FILE__ macro.
-ffile-prefix-map is the union of -fdebug-prefix-map and -fmacro-prefix-map
Reviewed By: rnk, Lekensteyn, maskray
Differential Revision: https://reviews.llvm.org/D49466
Diffstat (limited to 'clang/lib/Driver/ToolChains/Gnu.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains/Gnu.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index 4c6956d54b7..1a729f112bd 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -868,6 +868,19 @@ void tools::gnutools::Assembler::ConstructJob(Compilation &C, } } + for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ, + options::OPT_fdebug_prefix_map_EQ)) { + StringRef Map = A->getValue(); + if (Map.find('=') == StringRef::npos) + D.Diag(diag::err_drv_invalid_argument_to_option) + << Map << A->getOption().getName(); + else { + CmdArgs.push_back(Args.MakeArgString("--debug-prefix-map")); + CmdArgs.push_back(Args.MakeArgString(Map)); + } + A->claim(); + } + Args.AddAllArgs(CmdArgs, options::OPT_I); Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); |