diff dmd/inline.c @ 1640:9bf06e02070b

Merge DMD 1.057.
author Christian Kamm <kamm incasoftware de>
date Mon, 08 Mar 2010 21:39:20 +0100
parents 44b145be2ef5
children
line wrap: on
line diff
--- a/dmd/inline.c	Mon Mar 08 20:09:18 2010 +0100
+++ b/dmd/inline.c	Mon Mar 08 21:39:20 2010 +0100
@@ -1,5 +1,5 @@
 
-// Copyright (c) 1999-2009 by Digital Mars
+// Copyright (c) 1999-2010 by Digital Mars
 // All Rights Reserved
 // written by Walter Bright
 // http://www.digitalmars.com
@@ -292,6 +292,11 @@
 
 int CallExp::inlineCost(InlineCostState *ics)
 {
+    // Bugzilla 3500: super.func() calls must be devirtualized, and the inliner
+    // can't handle that at present.
+    if (e1->op == TOKdotvar && ((DotVarExp *)e1)->e1->op == TOKsuper)
+	return COST_MAX;
+
     return 1 + e1->inlineCost(ics) + arrayInlineCost(ics, arguments);
 }