Displaying 2 results from an estimated 2 matches for "checkuint32argu".
2020 Oct 30
3
Questions about ctor/dtor attribute related diagnostics
Hi,
I noticed that there are some diagnostics discrepancies between clang and
gcc related to `__attribute__((constructor(n)))` and
`__attribute__((destructor(n)))`.
*[clang]*
It seems priorities >65535 and <0 on ctor/dtor functions are ignored and
are set back to default 65535 in clang and Clang only gives an error when >
32-bit unsigned value specified.
*[g++]*
g++ gives an error for
2020 Nov 05
0
Questions about ctor/dtor attribute related diagnostics
...signed value only?
The code for this lives in SemaDeclAttr.cpp in
`handleConstructorAttr()` and `handleDestructorAttr()`, both of which
are defined similarly as trying to read the attribute argument as an
unsigned 32-bit value. If the value is outside of the range of a
32-bit unsigned number, the `checkUInt32Argument()` helper function
will diagnose it as an error. We don't have any further range checking
happening for the argument, though.
I think it's reasonable for us to match GCC's behavior with
diagnostics here. You could model the check after what is done in
`handleInitPriorityAttr()` whi...