aaron.ballman added a comment.

In D31413#2277985 <https://reviews.llvm.org/D31413#2277985>, @ldionne wrote:

> In D31413#2277630 <https://reviews.llvm.org/D31413#2277630>, @smeenai wrote:
>
>> What was the conclusion for the comments about the priority level (100 vs. 
>> 101)?
>
> My understanding is that values below `101` are literally not allowed:
>
>   <...>/llvm/libcxx/src/iostream.cpp:80:66: error: 'init_priority' attribute 
> requires integer constant between 101 and 65535 inclusive
>   _LIBCPP_HIDDEN ios_base::Init __start_std_streams 
> __attribute__((init_priority(100)));
>                                                                    ^          
>    ~~~
>   1 error generated.
>
> If there's a way around that, and if values below 101 are reserved for the 
> implementation, then I agree `100` is what we should use. @aaron.ballman 
> where did you read that values below 101 were reserved for the implementation?

From GCC itself: https://godbolt.org/z/zajPsj but also from libstdc++ 
maintainers https://gcc.gnu.org/legacy-ml/gcc-help/2014-08/msg00117.html

> The GCC docs at 
> https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html don't imply 
> that -- they say the attribute starts at 101. I agree it's a fairly logical 
> thing to think values before that would be reserved, but it doesn't say 
> explicitly.
>
> Is it possible that GCC reserves values before 101 for the implementation, 
> but Clang implemented the attribute "naively" and just errors out?

Yes, and the way I would handle this is to change the `init_priority` value 
checking to allow values <= 100 if the attribute location is within a system 
header. This would allow libc++ to use the reserved priority but would still 
give errors when attempted from user code.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D31413/new/

https://reviews.llvm.org/D31413

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

Reply via email to