May 21, 2005
class BaseFoo
{
   protected void stuff()
   {
      printf("BaseFoo.stuff()\n");
   }
}

class DerivedFoo: BaseFoo
{
   protected override void stuff()
   {
      printf("DerivedFoo.stuff()\n");
   }

   package final void baseStuff()
   {
      super.stuff();
   }
}

int main()
{
   DerivedFoo f;
   f = new DerivedFoo;
   f.stuff(); // Should print "DerivedFoo.stuff()".
   f.baseStuff(); // Should print "BaseFoo.stuff()".
   return 0;
}


Command "dmd test" shows this [correct] output:
DerivedFoo.stuff()
BaseFoo.stuff()

Command "dmd -inline test" shows this incorrect output:
DerivedFoo.stuff()
DerivedFoo.stuff()


A workaround is to insert some more code in baseStuff that won't get optimized away, such as
   void delegate() foo = &stuff;
so that it won't get inlined.
June 01, 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Vathix schrieb am Sat, 21 May 2005 06:59:58 -0400:
> class BaseFoo
> {
>     protected void stuff()
>     {
>        printf("BaseFoo.stuff()\n");
>     }
> }
>
> class DerivedFoo: BaseFoo
> {
>     protected override void stuff()
>     {
>        printf("DerivedFoo.stuff()\n");
>     }
>
>     package final void baseStuff()
>     {
>        super.stuff();
>     }
> }
>
> int main()
> {
>     DerivedFoo f;
>     f = new DerivedFoo;
>     f.stuff(); // Should print "DerivedFoo.stuff()".
>     f.baseStuff(); // Should print "BaseFoo.stuff()".
>     return 0;
> }
>
>
> Command "dmd test" shows this [correct] output:
> DerivedFoo.stuff()
> BaseFoo.stuff()
>
> Command "dmd -inline test" shows this incorrect output:
> DerivedFoo.stuff()
> DerivedFoo.stuff()
>
>
> A workaround is to insert some more code in baseStuff that won't get
> optimized away, such as
>     void delegate() foo = &stuff;
> so that it won't get inlined.

Added to DStress as http://dstress.kuehne.cn/run/i/inline_10_A.d http://dstress.kuehne.cn/run/i/inline_10_B.d http://dstress.kuehne.cn/run/i/inline_10_C.d

Thomas


-----BEGIN PGP SIGNATURE-----

iD8DBQFCnb+F3w+/yD4P9tIRAjoyAKCNCZ2K3TC+ryMz+rmw+OIS5KmpygCdEuFP
HJEmjWeXuueLIa4J3jLyrK8=
=XzVe
-----END PGP SIGNATURE-----