clang-cl's /fallback option was added back in 2013 [1] as part of
bringing up clang's native Windows support.
Since then, the Windows support has become quite stable, and I'm not
aware of anyone using /fallback anymore. In Chromium we stopped using
it in 2015 [2].
While /fallback doesn't require a lot of code, it does add a bit of
complexity to the driver (for example it added a special type of Job),
and I worry about the code rotting since it's not getting updated to
handle new flags.
So, are there any objections to removing the /fallback mode? My
proposal is to put a note in the upcoming Clang 12 release, and then
delete the code after the branch point, meaning it would be gone in
Clang 13.
clang-cl's /fallback option was added back in 2013 [1] as part of
bringing up clang's native Windows support.
Since then, the Windows support has become quite stable, and I'm not
aware of anyone using /fallback anymore. In Chromium we stopped using
it in 2015 [2].
While /fallback doesn't require a lot of code, it does add a bit of
complexity to the driver (for example it added a special type of Job),
and I worry about the code rotting since it's not getting updated to
handle new flags.
So, are there any objections to removing the /fallback mode? My
proposal is to put a note in the upcoming Clang 12 release, and then
delete the code after the branch point, meaning it would be gone in
Clang 13.
Please let me know what you think.
No concerns from me, thank you for looking into it!
Although we don’t use fallback mode, we do use /ZW for WinRT extensions, and this isn’t supported by clang-cl (the corollary of this is that we don’t use clang-cl). I’m mostly just posting this as a way to say that /ZW is important for many users of cl, and without /fallback I think those users will be prevented from using clang-cl.
What currently happens when you use clang for Windows support that comes with recent versions of Visual Studio? Does it silently append /fallback on the user’s behalf? Or does it just give you an error if you try to use an unsupported option?
I just checked, and Microsoft's Visual Studio integration doesn't use
the /fallback flag.
Probably users who build with /ZW would apply that to the whole
project, which wouldn't make clang-cl /fallback any different from
using MSVC in the first place.