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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hubicka at gcc dot gnu.org

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
.optimized of LTRANS unit 60 has

  # DEBUG BEGIN_STMT
  # DEBUG D#456 => -align_bytes_448
  # DEBUG D#453 => (long int) D#456
  # DEBUG D#245 => 0
  # DEBUG arg => D#453
  # DEBUG INLINE_ENTRY gen_rtx_CONST_INT
  # DEBUG D#246 => D#245
  # DEBUG mode => D#246
  _1005 = 64 - align_bytes_448;
  _1045 = (long int) _1005;
  _1046 = const_int_rtx[_1045];
  # DEBUG mode => NULL
  # DEBUG arg => NULL
  _95 = this_target_rtl;
  _96 = _95->x_global_rtl[0];
  _97 = gen_and2_insn (_96, _1046);

and after IPA we see

  # DEBUG BEGIN_STMT
  _92 = -align_bytes_448;
  _93 = (long int) _92;
  # DEBUG D#245ptD.0 => 0
  arg_1327 = _93;
  # DEBUG arg => arg_1327
  # DEBUG arg => arg_1327
  # DEBUG INLINE_ENTRY gen_rtx_CONST_INT
  # DEBUG D#246ptD.0 => D#245ptD.0
  # DEBUG mode => D#246ptD.0
  _1042 = arg_1327;
  _1043 = (unsigned long) _1042;
  _1044 = _1043 + 64;
  if (_1044 <= 128)
    goto <bb 59>; [51.12%]
  else
    goto <bb 60>; [48.88%]

  <bb 59> [local count: 67075190]:
  _1045 = _1042 + 64;
  _1046 = const_int_rtx[_1045];
  _1258 = _1046;
  # DEBUG arg => NULL
  # DEBUG mode => NULL
  # DEBUG arg => NULL
  _94 = _1258;
  _95 = this_target_rtl;
  _96 = _95->x_global_rtl[0];
  # USE = anything
  # CLB = anything
  _97 = gen_and2_insn (_96, _94);
  # USE = anything
  # CLB = anything
  insn_472 = emit_insn (_97);
  # DEBUG insn => insn_472
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG _rtx => insn_472
  # DEBUG BEGIN_STMT
  _98 = insn_472->code;
  _99 = _98 + 65528;
  switch (_98) <default: <L12> [0.00%], case 8 ... 11: <L13> [100.00%], case
13: <L13> [100.00%], case 25: <L13> [100.00%]>

  <bb 60> [local count: 64136059]:
  _1047 = const_int_htab;
  _1048 = (unsigned int) _1042;
  # USE = anything
  # CLB = anything
  __builtin_unreachable ();

so it looks like the else path materialized to be unreachable for some
reason.  Before IPA we have

  _92 = -align_bytes_448;
  _93 = (long int) _92;
  _94 = gen_rtx_CONST_INT (0, _93);

IPA CP knows

    callsite  ix86_expand_prologue/1286343 -> gen_rtx_CONST_INT/244924 :
       param 0: CONST: 0
         value: 0x0, mask: 0x0
         Unknown VR
       param 1: UNKNOWN
         value: 0x0, mask:
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         VR  [-536870911, -5]

    callsite  ix86_expand_prologue/1286343 -> gen_rtx_CONST_INT/244924 :
       param 0: CONST: 0
         value: 0x0, mask: 0x0
         Unknown VR
       param 1: UNKNOWN
         value: 0x0, mask:
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         VR  [-536870911, 0]

and it at least creates a constprop clone for VOIDmode.

Considering gen_rtx_CONST_INT.constprop/2274667 with 38 size
 to be inlined into ix86_expand_prologue/1286343 in unknown:-1
 Estimated badness is -0.000000, frequency 0.12.
    Badness calculation for ix86_expand_prologue/1286343 ->
gen_rtx_CONST_INT.constprop/2274667
      size growth 2, time 4.533600 unspec 7.533600 IPA hints: cross_module
      -0.000000: guessed profile. frequency 0.122200, count -1 caller count -1
time saved 1.955200 overall growth 62692 (current) 39603 (original) 104883
(compensated)
      Adjusted by hints -0.000000
  Parm map:  -5 -5


I'm somewhat lost as to where to look for why that unreachable () is created.
It looks like the inliner redirects things this way.

Reply via email to