r298318 - Fix parsing of htmxlintrin.h in C++ mode

Eric Christopher via cfe-commits cfe-commits at lists.llvm.org
Mon Mar 20 15:31:33 PDT 2017


Author: echristo
Date: Mon Mar 20 17:31:33 2017
New Revision: 298318

URL: http://llvm.org/viewvc/llvm-project?rev=298318&view=rev
Log:
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.

Added:
    cfe/trunk/test/Headers/htm-header.c
Modified:
    cfe/trunk/lib/Headers/htmxlintrin.h

Modified: cfe/trunk/lib/Headers/htmxlintrin.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/htmxlintrin.h?rev=298318&r1=298317&r2=298318&view=diff
==============================================================================
--- cfe/trunk/lib/Headers/htmxlintrin.h (original)
+++ cfe/trunk/lib/Headers/htmxlintrin.h Mon Mar 20 17:31:33 2017
@@ -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;

Added: cfe/trunk/test/Headers/htm-header.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/htm-header.c?rev=298318&view=auto
==============================================================================
--- cfe/trunk/test/Headers/htm-header.c (added)
+++ cfe/trunk/test/Headers/htm-header.c Mon Mar 20 17:31:33 2017
@@ -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\..*}}




More information about the cfe-commits mailing list