On Fri, 19 Jan 2024, Jakub Jelinek wrote: > Hi! > > Like for GIMPLE_PHIs or calls, even for GIMPLE_ASMs we want > a corresponding VAR_DECL assigned for lhs SSA_NAMEs of loads > from memory, as even GIMPLE_ASM relies on those VAR_DECLs to exist. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
OK. > 2024-01-19 Jakub Jelinek <ja...@redhat.com> > > PR tree-optimization/113464 > * gimple-lower-bitint.cc (gimple_lower_bitint): Don't try to > optimize loads into GIMPLE_ASM stmts. > > * gcc.dg/bitint-75.c: New test. > > --- gcc/gimple-lower-bitint.cc.jj 2024-01-18 08:44:08.337270271 +0100 > +++ gcc/gimple-lower-bitint.cc 2024-01-18 19:57:11.791976322 +0100 > @@ -6249,7 +6249,8 @@ gimple_lower_bitint (void) > if (is_gimple_debug (use_stmt)) > continue; > if (gimple_code (use_stmt) == GIMPLE_PHI > - || is_gimple_call (use_stmt)) > + || is_gimple_call (use_stmt) > + || gimple_code (use_stmt) == GIMPLE_ASM) > { > optimizable_load = false; > break; > --- gcc/testsuite/gcc.dg/bitint-75.c.jj 2024-01-18 20:08:21.710557536 > +0100 > +++ gcc/testsuite/gcc.dg/bitint-75.c 2024-01-18 20:07:18.017447734 +0100 > @@ -0,0 +1,11 @@ > +/* PR tree-optimization/113464 */ > +/* { dg-do compile { target bitint65535 } } */ > +/* { dg-options "-O2 -w -std=gnu23" } */ > + > +_BitInt(65532) i; > + > +void > +foo (void) > +{ > + __asm__ ("" : "+r" (i)); /* { dg-error "impossible constraint" } */ > +} > > Jakub > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)