[ARM][Driver][Windows] Allow command-line upgrade to Armv8.
If you gave clang the options `--target=arm-pc-windows-msvc` and `-march=armv8-a+crypto` together, the crypto extension would not be enabled in the compilation, and you'd see the following warning message suggesting that the 'armv8-a' had been ignored: clang: warning: ignoring extension 'crypto' because the 'armv7-a' architecture does not support it [-Winvalid-command-line-argument] This happens because Triple::getARMCPUForArch(), for the Win32 OS, unconditionally returns "cortex-a9" (an Armv7 CPU) regardless of MArch, which overrides the architecture setting on the command line. I don't think that the combination of Windows and AArch32 _should_ unconditionally outlaw the use of the crypto extension. MSVC itself doesn't think so: you can perfectly well compile Thumb crypto code using its AArch32-targeted compiler. All the other default CPUs in the same switch statement are conditional on a particular MArch setting; this is the only one that returns a particular CPU _regardless_ of MArch. So I've fixed this one by adding a condition, so that if you ask for an architecture *above* v7, the default of Cortex-A9 no longer overrides it. Reviewed By: mstorsjo Differential Revision: https://reviews.llvm.org/D100937
Loading
Please sign in to comment