/* APPLE LOCAL file 5920116 */
/* Test proper generation of weak virtual function thunks.  */
/* { dg-do run  } */
/* { dg-options "-mdynamic-no-pic" } */

int result = 101;

struct Interface1
{
  int if1_var;
  virtual void Interface1Func(void) = 0;
};

struct Interface2
{
  virtual void Interface2Func(void) = 0;
};

class Implementation : public Interface1, public Interface2
{
  void Interface1Func(void) { result -= 1; }
  void Interface2Func(void) { result -= 100; }
};

int main (void)
{
  Implementation *o2 = new Implementation;
  ((Interface1 *) o2)->Interface1Func();
  ((Interface2 *) o2)->Interface2Func();
  delete o2;
  return result;
}
