summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorPetr Hosek <phosek@chromium.org>2019-01-25 02:42:30 +0000
committerPetr Hosek <phosek@chromium.org>2019-01-25 02:42:30 +0000
commitf16e834dabab5638bb2cf84053def23ca453a80b (patch)
treebb758dac4f2b3ff2d63bfb96f6bf99be31bd0952 /clang/test
parentca676343a9681534bca98665fa1e496fa89bcc60 (diff)
downloadbcm5719-llvm-f16e834dabab5638bb2cf84053def23ca453a80b.tar.gz
bcm5719-llvm-f16e834dabab5638bb2cf84053def23ca453a80b.zip
[AArch64] Make the test for rsr and rsr64 stricter
ACLE specifies that return type for rsr and rsr64 is uint32_t and uint64_t respectively. D56852 change the return type of rsr64 from unsigned long to unsigned long long which at least on Linux doesn't match uint64_t, but the test isn't strict enough to detect that because compiler implicitly converts unsigned long long to uint64_t, but it breaks other uses such as printf with PRIx64 type specifier. This change makes the test stricter enforcing that the return type of rsr and rsr64 builtins is what is actually specified in ACLE. Differential Revision: https://reviews.llvm.org/D57210 llvm-svn: 352156
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGen/builtins-arm64.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/clang/test/CodeGen/builtins-arm64.c b/clang/test/CodeGen/builtins-arm64.c
index 7027a6e220f..1a2cc2a77b9 100644
--- a/clang/test/CodeGen/builtins-arm64.c
+++ b/clang/test/CodeGen/builtins-arm64.c
@@ -1,4 +1,5 @@
// RUN: %clang_cc1 -triple arm64-unknown-linux -disable-O0-optnone -emit-llvm -o - %s | opt -S -mem2reg | FileCheck %s
+#include <stdint.h>
void f0(void *a, void *b) {
__clear_cache(a,b);
@@ -49,13 +50,17 @@ void prefetch() {
// CHECK: call {{.*}} @llvm.prefetch(i8* null, i32 0, i32 3, i32 0)
}
-unsigned rsr() {
+__typeof__(__builtin_arm_rsr("1:2:3:4:5")) rsr(void);
+
+uint32_t rsr() {
// CHECK: [[V0:[%A-Za-z0-9.]+]] = call i64 @llvm.read_register.i64(metadata ![[M0:[0-9]]])
// CHECK-NEXT: trunc i64 [[V0]] to i32
return __builtin_arm_rsr("1:2:3:4:5");
}
-unsigned long rsr64() {
+__typeof__(__builtin_arm_rsr64("1:2:3:4:5")) rsr64(void);
+
+uint64_t rsr64() {
// CHECK: call i64 @llvm.read_register.i64(metadata ![[M0:[0-9]]])
return __builtin_arm_rsr64("1:2:3:4:5");
}
OpenPOWER on IntegriCloud