[ARM] Emit error when ARM exec mode is not available.
authorFlorian Hahn <florian.hahn@arm.com>
Wed, 9 Aug 2017 15:39:10 +0000 (15:39 +0000)
committerFlorian Hahn <florian.hahn@arm.com>
Wed, 9 Aug 2017 15:39:10 +0000 (15:39 +0000)
commitd68bc7ae8dffe036be360d5fefa6890ef4e34caf
treee314fba02fb68e3bdcdecbc280deca5574b5a285
parent3638655325839ade51b6c7b3a4c48dd0ae772128
[ARM] Emit error when ARM exec mode is not available.

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
llvm/lib/Target/ARM/ARMSubtarget.cpp
llvm/lib/Target/ARM/ARMTargetMachine.cpp
llvm/test/CodeGen/ARM/no-arm-mode.ll [new file with mode: 0644]