[Bug target/108415] New: ICE in emit_library_call_value_1 at gcc/calls.cc:4181

linkw at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jan 16 06:35:38 GMT 2023


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


More information about the Gcc-bugs mailing list