https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104256

            Bug ID: 104256
           Summary: ICE in validate_condition_mode, at
                    config/rs6000/rs6000.cc:11354
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: asolokha at gmx dot com
  Target Milestone: ---
            Target: powerpc-*-linux-gnu

gfortran 12.0.1 20220123 snapshot (g:2da90ad39bf8fa9ee287e040d1f4411cb7a2e7ed)
ICEs when compiling the following testcase, extracted from
gcc/testsuite/gfortran.dg/maxloc_2.f90, w/ -mcpu=power9 -O1
-fnon-call-exceptions:

  real :: a(2), nan
  real, allocatable :: c(:)
  integer :: ia(1)

  nan = 0.0
  nan = 0.0/nan

  a(:) = nan
  ia = maxloc (a)
  if (ia(1).ne.1) STOP 1

  allocate (c(1))
  c(:) = nan
  deallocate (c)
end

% powerpc-e300c3-linux-gnu-gfortran-12.0.1 -mcpu=power9 -O1
-fnon-call-exceptions -c juc3hqi9.f90
during RTL pass: ce2
juc3hqi9.f90:15:3:

   15 | end
      |   ^
internal compiler error: in validate_condition_mode, at
config/rs6000/rs6000.cc:11354
0x75420d validate_condition_mode(rtx_code, machine_mode)
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/config/rs6000/rs6000.cc:11354
0x12b9b9c rs6000_generate_compare
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/config/rs6000/rs6000.cc:15153
0x12becb1 rs6000_emit_int_cmove(rtx_def*, rtx_def*, rtx_def*, rtx_def*)
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/config/rs6000/rs6000.cc:16320
0x174b33c gen_movsicc(rtx_def*, rtx_def*, rtx_def*, rtx_def*)
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/config/rs6000/rs6000.md:5360
0xdfc3a8 maybe_expand_insn(insn_code, unsigned int, expand_operand*)
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/optabs.cc:7997
0xdfcb88 emit_conditional_move_1
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/optabs.cc:5034
0xdfcb88 emit_conditional_move_1
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/optabs.cc:4995
0xdfcc64 emit_conditional_move(rtx_def*, rtx_def*, rtx_def*, rtx_def*,
rtx_def*, machine_mode)
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/optabs.cc:4984
0x1962646 noce_emit_cmove
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/ifcvt.cc:1759
0x19633e8 try_emit_cmove_seq
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/ifcvt.cc:3185
0x19650f9 noce_convert_multiple_sets_1
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/ifcvt.cc:3527
0x196b2c8 noce_convert_multiple_sets
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/ifcvt.cc:3281
0x196d68d noce_process_if_block
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/ifcvt.cc:3688
0x196d68d noce_find_if_block
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/ifcvt.cc:4442
0x196d68d find_if_header
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/ifcvt.cc:4647
0x196d68d if_convert
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/ifcvt.cc:5788
0x196eb5d execute
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-12.0.1_p20220123/work/gcc-12-20220123/gcc/ifcvt.cc:5941

Reply via email to