summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2013-06-18 02:46:29 +0000
committerJohn McCall <rjmccall@apple.com>2013-06-18 02:46:29 +0000
commit1fe2a8c87ee6d18682ffa6d8a07e2ed30bfb6d35 (patch)
treeb1d0be28a962f43dfe39a352aac590c9e16c59dd /clang/lib/Driver/Tools.cpp
parent9f380c55cef00cf5446691fca7720d0ada17c18a (diff)
downloadbcm5719-llvm-1fe2a8c87ee6d18682ffa6d8a07e2ed30bfb6d35.tar.gz
bcm5719-llvm-1fe2a8c87ee6d18682ffa6d8a07e2ed30bfb6d35.zip
Add support for -fpcc-struct-return. Patch by Arthur O'Dwyer!
llvm-svn: 184166
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index add0c623aa2..373939cd933 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -2165,6 +2165,18 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back(A->getValue());
}
+ if (Arg *A = Args.getLastArg(options::OPT_fpcc_struct_return, options::OPT_freg_struct_return)) {
+ if (getToolChain().getTriple().getArch() != llvm::Triple::x86) {
+ D.Diag(diag::err_drv_unsupported_opt_for_target)
+ << A->getSpelling() << getToolChain().getTriple().str();
+ } else if (A->getOption().matches(options::OPT_fpcc_struct_return)) {
+ CmdArgs.push_back("-fpcc-struct-return");
+ } else {
+ assert(A->getOption().matches(options::OPT_freg_struct_return));
+ CmdArgs.push_back("-freg-struct-return");
+ }
+ }
+
if (Args.hasFlag(options::OPT_mrtd, options::OPT_mno_rtd, false))
CmdArgs.push_back("-mrtd");
OpenPOWER on IntegriCloud