[Bug c++/99309] [10/11 Regression] Segmentation fault with __builtin_constant_p usage at -O2
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Mar 1 09:44:49 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99309
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |hubicka at gcc dot gnu.org,
| |jakub at gcc dot gnu.org
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Testcase without headers:
struct T {
int val;
explicit constexpr operator int() const { return val; }
constexpr T(long v):val(v){}
void operator*=(T m) {
if(__builtin_constant_p(m.val)){
__builtin_printf ("normal\n");
return;
}else if(__builtin_constant_p(val)){
__builtin_printf ("recursive\n");
return;
}else{
__builtin_printf ("return\n");
return;
}
}
};
int main(){
T constexpr step=610334368;
T value=1;
for(int _=0; _<100; ++_){
__builtin_printf ("%d %d\n", (int) value, (int) step);
value*=step;
__builtin_printf ("%d %d\n", (int) value, (int) step);
}
}
Bet yet another IPA/inlining bug, like e.g. PR98834, the __builtin_unreachable
call is added during inlining:
Introduced new external node (void __builtin_unreachable()/11).
More information about the Gcc-bugs
mailing list