]> granicus.if.org Git - clang/commit
Fix up handling of ARM options for controlling strict alignment.
authorBob Wilson <bob.wilson@apple.com>
Tue, 29 Jul 2014 00:23:18 +0000 (00:23 +0000)
committerBob Wilson <bob.wilson@apple.com>
Tue, 29 Jul 2014 00:23:18 +0000 (00:23 +0000)
commit0f58539fef963575317aa666b3a8f3dcf0b114ed
treed436da4435793ae7425cb5f4ae6f8bd4e9718bf1
parent3bd4314719834ba3a679c549dece25c9f1835387
Fix up handling of ARM options for controlling strict alignment.

The -mstrict-align option was originally added in r167619 as a target-
independent option. It was then changed in r167623 to be implemented with an
ARM-specific backend option, even though the code remained in the
target-independent Clang::ConstructJob function. This means that if you used
the -mstrict-align option with a non-ARM target, you would still get the
-arm-strict-align option getting passed to the backend, which was harmless
but gross. The driver option was then replaced by the GCC-compatible
-m[no-]unaligned-access option (r189175) and modified to work with AArch64
(r208075). However, in the process, the help text for -mstrict-align was
incorrectly changed to show it as only being supported for AArch64. Even worse,
the logic for handling these options together with -mkernel was wrong for
AArch64, where -mkernel does not currently imply strict alignment.

This patch fixes up all of those things. Besides the obvious change to the
option help text, it moves the logic into the ARM and AArch64-specific parts
of the driver, so that the option will be correctly ignored for non-ARM
targets. <rdar://problem/17823697>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214148 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Driver/Options.td
lib/Driver/Tools.cpp
test/Driver/arm-alignment.c