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

            Bug ID: 63237
           Summary: [5 Regression] error: invalid operand in unary
                    operation
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: trippels at gcc dot gnu.org

markus@x4 llvm_build % < RewriteMacros.ii
extern "C" unsigned long strlen(const char *);
class A {
  int Length;

 public:
  A(const char *p1) { Length = strlen(p1); }
};
class B {
 public:
  void m_fn1(int, A);
};
class C {
 public:
  B &m_fn2();
};
int a;
void RewriteMacrosInInput() {
  C b;
  B &c = b.m_fn2();
  c.m_fn1(0, &""[a]);
}

markus@x4 llvm_build % g++ -c -O2 RewriteMacros.ii
RewriteMacros.ii: In function ‘void RewriteMacrosInInput()’:
RewriteMacros.ii:21:1: error: invalid operand in unary operation
 }
 ^
RewriteMacros.ii:21:1: error: invalid operand to unary operator
(ssizetype) a.0_6
RewriteMacros.ii:6:41: note: in statement
   A(const char *p1) { Length = strlen(p1); }
                                         ^
_14 = (long unsigned int) -(ssizetype) a.0_6;
RewriteMacros.ii:21:1: internal compiler error: verify_gimple failed
 }
 ^
0xc04b7a verify_gimple_in_cfg(function*, bool)
        ../../gcc/gcc/tree-cfg.c:5003
0xb12cd2 execute_function_todo
        ../../gcc/gcc/passes.c:1751
0xb136e3 execute_todo
        ../../gcc/gcc/passes.c:1808
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

Reply via email to