// PR target/63815
// { dg-do run { target { { i?86-*-linux* x86_64-*-linux* } && lp64 } } }
// { dg-options "-mcmodel=large" }
// { dg-additional-options "-fpic" { target fpic } }
struct ICCStringClass
{
  virtual int CreateString (int) = 0;
};
struct AGSCCDynamicObject
{
  virtual void Unserialize () = 0;
};
struct ScriptString:AGSCCDynamicObject, ICCStringClass
{
  virtual int CreateString (int);
  virtual void Unserialize ();
};
int
__attribute__ ((noinline))
CreateNewScriptString (int fromText, bool reAllocate = true)
{
  return fromText;
}
int
__attribute__ ((noinline))
ScriptString::CreateString (int fromText)
{
  return CreateNewScriptString (fromText);
}
void
__attribute__ ((noinline))
ScriptString::Unserialize ()
{
}
int
main ()
{
  ICCStringClass *x = new ScriptString;
  if (x->CreateString (1) != 1)
    __builtin_abort ();
  return 0;
}