https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108415
Bug ID: 108415 Summary: ICE in emit_library_call_value_1 at gcc/calls.cc:4181 Product: gcc Version: 13.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: linkw at gcc dot gnu.org CC: bergner at gcc dot gnu.org, linkw at gcc dot gnu.org, marxin at gcc dot gnu.org, segher at gcc dot gnu.org Depends on: 108240 Target Milestone: --- Target: powerpc +++ This bug was initially created as a clone of Bug #108240 +++ For the case /home/marxin/Programming/gcc/gcc/testsuite/gfortran.dg/minloc_string_1.f90, with options: -mmodulo -mcpu=401 -m64 (Linux and the default cpu power8) Or options: -m32 -mcpu=401 -mmodulo (Linux BE and the default cpu power8) we can see the ICE which is exactly as that in PR108240. This bug is separated from PR108240, as it's a latent bug, the ICE itself is actually nothing to do with r13-4894 which rework powerpc64 handling. The root cause is that -mcpu=401 implies soft float and -mmodulo implies ISA_3_0_MASKS_SERVER (VSX), they conflicts very much, but this check is too early: if (!TARGET_HARD_FLOAT) { if (rs6000_isa_flags_explicit & OPTION_MASK_VSX) msg = N_("%<-mvsx%> requires hardware floating point"); else { rs6000_isa_flags &= ~ OPTION_MASK_VSX; rs6000_isa_flags_explicit |= OPTION_MASK_VSX; } } Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108240 [Bug 108240] [13 Regression] ICE in emit_library_call_value_1 at gcc/calls.cc:4181 since r13-4894-gacc727cf02a144