Index: clang/lib/Driver/ToolChains/CommonArgs.cpp =================================================================== --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -396,6 +396,12 @@ CmdArgs.push_back(Args.MakeArgString(Twine("-plugin-opt=O") + OOpt)); } + if (const Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) { + StringRef ModelArg = A->getValue(); + CmdArgs.push_back( + Args.MakeArgString(Twine("-plugin-opt=-code-model=") + ModelArg)); + } + if (Args.hasArg(options::OPT_gsplit_dwarf)) { CmdArgs.push_back( Args.MakeArgString(Twine("-plugin-opt=dwo_dir=") + Index: clang/test/Driver/lto.c =================================================================== --- clang/test/Driver/lto.c +++ clang/test/Driver/lto.c @@ -58,3 +58,7 @@ // // CHECK-TUNING-LLDB: "-plugin-opt=-debugger-tune=lldb" // CHECK-NO-TUNING-NOT: "-plugin-opt=-debugger-tune + +// RUN: %clang -target x86_64-unknown-linux -### %s -flto -mcmodel=small 2> %t +// RUN: FileCheck -check-prefix=CHECK-CODE-MODEL-OPTION < %t %s +// CHECK-CODE-MODEL-OPTION: "-plugin-opt=-code-model=small"