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

            Bug ID: 79970
           Summary: [7 Regression] ICE in add_stack_var, at
                    cfgexpand.c:450 with always_inline attribute
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Keywords: ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: ipa
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: hubicka at ucw dot cz, rguenth at gcc dot gnu.org
  Target Milestone: ---

Starting from r239273, we ICE on:

$ cat ice.c
typedef int c __attribute__ ((__vector_size__ (16)));

__attribute__ ((__always_inline__)) void d (void);
void f(c x);

inline void e (c *b) {
    f (*b);
}

void a ()
{
    struct
    {
        c g[4];
    } h;
    d ();
    e (h.g);
}

$ gcc -m32 -O2 -march=athlon-tbird ice.c
ice.c:3:42: warning: always_inline function might not be inlinable
[-Wattributes]
 __attribute__ ((__always_inline__)) void d (void);
                                          ^
ice.c: In function ‘a’:
ice.c:3:42: error: inlining failed in call to always_inline ‘d’: function body
not available
ice.c:16:5: note: called from here
     d ();
     ^~~~
ice.c:3:42: error: inlining failed in call to always_inline ‘d’: function body
not available
 __attribute__ ((__always_inline__)) void d (void);
                                          ^
ice.c:16:5: note: called from here
     d ();
     ^~~~
ice.c:18:1: internal compiler error: in add_stack_var, at cfgexpand.c:450
 }
 ^
0x7c468f add_stack_var
        ../../gcc/cfgexpand.c:450
0x7c4ca7 expand_one_var
        ../../gcc/cfgexpand.c:1650
0x7c4fa3 estimated_stack_frame_size(cgraph_node*)
        ../../gcc/cfgexpand.c:1928
0xa1349f compute_inline_parameters(cgraph_node*, bool)
        ../../gcc/ipa-inline-analysis.c:2971
0xa13678 compute_inline_parameters_for_current
        ../../gcc/ipa-inline-analysis.c:3076
0xa13678 execute
        ../../gcc/ipa-inline-analysis.c:3106

Reply via email to