@@ -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