diff options
| -rw-r--r-- | clang/lib/Basic/Targets.cpp | 5 | ||||
| -rw-r--r-- | clang/test/CodeGen/arm-cortex-cpus.c | 11 |
2 files changed, 14 insertions, 2 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 94c8ea95989..b313ac44b2d 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -3832,14 +3832,15 @@ public: Features["hwdiv"] = true; Features["hwdiv-arm"] = true; Features["crc"] = true; - } else if (CPU == "cortex-r5" || CPU == "cortex-m3" || - CPU == "cortex-m4" || + } else if (CPU == "cortex-r5" || // Enable the hwdiv extension for all v8a AArch32 cores by // default. ArchName == "armv8a" || ArchName == "armv8" || ArchName == "thumbv8a" || ArchName == "thumbv8") { Features["hwdiv"] = true; Features["hwdiv-arm"] = true; + } else if (CPU == "cortex-m3" || CPU == "cortex-m4") { + Features["hwdiv"] = true; } } diff --git a/clang/test/CodeGen/arm-cortex-cpus.c b/clang/test/CodeGen/arm-cortex-cpus.c new file mode 100644 index 00000000000..d8d9830e5e0 --- /dev/null +++ b/clang/test/CodeGen/arm-cortex-cpus.c @@ -0,0 +1,11 @@ +// REQUIRES: arm-registered-target + +// Check that Cortex-M cores don't enable hwdiv-arm (and don't emit Tag_DIV_use) +// +// This target feature doesn't affect C predefines, nor the generated IR; +// only the build attributes in generated assembly and object files are affected. + +// RUN: %clang -target arm-linux-gnueabi -mcpu=cortex-m3 -S %s -o - | FileCheck %s +// RUN: %clang -target arm-linux-gnueabi -mcpu=cortex-m4 -S %s -o - | FileCheck %s +// CHECK-NOT: .eabi_attribute 44 + |

