[PATCH] D31856: Headers: Make the type of SIZE_MAX the same as size_t
    Duncan P. N. Exon Smith via Phabricator via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Thu Apr 20 18:59:12 PDT 2017
    
    
  
dexonsmith added a comment.
Hmm... presumably, this test should pass:
  $ ./bin/clang -nostdinc -isystem ./lib/clang/5.0.0/include -std=c++1z -fsyntax-only t.cpp
  t.cpp:3:1: error: static_assert failed
  static_assert(__is_same(intptr_t, __INTPTR_TYPE__));
  ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  t.cpp:4:1: error: static_assert failed
  static_assert(__is_same(uintptr_t, __UINTPTR_TYPE__));
  ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2 errors generated.
  $ cat t.cpp 
  #include <stdint.h>
  
  static_assert(__is_same(intptr_t, __INTPTR_TYPE__));
  static_assert(__is_same(uintptr_t, __UINTPTR_TYPE__));
Discovered that it fails (at least for `-triple x86_64-apple-macosx10.12.0`) while writing tests for an improved patch that covers SIZE_MAX, PTRDIFF_MIN/MAX, UINTPTR_MAX, and INTPTR_MAX, since I was trying:
  static_assert(__is_same(__typeof__(INTPTR_MIN), intptr_t));
  static_assert(__is_same(__typeof__(INTPTR_MAX), intptr_t));
  static_assert(__is_same(__typeof__(UINTPTR_MAX), uintptr_t));
  static_assert(__is_same(__typeof__(PTRDIFF_MIN), ptrdiff_t));
  static_assert(__is_same(__typeof__(PTRDIFF_MAX), ptrdiff_t));
  static_assert(__is_same(__typeof__(SIZE_MAX), size_t));
and the first three assertions all failed.
Is `__INTPTR_TYPE__` correct, or is `intptr_t`?  Is it safe to fix the one that's wrong?
https://reviews.llvm.org/D31856
    
    
More information about the cfe-commits
mailing list