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