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

--- Comment #7 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
trippels@gcc75 ~ % cat ASTContext_preproc.cpp
namespace std {
template <class _T1, class _T2> struct pair {
  _T1 first;
  _T2 second;
};
template <class _T1, class _T2> pair<_T1, _T2> make_pair(_T1, _T2);
}
namespace llvm {
class StringRef;
}
using llvm::StringRef;
namespace llvm {
class StringRef {
  char *Data;
  unsigned long Length;

public:
  StringRef(int);
};
}
class A {
public:
  void m_fn1(StringRef Name) { std::make_pair(Name, nullptr); }
};
class B {
  A &Idents;
  int m_fn2() const;
};
int B::m_fn2() const { Idents.m_fn1(0); }


trippels@gcc75 ~ % cat CIndex_preproc.cpp
namespace std {
template <class _T1, class _T2> struct pair {
  _T1 first;
  _T2 second;
};
template <class _T1, class _T2> pair<_T1, _T2> make_pair(_T1, _T2);
}
namespace llvm {
class StringRef {
  char *Data;
  unsigned long Length;
};
}
void annotatePreprocessorTokens() {
  llvm::StringRef Name;
  std::make_pair(Name, nullptr);
}

trippels@gcc75 ~ % ~/gcc_5/usr/local/bin/g++ -fPIC -flto -std=c++14 -O2 -c
ASTContext_preproc.cpp
trippels@gcc75 ~ % ~/gcc_5/usr/local/bin/g++ -fPIC -flto -std=c++14 -shared -o
/dev/null CIndex_preproc.cpp ASTContext_preproc.o
 <nullptr_type 0x7f2accfb9b28 decltype(nullptr) unsigned DI
    size <integer_cst 0x7f2accdc4bb8 type <integer_type 0x7f2accdc8150
bitsizetype> constant 64>
    unit size <integer_cst 0x7f2accdc4bd0 type <integer_type 0x7f2accdc80a8
sizetype> constant 8>
    align 8 symtab 0 alias set 0 canonical type 0x7f2accfb9b28>
lto1: internal compiler error: in odr_types_equivalent_p, at ipa-devirt.c:1543
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
lto-wrapper: fatal error: /home/trippels/gcc_5/usr/local/bin/g++ returned 1
exit status
compilation terminated.
/home/trippels/bin/ld: fatal error: lto-wrapper failed
collect2: error: ld returned 1 exit status

Reply via email to