diff dmd/struct.c @ 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 def7a1d494fd
line wrap: on
line diff
--- a/dmd/struct.c	Sun Jun 07 15:07:29 2009 +0200
+++ b/dmd/struct.c	Sun Jun 07 16:00:13 2009 +0200
@@ -52,6 +52,10 @@
     ctor = NULL;
     defaultCtor = NULL;
 #endif
+
+#if IN_LLVM
+    availableExternally = true; // assume this unless proven otherwise
+#endif
 }
 
 enum PROT AggregateDeclaration::prot()
@@ -81,6 +85,10 @@
 void AggregateDeclaration::semantic3(Scope *sc)
 {   int i;
 
+    // LDC
+    if (!global.params.useAvailableExternally)
+        availableExternally = false;
+
     //printf("AggregateDeclaration::semantic3(%s)\n", toChars());
     if (members)
     {