[Bug middle-end/89957] New: ICE calling strnlen with an int128_t bound in a known range

msebor at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Apr 4 03:02:00 GMT 2019


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

            Bug ID: 89957
           Summary: ICE calling strnlen with an int128_t bound in a known
                    range
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

$ cat z.c && gcc -c -O2 -Wall z.c
typedef __SIZE_TYPE__ size_t;

extern size_t strnlen ();

size_t foo (__int128_t n)
{
  if (n < 0)
    n = 0;
  return strnlen ("", n);
}
z.c: In function ‘foo’:
z.c:9:23: warning: ‘strnlen’ argument 2 type is ‘__int128’ where ‘long unsigned
int’ is expected in a call to built-in function declared without prototype
[-Wbuiltin-declaration-mismatch]
    9 |   return strnlen ("", n);
      |                       ^
z.c:3:15: note: built-in ‘strnlen’ declared here
    3 | extern size_t strnlen ();
      |               ^~~~~~~
during RTL pass: expand
z.c:9:10: internal compiler error: in decompose, at wide-int.h:963
    9 |   return strnlen ("", n);
      |          ^~~~~~~~~~~~~~~
0x877bc0 wi::int_traits<generic_wide_int<wide_int_storage> >::decompose(long*,
unsigned int, generic_wide_int<wide_int_storage> const&)
        /src/gcc/svn/gcc/wide-int.h:963
0x95f62a wide_int_ref_storage<true,
false>::wide_int_ref_storage<generic_wide_int<wide_int_storage>
>(generic_wide_int<wide_int_storage> const&, unsigned int)
        /src/gcc/svn/gcc/wide-int.h:1013
0x95f5f6 generic_wide_int<wide_int_ref_storage<true, false>
>::generic_wide_int<generic_wide_int<wide_int_storage>
>(generic_wide_int<wide_int_storage> const&, unsigned int)
        /src/gcc/svn/gcc/wide-int.h:788
0x9e15df bool wi::ltu_p<generic_wide_int<wide_int_ref_storage<false, false> >,
generic_wide_int<wide_int_storage>
>(generic_wide_int<wide_int_ref_storage<false, false> > const&,
generic_wide_int<wide_int_storage> const&)
        /src/gcc/svn/gcc/wide-int.h:1913
0x9c2fea expand_builtin_strnlen
        /src/gcc/svn/gcc/builtins.c:3154
0x9d22c9 expand_builtin(tree_node*, rtx_def*, rtx_def*, machine_mode, int)
        /src/gcc/svn/gcc/builtins.c:7533
0xbfc03c expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        /src/gcc/svn/gcc/expr.c:11029
0xbee2c3 expand_expr_real(tree_node*, rtx_def*, machine_mode, expand_modifier,
rtx_def**, bool)
        /src/gcc/svn/gcc/expr.c:8274
0xbe310a store_expr(tree_node*, rtx_def*, int, bool, bool)
        /src/gcc/svn/gcc/expr.c:5673
0xbe143a expand_assignment(tree_node*, tree_node*, bool)
        /src/gcc/svn/gcc/expr.c:5436
0xa1ece5 expand_call_stmt
        /src/gcc/svn/gcc/cfgexpand.c:2722
0xa226b3 expand_gimple_stmt_1
        /src/gcc/svn/gcc/cfgexpand.c:3691
0xa22d6e expand_gimple_stmt
        /src/gcc/svn/gcc/cfgexpand.c:3850
0xa22e86 expand_gimple_tailcall
        /src/gcc/svn/gcc/cfgexpand.c:3897
0xa2b406 expand_gimple_basic_block
        /src/gcc/svn/gcc/cfgexpand.c:5863
0xa2d224 execute
        /src/gcc/svn/gcc/cfgexpand.c:6509
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.


More information about the Gcc-bugs mailing list