File tree 2 files changed +22
-0
lines changed
clang/lib/Driver/ToolChains
2 files changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -107,3 +107,20 @@ void Cygwin::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
107
107
addExternCSystemInclude (DriverArgs, CC1Args, SysRoot + " /usr/include" );
108
108
addExternCSystemInclude (DriverArgs, CC1Args, SysRoot + " /usr/include/w32api" );
109
109
}
110
+
111
+ void Cygwin::addClangTargetOptions (const ArgList &DriverArgs,
112
+ ArgStringList &CC1Args,
113
+ Action::OffloadKind) const {
114
+ auto findMacroDefinition = [&](const std::string &Macro) {
115
+ auto MacroDefs = DriverArgs.getAllArgValues (options::OPT_D);
116
+ if (MacroDefs.empty ())
117
+ return false ;
118
+ std::string MacroEquals (Macro + ' =' );
119
+ return llvm::any_of (MacroDefs, [&](const std::string &M) {
120
+ return M == Macro || M.rfind (MacroEquals, 0 ) != std::string::npos;
121
+ });
122
+ };
123
+
124
+ if (getDriver ().CCCIsCXX () && !findMacroDefinition (" _GLIBCXX_USE_CXX11_ABI" ))
125
+ CC1Args.push_back (" -D_GLIBCXX_USE_CXX11_ABI=1" );
126
+ }
Original file line number Diff line number Diff line change @@ -27,6 +27,11 @@ class LLVM_LIBRARY_VISIBILITY Cygwin : public Generic_GCC {
27
27
void
28
28
AddClangSystemIncludeArgs (const llvm::opt::ArgList &DriverArgs,
29
29
llvm::opt::ArgStringList &CC1Args) const override ;
30
+
31
+ void
32
+ addClangTargetOptions (const llvm::opt::ArgList &DriverArgs,
33
+ llvm::opt::ArgStringList &CC1Args,
34
+ Action::OffloadKind DeviceOffloadKind) const override ;
30
35
};
31
36
32
37
} // end namespace toolchains
You can’t perform that action at this time.
0 commit comments