<div>ARM subtarget features are determined by parsing the target tuple string TT. (ParseARMTriple(StringRef TT) in ARMMCTargetDesc.cpp)</div><div><br></div><div>In llc, the -march setting overrides the architecture specified in -mtriple. So when you invoke:</div>

<div><br></div><div>$ llc -march arm -mtriple armv7-none-linux ...</div><div><br></div><div>ParseARMTriple() will see TT == "arm-none-linux" instead of "armv7-none-linux". As a result, the target features will be set generically. (Note that using "-march armv7" is not valid.)</div>
<div><br></div><div>This is clearly wrong, but I'm not clear on where/how this should be fixed. Does the -march substitution need to happen at all? Could it be disabled only for ARM? Should TargetTriple or -march be made more precise?</div>
<div><br></div><div>Thanks,</div><div>- pdox</div><div><br></div>