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

            Bug ID: 87821
           Summary: pdp11 ICE on overaligned local variable: REG_POINTER
                    used with unexpected rtx code 'const_int' in
                    mark_reg_pointer
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

Compiling the following snippet with a pdp11-aout cross-compiler results in the
ICE below.  This came up while testing a fix for pr87795.

$ cat t.c && /ssd/build/pdp11-aout/gcc-svn/gcc/xgcc -B
/ssd/build/pdp11-aout/gcc-svn/gcc -S -Wall t.c
#define A 0x10000000 >> 12

void f (void*);

void g (void)
{
  __attribute__ ((aligned (A))) int i;
  // _Static_assert (_Alignof (i) == A);
  f (&i);
}
during RTL pass: expand
t.c: In function ā€˜gā€™:
t.c:5:6: internal compiler error: RTL flag check: REG_POINTER used with
unexpected rtx code 'const_int' in mark_reg_pointer, at emit-rtl.c:1460
    5 | void g (void)
      |      ^
0xed5d6d rtl_check_failed_flag(char const*, rtx_def const*, char const*, int,
char const*)
        /ssd/src/gcc/svn/gcc/rtl.c:939
0xa6ad43 mark_reg_pointer(rtx_def*, int)
        /ssd/src/gcc/svn/gcc/emit-rtl.c:1460
0xa93de2 get_dynamic_stack_base(poly_int<1u, long>, unsigned int)
        /ssd/src/gcc/svn/gcc/explow.c:1606
0x939180 expand_stack_vars
        /ssd/src/gcc/svn/gcc/cfgexpand.c:1208
0x93c56b expand_used_vars
        /ssd/src/gcc/svn/gcc/cfgexpand.c:2281
0x94a9ff execute
        /ssd/src/gcc/svn/gcc/cfgexpand.c:6268
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.

Reply via email to