[PATCH] D27651: [clang-format] Even with AlignConsecutiveDeclarations, PointerAlignment: Right should keep *s and &s to the right

2016-12-10 Thread Ken-Patrick Lehrmann via Phabricator via cfe-commits
KP created this revision.
KP added a reviewer: djasper.
KP added a subscriber: cfe-commits.
Herald added a subscriber: klimek.

With AlignConsecutiveDeclarations and PointerAlignment: Right *s and &s were 
left dangling.

For instance

  const char* const* v1;
  float const* v2;
  SomeVeryLongType const& v3;

was formatted as

  const char *const * v1;
  float const *   v2;
  SomeVeryLongType const &v3;

This patch keep the *s or &s aligned to the right, next to their variable.
The above example is now formatted as

  const char *const  *v1;
  float const*v2;
  SomeVeryLongType const &v3;


https://reviews.llvm.org/D27651

Files:
  lib/Format/WhitespaceManager.cpp
  unittests/Format/FormatTest.cpp

Index: unittests/Format/FormatTest.cpp
===
--- unittests/Format/FormatTest.cpp
+++ unittests/Format/FormatTest.cpp
@@ -9445,7 +9445,7 @@
Alignment);
   EXPECT_EQ("void SomeFunction(int parameter = 0) {\n"
 "  int const i   = 1;\n"
-"  int * j   = 2;\n"
+"  int  *j   = 2;\n"
 "  int   big = 1;\n"
 "\n"
 "  unsigned oneTwoThree = 123;\n"
@@ -9466,6 +9466,29 @@
"int ll=1;\n"
"}",
Alignment));
+  EXPECT_EQ("void SomeFunction(int parameter = 0) {\n"
+"  int const i = 1;\n"
+"  int **j = 2, ***k = 3;\n"
+"  int   big = 1;\n"
+"\n"
+"  unsigned oneTwoThree = 123;\n"
+"  int  oneTwo  = 12;\n"
+"  method();\n"
+"  float k  = 2;\n"
+"  int   ll = 1;\n"
+"}",
+format("void SomeFunction(int parameter= 0) {\n"
+   " int const  i= 1;\n"
+   "  int **j=2,***k=3;\n"
+   " int big  =  1;\n"
+   "\n"
+   "unsigned oneTwoThree  =123;\n"
+   "int oneTwo = 12;\n"
+   "  method();\n"
+   "float k= 2;\n"
+   "int ll=1;\n"
+   "}",
+   Alignment));
   Alignment.AlignConsecutiveAssignments = false;
   Alignment.AlignEscapedNewlinesLeft = true;
   verifyFormat("#define A  \\\n"
@@ -9492,7 +9515,7 @@
Alignment);
   verifyFormat("void SomeFunction(int parameter = 0) {\n"
"  int const i = 1;\n"
-   "  int * j = 2;\n"
+   "  int  *j = 2;\n"
"  int   big = 1;\n"
"}",
Alignment);
@@ -9596,7 +9619,7 @@
" float b,\n"
" int   c,\n"
" uint32_t *d) {\n"
-   "  int *  e = 0;\n"
+   "  int   *e = 0;\n"
"  float  f = 0;\n"
"  double g = 0;\n"
"}\n"
Index: lib/Format/WhitespaceManager.cpp
===
--- lib/Format/WhitespaceManager.cpp
+++ lib/Format/WhitespaceManager.cpp
@@ -160,10 +160,15 @@
   }
 }
 
+static bool IsPointerOrReference(tok::TokenKind Kind) {
+  return Kind == tok::star || Kind == tok::amp || Kind == tok::ampamp;
+}
+
 // Align a single sequence of tokens, see AlignTokens below.
 template 
 static void
-AlignTokenSequence(unsigned Start, unsigned End, unsigned Column, F &&Matches,
+AlignTokenSequence(const FormatStyle &Style, unsigned Start, unsigned End,
+   unsigned Column, F &&Matches,
SmallVector &Changes) {
   bool FoundMatchOnLine = false;
   int Shift = 0;
@@ -183,9 +188,23 @@
 }
 
 assert(Shift >= 0);
+if (Shift == 0)
+  continue;
+
 Changes[i].StartOfTokenColumn += Shift;
 if (i + 1 != Changes.size())
   Changes[i + 1].PreviousEndOfTokenColumn += Shift;
+
+// If PointerAlignment is PAS_Right, keep *s or &s next to the token
+if (Style.PointerAlignment == FormatStyle::PAS_Right &&
+Changes[i].Spaces != 0) {
+  for (int previous = i - 1;
+   previous >= 0 && IsPointerOrReference(Changes[previous].Kind);
+   previous--) {
+Changes[previous + 1].Spaces -= Shift;
+Changes[previous].Spaces += Shift;
+  }
+}
   }
 }
 
@@ -232,8 +251,8 @@
   // containing any matching token to be aligned and located after such token.
   auto AlignCurrentSequence = [&] {
 if (StartOfSequence > 0 && StartOfSequence < EndOfSequence)
-  AlignTokenSequence(StartOfSequence, EndOfSequence, MinColumn, Matches,
- Changes);
+  AlignTokenSequence(Style, StartOfSequence, EndOfSequence, MinColumn,
+ Matches, Changes);
 MinColumn = 0;
 MaxColumn = UINT_MAX;
 StartOfSequence = 0;
@@ -328,13 +347,6 @@
   if (!Style.AlignConsecutiveDeclarations)
 re

Re: [PATCH] D27210: [clang-tidy] misc-string-compare. Adding a new check to clang-tidy

2016-12-10 Thread Mads Ravn via cfe-commits
Hi guys,

Do you have any extra comments for this?

Best regards

On Sat, Dec 3, 2016 at 1:34 PM Mads Ravn via Phabricator <
revi...@reviews.llvm.org> wrote:

> madsravn updated this revision to Diff 80177.
> madsravn added a comment.
>
> Did as comments suggested: Fixed the description about compare returning
> -1, 0 or 1. Fixed the ast matcher to only find compare with one argument.
> Clang-formatted everything. Added a new test (str.compare("foo")) and wrote
> a FIXME for the fixit.
>
>
> https://reviews.llvm.org/D27210
>
> Files:
>   clang-tidy/misc/CMakeLists.txt
>   clang-tidy/misc/MiscTidyModule.cpp
>   clang-tidy/misc/StringCompareCheck.cpp
>   clang-tidy/misc/StringCompareCheck.h
>   docs/ReleaseNotes.rst
>   docs/clang-tidy/checks/list.rst
>   docs/clang-tidy/checks/misc-string-compare.rst
>   test/clang-tidy/misc-string-compare.cpp
>
>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D27123: Add AVR target and toolchain to Clang

2016-12-10 Thread Dylan McKay via Phabricator via cfe-commits
dylanmckay added inline comments.



Comment at: lib/Basic/Targets.cpp:8543
+  case llvm::Triple::avr:
+return new AVRTargetInfo(Triple, Opts);
   case llvm::Triple::bpfeb:

If we build clang without `LLVM_EXPERIMENTAL_TARGETS_TO_BUILD=AVR`, how will 
this work?

Will it fail compilation? Will `clang` report that AVR is supported? Will it 
crash if you try and run `clang`?


https://reviews.llvm.org/D27123



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


Re: r289308 - [clang-format] Another attempt at python 3 compatibility

2016-12-10 Thread Nico Weber via cfe-commits
Shouldn't this at least use >=? (But it feels like there is probably a way
that doesn't have to do UA sniffing, so to speak)

On Dec 9, 2016 8:04 PM, "Vedant Kumar via cfe-commits" <
cfe-commits@lists.llvm.org> wrote:

> Author: vedantk
> Date: Fri Dec  9 18:54:13 2016
> New Revision: 289308
>
> URL: http://llvm.org/viewvc/llvm-project?rev=289308&view=rev
> Log:
> [clang-format] Another attempt at python 3 compatibility
>
> The entries in vim.current.buffer appear to be decoded strings, which
> means that python3 won't allow invoking 'decode' on them. Keep the old
> behavior when running under python2, but skip the error-inducing decode
> step with python3..
>
> Modified:
> cfe/trunk/tools/clang-format/clang-format.py
>
> Modified: cfe/trunk/tools/clang-format/clang-format.py
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-
> format/clang-format.py?rev=289308&r1=289307&r2=289308&view=diff
> 
> ==
> --- cfe/trunk/tools/clang-format/clang-format.py (original)
> +++ cfe/trunk/tools/clang-format/clang-format.py Fri Dec  9 18:54:13 2016
> @@ -29,6 +29,7 @@ from __future__ import print_function
>
>  import difflib
>  import json
> +import platform
>  import subprocess
>  import sys
>  import vim
> @@ -48,10 +49,15 @@ fallback_style = None
>  if vim.eval('exists("g:clang_format_fallback_style")') == "1":
>fallback_style = vim.eval('g:clang_format_fallback_style')
>
> +def get_buffer(encoding):
> +  if platform.python_version_tuple()[0] == '3':
> +return vim.current.buffer
> +  return [ line.decode(encoding) for line in vim.current.buffer ]
> +
>  def main():
># Get the current text.
>encoding = vim.eval("&encoding")
> -  buf = [ line.decode(encoding) for line in vim.current.buffer ]
> +  buf = get_buffer(encoding)
>text = '\n'.join(buf)
>
># Determine range to format.
>
>
> ___
> cfe-commits mailing list
> cfe-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r289328 - Simplify parseShowColorsArgs logic, NFC.

2016-12-10 Thread Yaron Keren via cfe-commits
Author: yrnkrn
Date: Sat Dec 10 08:55:14 2016
New Revision: 289328

URL: http://llvm.org/viewvc/llvm-project?rev=289328&view=rev
Log:
Simplify parseShowColorsArgs logic, NFC.


Modified:
cfe/trunk/lib/Frontend/CompilerInvocation.cpp

Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=289328&r1=289327&r2=289328&view=diff
==
--- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
+++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Sat Dec 10 08:55:14 2016
@@ -930,21 +930,13 @@ static bool parseShowColorsArgs(const Ar
   } ShowColors = DefaultColor ? Colors_Auto : Colors_Off;
   for (Arg *A : Args) {
 const Option &O = A->getOption();
-if (!O.matches(options::OPT_fcolor_diagnostics) &&
-!O.matches(options::OPT_fdiagnostics_color) &&
-!O.matches(options::OPT_fno_color_diagnostics) &&
-!O.matches(options::OPT_fno_diagnostics_color) &&
-!O.matches(options::OPT_fdiagnostics_color_EQ))
-  continue;
-
 if (O.matches(options::OPT_fcolor_diagnostics) ||
 O.matches(options::OPT_fdiagnostics_color)) {
   ShowColors = Colors_On;
 } else if (O.matches(options::OPT_fno_color_diagnostics) ||
O.matches(options::OPT_fno_diagnostics_color)) {
   ShowColors = Colors_Off;
-} else {
-  assert(O.matches(options::OPT_fdiagnostics_color_EQ));
+} else if (O.matches(options::OPT_fdiagnostics_color_EQ)) {
   StringRef Value(A->getValue());
   if (Value == "always")
 ShowColors = Colors_On;
@@ -954,10 +946,9 @@ static bool parseShowColorsArgs(const Ar
 ShowColors = Colors_Auto;
 }
   }
-  if (ShowColors == Colors_On ||
-  (ShowColors == Colors_Auto && 
llvm::sys::Process::StandardErrHasColors()))
-return true;
-  return false;
+  return ShowColors == Colors_On ||
+ (ShowColors == Colors_Auto &&
+  llvm::sys::Process::StandardErrHasColors());
 }
 
 bool clang::ParseDiagnosticArgs(DiagnosticOptions &Opts, ArgList &Args,


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


Re: [PATCH] D26846: __uuidof() and declspec(uuid("...")) should be allowed on enumeration types

2016-12-10 Thread Aaron Ballman via cfe-commits
I'll need a few days. I am on vacation until the 15th and have limited
Internet access. I can do post commit review if this can't wait that long.

-Aaron

On Dec 7, 2016 9:07 PM, "David Majnemer via Phabricator" <
revi...@reviews.llvm.org> wrote:

majnemer added a comment.

This LGTM but Aaron should give the go ahead.


Repository:
  rL LLVM

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


r289338 - [AVX-512] Remove 128/256-bit masked vpermilvar builtins and replace with select and the avx unmasked builtins.

2016-12-10 Thread Craig Topper via cfe-commits
Author: ctopper
Date: Sat Dec 10 14:27:39 2016
New Revision: 289338

URL: http://llvm.org/viewvc/llvm-project?rev=289338&view=rev
Log:
[AVX-512] Remove 128/256-bit masked vpermilvar builtins and replace with select 
and the avx unmasked builtins.

Modified:
cfe/trunk/include/clang/Basic/BuiltinsX86.def
cfe/trunk/lib/Headers/avx512vlintrin.h
cfe/trunk/test/CodeGen/avx512vl-builtins.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=289338&r1=289337&r2=289338&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Sat Dec 10 14:27:39 2016
@@ -1495,10 +1495,6 @@ TARGET_BUILTIN(__builtin_ia32_vpermt2var
 TARGET_BUILTIN(__builtin_ia32_vpermt2varpd512_maskz, 
"V8dV8LLiV8dV8dUc","","avx512f")
 TARGET_BUILTIN(__builtin_ia32_vpermt2varps512_maskz, 
"V16fV16iV16fV16fUs","","avx512f")
 TARGET_BUILTIN(__builtin_ia32_vpermt2varq512_maskz, 
"V8LLiV8LLiV8LLiV8LLiUc","","avx512f")
-TARGET_BUILTIN(__builtin_ia32_vpermilvarpd_mask, 
"V2dV2dV2LLiV2dUc","","avx512vl")
-TARGET_BUILTIN(__builtin_ia32_vpermilvarpd256_mask, 
"V4dV4dV4LLiV4dUc","","avx512vl")
-TARGET_BUILTIN(__builtin_ia32_vpermilvarps_mask, 
"V4fV4fV4iV4fUc","","avx512vl")
-TARGET_BUILTIN(__builtin_ia32_vpermilvarps256_mask, 
"V8fV8fV8iV8fUc","","avx512vl")
 TARGET_BUILTIN(__builtin_ia32_ptestmb512, "ULLiV64cV64cULLi","","avx512bw")
 TARGET_BUILTIN(__builtin_ia32_ptestmw512, "UiV32sV32sUi","","avx512bw")
 TARGET_BUILTIN(__builtin_ia32_ptestnmb512, "ULLiV64cV64cULLi","","avx512bw")

Modified: cfe/trunk/lib/Headers/avx512vlintrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512vlintrin.h?rev=289338&r1=289337&r2=289338&view=diff
==
--- cfe/trunk/lib/Headers/avx512vlintrin.h (original)
+++ cfe/trunk/lib/Headers/avx512vlintrin.h Sat Dec 10 14:27:39 2016
@@ -6424,85 +6424,67 @@ _mm256_maskz_rcp14_ps (__mmask8 __U, __m
   (__v8sf)_mm256_setzero_ps()); })
 
 static __inline__ __m128d __DEFAULT_FN_ATTRS
-_mm_mask_permutevar_pd (__m128d __W, __mmask8 __U, __m128d __A,
-  __m128i __C)
+_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C)
 {
-  return (__m128d) __builtin_ia32_vpermilvarpd_mask ((__v2df) __A,
- (__v2di) __C,
- (__v2df) __W,
- (__mmask8) __U);
+  return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
+(__v2df)_mm_permutevar_pd(__A, 
__C),
+(__v2df)__W);
 }
 
 static __inline__ __m128d __DEFAULT_FN_ATTRS
-_mm_maskz_permutevar_pd (__mmask8 __U, __m128d __A, __m128i __C)
+_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C)
 {
-  return (__m128d) __builtin_ia32_vpermilvarpd_mask ((__v2df) __A,
- (__v2di) __C,
- (__v2df)
- _mm_setzero_pd (),
- (__mmask8) __U);
+  return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
+(__v2df)_mm_permutevar_pd(__A, 
__C),
+(__v2df)_mm_setzero_pd());
 }
 
 static __inline__ __m256d __DEFAULT_FN_ATTRS
-_mm256_mask_permutevar_pd (__m256d __W, __mmask8 __U, __m256d __A,
- __m256i __C)
+_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C)
 {
-  return (__m256d) __builtin_ia32_vpermilvarpd256_mask ((__v4df) __A,
-  (__v4di) __C,
-  (__v4df) __W,
-  (__mmask8)
-  __U);
+  return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
+ (__v4df)_mm256_permutevar_pd(__A, 
__C),
+ (__v4df)__W);
 }
 
 static __inline__ __m256d __DEFAULT_FN_ATTRS
-_mm256_maskz_permutevar_pd (__mmask8 __U, __m256d __A, __m256i __C)
+_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C)
 {
-  return (__m256d) __builtin_ia32_vpermilvarpd256_mask ((__v4df) __A,
-  (__v4di) __C,
-  (__v4df)
-  _mm256_setzero_pd (),
-  (__mmask8)
-  __U);
+  return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
+ (__v4df)_mm256_permutevar_pd(__A, 
__C),
+ (__v4df)_mm256_setzero_pd());
 }
 
 static __inline__ __m128 __DEFAULT_FN_ATTRS
-_mm_mask_permutevar_ps (__m128 __W, __mmask8 __U, __m128 __A,
-  __m128i __C)
+_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C)
 {
-  return (__m128) __builtin_ia32_vpermilvarps_mask ((__v4sf) __A,
-(__v4si) __C,
-(__v4sf) __W,
-(__mmask8) __U);
+  retur

r289345 - [AVX-512] Remove masking from 512-bit pshufb builtin. The backend now has a version without masking so wrap it with select.

2016-12-10 Thread Craig Topper via cfe-commits
Author: ctopper
Date: Sat Dec 10 17:09:52 2016
New Revision: 289345

URL: http://llvm.org/viewvc/llvm-project?rev=289345&view=rev
Log:
[AVX-512] Remove masking from 512-bit pshufb builtin. The backend now has a 
version without masking so wrap it with select.

This will allow the backend to constant fold these to generic shuffle vectors 
like 128-bit and 256-bit without having to working about handling masking.

Modified:
cfe/trunk/include/clang/Basic/BuiltinsX86.def
cfe/trunk/lib/Headers/avx512bwintrin.h
cfe/trunk/test/CodeGen/avx512bw-builtins.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=289345&r1=289344&r2=289345&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Sat Dec 10 17:09:52 2016
@@ -1086,7 +1086,7 @@ TARGET_BUILTIN(__builtin_ia32_pminsb512_
 TARGET_BUILTIN(__builtin_ia32_pminsw512_mask, "V32sV32sV32sV32sUi", "", 
"avx512bw")
 TARGET_BUILTIN(__builtin_ia32_pminub512_mask, "V64cV64cV64cV64cULLi", "", 
"avx512bw")
 TARGET_BUILTIN(__builtin_ia32_pminuw512_mask, "V32sV32sV32sV32sUi", "", 
"avx512bw")
-TARGET_BUILTIN(__builtin_ia32_pshufb512_mask, "V64cV64cV64cV64cULLi", "", 
"avx512bw")
+TARGET_BUILTIN(__builtin_ia32_pshufb512, "V64cV64cV64c", "", "avx512bw")
 TARGET_BUILTIN(__builtin_ia32_psubsb512_mask, "V64cV64cV64cV64cULLi", "", 
"avx512bw")
 TARGET_BUILTIN(__builtin_ia32_psubsw512_mask, "V32sV32sV32sV32sUi", "", 
"avx512bw")
 TARGET_BUILTIN(__builtin_ia32_psubusb512_mask, "V64cV64cV64cV64cULLi", "", 
"avx512bw")

Modified: cfe/trunk/lib/Headers/avx512bwintrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512bwintrin.h?rev=289345&r1=289344&r2=289345&view=diff
==
--- cfe/trunk/lib/Headers/avx512bwintrin.h (original)
+++ cfe/trunk/lib/Headers/avx512bwintrin.h Sat Dec 10 17:09:52 2016
@@ -1008,31 +1008,25 @@ _mm512_mask_min_epu16 (__m512i __W, __mm
 }
 
 static __inline__ __m512i __DEFAULT_FN_ATTRS
-_mm512_shuffle_epi8 (__m512i __A, __m512i __B)
+_mm512_shuffle_epi8(__m512i __A, __m512i __B)
 {
-  return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
-  (__v64qi) __B,
-  (__v64qi) _mm512_setzero_qi(),
-  (__mmask64) -1);
+  return (__m512i)__builtin_ia32_pshufb512((__v64qi)__A,(__v64qi)__B);
 }
 
 static __inline__ __m512i __DEFAULT_FN_ATTRS
-_mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
-__m512i __B)
+_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
 {
-  return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
-  (__v64qi) __B,
-  (__v64qi) __W,
-  (__mmask64) __U);
+  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
+ (__v64qi)_mm512_shuffle_epi8(__A, 
__B),
+ (__v64qi)__W);
 }
 
 static __inline__ __m512i __DEFAULT_FN_ATTRS
-_mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
+_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B)
 {
-  return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
-  (__v64qi) __B,
-  (__v64qi) _mm512_setzero_qi(),
-  (__mmask64) __U);
+  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
+ (__v64qi)_mm512_shuffle_epi8(__A, 
__B),
+ (__v64qi)_mm512_setzero_qi());
 }
 
 static __inline__ __m512i __DEFAULT_FN_ATTRS

Modified: cfe/trunk/test/CodeGen/avx512bw-builtins.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512bw-builtins.c?rev=289345&r1=289344&r2=289345&view=diff
==
--- cfe/trunk/test/CodeGen/avx512bw-builtins.c (original)
+++ cfe/trunk/test/CodeGen/avx512bw-builtins.c Sat Dec 10 17:09:52 2016
@@ -820,17 +820,19 @@ __m512i test_mm512_mask_min_epu16(__m512
 }
 __m512i test_mm512_shuffle_epi8(__m512i __A, __m512i __B) {
   // CHECK-LABEL: @test_mm512_shuffle_epi8
-  // CHECK: @llvm.x86.avx512.mask.pshuf.b.512
+  // CHECK: @llvm.x86.avx512.pshuf.b.512
   return _mm512_shuffle_epi8(__A,__B); 
 }
 __m512i test_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, 
__m512i __B) {
   // CHECK-LABEL: @test_mm512_mask_shuffle_epi8
-  // CHECK: @llvm.x86.avx512.mask.pshuf.b.512
+  // CHECK: @llvm.x86.avx512.pshuf.b.512
+  // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
   return _mm512_mask_shuffle_epi8(__W,__U,__A,__B); 
 }
 __m512i test_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B) 
{
   // CHECK-LABEL: @test_mm512_maskz_shuffle_epi8
-  // CHECK: @llvm.x86.avx512.mask.pshu

[libcxx] r289347 - [libc++] Fix support for multibyte thousands_sep and decimal_point in moneypunct_byname and numpunct_byname.

2016-12-10 Thread Eric Fiselier via cfe-commits
Author: ericwf
Date: Sat Dec 10 18:20:59 2016
New Revision: 289347

URL: http://llvm.org/viewvc/llvm-project?rev=289347&view=rev
Log:
[libc++] Fix support for multibyte thousands_sep and decimal_point in 
moneypunct_byname and numpunct_byname.

Summary:
The underlying C locales provide the `thousands_sep` and `decimal_point` as 
strings, possible with more than one character. We currently don't handle this 
case even for `wchar_t`.

This patch properly converts the mbs -> wide character for 
`moneypunct_byname`. For the `moneypunct_byname` case we attempt 
to narrow the WC and if that fails we also attempt to translate it to some 
reasonable value. For example we translate U00A0 (non-breaking space) into 
U0020 (regular space). If none of these conversions succeed then we simply 
allow the base class to provide a fallback value.


Reviewers: mclow.lists, EricWF

Subscribers: vangyzen, george.burgess.iv, cfe-commits

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

Modified:
libcxx/trunk/src/locale.cpp

libcxx/trunk/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/decimal_point.pass.cpp

libcxx/trunk/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/thousands_sep.pass.cpp

libcxx/trunk/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp

libcxx/trunk/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp

Modified: libcxx/trunk/src/locale.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/src/locale.cpp?rev=289347&r1=289346&r2=289347&view=diff
==
--- libcxx/trunk/src/locale.cpp (original)
+++ libcxx/trunk/src/locale.cpp Sat Dec 10 18:20:59 2016
@@ -4183,6 +4183,54 @@ __widen_from_utf8<32>::~__widen_from_utf
 {
 }
 
+
+static bool checked_string_to_wchar_convert(wchar_t& dest,
+const char* ptr,
+__locale_struct* loc) {
+  if (*ptr == '\0')
+return false;
+  mbstate_t mb = {};
+  wchar_t out;
+  size_t ret = __libcpp_mbrtowc_l(&out, ptr, strlen(ptr), &mb, loc);
+  if (ret == static_cast(-1) || ret == static_cast(-2)) {
+return false;
+  }
+  dest = out;
+  return true;
+}
+
+static bool checked_string_to_char_convert(char& dest,
+   const char* ptr,
+   __locale_struct* __loc) {
+  if (*ptr == '\0')
+return false;
+  if (!ptr[1]) {
+dest = *ptr;
+return true;
+  }
+  // First convert the MBS into a wide char then attempt to narrow it using
+  // wctob_l.
+  wchar_t wout;
+  if (!checked_string_to_wchar_convert(wout, ptr, __loc))
+return false;
+  int res;
+  if ((res = __libcpp_wctob_l(wout, __loc)) != char_traits::eof()) {
+dest = res;
+return true;
+  }
+  // FIXME: Work around specific multibyte sequences that we can reasonable
+  // translate into a different single byte.
+  switch (wout) {
+  case L'\u00A0': // non-breaking space
+dest = ' ';
+return true;
+  default:
+return false;
+  }
+  _LIBCPP_UNREACHABLE();
+}
+
+
 // numpunct && numpunct
 
 locale::id numpunct< char  >::id;
@@ -4254,10 +4302,10 @@ numpunct_byname::__init(const char
 " failed to construct for " + string(nm));
 
 lconv* lc = __libcpp_localeconv_l(loc.get());
-if (*lc->decimal_point)
-__decimal_point_ = *lc->decimal_point;
-if (*lc->thousands_sep)
-__thousands_sep_ = *lc->thousands_sep;
+checked_string_to_char_convert(__decimal_point_, lc->decimal_point,
+   loc.get());
+checked_string_to_char_convert(__thousands_sep_, lc->thousands_sep,
+   loc.get());
 __grouping_ = lc->grouping;
 // localization for truename and falsename is not available
 }
@@ -4288,16 +4336,16 @@ numpunct_byname::__init(const c
 {
 __locale_unique_ptr loc(newlocale(LC_ALL_MASK, nm, 0), freelocale);
 if (loc == nullptr)
-__throw_runtime_error("numpunct_byname::numpunct_byname"
+__throw_runtime_error("numpunct_byname::numpunct_byname"
 " failed to construct for " + string(nm));
 
 lconv* lc = __libcpp_localeconv_l(loc.get());
-if (*lc->decimal_point)
-__decimal_point_ = *lc->decimal_point;
-if (*lc->thousands_sep)
-__thousands_sep_ = *lc->thousands_sep;
+checked_string_to_wchar_convert(__decimal_point_, lc->decimal_point,
+loc.get());
+checked_string_to_wchar_convert(__thousands_sep_, lc->thousands_sep,
+loc.get());
 __grouping_ = lc->grouping;
-// locallization for truename an

r289351 - [AVX-512] Remove masking from 512-bit vpermil builtins. The backend now has versions without masking so wrap it with select.

2016-12-10 Thread Craig Topper via cfe-commits
Author: ctopper
Date: Sat Dec 10 19:26:52 2016
New Revision: 289351

URL: http://llvm.org/viewvc/llvm-project?rev=289351&view=rev
Log:
[AVX-512] Remove masking from 512-bit vpermil builtins. The backend now has 
versions without masking so wrap it with select.

This will allow the backend to constant fold these to generic shuffle vectors 
like 128-bit and 256-bit without having to working about handling masking.

Modified:
cfe/trunk/include/clang/Basic/BuiltinsX86.def
cfe/trunk/lib/Headers/avx512fintrin.h
cfe/trunk/test/CodeGen/avx512f-builtins.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=289351&r1=289350&r2=289351&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Sat Dec 10 19:26:52 2016
@@ -1489,8 +1489,8 @@ TARGET_BUILTIN(__builtin_ia32_vpermi2var
 TARGET_BUILTIN(__builtin_ia32_vpermi2varpd512_mask, 
"V8dV8dV8LLiV8dUc","","avx512f")
 TARGET_BUILTIN(__builtin_ia32_vpermi2varps512_mask, 
"V16fV16fV16iV16fUs","","avx512f")
 TARGET_BUILTIN(__builtin_ia32_vpermi2varq512_mask, 
"V8LLiV8LLiV8LLiV8LLiUc","","avx512f")
-TARGET_BUILTIN(__builtin_ia32_vpermilvarpd512_mask, 
"V8dV8dV8LLiV8dUc","","avx512f")
-TARGET_BUILTIN(__builtin_ia32_vpermilvarps512_mask, 
"V16fV16fV16iV16fUs","","avx512f")
+TARGET_BUILTIN(__builtin_ia32_vpermilvarpd512, "V8dV8dV8LLi","","avx512f")
+TARGET_BUILTIN(__builtin_ia32_vpermilvarps512, "V16fV16fV16i","","avx512f")
 TARGET_BUILTIN(__builtin_ia32_vpermt2vard512_maskz, 
"V16iV16iV16iV16iUs","","avx512f")
 TARGET_BUILTIN(__builtin_ia32_vpermt2varpd512_maskz, 
"V8dV8LLiV8dV8dUc","","avx512f")
 TARGET_BUILTIN(__builtin_ia32_vpermt2varps512_maskz, 
"V16fV16iV16fV16fUs","","avx512f")

Modified: cfe/trunk/lib/Headers/avx512fintrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512fintrin.h?rev=289351&r1=289350&r2=289351&view=diff
==
--- cfe/trunk/lib/Headers/avx512fintrin.h (original)
+++ cfe/trunk/lib/Headers/avx512fintrin.h Sat Dec 10 19:26:52 2016
@@ -6588,61 +6588,47 @@ _mm512_mask2_permutex2var_epi64 (__m512i
   (__v16sf)_mm512_setzero_ps()); })
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_permutevar_pd (__m512d __A, __m512i __C)
+_mm512_permutevar_pd(__m512d __A, __m512i __C)
 {
-  return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
-  (__v8di) __C,
-  (__v8df)
-  _mm512_undefined_pd (),
-  (__mmask8) -1);
+  return (__m512d)__builtin_ia32_vpermilvarpd512((__v8df)__A, (__v8di)__C);
 }
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
+_mm512_mask_permutevar_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
 {
-  return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
-  (__v8di) __C,
-  (__v8df) __W,
-  (__mmask8) __U);
+  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
+ (__v8df)_mm512_permutevar_pd(__A, 
__C),
+ (__v8df)__W);
 }
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
+_mm512_maskz_permutevar_pd(__mmask8 __U, __m512d __A, __m512i __C)
 {
-  return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
-  (__v8di) __C,
-  (__v8df)
-  _mm512_setzero_pd (),
-  (__mmask8) __U);
+  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
+ (__v8df)_mm512_permutevar_pd(__A, 
__C),
+ (__v8df)_mm512_setzero_pd());
 }
 
 static __inline__ __m512 __DEFAULT_FN_ATTRS
-_mm512_permutevar_ps (__m512 __A, __m512i __C)
+_mm512_permutevar_ps(__m512 __A, __m512i __C)
 {
-  return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
-   (__v16si) __C,
-   (__v16sf)
-   _mm512_undefined_ps (),
-   (__mmask16) -1);
+  return (__m512)__builtin_ia32_vpermilvarps512((__v16sf)__A, (__v16si)__C);
 }
 
 static __inline__ __m512 __DEFAULT_FN_ATTRS
-_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
+_mm512_mask_permutevar_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
 {
-  return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
-   (__v16si) __C,
-   (__v16sf) __W,
-   (__mmask16) __U);
+  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
+(__v16sf)_mm512_permutevar_ps(__A, 
__C),
+  

[libcxxabi] r289353 - Workaround the removal of dynamic exception specifications in C++17

2016-12-10 Thread Eric Fiselier via cfe-commits
Author: ericwf
Date: Sat Dec 10 19:35:55 2016
New Revision: 289353

URL: http://llvm.org/viewvc/llvm-project?rev=289353&view=rev
Log:
Workaround the removal of dynamic exception specifications in C++17

Modified:
libcxxabi/trunk/test/libcxxabi/test/config.py

Modified: libcxxabi/trunk/test/libcxxabi/test/config.py
URL: 
http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/test/libcxxabi/test/config.py?rev=289353&r1=289352&r2=289353&view=diff
==
--- libcxxabi/trunk/test/libcxxabi/test/config.py (original)
+++ libcxxabi/trunk/test/libcxxabi/test/config.py Sat Dec 10 19:35:55 2016
@@ -52,7 +52,11 @@ class Configuration(LibcxxConfiguration)
 if not self.get_lit_bool('enable_threads', True):
 self.cxx.compile_flags += ['-D_LIBCXXABI_HAS_NO_THREADS']
 self.config.available_features.add('libcxxabi-no-threads')
-super(Configuration, self).configure_compile_flags()
+# FIXME: Fix the unwind_* tests that test dynamic exception
+# specifications so they work in C++17 (or always test in C++14).
+# Suppressing this warning is a temporary workaround.
+self.cxx.addWarningFlagIfSupported('-Wno-dynamic-exception-spec')
+super(Configuration, self).configure_compile_flags()
 
 def configure_compile_flags_header_includes(self):
 self.configure_config_site_header()


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


Re: r289019 - [c++1z] P0003R5: Removing dynamic exception specifications.

2016-12-10 Thread Eric Fiselier via cfe-commits
To others who follow the libc++abi test failures back to this commit:

The unwind_* failures have been addressed in r289353 by using
-Wno-dynamic-exception-spec to suppress the C++17 behavior (for now).

Currently the libc++ and libc++abi test suite run using -std=c++1z unless
otherwise specified. However the dynamic exception specification tests
are fundamentally incompatible with C++17, and I don't just want to mark
the as UNSUPPORTED because they'll rarely end up running.
Instead I'll work on adjusting the test suite to support locking a test to
a give C++ dialect.

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


[libcxx] r289355 - Fix count_new.hpp to work w/o dynamic exception specifications

2016-12-10 Thread Eric Fiselier via cfe-commits
Author: ericwf
Date: Sat Dec 10 20:20:17 2016
New Revision: 289355

URL: http://llvm.org/viewvc/llvm-project?rev=289355&view=rev
Log:
Fix count_new.hpp to work w/o dynamic exception specifications

Modified:
libcxx/trunk/test/support/count_new.hpp

Modified: libcxx/trunk/test/support/count_new.hpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/count_new.hpp?rev=289355&r1=289354&r2=289355&view=diff
==
--- libcxx/trunk/test/support/count_new.hpp (original)
+++ libcxx/trunk/test/support/count_new.hpp Sat Dec 10 20:20:17 2016
@@ -234,7 +234,10 @@ public:
 MemCounter globalMemCounter((MemCounter::MemCounterCtorArg_()));
 
 #ifndef DISABLE_NEW_COUNT
-void* operator new(std::size_t s) throw(std::bad_alloc)
+void* operator new(std::size_t s)
+#if TEST_STD_VER < 11
+throw(std::bad_alloc)
+#endif
 {
 globalMemCounter.newCalled(s);
 void* ret = std::malloc(s);
@@ -243,21 +246,34 @@ void* operator new(std::size_t s) throw(
 return ret;
 }
 
-void  operator delete(void* p) throw()
+void  operator delete(void* p)
+#if TEST_STD_VER < 11
+throw()
+#else
+noexcept
+#endif
 {
 globalMemCounter.deleteCalled(p);
 std::free(p);
 }
 
 
-void* operator new[](std::size_t s) throw(std::bad_alloc)
+void* operator new[](std::size_t s)
+#if TEST_STD_VER < 11
+throw(std::bad_alloc)
+#endif
 {
 globalMemCounter.newArrayCalled(s);
 return operator new(s);
 }
 
 
-void operator delete[](void* p) throw()
+void operator delete[](void* p)
+#if TEST_STD_VER < 11
+throw()
+#else
+noexcept
+#endif
 {
 globalMemCounter.deleteArrayCalled(p);
 operator delete(p);


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


[libcxx] r289356 - Fix more uses of dynamic exception specifications in C++17

2016-12-10 Thread Eric Fiselier via cfe-commits
Author: ericwf
Date: Sat Dec 10 20:47:36 2016
New Revision: 289356

URL: http://llvm.org/viewvc/llvm-project?rev=289356&view=rev
Log:
Fix more uses of dynamic exception specifications in C++17

Modified:

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_replace.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_nothrow_replace.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_replace.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array11.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array14.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_calls_unsized_delete_array.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_replace.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_nothrow_replace.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_replace.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete11.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete14.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_calls_unsized_delete.pass.cpp

libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp
libcxx/trunk/test/support/count_new.hpp
libcxx/trunk/test/support/test_allocator.h
libcxx/trunk/test/support/test_macros.h

Modified: 
libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp?rev=289356&r1=289355&r2=289356&view=diff
==
--- 
libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp
 (original)
+++ 
libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp
 Sat Dec 10 20:47:36 2016
@@ -22,6 +22,8 @@
 #include 
 #include 
 
+#include "test_macros.h"
+
 constexpr auto OverAligned = alignof(std::max_align_t) * 2;
 
 int unsized_delete_called = 0;
@@ -34,19 +36,19 @@ void reset() {
 aligned_delete_called = 0;
 }
 
-void operator delete(void* p) throw()
+void operator delete(void* p) TEST_NOEXCEPT
 {
 ++unsized_delete_called;
 std::free(p);
 }
 
-void operator delete(void* p, const std::nothrow_t&) throw()
+void operator delete(void* p, const std::nothrow_t&) TEST_NOEXCEPT
 {
 ++unsized_delete_nothrow_called;
 std::free(p);
 }
 
-void operator delete [] (void* p, std::align_val_t a) throw()
+void operator delete [] (void* p, std::align_val_t a) TEST_NOEXCEPT
 {
 ++aligned_delete_called;
 std::free(p);

Modified: 
libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp?rev=289356&r1=289355&r2=289356&view=diff
==
--- 
libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp
 (original)
+++ 
libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp
 Sat Dec 10 20:47:36 2016
@@ -20,6 +20,8 @@
 #include 
 #include 
 
+#include "test_macros.h"
+
 constexpr auto OverAligned = alignof(std::max_align_t) * 2;
 
 int A_constructed = 0;
@@ -41,7 +43,7 @@ struct B {
 int new_called = 0;
 alignas(OverAligned) char Buff[OverAligned * 3];
 
-void* operat

[libcxx] r289357 - Fix yet another dynamic exception spec

2016-12-10 Thread Eric Fiselier via cfe-commits
Author: ericwf
Date: Sat Dec 10 20:49:37 2016
New Revision: 289357

URL: http://llvm.org/viewvc/llvm-project?rev=289357&view=rev
Log:
Fix yet another dynamic exception spec

Modified:

libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.constr/F.pass.cpp

Modified: 
libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.constr/F.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.constr/F.pass.cpp?rev=289357&r1=289356&r2=289357&view=diff
==
--- 
libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.constr/F.pass.cpp
 (original)
+++ 
libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.constr/F.pass.cpp
 Sat Dec 10 20:49:37 2016
@@ -29,7 +29,7 @@ std::atomic throw_one(0x);
 std::atomic outstanding_new(0);
 
 
-void* operator new(std::size_t s) throw(std::bad_alloc)
+void* operator new(std::size_t s) TEST_THROW_SPEC(std::bad_alloc)
 {
 if (throw_one == 0)
 TEST_THROW(std::bad_alloc());
@@ -40,7 +40,7 @@ void* operator new(std::size_t s) throw(
 return ret;
 }
 
-void  operator delete(void* p) throw()
+void  operator delete(void* p) TEST_NOEXCEPT
 {
 --outstanding_new;
 std::free(p);


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


[libcxx] r289358 - Fix undefined behavior in container swap tests.

2016-12-10 Thread Eric Fiselier via cfe-commits
Author: ericwf
Date: Sat Dec 10 21:41:12 2016
New Revision: 289358

URL: http://llvm.org/viewvc/llvm-project?rev=289358&view=rev
Log:
Fix undefined behavior in container swap tests.

These swap tests were swapping non-POCS non-equal allocators which
is undefined behavior. This patch changes the tests to use allocators
which compare equal. In order to test that the allocators were not
swapped I added an "id" field to test_allocator which does not
participate in equality but does propagate across copies/swaps.

This patch is based off of D26623 which was submitted by STL.

Modified:

libcxx/trunk/test/std/containers/associative/map/map.special/non_member_swap.pass.cpp

libcxx/trunk/test/std/containers/associative/multimap/multimap.special/non_member_swap.pass.cpp

libcxx/trunk/test/std/containers/associative/multiset/multiset.special/non_member_swap.pass.cpp

libcxx/trunk/test/std/containers/associative/set/set.special/non_member_swap.pass.cpp
libcxx/trunk/test/std/containers/sequences/deque/deque.special/swap.pass.cpp

libcxx/trunk/test/std/containers/sequences/forwardlist/forwardlist.spec/member_swap.pass.cpp

libcxx/trunk/test/std/containers/sequences/forwardlist/forwardlist.spec/non_member_swap.pass.cpp
libcxx/trunk/test/std/containers/sequences/vector.bool/swap.pass.cpp

libcxx/trunk/test/std/containers/sequences/vector/vector.special/swap.pass.cpp
libcxx/trunk/test/std/containers/unord/unord.map/swap_member.pass.cpp

libcxx/trunk/test/std/containers/unord/unord.map/unord.map.swap/swap_non_member.pass.cpp
libcxx/trunk/test/std/containers/unord/unord.multimap/swap_member.pass.cpp

libcxx/trunk/test/std/containers/unord/unord.multimap/unord.multimap.swap/swap_non_member.pass.cpp
libcxx/trunk/test/std/containers/unord/unord.multiset/swap_member.pass.cpp

libcxx/trunk/test/std/containers/unord/unord.multiset/unord.multiset.swap/swap_non_member.pass.cpp
libcxx/trunk/test/std/containers/unord/unord.set/swap_member.pass.cpp

libcxx/trunk/test/std/containers/unord/unord.set/unord.set.swap/swap_non_member.pass.cpp
libcxx/trunk/test/support/test_allocator.h

Modified: 
libcxx/trunk/test/std/containers/associative/map/map.special/non_member_swap.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/associative/map/map.special/non_member_swap.pass.cpp?rev=289358&r1=289357&r2=289358&view=diff
==
--- 
libcxx/trunk/test/std/containers/associative/map/map.special/non_member_swap.pass.cpp
 (original)
+++ 
libcxx/trunk/test/std/containers/associative/map/map.special/non_member_swap.pass.cpp
 Sat Dec 10 21:41:12 2016
@@ -121,17 +121,17 @@ int main()
 V(11, 11),
 V(12, 12)
 };
-M m1(ar1, ar1+sizeof(ar1)/sizeof(ar1[0]), C(1), A(1));
-M m2(ar2, ar2+sizeof(ar2)/sizeof(ar2[0]), C(2), A(2));
+M m1(ar1, ar1+sizeof(ar1)/sizeof(ar1[0]), C(1), A(1, 1));
+M m2(ar2, ar2+sizeof(ar2)/sizeof(ar2[0]), C(2), A(1, 2));
 M m1_save = m1;
 M m2_save = m2;
 swap(m1, m2);
 assert(m1 == m2_save);
 assert(m2 == m1_save);
 assert(m1.key_comp() == C(2));
-assert(m1.get_allocator() == A(1));
+assert(m1.get_allocator().get_id() == 1); // not swapped
 assert(m2.key_comp() == C(1));
-assert(m2.get_allocator() == A(2));
+assert(m2.get_allocator().get_id() == 2);
 }
 {
 typedef other_allocator A;

Modified: 
libcxx/trunk/test/std/containers/associative/multimap/multimap.special/non_member_swap.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/associative/multimap/multimap.special/non_member_swap.pass.cpp?rev=289358&r1=289357&r2=289358&view=diff
==
--- 
libcxx/trunk/test/std/containers/associative/multimap/multimap.special/non_member_swap.pass.cpp
 (original)
+++ 
libcxx/trunk/test/std/containers/associative/multimap/multimap.special/non_member_swap.pass.cpp
 Sat Dec 10 21:41:12 2016
@@ -155,17 +155,17 @@ int main()
 V(11, 11),
 V(12, 12)
 };
-M m1(ar1, ar1+sizeof(ar1)/sizeof(ar1[0]), C(1), A(1));
-M m2(ar2, ar2+sizeof(ar2)/sizeof(ar2[0]), C(2), A(2));
+M m1(ar1, ar1+sizeof(ar1)/sizeof(ar1[0]), C(1), A(1, 1));
+M m2(ar2, ar2+sizeof(ar2)/sizeof(ar2[0]), C(2), A(1, 2));
 M m1_save = m1;
 M m2_save = m2;
 swap(m1, m2);
 assert(m1 == m2_save);
 assert(m2 == m1_save);
 assert(m1.key_comp() == C(2));
-assert(m1.get_allocator() == A(2));
+assert(m1.get_allocator().get_id() == 1); // not swapped
 assert(m2.key_comp() == C(1));
-assert(m2.get_allocator() == A(1));
+assert(m2.get_allocator().get_id() == 2);
 }
 #if TEST_STD_VER >= 11
 {

Modified: 
libcxx/trunk

[libcxx] r289359 - Fix copy/paste errors introduced in r289358

2016-12-10 Thread Eric Fiselier via cfe-commits
Author: ericwf
Date: Sat Dec 10 22:00:26 2016
New Revision: 289359

URL: http://llvm.org/viewvc/llvm-project?rev=289359&view=rev
Log:
Fix copy/paste errors introduced in r289358

Modified:

libcxx/trunk/test/std/containers/associative/multimap/multimap.special/non_member_swap.pass.cpp
libcxx/trunk/test/std/containers/unord/unord.multimap/swap_member.pass.cpp

Modified: 
libcxx/trunk/test/std/containers/associative/multimap/multimap.special/non_member_swap.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/associative/multimap/multimap.special/non_member_swap.pass.cpp?rev=289359&r1=289358&r2=289359&view=diff
==
--- 
libcxx/trunk/test/std/containers/associative/multimap/multimap.special/non_member_swap.pass.cpp
 (original)
+++ 
libcxx/trunk/test/std/containers/associative/multimap/multimap.special/non_member_swap.pass.cpp
 Sat Dec 10 22:00:26 2016
@@ -121,17 +121,17 @@ int main()
 V(11, 11),
 V(12, 12)
 };
-M m1(ar1, ar1+sizeof(ar1)/sizeof(ar1[0]), C(1), A(1));
-M m2(ar2, ar2+sizeof(ar2)/sizeof(ar2[0]), C(2), A(2));
+M m1(ar1, ar1+sizeof(ar1)/sizeof(ar1[0]), C(1), A(1, 1));
+M m2(ar2, ar2+sizeof(ar2)/sizeof(ar2[0]), C(2), A(1, 2));
 M m1_save = m1;
 M m2_save = m2;
 swap(m1, m2);
 assert(m1 == m2_save);
 assert(m2 == m1_save);
 assert(m1.key_comp() == C(2));
-assert(m1.get_allocator() == A(1));
+assert(m1.get_allocator().get_id() == 1);
 assert(m2.key_comp() == C(1));
-assert(m2.get_allocator() == A(2));
+assert(m2.get_allocator().get_id() == 2);
 }
 {
 typedef other_allocator A;
@@ -155,17 +155,17 @@ int main()
 V(11, 11),
 V(12, 12)
 };
-M m1(ar1, ar1+sizeof(ar1)/sizeof(ar1[0]), C(1), A(1, 1));
-M m2(ar2, ar2+sizeof(ar2)/sizeof(ar2[0]), C(2), A(1, 2));
+M m1(ar1, ar1+sizeof(ar1)/sizeof(ar1[0]), C(1), A(1));
+M m2(ar2, ar2+sizeof(ar2)/sizeof(ar2[0]), C(2), A(2));
 M m1_save = m1;
 M m2_save = m2;
 swap(m1, m2);
 assert(m1 == m2_save);
 assert(m2 == m1_save);
 assert(m1.key_comp() == C(2));
-assert(m1.get_allocator().get_id() == 1); // not swapped
+assert(m1.get_allocator() == A(2));
 assert(m2.key_comp() == C(1));
-assert(m2.get_allocator().get_id() == 2);
+assert(m2.get_allocator() == A(1));
 }
 #if TEST_STD_VER >= 11
 {

Modified: 
libcxx/trunk/test/std/containers/unord/unord.multimap/swap_member.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/unord/unord.multimap/swap_member.pass.cpp?rev=289359&r1=289358&r2=289359&view=diff
==
--- libcxx/trunk/test/std/containers/unord/unord.multimap/swap_member.pass.cpp 
(original)
+++ libcxx/trunk/test/std/containers/unord/unord.multimap/swap_member.pass.cpp 
Sat Dec 10 22:00:26 2016
@@ -35,8 +35,8 @@ int main()
 typedef test_allocator > Alloc;
 typedef std::unordered_multimap C;
 typedef std::pair P;
-C c1(0, Hash(1), Compare(1), Alloc(1));
-C c2(0, Hash(2), Compare(2), Alloc(2));
+C c1(0, Hash(1), Compare(1), Alloc(1, 1));
+C c2(0, Hash(2), Compare(2), Alloc(1, 2));
 c2.max_load_factor(2);
 c1.swap(c2);
 
@@ -75,8 +75,8 @@ int main()
 P(70, "seventy"),
 P(80, "eighty"),
 };
-C c1(0, Hash(1), Compare(1), Alloc(1));
-C c2(std::begin(a2), std::end(a2), 0, Hash(2), Compare(2), Alloc(2));
+C c1(0, Hash(1), Compare(1), Alloc(1, 1));
+C c2(std::begin(a2), std::end(a2), 0, Hash(2), Compare(2), Alloc(1, 
2));
 c2.max_load_factor(2);
 c1.swap(c2);
 
@@ -121,8 +121,8 @@ int main()
 P(1, "four"),
 P(2, "four"),
 };
-C c1(std::begin(a1), std::end(a1), 0, Hash(1), Compare(1), Alloc(1));
-C c2(0, Hash(2), Compare(2), Alloc(2));
+C c1(std::begin(a1), std::end(a1), 0, Hash(1), Compare(1), Alloc(1, 
1));
+C c2(0, Hash(2), Compare(2), Alloc(1, 2));
 c2.max_load_factor(2);
 c1.swap(c2);
 
@@ -176,8 +176,8 @@ int main()
 P(70, "seventy"),
 P(80, "eighty"),
 };
-C c1(std::begin(a1), std::end(a1), 0, Hash(1), Compare(1), Alloc(1));
-C c2(std::begin(a2), std::end(a2), 0, Hash(2), Compare(2), Alloc(2));
+C c1(std::begin(a1), std::end(a1), 0, Hash(1), Compare(1), Alloc(1, 
1));
+C c2(std::begin(a2), std::end(a2), 0, Hash(2), Compare(2), Alloc(1, 
2));
 c2.max_load_factor(2);
 c1.swap(c2);
 


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

r289361 - [CrashReproducer] Setup a module collector callback for HeaderInclude

2016-12-10 Thread Bruno Cardoso Lopes via cfe-commits
Author: bruno
Date: Sat Dec 10 22:27:31 2016
New Revision: 289361

URL: http://llvm.org/viewvc/llvm-project?rev=289361&view=rev
Log:
[CrashReproducer] Setup a module collector callback for HeaderInclude

Collect missing include that cannot be fetched otherwise (e.g. when
using headermaps).

rdar://problem/27913709

Modified:
cfe/trunk/lib/Frontend/ModuleDependencyCollector.cpp
cfe/trunk/test/Modules/crash-vfs-headermaps.m

Modified: cfe/trunk/lib/Frontend/ModuleDependencyCollector.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ModuleDependencyCollector.cpp?rev=289361&r1=289360&r2=289361&view=diff
==
--- cfe/trunk/lib/Frontend/ModuleDependencyCollector.cpp (original)
+++ cfe/trunk/lib/Frontend/ModuleDependencyCollector.cpp Sat Dec 10 22:27:31 
2016
@@ -38,6 +38,24 @@ public:
   }
 };
 
+struct ModuleDependencyPPCallbacks : public PPCallbacks {
+  ModuleDependencyCollector &Collector;
+  SourceManager &SM;
+  ModuleDependencyPPCallbacks(ModuleDependencyCollector &Collector,
+  SourceManager &SM)
+  : Collector(Collector), SM(SM) {}
+
+  void InclusionDirective(SourceLocation HashLoc, const Token &IncludeTok,
+  StringRef FileName, bool IsAngled,
+  CharSourceRange FilenameRange, const FileEntry *File,
+  StringRef SearchPath, StringRef RelativePath,
+  const Module *Imported) override {
+if (!File)
+  return;
+Collector.addFile(File->getName());
+  }
+};
+
 struct ModuleDependencyMMCallbacks : public ModuleMapCallbacks {
   ModuleDependencyCollector &Collector;
   ModuleDependencyMMCallbacks(ModuleDependencyCollector &Collector)
@@ -102,6 +120,8 @@ void ModuleDependencyCollector::attachTo
 }
 
 void ModuleDependencyCollector::attachToPreprocessor(Preprocessor &PP) {
+  PP.addPPCallbacks(llvm::make_unique(
+  *this, PP.getSourceManager()));
   PP.getHeaderSearchInfo().getModuleMap().addModuleMapCallbacks(
   llvm::make_unique(*this));
 }

Modified: cfe/trunk/test/Modules/crash-vfs-headermaps.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/crash-vfs-headermaps.m?rev=289361&r1=289360&r2=289361&view=diff
==
--- cfe/trunk/test/Modules/crash-vfs-headermaps.m (original)
+++ cfe/trunk/test/Modules/crash-vfs-headermaps.m Sat Dec 10 22:27:31 2016
@@ -40,6 +40,13 @@
 // CHECKYAML-NEXT: 'overlay-relative': 'true',
 // CHECKYAML-NEXT: 'ignore-non-existent-contents': 'false'
 // CHECKYAML: 'type': 'directory'
+// CHECKYAML: 'name': "/[[PATH:.*]]/Foo.framework/Headers",
+// CHECKYAML-NEXT: 'contents': [
+// CHECKYAML-NEXT:   {
+// CHECKYAML-NEXT: 'type': 'file',
+// CHECKYAML-NEXT: 'name': "Foo.h",
+// CHECKYAML-NEXT: 'external-contents': 
"/[[PATH]]/Foo.framework/Headers/Foo.h"
+// CHECKYAML: 'type': 'directory'
 // CHECKYAML: 'name': "/[[PATH:.*]]/i",
 // CHECKYAML-NEXT: 'contents': [
 // CHECKYAML-NEXT:   {


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


r289360 - [CrashReproducer] Collect headermap files

2016-12-10 Thread Bruno Cardoso Lopes via cfe-commits
Author: bruno
Date: Sat Dec 10 22:27:28 2016
New Revision: 289360

URL: http://llvm.org/viewvc/llvm-project?rev=289360&view=rev
Log:
[CrashReproducer] Collect headermap files

Include headermaps (.hmap files) in the .cache directory and
add VFS entries. All headermaps are known after HeaderSearch
setup, collect them right after.

rdar://problem/27913709

Added:
cfe/trunk/test/Modules/crash-vfs-headermaps.m
Modified:
cfe/trunk/include/clang/Lex/HeaderSearch.h
cfe/trunk/lib/Frontend/CompilerInstance.cpp
cfe/trunk/lib/Lex/HeaderSearch.cpp

Modified: cfe/trunk/include/clang/Lex/HeaderSearch.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/HeaderSearch.h?rev=289360&r1=289359&r2=289360&view=diff
==
--- cfe/trunk/include/clang/Lex/HeaderSearch.h (original)
+++ cfe/trunk/include/clang/Lex/HeaderSearch.h Sat Dec 10 22:27:28 2016
@@ -464,6 +464,9 @@ public:
   /// FileEntry, uniquing them through the 'HeaderMaps' datastructure.
   const HeaderMap *CreateHeaderMap(const FileEntry *FE);
 
+  /// \brief Get filenames for all registered header maps.
+  void getHeaderMapFileNames(SmallVectorImpl &Names) const;
+
   /// \brief Retrieve the name of the module file that should be used to 
   /// load the given module.
   ///

Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInstance.cpp?rev=289360&r1=289359&r2=289360&view=diff
==
--- cfe/trunk/lib/Frontend/CompilerInstance.cpp (original)
+++ cfe/trunk/lib/Frontend/CompilerInstance.cpp Sat Dec 10 22:27:28 2016
@@ -141,6 +141,14 @@ void CompilerInstance::setModuleDepColle
   ModuleDepCollector = std::move(Collector);
 }
 
+static void collectHeaderMaps(const HeaderSearch &HS,
+  std::shared_ptr MDC) {
+  SmallVector HeaderMapFileNames;
+  HS.getHeaderMapFileNames(HeaderMapFileNames);
+  for (auto &Name : HeaderMapFileNames)
+MDC->addFile(Name);
+}
+
 // Diagnostics
 static void SetUpDiagnosticLog(DiagnosticOptions *DiagOpts,
const CodeGenOptions *CodeGenOpts,
@@ -366,8 +374,12 @@ void CompilerInstance::createPreprocesso
 DepOpts.ModuleDependencyOutputDir);
   }
 
-  if (ModuleDepCollector)
+  // If there is a module dep collector, register with other dep collectors
+  // and also (a) collect header maps and (b) TODO: input vfs overlay files.
+  if (ModuleDepCollector) {
 addDependencyCollector(ModuleDepCollector);
+collectHeaderMaps(PP->getHeaderSearchInfo(), ModuleDepCollector);
+  }
 
   for (auto &Listener : DependencyCollectors)
 Listener->attachToPreprocessor(*PP);

Modified: cfe/trunk/lib/Lex/HeaderSearch.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/HeaderSearch.cpp?rev=289360&r1=289359&r2=289360&view=diff
==
--- cfe/trunk/lib/Lex/HeaderSearch.cpp (original)
+++ cfe/trunk/lib/Lex/HeaderSearch.cpp Sat Dec 10 22:27:28 2016
@@ -121,6 +121,13 @@ const HeaderMap *HeaderSearch::CreateHea
   return nullptr;
 }
 
+/// \brief Get filenames for all registered header maps.
+void HeaderSearch::getHeaderMapFileNames(
+SmallVectorImpl &Names) const {
+  for (auto &HM : HeaderMaps)
+Names.push_back(HM.first->getName());
+}
+
 std::string HeaderSearch::getModuleFileName(Module *Module) {
   const FileEntry *ModuleMap =
   getModuleMap().getModuleMapFileForUniquing(Module);

Added: cfe/trunk/test/Modules/crash-vfs-headermaps.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/crash-vfs-headermaps.m?rev=289360&view=auto
==
--- cfe/trunk/test/Modules/crash-vfs-headermaps.m (added)
+++ cfe/trunk/test/Modules/crash-vfs-headermaps.m Sat Dec 10 22:27:28 2016
@@ -0,0 +1,48 @@
+// REQUIRES: crash-recovery, shell, system-darwin
+
+// This uses a headermap with this entry:
+//   Foo.h -> Foo/Foo.h
+
+// Copy out the headermap from test/Preprocessor/Inputs/headermap-rel and avoid
+// adding another binary format to the repository.
+
+// RUN: rm -rf %t
+// RUN: mkdir -p %t/m
+// RUN: cp -a %S/../Preprocessor/Inputs/headermap-rel %t/i
+// RUN: echo '// Foo.h' > %t/i/Foo.framework/Headers/Foo.h
+
+// RUN: not env FORCE_CLANG_DIAGNOSTICS_CRASH= TMPDIR=%t TEMP=%t TMP=%t \
+// RUN: %clang -fsyntax-only -fmodules -fmodules-cache-path=%t/m %s \
+// RUN: -I %t/i/foo.hmap -F %t/i 2>&1 | FileCheck %s
+
+// RUN: FileCheck --check-prefix=CHECKSH %s -input-file %t/crash-vfs-*.sh
+// RUN: FileCheck --check-prefix=CHECKYAML %s -input-file \
+// RUN:   %t/crash-vfs-*.cache/vfs/vfs.yaml
+
+#include "Foo.h"
+#include "Foo.h"
+
+// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
+// CHECK-NEXT: note:

Re: r289019 - [c++1z] P0003R5: Removing dynamic exception specifications.

2016-12-10 Thread Richard Smith via cfe-commits
Thanks Eric!

On 10 Dec 2016 5:58 pm, "Eric Fiselier via cfe-commits" <
cfe-commits@lists.llvm.org> wrote:

To others who follow the libc++abi test failures back to this commit:

The unwind_* failures have been addressed in r289353 by using
-Wno-dynamic-exception-spec to suppress the C++17 behavior (for now).

Currently the libc++ and libc++abi test suite run using -std=c++1z unless
otherwise specified. However the dynamic exception specification tests
are fundamentally incompatible with C++17, and I don't just want to mark
the as UNSUPPORTED because they'll rarely end up running.
Instead I'll work on adjusting the test suite to support locking a test to
a give C++ dialect.

/Eric

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


Re: r289019 - [c++1z] P0003R5: Removing dynamic exception specifications.

2016-12-10 Thread Eric Fiselier via cfe-commits
No worries.

There were also some libc++ test failures for the same reason. These have
also been addressed.

/Eric

On Sat, Dec 10, 2016 at 9:51 PM, Richard Smith 
wrote:

> Thanks Eric!
>
> On 10 Dec 2016 5:58 pm, "Eric Fiselier via cfe-commits" <
> cfe-commits@lists.llvm.org> wrote:
>
> To others who follow the libc++abi test failures back to this commit:
>
> The unwind_* failures have been addressed in r289353 by using
> -Wno-dynamic-exception-spec to suppress the C++17 behavior (for now).
>
> Currently the libc++ and libc++abi test suite run using -std=c++1z unless
> otherwise specified. However the dynamic exception specification tests
> are fundamentally incompatible with C++17, and I don't just want to mark
> the as UNSUPPORTED because they'll rarely end up running.
> Instead I'll work on adjusting the test suite to support locking a test to
> a give C++ dialect.
>
> /Eric
>
> ___
> cfe-commits mailing list
> cfe-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
>
>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[libcxxabi] r289365 - Fix signed comparison warning

2016-12-10 Thread Eric Fiselier via cfe-commits
Author: ericwf
Date: Sat Dec 10 23:43:20 2016
New Revision: 289365

URL: http://llvm.org/viewvc/llvm-project?rev=289365&view=rev
Log:
Fix signed comparison warning

Modified:
libcxxabi/trunk/test/uncaught_exceptions.pass.cpp

Modified: libcxxabi/trunk/test/uncaught_exceptions.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/test/uncaught_exceptions.pass.cpp?rev=289365&r1=289364&r2=289365&view=diff
==
--- libcxxabi/trunk/test/uncaught_exceptions.pass.cpp (original)
+++ libcxxabi/trunk/test/uncaught_exceptions.pass.cpp Sat Dec 10 23:43:20 2016
@@ -23,9 +23,9 @@ struct A {
 };
 
 struct B {
-B(int cnt) : data_(cnt) {}
+B(unsigned cnt) : data_(cnt) {}
 ~B() { assert( data_ == __cxxabiv1::__cxa_uncaught_exceptions()); }
-int data_;
+unsigned data_;
 };
 
 int main ()


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


[libcxx] r289366 - Re-disable -Wsign-compare for now. I didn't catch all occurrences

2016-12-10 Thread Eric Fiselier via cfe-commits
Author: ericwf
Date: Sat Dec 10 23:45:55 2016
New Revision: 289366

URL: http://llvm.org/viewvc/llvm-project?rev=289366&view=rev
Log:
Re-disable -Wsign-compare for now. I didn't catch all occurrences

Modified:
libcxx/trunk/test/libcxx/test/config.py

Modified: libcxx/trunk/test/libcxx/test/config.py
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/test/config.py?rev=289366&r1=289365&r2=289366&view=diff
==
--- libcxx/trunk/test/libcxx/test/config.py (original)
+++ libcxx/trunk/test/libcxx/test/config.py Sat Dec 10 23:45:55 2016
@@ -659,6 +659,7 @@ class Configuration(object):
 # These warnings should be enabled in order to support the MSVC
 # team using the test suite; They enable the warnings below and
 # expect the test suite to be clean.
+# FIXME: Re-enable this after fixing remaining occurrences.
 self.cxx.addWarningFlagIfSupported('-Wsign-compare')
 # FIXME: Enable the two warnings below.
 self.cxx.addWarningFlagIfSupported('-Wno-unused-variable')


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


[libcxx] r289367 - Actually re-disable -Wsign-compare

2016-12-10 Thread Eric Fiselier via cfe-commits
Author: ericwf
Date: Sat Dec 10 23:54:43 2016
New Revision: 289367

URL: http://llvm.org/viewvc/llvm-project?rev=289367&view=rev
Log:
Actually re-disable -Wsign-compare

Modified:
libcxx/trunk/test/libcxx/test/config.py

Modified: libcxx/trunk/test/libcxx/test/config.py
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/test/config.py?rev=289367&r1=289366&r2=289367&view=diff
==
--- libcxx/trunk/test/libcxx/test/config.py (original)
+++ libcxx/trunk/test/libcxx/test/config.py Sat Dec 10 23:54:43 2016
@@ -660,7 +660,7 @@ class Configuration(object):
 # team using the test suite; They enable the warnings below and
 # expect the test suite to be clean.
 # FIXME: Re-enable this after fixing remaining occurrences.
-self.cxx.addWarningFlagIfSupported('-Wsign-compare')
+self.cxx.addWarningFlagIfSupported('-Wno-sign-compare')
 # FIXME: Enable the two warnings below.
 self.cxx.addWarningFlagIfSupported('-Wno-unused-variable')
 self.cxx.addWarningFlagIfSupported('-Wno-unused-parameter')


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