summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2017-03-20 22:31:33 +0000
committerEric Christopher <echristo@gmail.com>2017-03-20 22:31:33 +0000
commit5ba576ffe6ab3c81479b29ed8e6bbf90fae8f037 (patch)
tree23150bab167777e41f101e92c06eb0001b0f5b4d /clang
parentf238902f52246b3a3affcbec0bb4593eb8619bfb (diff)
downloadbcm5719-llvm-5ba576ffe6ab3c81479b29ed8e6bbf90fae8f037.tar.gz
bcm5719-llvm-5ba576ffe6ab3c81479b29ed8e6bbf90fae8f037.zip
Fix parsing of htmxlintrin.h in C++ mode
- Fix a variable naming mismatch - Fix gcc extension pointer arithmetic on void to cast to char *. - Test that the header (and htmintrin.h) parse. llvm-svn: 298318
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Headers/htmxlintrin.h14
-rw-r--r--clang/test/Headers/htm-header.c19
2 files changed, 24 insertions, 9 deletions
diff --git a/clang/lib/Headers/htmxlintrin.h b/clang/lib/Headers/htmxlintrin.h
index 16dc7056c6b..28f7d025bb3 100644
--- a/clang/lib/Headers/htmxlintrin.h
+++ b/clang/lib/Headers/htmxlintrin.h
@@ -35,14 +35,10 @@
extern "C" {
#endif
-#define _TEXASR_PTR(TM_BUF) \
- ((texasr_t *)((TM_BUF)+0))
-#define _TEXASRU_PTR(TM_BUF) \
- ((texasru_t *)((TM_BUF)+0))
-#define _TEXASRL_PTR(TM_BUF) \
- ((texasrl_t *)((TM_BUF)+4))
-#define _TFIAR_PTR(TM_BUF) \
- ((tfiar_t *)((TM_BUF)+8))
+#define _TEXASR_PTR(TM_BUF) ((texasr_t *)((char *)(TM_BUF) + 0))
+#define _TEXASRU_PTR(TM_BUF) ((texasru_t *)((char *)(TM_BUF) + 0))
+#define _TEXASRL_PTR(TM_BUF) ((texasrl_t *)((char *)(TM_BUF) + 4))
+#define _TFIAR_PTR(TM_BUF) ((tfiar_t *)((char *)(TM_BUF) + 8))
typedef char TM_buff_type[16];
@@ -178,7 +174,7 @@ extern __inline long
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
__TM_is_conflict(void* const __TM_buff)
{
- texasru_t texasru = *_TEXASRU_PTR (TM_buff);
+ texasru_t texasru = *_TEXASRU_PTR (__TM_buff);
/* Return TEXASR bits 11 (Self-Induced Conflict) through
14 (Translation Invalidation Conflict). */
return (_TEXASRU_EXTRACT_BITS (texasru, 14, 4)) ? 1 : 0;
diff --git a/clang/test/Headers/htm-header.c b/clang/test/Headers/htm-header.c
new file mode 100644
index 00000000000..35a14983bee
--- /dev/null
+++ b/clang/test/Headers/htm-header.c
@@ -0,0 +1,19 @@
+// RUN: %clang_cc1 -triple powerpc64le-unknown-unknown -target-feature +htm -DHTM_HEADER -ffreestanding -emit-llvm -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple powerpc64le-unknown-unknown -target-feature +htm -DHTM_HEADER -ffreestanding -emit-llvm -x c++ -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple powerpc64le-unknown-unknown -target-feature +htm -DHTMXL_HEADER -ffreestanding -emit-llvm -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple powerpc64le-unknown-unknown -target-feature +htm -DHTMXL_HEADER -ffreestanding -emit-llvm -x c++ -o - %s | FileCheck %s
+
+#ifdef HTM_HEADER
+#include <htmintrin.h>
+#endif
+
+#ifdef HTMXL_HEADER
+#include <htmxlintrin.h>
+#endif
+
+// Verify that simply including the headers does not generate any code
+// (i.e. all inline routines in the header are marked "static")
+
+// CHECK: target triple = "powerpc64
+// CHECK-NEXT: {{^$}}
+// CHECK-NEXT: {{llvm\..*}}
OpenPOWER on IntegriCloud