[Bug middle-end/60682] New: [4.9 Regression][OpenMP] ICE on an assignment of local variable inside SIMD loop

izamyatin at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu Mar 27 10:08:00 GMT 2014


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60682

            Bug ID: 60682
           Summary: [4.9 Regression][OpenMP] ICE on an assignment of local
                    variable inside SIMD loop
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: izamyatin at gmail dot com

Seems r207629 (fix for PR59984) introduces given issue.

Test is 

class V3
{
public:
    float v[1];

    V3() {}

    V3(const V3 &x)
      {
       v[0] = x.v[0];
      }
};

struct CCC
{
  V3 a[16];
};

void foo(int num, CCC &cc) 
{

#pragma omp simd
  for(int i = 0; i < num; ++i)
    {
      V3 v3;
      cc.a[i] = v3; 
    }
}

compilation flags: -O1  -fopenmp

ICE:
internal compiler error: in create_tmp_var, at gimple-expr.c:506
       cc.a[i] = v3;
                   ^
0x97ab03 create_tmp_var(tree_node*, char const*)

Note that v3's privatization makes ICE disappear.



More information about the Gcc-bugs mailing list