diff dmd/declaration.h @ 1482:d9c5f5a43403

Run `semantic3` on imported modules, and emit new symbols with `available_externally` linkage. This allows the inliner to inline functions from other modules while telling the code generator to ignore those functions (treat them as declarations) Still generates a few extra `TypeInfo`s and strings... Disabled when generating debug info because I don't really understand it, and it doesn't like this.
author Frits van Bommel <fvbommel wxs.nl>
date Sun, 07 Jun 2009 16:00:13 +0200
parents 8026319762be
children df11cdec45a2
line wrap: on
line diff
--- a/dmd/declaration.h	Sun Jun 07 15:07:29 2009 +0200
+++ b/dmd/declaration.h	Sun Jun 07 16:00:13 2009 +0200
@@ -300,6 +300,11 @@
     /// Set during type generation.
     unsigned aggrIndex;
 
+    /// Variables that wouldn't have gotten semantic3'ed if we weren't inlining set this flag.
+    bool availableExternally;
+    /// Override added to set above flag.
+    void semantic3(Scope *sc);
+
     // FIXME: we're not using these anymore!
     AnonDeclaration* anonDecl;
     unsigned offset2;
@@ -754,6 +759,9 @@
     // if this is an array operation it gets a little special attention
     bool isArrayOp;
 
+    // Functions that wouldn't have gotten semantic3'ed if we weren't inlining set this flag.
+    bool availableExternally;
+
     // true if overridden with the pragma(allow_inline); stmt
     bool allowInlining;
 #endif