Skip to content

Commit 79937ec

Browse files
authored
Merge pull request #33 from flang-compiler/sjs_60
Set flang default to use barriers for atomics.
2 parents b12b396 + 6d36b3d commit 79937ec

File tree

1 file changed

+47
-40
lines changed

1 file changed

+47
-40
lines changed

lib/Driver/ToolChains/Flang.cpp

Lines changed: 47 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,13 @@ void FlangFrontend::ConstructJob(Compilation &C, const JobAction &JA,
215215
CommonCmdArgs.push_back("-x");
216216
CommonCmdArgs.push_back("69");
217217
CommonCmdArgs.push_back("0x400");
218+
219+
// Disable use of native atomic instructions
220+
// for OpenMP atomics pending either a named
221+
// option or a libatomic bundled with flang.
222+
UpperCmdArgs.push_back("-x");
223+
UpperCmdArgs.push_back("69");
224+
UpperCmdArgs.push_back("0x1000");
218225
}
219226
}
220227

@@ -333,46 +340,6 @@ void FlangFrontend::ConstructJob(Compilation &C, const JobAction &JA,
333340
UpperCmdArgs.push_back("0x10");
334341
}
335342

336-
// Set a -x flag for first part of Fortran frontend
337-
for (Arg *A : Args.filtered(options::OPT_Hx_EQ)) {
338-
A->claim();
339-
StringRef Value = A->getValue();
340-
auto XFlag = Value.split(",");
341-
UpperCmdArgs.push_back("-x");
342-
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.first));
343-
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.second));
344-
}
345-
346-
// Set a -y flag for first part of Fortran frontend
347-
for (Arg *A : Args.filtered(options::OPT_Hy_EQ)) {
348-
A->claim();
349-
StringRef Value = A->getValue();
350-
auto XFlag = Value.split(",");
351-
UpperCmdArgs.push_back("-y");
352-
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.first));
353-
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.second));
354-
}
355-
356-
// Set a -q (debug) flag for first part of Fortran frontend
357-
for (Arg *A : Args.filtered(options::OPT_Hq_EQ)) {
358-
A->claim();
359-
StringRef Value = A->getValue();
360-
auto XFlag = Value.split(",");
361-
UpperCmdArgs.push_back("-q");
362-
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.first));
363-
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.second));
364-
}
365-
366-
// Set a -qq (debug) flag for first part of Fortran frontend
367-
for (Arg *A : Args.filtered(options::OPT_Hqq_EQ)) {
368-
A->claim();
369-
StringRef Value = A->getValue();
370-
auto XFlag = Value.split(",");
371-
UpperCmdArgs.push_back("-qq");
372-
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.first));
373-
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.second));
374-
}
375-
376343
// Pass an arbitrary flag for first part of Fortran frontend
377344
for (Arg *A : Args.filtered(options::OPT_Wh_EQ)) {
378345
A->claim();
@@ -767,6 +734,46 @@ void FlangFrontend::ConstructJob(Compilation &C, const JobAction &JA,
767734
}
768735
}
769736

737+
// Set a -x flag for first part of Fortran frontend
738+
for (Arg *A : Args.filtered(options::OPT_Hx_EQ)) {
739+
A->claim();
740+
StringRef Value = A->getValue();
741+
auto XFlag = Value.split(",");
742+
UpperCmdArgs.push_back("-x");
743+
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.first));
744+
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.second));
745+
}
746+
747+
// Set a -y flag for first part of Fortran frontend
748+
for (Arg *A : Args.filtered(options::OPT_Hy_EQ)) {
749+
A->claim();
750+
StringRef Value = A->getValue();
751+
auto XFlag = Value.split(",");
752+
UpperCmdArgs.push_back("-y");
753+
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.first));
754+
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.second));
755+
}
756+
757+
// Set a -q (debug) flag for first part of Fortran frontend
758+
for (Arg *A : Args.filtered(options::OPT_Hq_EQ)) {
759+
A->claim();
760+
StringRef Value = A->getValue();
761+
auto XFlag = Value.split(",");
762+
UpperCmdArgs.push_back("-q");
763+
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.first));
764+
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.second));
765+
}
766+
767+
// Set a -qq (debug) flag for first part of Fortran frontend
768+
for (Arg *A : Args.filtered(options::OPT_Hqq_EQ)) {
769+
A->claim();
770+
StringRef Value = A->getValue();
771+
auto XFlag = Value.split(",");
772+
UpperCmdArgs.push_back("-qq");
773+
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.first));
774+
UpperCmdArgs.push_back(Args.MakeArgString(XFlag.second));
775+
}
776+
770777
const char * STBFile = Args.MakeArgString(Stem + ".stb");
771778
C.addTempFile(STBFile);
772779
UpperCmdArgs.push_back("-stbfile");

0 commit comments

Comments
 (0)