]> granicus.if.org Git - clang/commitdiff
arm_acle: Add mappings for dbg intrinsic
authorYi Kong <Yi.Kong@arm.com>
Tue, 26 Aug 2014 12:48:11 +0000 (12:48 +0000)
committerYi Kong <Yi.Kong@arm.com>
Tue, 26 Aug 2014 12:48:11 +0000 (12:48 +0000)
This completes all ACLE hint intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216453 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Headers/arm_acle.h
test/CodeGen/arm_acle.c
test/Sema/arm_acle.c

index cc7171b6aeb5162171a480dc7312ffd36e2930b6..f7c71a6465d718ee9b54e050b5f4fbad2d86d59d 100644 (file)
@@ -66,6 +66,10 @@ static __inline__ void __attribute__((always_inline, nodebug)) __yield(void) {
 }
 #endif
 
+#if __ARM_32BIT_STATE
+#define __dbg(t) __builtin_arm_dbg(t)
+#endif
+
 /* 8.5 Swap */
 static __inline__ uint32_t __attribute__((always_inline, nodebug))
   __swp(uint32_t x, volatile uint32_t *p) {
index 01f8de649dd9b669e943daf5ade6ed0f80fbc397..0f226b516dd72c85fb678428a7a3097826c520c7 100644 (file)
@@ -62,6 +62,14 @@ void test_sevl(void) {
   __sevl();
 }
 
+#if __ARM_32BIT_STATE
+// AArch32-LABEL: test_dbg
+// AArch32: call void @llvm.arm.dbg(i32 0)
+void test_dbg(void) {
+  __dbg(0);
+}
+#endif
+
 /* 8.5 Swap */
 // ARM-LABEL: test_swp
 // AArch32: call i32 @llvm.arm.ldrex
index 2d1d68a88691c172617a26f0e1ff280ad2ef1ed0..ec0d55854eeb6be0dd9c93395fced0be9db8938f 100644 (file)
@@ -37,3 +37,12 @@ int32_t test_usat_const_diag(int32_t t, const int32_t v) {
 void test_pldx_const_diag(int32_t i) {
   __pldx(i, 0, 0, 0);  // expected-error-re {{argument to {{.*}} must be a constant integer}}
 }
+
+/*
+ * DBG intrinsic
+ * First argument for DBG intrinsic must be compile-time constant,
+ * otherwise an error should be raised.
+ */
+void test_dbg_const_diag(unsigned int t) {
+  __dbg(t);  // expected-error-re {{argument to {{.*}} must be a constant integer}}
+}