diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index a0002371da2f1..03fdd92e00e31 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5109,6 +5109,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, const llvm::Triple *AuxTriple = (IsCuda || IsHIP) ? TC.getAuxTriple() : nullptr; bool IsWindowsMSVC = RawTriple.isWindowsMSVCEnvironment(); + bool IsUEFI = RawTriple.isUEFI(); bool IsIAMCU = RawTriple.isOSIAMCU(); // Adjust IsWindowsXYZ for CUDA/HIP/SYCL compilations. Even when compiling in @@ -7252,7 +7253,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // -fms-extensions=0 is default. if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions, - IsWindowsMSVC)) + IsWindowsMSVC || IsUEFI)) CmdArgs.push_back("-fms-extensions"); // -fms-compatibility=0 is default. diff --git a/clang/test/Driver/uefi-constructed-args.c b/clang/test/Driver/uefi-constructed-args.c index e90857bb6fb5b..3cc5abe697453 100644 --- a/clang/test/Driver/uefi-constructed-args.c +++ b/clang/test/Driver/uefi-constructed-args.c @@ -4,6 +4,7 @@ // CHECK-SAME: "-triple" "x86_64-unknown-uefi" // CHECK-SAME: "-mrelocation-model" "pic" "-pic-level" "2" // CHECK-SAME: "-mframe-pointer=all" +// CHECK-SAME: "-fms-extensions" // CHECK-NEXT: "-nologo" // CHECK-SAME: "-subsystem:efi_application" // CHECK-SAME: "-entry:EfiMain"