Summary:
A similar error message has been removed from the ARMTargetMachineBase
constructor in r306939. With this patch, we generate an error message
for the example below, compiled with -mcpu=cortex-m0, which does not
have ARM execution mode.
__attribute__((target("arm"))) int foo(int a, int b)
{
return a + b % a;
}
__attribute__((target("thumb"))) int bar(int a, int b)
{
return a + b % a;
}
By adding this error message to ARMBaseTargetMachine::getSubtargetImpl,
we can deal with functions that set -thumb-mode in target-features.
At the moment it seems like Clang does not have access to target-feature
specific information, so adding the error message to the frontend will
be harder.
Reviewers: echristo, richard.barton.arm, t.p.northover, rengolin, efriedma
Reviewed By: echristo, efriedma
Subscribers: efriedma, aemerson, javed.absar, kristof.beyls
Differential Revision: https://reviews.llvm.org/D35627
llvm-svn: 310486
22 lines
681 B
LLVM
22 lines
681 B
LLVM
; RUN: not llc -mtriple=armv7-windows-itanium -mcpu=cortex-a9 -o /dev/null %s 2>&1 \
|
|
; RUN: | FileCheck %s -check-prefixes=CHECK-OPTIONS,CHECK-FEATURE
|
|
|
|
; RUN: not llc -mtriple=thumb-unknown-linux -mcpu=cortex-m0 -o /dev/null %s 2>&1 \
|
|
; RUN: | FileCheck %s -check-prefix=CHECK-FEATURE
|
|
|
|
define void @foo() {
|
|
entry:
|
|
ret void
|
|
}
|
|
|
|
; CHECK-OPTIONS: Function 'foo' uses ARM instructions, but the target does not support ARM mode execution.
|
|
|
|
define void @no_thumb_mode_feature() #0 {
|
|
entry:
|
|
ret void
|
|
}
|
|
|
|
; CHECK-FEATURE: Function 'no_thumb_mode_feature' uses ARM instructions, but the target does not support ARM mode execution.
|
|
|
|
attributes #0 = { "target-features"="-thumb-mode" }
|