aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-07-16 00:31:23 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-07-16 00:31:23 +0000
commit1058253c364b2c98e6cecfe15d18d3562db245f4 (patch)
tree5e3734f1530a144f08fc56a2b2a9e5d4abf941ce
parent754b9fbaa13749c61393cc613eec7c79efe60ddf (diff)
Builtins/ARM: __clear_cache doesn't seem to have a consistent prototype, declare
the builtin as void __clear_cache(...) to workaround this, which appears to match what GCC does. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108487 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Basic/BuiltinsARM.def2
-rw-r--r--test/CodeGen/builtins-arm.c2
-rw-r--r--test/Sema/builtins-arm.c11
3 files changed, 13 insertions, 2 deletions
diff --git a/include/clang/Basic/BuiltinsARM.def b/include/clang/Basic/BuiltinsARM.def
index 54e4c2b208..60c59bc05b 100644
--- a/include/clang/Basic/BuiltinsARM.def
+++ b/include/clang/Basic/BuiltinsARM.def
@@ -15,7 +15,7 @@
// The format of this database matches clang/Basic/Builtins.def.
// In libgcc
-BUILTIN(__clear_cache, "vc*c*", "")
+BUILTIN(__clear_cache, "v.", "")
BUILTIN(__builtin_thread_pointer, "v*", "")
// NEON
diff --git a/test/CodeGen/builtins-arm.c b/test/CodeGen/builtins-arm.c
index 546f57a4a1..09df1ef42c 100644
--- a/test/CodeGen/builtins-arm.c
+++ b/test/CodeGen/builtins-arm.c
@@ -9,4 +9,4 @@ void f1(char *a, char *b) {
__clear_cache(a,b);
}
-// CHECK: call void @__clear_cache
+// CHECK: call {{.*}} @__clear_cache
diff --git a/test/Sema/builtins-arm.c b/test/Sema/builtins-arm.c
new file mode 100644
index 0000000000..4dd31e7240
--- /dev/null
+++ b/test/Sema/builtins-arm.c
@@ -0,0 +1,11 @@
+// RUN: %clang_cc1 -triple armv7 -fsyntax-only -verify -DTEST0 %s
+// RUN: %clang_cc1 -triple armv7 -fsyntax-only -verify -DTEST1 %s
+
+#ifdef TEST0
+void __clear_cache(char*, char*);
+#endif
+
+#ifdef TEST1
+void __clear_cache(void*, void*);
+#endif
+