Mercurial > projects > ldc
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