[PATCH] D31034: [X86][AVX512][Clang][Intrinsics] Adding missing intrinsics to Clang .

2017-03-19 Thread Igor Breger via Phabricator via cfe-commits
igorb updated this revision to Diff 92263.
igorb marked an inline comment as done.
igorb added a comment.

Thanks for the comments.


Repository:
  rL LLVM

https://reviews.llvm.org/D31034

Files:
  lib/Headers/avx512fintrin.h
  test/CodeGen/avx512f-builtins.c

Index: test/CodeGen/avx512f-builtins.c
===
--- test/CodeGen/avx512f-builtins.c
+++ test/CodeGen/avx512f-builtins.c
@@ -7712,6 +7712,133 @@
   return _mm512_mask_set1_epi32 ( __O, __M, __A);
 }
 
+__m512i test_mm512_set_epi8(char e63, char e62, char e61, char e60, char e59,
+char e58, char e57, char e56, char e55, char e54, char e53, char e52,
+char e51, char e50, char e49, char e48, char e47, char e46, char e45,
+char e44, char e43, char e42, char e41, char e40, char e39, char e38,
+char e37, char e36, char e35, char e34, char e33, char e32, char e31,
+char e30, char e29, char e28, char e27, char e26, char e25, char e24,
+char e23, char e22, char e21, char e20, char e19, char e18, char e17,
+char e16, char e15, char e14, char e13, char e12, char e11, char e10,
+char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2,
+char e1, char e0) {
+
+  //CHECK-LABEL: @test_mm512_set_epi8
+  //CHECK: load i8, i8* %e63.addr, align 1
+   //CHECK: load i8, i8* %e62.addr, align 1
+   //CHECK: load i8, i8* %e61.addr, align 1
+   //CHECK: load i8, i8* %e60.addr, align 1
+   //CHECK: load i8, i8* %e59.addr, align 1
+   //CHECK: load i8, i8* %e58.addr, align 1
+   //CHECK: load i8, i8* %e57.addr, align 1
+   //CHECK: load i8, i8* %e56.addr, align 1
+   //CHECK: load i8, i8* %e55.addr, align 1
+   //CHECK: load i8, i8* %e54.addr, align 1
+   //CHECK: load i8, i8* %e53.addr, align 1
+   //CHECK: load i8, i8* %e52.addr, align 1
+   //CHECK: load i8, i8* %e51.addr, align 1
+   //CHECK: load i8, i8* %e50.addr, align 1
+   //CHECK: load i8, i8* %e49.addr, align 1
+   //CHECK: load i8, i8* %e48.addr, align 1
+   //CHECK: load i8, i8* %e47.addr, align 1
+   //CHECK: load i8, i8* %e46.addr, align 1
+   //CHECK: load i8, i8* %e45.addr, align 1
+   //CHECK: load i8, i8* %e44.addr, align 1
+   //CHECK: load i8, i8* %e43.addr, align 1
+   //CHECK: load i8, i8* %e42.addr, align 1
+   //CHECK: load i8, i8* %e41.addr, align 1
+   //CHECK: load i8, i8* %e40.addr, align 1
+   //CHECK: load i8, i8* %e39.addr, align 1
+   //CHECK: load i8, i8* %e38.addr, align 1
+   //CHECK: load i8, i8* %e37.addr, align 1
+   //CHECK: load i8, i8* %e36.addr, align 1
+   //CHECK: load i8, i8* %e35.addr, align 1
+   //CHECK: load i8, i8* %e34.addr, align 1
+   //CHECK: load i8, i8* %e33.addr, align 1
+   //CHECK: load i8, i8* %e32.addr, align 1
+   //CHECK: load i8, i8* %e31.addr, align 1
+   //CHECK: load i8, i8* %e30.addr, align 1
+   //CHECK: load i8, i8* %e29.addr, align 1
+   //CHECK: load i8, i8* %e28.addr, align 1
+   //CHECK: load i8, i8* %e27.addr, align 1
+   //CHECK: load i8, i8* %e26.addr, align 1
+   //CHECK: load i8, i8* %e25.addr, align 1
+   //CHECK: load i8, i8* %e24.addr, align 1
+   //CHECK: load i8, i8* %e23.addr, align 1
+   //CHECK: load i8, i8* %e22.addr, align 1
+   //CHECK: load i8, i8* %e21.addr, align 1
+   //CHECK: load i8, i8* %e20.addr, align 1
+   //CHECK: load i8, i8* %e19.addr, align 1
+   //CHECK: load i8, i8* %e18.addr, align 1
+   //CHECK: load i8, i8* %e17.addr, align 1
+   //CHECK: load i8, i8* %e16.addr, align 1
+   //CHECK: load i8, i8* %e15.addr, align 1
+   //CHECK: load i8, i8* %e14.addr, align 1
+   //CHECK: load i8, i8* %e13.addr, align 1
+   //CHECK: load i8, i8* %e12.addr, align 1
+   //CHECK: load i8, i8* %e11.addr, align 1
+   //CHECK: load i8, i8* %e10.addr, align 1
+   //CHECK: load i8, i8* %e9.addr, align 1
+   //CHECK: load i8, i8* %e8.addr, align 1
+   //CHECK: load i8, i8* %e7.addr, align 1
+   //CHECK: load i8, i8* %e6.addr, align 1
+   //CHECK: load i8, i8* %e5.addr, align 1
+   //CHECK: load i8, i8* %e4.addr, align 1
+   //CHECK: load i8, i8* %e3.addr, align 1
+   //CHECK: load i8, i8* %e2.addr, align 1
+   //CHECK: load i8, i8* %e1.addr, align 1
+   //CHECK: load i8, i8* %e0.addr, align 1
+  return _mm512_set_epi8(e63, e62, e61, e60, e59, e58, e57, e56, e55, e54,
+  e53, e52, e51, e50, e49, e48,e47, e46, e45, e44, e43, e42, e41, e40,
+  e39, e38, e37, e36, e35, e34, e33, e32,e31, e30, e29, e28, e27, e26,
+  e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12,
+  e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0);
+}
+
+__m512i test_mm512_set_epi16(short e31, short e30, short e29, short e28,
+short e27, short e26, short e25, short e24, short e23, short e22,
+short e21, short e20, short e19, short e18, short e17,
+short e16, short e15, short e14, short e13, short e12,
+short e11, short e10, short e9, short e8, short e7,
+short e6, short e5, short e4, short e3, short e2, short e1, short e0) {
+  //CHECK-LABEL: @test_mm512_set_epi16
+  //CHECK: insertelement{{.*}}i32 0
+  //CHECK: insert

[PATCH] D31034: [X86][AVX512][Clang][Intrinsics] Adding missing intrinsics to Clang .

2017-03-19 Thread Craig Topper via Phabricator via cfe-commits
craig.topper accepted this revision.
craig.topper added a comment.
This revision is now accepted and ready to land.

LGTM


Repository:
  rL LLVM

https://reviews.llvm.org/D31034



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r298208 - [X86][AVX512][Clang][Intrinsics] Adding missing intrinsics to Clang .

2017-03-19 Thread Igor Breger via cfe-commits
Author: ibreger
Date: Sun Mar 19 03:27:16 2017
New Revision: 298208

URL: http://llvm.org/viewvc/llvm-project?rev=298208&view=rev
Log:
[X86][AVX512][Clang][Intrinsics] Adding missing intrinsics to Clang .

Summary:
Adding missing intrinsics :
_mm512_set_epi16,
_mm512_set_epi8,
_mm512_permutevar_epi32
_mm512_mask_permutevar_epi32

Reviewers: zvi, guyblank, eladcohen, craig.topper

Reviewed By: craig.topper

Subscribers: craig.topper, cfe-commits

Differential Revision: https://reviews.llvm.org/D31034

Modified:
cfe/trunk/lib/Headers/avx512fintrin.h
cfe/trunk/test/CodeGen/avx512f-builtins.c

Modified: cfe/trunk/lib/Headers/avx512fintrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512fintrin.h?rev=298208&r1=298207&r2=298208&view=diff
==
--- cfe/trunk/lib/Headers/avx512fintrin.h (original)
+++ cfe/trunk/lib/Headers/avx512fintrin.h Sun Mar 19 03:27:16 2017
@@ -8848,6 +8848,8 @@ _mm512_permutexvar_epi32 (__m512i __X, _
  (__mmask16) -1);
 }
 
+#define _mm512_permutevar_epi32 _mm512_permutexvar_epi32
+
 static __inline__ __m512i __DEFAULT_FN_ATTRS
 _mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
  __m512i __Y)
@@ -8858,6 +8860,8 @@ _mm512_mask_permutexvar_epi32 (__m512i _
  __M);
 }
 
+#define _mm512_mask_permutevar_epi32 _mm512_mask_permutexvar_epi32
+
 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
 _mm512_kand (__mmask16 __A, __mmask16 __B)
 {
@@ -9625,6 +9629,45 @@ _mm512_mask_set1_epi64 (__m512i __O, __m
 }
 #endif
 
+static  __inline __m512i __DEFAULT_FN_ATTRS
+_mm512_set_epi8 (char __e63, char __e62, char __e61, char __e60, char __e59,
+char __e58, char __e57, char __e56, char __e55, char __e54, char __e53,
+char __e52, char __e51, char __e50, char __e49, char __e48, char __e47,
+char __e46, char __e45, char __e44, char __e43, char __e42, char __e41,
+char __e40, char __e39, char __e38, char __e37, char __e36, char __e35,
+char __e34, char __e33, char __e32, char __e31, char __e30, char __e29,
+char __e28, char __e27, char __e26, char __e25, char __e24, char __e23,
+char __e22, char __e21, char __e20, char __e19, char __e18, char __e17,
+char __e16, char __e15, char __e14, char __e13, char __e12, char __e11,
+char __e10, char __e9, char __e8, char __e7, char __e6, char __e5,
+char __e4, char __e3, char __e2, char __e1, char __e0) {
+
+  return __extension__ (__m512i)(__v64qi)
+{__e0, __e1, __e2, __e3, __e4, __e5, __e6, __e7,
+ __e8, __e9, __e10, __e11, __e12, __e13, __e14, __e15,
+ __e16, __e17, __e18, __e19, __e20, __e21, __e22, __e23,
+ __e24, __e25, __e26, __e27, __e28, __e29, __e30, __e31,
+ __e32, __e33, __e34, __e35, __e36, __e37, __e38, __e39,
+ __e40, __e41, __e42, __e43, __e44, __e45, __e46, __e47,
+ __e48, __e49, __e50, __e51, __e52, __e53, __e54, __e55,
+ __e56, __e57, __e58, __e59, __e60, __e61, __e62, __e63};
+}
+
+static  __inline __m512i __DEFAULT_FN_ATTRS
+_mm512_set_epi16(short __e31, short __e30, short __e29, short __e28,
+short __e27, short __e26, short __e25, short __e24, short __e23,
+short __e22, short __e21, short __e20, short __e19, short __e18,
+short __e17, short __e16, short __e15, short __e14, short __e13,
+short __e12, short __e11, short __e10, short __e9, short __e8,
+short __e7, short __e6, short __e5, short __e4, short __e3,
+short __e2, short __e1, short __e0) {
+  return __extension__ (__m512i)(__v32hi)
+{__e0, __e1, __e2, __e3, __e4, __e5, __e6, __e7,
+ __e8, __e9, __e10, __e11, __e12, __e13, __e14, __e15,
+ __e16, __e17, __e18, __e19, __e20, __e21, __e22, __e23,
+ __e24, __e25, __e26, __e27, __e28, __e29, __e30, __e31 };
+}
+
 static __inline __m512i __DEFAULT_FN_ATTRS
 _mm512_set_epi32 (int __A, int __B, int __C, int __D,
  int __E, int __F, int __G, int __H,

Modified: cfe/trunk/test/CodeGen/avx512f-builtins.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512f-builtins.c?rev=298208&r1=298207&r2=298208&view=diff
==
--- cfe/trunk/test/CodeGen/avx512f-builtins.c (original)
+++ cfe/trunk/test/CodeGen/avx512f-builtins.c Sun Mar 19 03:27:16 2017
@@ -7712,6 +7712,133 @@ __m512i test_mm512_mask_set1_epi32 (__m5
   return _mm512_mask_set1_epi32 ( __O, __M, __A);
 }
 
+__m512i test_mm512_set_epi8(char e63, char e62, char e61, char e60, char e59,
+char e58, char e57, char e56, char e55, char e54, char e53, char e52,
+char e51, char e50, char e49, char e48, char e47, char e46, char e45,
+char e44, char e43, char e42, char e41, char e40, char e39, char e38,
+char e37, char e36, char e35, char e34, char e33, char e32, char e31,
+char e30, char e29, char e28, char e27, char e26, char e25, char e24,
+char e23, char e22, char e21, char e20, char e19, char e18, ch

[PATCH] D31034: [X86][AVX512][Clang][Intrinsics] Adding missing intrinsics to Clang .

2017-03-19 Thread Phabricator via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL298208: [X86][AVX512][Clang][Intrinsics] Adding missing 
intrinsics to Clang . (authored by ibreger).

Changed prior to commit:
  https://reviews.llvm.org/D31034?vs=92263&id=92266#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D31034

Files:
  cfe/trunk/lib/Headers/avx512fintrin.h
  cfe/trunk/test/CodeGen/avx512f-builtins.c

Index: cfe/trunk/test/CodeGen/avx512f-builtins.c
===
--- cfe/trunk/test/CodeGen/avx512f-builtins.c
+++ cfe/trunk/test/CodeGen/avx512f-builtins.c
@@ -7712,6 +7712,133 @@
   return _mm512_mask_set1_epi32 ( __O, __M, __A);
 }
 
+__m512i test_mm512_set_epi8(char e63, char e62, char e61, char e60, char e59,
+char e58, char e57, char e56, char e55, char e54, char e53, char e52,
+char e51, char e50, char e49, char e48, char e47, char e46, char e45,
+char e44, char e43, char e42, char e41, char e40, char e39, char e38,
+char e37, char e36, char e35, char e34, char e33, char e32, char e31,
+char e30, char e29, char e28, char e27, char e26, char e25, char e24,
+char e23, char e22, char e21, char e20, char e19, char e18, char e17,
+char e16, char e15, char e14, char e13, char e12, char e11, char e10,
+char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2,
+char e1, char e0) {
+
+  //CHECK-LABEL: @test_mm512_set_epi8
+  //CHECK: load i8, i8* %e63.addr, align 1
+   //CHECK: load i8, i8* %e62.addr, align 1
+   //CHECK: load i8, i8* %e61.addr, align 1
+   //CHECK: load i8, i8* %e60.addr, align 1
+   //CHECK: load i8, i8* %e59.addr, align 1
+   //CHECK: load i8, i8* %e58.addr, align 1
+   //CHECK: load i8, i8* %e57.addr, align 1
+   //CHECK: load i8, i8* %e56.addr, align 1
+   //CHECK: load i8, i8* %e55.addr, align 1
+   //CHECK: load i8, i8* %e54.addr, align 1
+   //CHECK: load i8, i8* %e53.addr, align 1
+   //CHECK: load i8, i8* %e52.addr, align 1
+   //CHECK: load i8, i8* %e51.addr, align 1
+   //CHECK: load i8, i8* %e50.addr, align 1
+   //CHECK: load i8, i8* %e49.addr, align 1
+   //CHECK: load i8, i8* %e48.addr, align 1
+   //CHECK: load i8, i8* %e47.addr, align 1
+   //CHECK: load i8, i8* %e46.addr, align 1
+   //CHECK: load i8, i8* %e45.addr, align 1
+   //CHECK: load i8, i8* %e44.addr, align 1
+   //CHECK: load i8, i8* %e43.addr, align 1
+   //CHECK: load i8, i8* %e42.addr, align 1
+   //CHECK: load i8, i8* %e41.addr, align 1
+   //CHECK: load i8, i8* %e40.addr, align 1
+   //CHECK: load i8, i8* %e39.addr, align 1
+   //CHECK: load i8, i8* %e38.addr, align 1
+   //CHECK: load i8, i8* %e37.addr, align 1
+   //CHECK: load i8, i8* %e36.addr, align 1
+   //CHECK: load i8, i8* %e35.addr, align 1
+   //CHECK: load i8, i8* %e34.addr, align 1
+   //CHECK: load i8, i8* %e33.addr, align 1
+   //CHECK: load i8, i8* %e32.addr, align 1
+   //CHECK: load i8, i8* %e31.addr, align 1
+   //CHECK: load i8, i8* %e30.addr, align 1
+   //CHECK: load i8, i8* %e29.addr, align 1
+   //CHECK: load i8, i8* %e28.addr, align 1
+   //CHECK: load i8, i8* %e27.addr, align 1
+   //CHECK: load i8, i8* %e26.addr, align 1
+   //CHECK: load i8, i8* %e25.addr, align 1
+   //CHECK: load i8, i8* %e24.addr, align 1
+   //CHECK: load i8, i8* %e23.addr, align 1
+   //CHECK: load i8, i8* %e22.addr, align 1
+   //CHECK: load i8, i8* %e21.addr, align 1
+   //CHECK: load i8, i8* %e20.addr, align 1
+   //CHECK: load i8, i8* %e19.addr, align 1
+   //CHECK: load i8, i8* %e18.addr, align 1
+   //CHECK: load i8, i8* %e17.addr, align 1
+   //CHECK: load i8, i8* %e16.addr, align 1
+   //CHECK: load i8, i8* %e15.addr, align 1
+   //CHECK: load i8, i8* %e14.addr, align 1
+   //CHECK: load i8, i8* %e13.addr, align 1
+   //CHECK: load i8, i8* %e12.addr, align 1
+   //CHECK: load i8, i8* %e11.addr, align 1
+   //CHECK: load i8, i8* %e10.addr, align 1
+   //CHECK: load i8, i8* %e9.addr, align 1
+   //CHECK: load i8, i8* %e8.addr, align 1
+   //CHECK: load i8, i8* %e7.addr, align 1
+   //CHECK: load i8, i8* %e6.addr, align 1
+   //CHECK: load i8, i8* %e5.addr, align 1
+   //CHECK: load i8, i8* %e4.addr, align 1
+   //CHECK: load i8, i8* %e3.addr, align 1
+   //CHECK: load i8, i8* %e2.addr, align 1
+   //CHECK: load i8, i8* %e1.addr, align 1
+   //CHECK: load i8, i8* %e0.addr, align 1
+  return _mm512_set_epi8(e63, e62, e61, e60, e59, e58, e57, e56, e55, e54,
+  e53, e52, e51, e50, e49, e48,e47, e46, e45, e44, e43, e42, e41, e40,
+  e39, e38, e37, e36, e35, e34, e33, e32,e31, e30, e29, e28, e27, e26,
+  e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12,
+  e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0);
+}
+
+__m512i test_mm512_set_epi16(short e31, short e30, short e29, short e28,
+short e27, short e26, short e25, short e24, short e23, short e22,
+short e21, short e20, short e19, short e18, short e17,
+short e16, short e15, short e14, short e13, short e12,
+short e11, short e10, short e9

[PATCH] D29599: Clang Changes for alloc_align

2017-03-19 Thread Marina Yatsina via Phabricator via cfe-commits
myatsina added inline comments.



Comment at: test/CodeGen/alloc-align-attr.c:19
+}
+// Condition where test2 param needs casting.
+__INT32_TYPE__ test2(__SIZE_TYPE__ a) {

Where exactly do we see this test2 param casting?
I think you have a missing check before the m1 call


https://reviews.llvm.org/D29599



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31126: Do not run tests for crash recovery if libstdc++ safe mode is enabled

2017-03-19 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff created this revision.

If expensive checks are enabled, safe mode of libstdc++ is enabled too.
In this mode the library uses more complex data that allow additional
checks, for instance, a container may keep list of iterators that points
to it. If a code crashes it can leave these complex library objects in
inconsistent state. It occurs in a few tests that check error recovery
if compiler crashes. These test hang in expensive check mode, as the
library tries to synchronize access to the iterators pointing to some
container, but corresponding mutex remains locked after the crash.

This fix marks these tests as unsupported if clang is built with
libstdc++ safe mode enabled.


https://reviews.llvm.org/D31126

Files:
  test/Index/crash-recovery-code-complete.c
  test/Index/crash-recovery-modules.m
  test/Index/crash-recovery-reparse.c
  test/Index/crash-recovery.c
  test/lit.cfg


Index: test/lit.cfg
===
--- test/lit.cfg
+++ test/lit.cfg
@@ -437,15 +437,17 @@
 if platform.system() not in ['Windows']:
 config.available_features.add('can-remove-opened-file')
 
-# Returns set of available features, registered-target(s) and asserts.
+# Returns set of available features, registered-target(s), asserts and
+# compile definitions.
 def get_llvm_config_props():
 set_of_features = set()
 
 cmd = subprocess.Popen(
 [
 os.path.join(llvm_tools_dir, 'llvm-config'),
 '--assertion-mode',
 '--targets-built',
+'--cxxflags'
 ],
 stdout=subprocess.PIPE,
 env=config.environment
@@ -460,6 +462,11 @@
 for arch in cmd.stdout.readline().decode('ascii').split():
 set_of_features.add(arch.lower() + '-registered-target')
 
+# 3rd line contains compile definitions, search it to define if
+# libstdc++ safe mode is set.
+if re.search(r'-D_GLIBCXX_DEBUG\b', cmd.stdout.readline().decode('ascii')):
+set_of_features.add('libstdcxx-safe-mode')
+
 return set_of_features
 
 config.available_features.update(get_llvm_config_props())
Index: test/Index/crash-recovery.c
===
--- test/Index/crash-recovery.c
+++ test/Index/crash-recovery.c
@@ -4,5 +4,6 @@
 // RUN: env LIBCLANG_DISABLE_CRASH_RECOVERY=1 not --crash c-index-test 
-test-load-source all %s
 //
 // REQUIRES: crash-recovery
+// UNSUPPORTED: libstdcxx-safe-mode
 
 #pragma clang __debug crash
Index: test/Index/crash-recovery-reparse.c
===
--- test/Index/crash-recovery-reparse.c
+++ test/Index/crash-recovery-reparse.c
@@ -7,5 +7,6 @@
 // CHECK-REPARSE-SOURCE-CRASH: Unable to reparse translation unit
 //
 // REQUIRES: crash-recovery
+// UNSUPPORTED: libstdcxx-safe-mode
 
 #warning parsing original file
Index: test/Index/crash-recovery-modules.m
===
--- test/Index/crash-recovery-modules.m
+++ test/Index/crash-recovery-modules.m
@@ -4,14 +4,15 @@
 // Parse the file, such that building the module will cause Clang to crash.
 // RUN: not env CINDEXTEST_FAILONERROR=1 c-index-test -test-load-source all 
-fmodules -fmodules-cache-path=%t -Xclang -fdisable-module-hash -I 
%S/Inputs/Headers -DCRASH %s > /dev/null 2> %t.err
 // RUN: FileCheck < %t.err -check-prefix=CHECK-CRASH %s
-// CHECK-CRASH: crash-recovery-modules.m:16:9:{16:2-16:14}: fatal error: could 
not build module 'Crash'
+// CHECK-CRASH: crash-recovery-modules.m:17:9:{17:2-17:14}: fatal error: could 
not build module 'Crash'
 
 // Parse the file again, without crashing, to make sure that
 // subsequent parses do the right thing.
 // RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -test-load-source all 
-fmodules -fmodules-cache-path=%t -Xclang -fdisable-module-hash -I 
%S/Inputs/Headers %s > /dev/null
 
 // REQUIRES: crash-recovery
 // REQUIRES: shell
+// UNSUPPORTED: libstdcxx-safe-mode
 
 @import Crash;
 
Index: test/Index/crash-recovery-code-complete.c
===
--- test/Index/crash-recovery-code-complete.c
+++ test/Index/crash-recovery-code-complete.c
@@ -10,5 +10,6 @@
 
 // FIXME: Please investigate abnormal path in MemoryBuffer.
 // REQUIRES: can-remove-opened-file
+// UNSUPPORTED: libstdcxx-safe-mode
 
 #warning parsing original file


Index: test/lit.cfg
===
--- test/lit.cfg
+++ test/lit.cfg
@@ -437,15 +437,17 @@
 if platform.system() not in ['Windows']:
 config.available_features.add('can-remove-opened-file')
 
-# Returns set of available features, registered-target(s) and asserts.
+# Returns set of available features, registered-target(s), asserts and
+# compile definitions.
 def get_llvm_config_props():
 set_of_features = set()
 
 cmd = subprocess.Popen(
 [
 os.path.join(llvm_tools_dir, 'llvm-co

r298215 - Cleaning up the IdentifierResolver::iterator class a bit; NFC.

2017-03-19 Thread Aaron Ballman via cfe-commits
Author: aaronballman
Date: Sun Mar 19 10:15:28 2017
New Revision: 298215

URL: http://llvm.org/viewvc/llvm-project?rev=298215&view=rev
Log:
Cleaning up the IdentifierResolver::iterator class a bit; NFC.

The comment about there being three different forms that Ptr represents was 
stale. Also, the opaque value does not need to be exposed (these functions are 
unused).

Modified:
cfe/trunk/include/clang/Sema/IdentifierResolver.h

Modified: cfe/trunk/include/clang/Sema/IdentifierResolver.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/IdentifierResolver.h?rev=298215&r1=298214&r2=298215&view=diff
==
--- cfe/trunk/include/clang/Sema/IdentifierResolver.h (original)
+++ cfe/trunk/include/clang/Sema/IdentifierResolver.h Sun Mar 19 10:15:28 2017
@@ -73,12 +73,10 @@ public:
 typedef std::input_iterator_tag iterator_category;
 typedef std::ptrdiff_t  difference_type;
 
-/// Ptr - There are 3 forms that 'Ptr' represents:
+/// Ptr - There are 2 forms that 'Ptr' represents:
 /// 1) A single NamedDecl. (Ptr & 0x1 == 0)
 /// 2) A IdDeclInfo::DeclsTy::iterator that traverses only the decls of the
-///same declaration context. (Ptr & 0x3 == 0x1)
-/// 3) A IdDeclInfo::DeclsTy::iterator that traverses the decls of parent
-///declaration contexts too. (Ptr & 0x3 == 0x3)
+///same declaration context. (Ptr & 0x1 == 0x1)
 uintptr_t Ptr;
 typedef IdDeclInfo::DeclsTy::iterator BaseIter;
 
@@ -97,7 +95,7 @@ public:
 
 BaseIter getIterator() const {
   assert(isIterator() && "Ptr not an iterator!");
-  return reinterpret_cast(Ptr & ~0x3);
+  return reinterpret_cast(Ptr & ~0x1);
 }
 
 friend class IdentifierResolver;
@@ -128,14 +126,6 @@ public:
 incrementSlowCase();
   return *this;
 }
-
-uintptr_t getAsOpaqueValue() const { return Ptr; }
-
-static iterator getFromOpaqueValue(uintptr_t P) {
-  iterator Result;
-  Result.Ptr = P;
-  return Result;
-}
   };
 
   /// begin - Returns an iterator for decls with the name 'Name'.


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D24886: Add [[clang::suppress(rule, ...)]] attribute

2017-03-19 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a comment.

I'd also like to see some tests in Misc that confirm the attribute is being 
attached to the appropriate AST nodes for declarations, statements, and at 
namespace scope.




Comment at: include/clang/Basic/Attr.td:1527
+def Suppress : StmtAttr {
+  let Spellings = [CXX11<"clang", "suppress">, CXX11<"gsl", "suppress">];
+  let Args = [VariadicStringArgument<"DiagnosticIdentifiers">];

Given that this is only intended to be used with the C++ Core Guidelines, I 
think we should drop the `clang::suppress` spelling for this for right now. If 
we decide to expand the scope of this attribute to include more suppression 
scenarios in the future, we can always bring it back.



Comment at: include/clang/Basic/AttrDocs.td:2730
+The ``[[clang::suppress]]`` and ``[[gsl::suppress]]`` attributes can be used
+to suppress specific clang-tidy warnings. The ``[[gsl::suppress]]`` is an
+alias of ``[[clang::suppress]]`` which is intended to be used for suppressing

missing the word "attribute" before "is".



Comment at: include/clang/Basic/AttrDocs.td:2733
+rules of the C++ Core Guidelines_ in a portable way. The attributes can be
+attached to declarations, statements, and on namespace scope.
+

s/on/at.



Comment at: lib/Sema/SemaDeclAttr.cpp:3851
+
+Rules.push_back(RuleName);
+  }

aaron.ballman wrote:
> Should we diagnose if asked to suppress a diagnostic that we don't support? 
> e.g., someone does `[[clang::suppress("this does not exist")]]`
> 
> On the one hand, we want to be forwards-compatible, but on the other hand, I 
> can easily see typos in long string literals. So perhaps we may want to have 
> a diagnostic based on some heuristic. e.g., we diagnose if the spelling is 
> slightly off and we have viable options which we can use typo correction to 
> issue a fixit, or if it's way off base, we silently eat it under the 
> assumption it's a forwards compatibility thing?
I think this needs a FIXME comment. We should probably warn the user if the 
rule name is unknown, but that involves a tricky layering issue since 
clang-tidy checks aren't trivial to expose to the Sema layer. 



Comment at: lib/Sema/SemaDeclAttr.cpp:4085
+StringRef RuleName;
+SourceLocation LiteralLoc;
+

You can get rid of `LiteralLock` and just pass `nullptr`.



Comment at: lib/Sema/SemaStmtAttr.cpp:72
+A.getAttributeSpellingListIndex());
+  return ::new (S.Context) auto(Attr);
+}

aaron.ballman wrote:
> Please construct this directly instead of relying on a copy constructor. 
> Also, same comments about typos apply here as above.
Same comments about the typo FIXME applies here as well. Also, you can get rid 
of `LiteralLock` and just pass `nullptr`.


https://reviews.llvm.org/D24886



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31128: Rename the safety module to be hicpp

2017-03-19 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman created this revision.
Herald added a subscriber: mgorny.

This module is intended to comply with the High-Integrity C++ coding standard 
by PRQA, so we should be explicit about that in the name of the module and the 
checks. This patch looks larger than it really is. It:

- Renames the safety module to hicpp
- Renames all the bits and pieces that said "safety" to instead say "hicpp", 
such as check names, module name, documentation, etc.
- Adds a LICENSE.TXT file, modeled after how we handled the CERT licensing.
- I updated the link in the hicpp-no-assembler documentation to point to the 
correct rule in the coding standard.
- As a drive by, I fixed the ordering in a cmake file to be alphabetical 
instead of a hodge podge.

I chose the name hicpp because it's easier on the eyes than hic++ (think: 
hic++-no-assembler), it's consistent with how we treated the C++ Core 
Guidelines (cppcoreguidelines), and the name is recognizable via at least one 
popular search engine (the first result for hicpp goes exactly where we'd like 
it to go).


https://reviews.llvm.org/D31128

Files:
  LICENSE.TXT
  clang-tidy/CMakeLists.txt
  clang-tidy/hicpp/CMakeLists.txt
  clang-tidy/hicpp/HICPPTidyModule.cpp
  clang-tidy/hicpp/LICENSE.TXT
  clang-tidy/hicpp/NoAssemblerCheck.cpp
  clang-tidy/hicpp/NoAssemblerCheck.h
  clang-tidy/safety/CMakeLists.txt
  clang-tidy/safety/NoAssemblerCheck.cpp
  clang-tidy/safety/NoAssemblerCheck.h
  clang-tidy/safety/SafetyTidyModule.cpp
  clang-tidy/tool/CMakeLists.txt
  clang-tidy/tool/ClangTidyMain.cpp
  docs/clang-tidy/checks/hicpp-no-assembler.rst
  docs/clang-tidy/checks/list.rst
  docs/clang-tidy/checks/safety-no-assembler.rst
  test/clang-tidy/hicpp-no-assembler.cpp
  test/clang-tidy/safety-no-assembler.cpp

Index: test/clang-tidy/safety-no-assembler.cpp
===
--- test/clang-tidy/safety-no-assembler.cpp
+++ test/clang-tidy/safety-no-assembler.cpp
@@ -1,13 +0,0 @@
-// RUN: %check_clang_tidy %s safety-no-assembler %t
-
-__asm__(".symver foo, bar@v");
-// CHECK-MESSAGES: :[[@LINE-1]]:1: warning: do not use inline assembler in safety-critical code [safety-no-assembler]
-
-static int s asm("spam");
-// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: do not use inline assembler in safety-critical code [safety-no-assembler]
-
-void f() {
-  __asm("mov al, 2");
-  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not use inline assembler in safety-critical code [safety-no-assembler]
-}
-
Index: test/clang-tidy/hicpp-no-assembler.cpp
===
--- test/clang-tidy/hicpp-no-assembler.cpp
+++ test/clang-tidy/hicpp-no-assembler.cpp
@@ -0,0 +1,12 @@
+// RUN: %check_clang_tidy %s hicpp-no-assembler %t
+
+__asm__(".symver foo, bar@v");
+// CHECK-MESSAGES: :[[@LINE-1]]:1: warning: do not use inline assembler in safety-critical code [hicpp-no-assembler]
+
+static int s asm("spam");
+// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: do not use inline assembler in safety-critical code [hicpp-no-assembler]
+
+void f() {
+  __asm("mov al, 2");
+  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not use inline assembler in safety-critical code [hicpp-no-assembler]
+}
Index: LICENSE.TXT
===
--- LICENSE.TXT
+++ LICENSE.TXT
@@ -60,3 +60,4 @@
 Program Directory
 --- -
 clang-tidy  clang-tidy/cert
+clang-tidy  clang-tidy/hicpp
Index: docs/clang-tidy/checks/safety-no-assembler.rst
===
--- docs/clang-tidy/checks/safety-no-assembler.rst
+++ docs/clang-tidy/checks/safety-no-assembler.rst
@@ -1,10 +0,0 @@
-.. title:: clang-tidy - safety-no-assembler
-
-safety-no-assembler
-===
-
-Check for assembler statements. No fix is offered.
-
-Inline assembler is forbidden by safety-critical C++ standards like `High
-Intergrity C++ `_ as it restricts the
-portability of code.
Index: docs/clang-tidy/checks/list.rst
===
--- docs/clang-tidy/checks/list.rst
+++ docs/clang-tidy/checks/list.rst
@@ -53,6 +53,7 @@
google-runtime-memset
google-runtime-operator
google-runtime-references
+   hicpp-no-assembler
llvm-header-guard
llvm-include-order
llvm-namespace-comment
@@ -155,4 +156,3 @@
readability-simplify-boolean-expr
readability-static-definition-in-anonymous-namespace
readability-uniqueptr-delete-release
-   safety-no-assembler
Index: docs/clang-tidy/checks/hicpp-no-assembler.rst
===
--- docs/clang-tidy/checks/hicpp-no-assembler.rst
+++ docs/clang-tidy/checks/hicpp-no-assembler.rst
@@ -0,0 +1,10 @@
+.. title:: clang-tidy - hicpp-no-assembler
+
+hicpp-no-assembler
+===
+
+Check for assembler statements. No fix is offered.

[PATCH] D31128: Rename the safety module to be hicpp

2017-03-19 Thread Jonathan B Coe via Phabricator via cfe-commits
jbcoe added inline comments.



Comment at: clang-tidy/hicpp/NoAssemblerCheck.cpp:46
+
+  diag(ASMLocation, "do not use inline assembler in safety-critical code");
+}

Should this message use text taken directly from the HICPP rules?


https://reviews.llvm.org/D31128



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31128: Rename the safety module to be hicpp

2017-03-19 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments.



Comment at: clang-tidy/hicpp/NoAssemblerCheck.cpp:46
+
+  diag(ASMLocation, "do not use inline assembler in safety-critical code");
+}

jbcoe wrote:
> Should this message use text taken directly from the HICPP rules?
The wording from HICPP rule is too wishy-washy to be used as a diagnostic, IMO. 
It just says it "should be avoided". I think the current wording is reasonable.


https://reviews.llvm.org/D31128



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31128: Rename the safety module to be hicpp

2017-03-19 Thread Jonathan B Coe via Phabricator via cfe-commits
jbcoe accepted this revision.
jbcoe added a comment.
This revision is now accepted and ready to land.

LGTM.

Great work on getting this module approved by PRQA Aaron.




Comment at: clang-tidy/hicpp/NoAssemblerCheck.cpp:46
+
+  diag(ASMLocation, "do not use inline assembler in safety-critical code");
+}

aaron.ballman wrote:
> jbcoe wrote:
> > Should this message use text taken directly from the HICPP rules?
> The wording from HICPP rule is too wishy-washy to be used as a diagnostic, 
> IMO. It just says it "should be avoided". I think the current wording is 
> reasonable.
Should we remove 'in safety-critical code'? That's not HICPP's reason for 
banning it, they appeal to portability, and the module is no longer called 
'safety'.

I'm happy with a shortened message or the message as is.


https://reviews.llvm.org/D31128



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31128: Rename the safety module to be hicpp

2017-03-19 Thread Jonas Toth via Phabricator via cfe-commits
JonasToth accepted this revision.
JonasToth added a comment.

thank you very much for dealing with this issue :)
I will update the aliases. But maybe later this week since i have an exam. :)


https://reviews.llvm.org/D31128



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31128: Rename the safety module to be hicpp

2017-03-19 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments.



Comment at: clang-tidy/hicpp/NoAssemblerCheck.cpp:46
+
+  diag(ASMLocation, "do not use inline assembler in safety-critical code");
+}

jbcoe wrote:
> aaron.ballman wrote:
> > jbcoe wrote:
> > > Should this message use text taken directly from the HICPP rules?
> > The wording from HICPP rule is too wishy-washy to be used as a diagnostic, 
> > IMO. It just says it "should be avoided". I think the current wording is 
> > reasonable.
> Should we remove 'in safety-critical code'? That's not HICPP's reason for 
> banning it, they appeal to portability, and the module is no longer called 
> 'safety'.
> 
> I'm happy with a shortened message or the message as is.
Hmmm shortening it isn't a bad idea, but it should probably get its own review 
(it's largely independent of these changes). Would you like to make a review 
for it once I land this, or do you think it should be done as part of this 
commit?


https://reviews.llvm.org/D31128



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] r298229 - Rename the clang-tidy safety module to be hicpp, for the High-Integrity C++ coding standard from PRQA.

2017-03-19 Thread Aaron Ballman via cfe-commits
Author: aaronballman
Date: Sun Mar 19 12:23:23 2017
New Revision: 298229

URL: http://llvm.org/viewvc/llvm-project?rev=298229&view=rev
Log:
Rename the clang-tidy safety module to be hicpp, for the High-Integrity C++ 
coding standard from PRQA.

This commit renames all of the safety functionality to be hicpp, adds an 
appropriate LICENSE.TXT, and updates the documentation accordingly.

Added:
clang-tools-extra/trunk/clang-tidy/hicpp/
  - copied from r298228, clang-tools-extra/trunk/clang-tidy/safety/
clang-tools-extra/trunk/clang-tidy/hicpp/HICPPTidyModule.cpp
  - copied, changed from r297580, 
clang-tools-extra/trunk/clang-tidy/safety/SafetyTidyModule.cpp
clang-tools-extra/trunk/clang-tidy/hicpp/LICENSE.TXT
clang-tools-extra/trunk/docs/clang-tidy/checks/hicpp-no-assembler.rst
  - copied, changed from r298228, 
clang-tools-extra/trunk/docs/clang-tidy/checks/safety-no-assembler.rst
clang-tools-extra/trunk/test/clang-tidy/hicpp-no-assembler.cpp
  - copied, changed from r298228, 
clang-tools-extra/trunk/test/clang-tidy/safety-no-assembler.cpp
Removed:
clang-tools-extra/trunk/clang-tidy/hicpp/SafetyTidyModule.cpp
clang-tools-extra/trunk/clang-tidy/safety/
clang-tools-extra/trunk/docs/clang-tidy/checks/safety-no-assembler.rst
clang-tools-extra/trunk/test/clang-tidy/safety-no-assembler.cpp
Modified:
clang-tools-extra/trunk/LICENSE.TXT
clang-tools-extra/trunk/clang-tidy/CMakeLists.txt
clang-tools-extra/trunk/clang-tidy/hicpp/CMakeLists.txt
clang-tools-extra/trunk/clang-tidy/hicpp/NoAssemblerCheck.cpp
clang-tools-extra/trunk/clang-tidy/hicpp/NoAssemblerCheck.h
clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt
clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp
clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst

Modified: clang-tools-extra/trunk/LICENSE.TXT
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/LICENSE.TXT?rev=298229&r1=298228&r2=298229&view=diff
==
--- clang-tools-extra/trunk/LICENSE.TXT (original)
+++ clang-tools-extra/trunk/LICENSE.TXT Sun Mar 19 12:23:23 2017
@@ -60,3 +60,4 @@ licenses, and/or restrictions:
 Program Directory
 --- -
 clang-tidy  clang-tidy/cert
+clang-tidy  clang-tidy/hicpp

Modified: clang-tools-extra/trunk/clang-tidy/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/CMakeLists.txt?rev=298229&r1=298228&r2=298229&view=diff
==
--- clang-tools-extra/trunk/clang-tidy/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/clang-tidy/CMakeLists.txt Sun Mar 19 12:23:23 2017
@@ -26,17 +26,17 @@ add_clang_library(clangTidy
   clangToolingCore
   )
 
-add_subdirectory(tool)
-add_subdirectory(plugin)
 add_subdirectory(boost)
 add_subdirectory(cert)
-add_subdirectory(llvm)
 add_subdirectory(cppcoreguidelines)
 add_subdirectory(google)
+add_subdirectory(hicpp)
+add_subdirectory(llvm)
 add_subdirectory(misc)
 add_subdirectory(modernize)
 add_subdirectory(mpi)
 add_subdirectory(performance)
+add_subdirectory(plugin)
 add_subdirectory(readability)
-add_subdirectory(safety)
+add_subdirectory(tool)
 add_subdirectory(utils)

Modified: clang-tools-extra/trunk/clang-tidy/hicpp/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/hicpp/CMakeLists.txt?rev=298229&r1=298228&r2=298229&view=diff
==
--- clang-tools-extra/trunk/clang-tidy/hicpp/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/clang-tidy/hicpp/CMakeLists.txt Sun Mar 19 12:23:23 
2017
@@ -1,8 +1,8 @@
 set(LLVM_LINK_COMPONENTS support)
 
-add_clang_library(clangTidySafetyModule
+add_clang_library(clangTidyHICPPModule
   NoAssemblerCheck.cpp
-  SafetyTidyModule.cpp
+  HICPPTidyModule.cpp
 
   LINK_LIBS
   clangAST

Copied: clang-tools-extra/trunk/clang-tidy/hicpp/HICPPTidyModule.cpp (from 
r297580, clang-tools-extra/trunk/clang-tidy/safety/SafetyTidyModule.cpp)
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/hicpp/HICPPTidyModule.cpp?p2=clang-tools-extra/trunk/clang-tidy/hicpp/HICPPTidyModule.cpp&p1=clang-tools-extra/trunk/clang-tidy/safety/SafetyTidyModule.cpp&r1=297580&r2=298229&rev=298229&view=diff
==
--- clang-tools-extra/trunk/clang-tidy/safety/SafetyTidyModule.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/hicpp/HICPPTidyModule.cpp Sun Mar 19 
12:23:23 2017
@@ -1,4 +1,4 @@
-//===--- SafetyTidyModule.cpp - clang-tidy 
===//
+//===--- HICPPTidyModule.cpp - clang-tidy 
-===//
 //
 // The LLVM Compiler Infrastructure
 //
@@ -14,25 +14,25 @@
 
 namespace clang {
 namespace tidy {
-na

[PATCH] D31128: Rename the safety module to be hicpp

2017-03-19 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman closed this revision.
aaron.ballman added a comment.

Commit in r298229. If we want to reword the hicpp-no-assembler diagnostic, we 
can do so in a follow-up patch.


https://reviews.llvm.org/D31128



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31130: B32239 clang-tidy should not warn about array to pointer decay on system macros

2017-03-19 Thread Breno Rodrigues Guimaraes via Phabricator via cfe-commits
brenoguim added a reviewer: cfe-commits.
brenoguim added a comment.

Forgot to add cfe-commits...


https://reviews.llvm.org/D31130



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits