comparison dmd/module.h @ 1052:12ea38902e83

Add '-singleobj' command line switch that will tell LDC to link LLVM modules internally and only emit a single object file. The switch allows the optimizer and inliner to run on all modules at once and opens the door for template instantiation improvements that should lower compile time and executable size.
author Christian Kamm <kamm incasoftware de>
date Sat, 07 Mar 2009 19:38:00 +0100
parents 31bbc7f3b817
children b30fe7e1dbb9
comparison
equal deleted inserted replaced
1051:dc608dc33081 1052:12ea38902e83
28 28
29 // Back end 29 // Back end
30 #if IN_LLVM 30 #if IN_LLVM
31 struct DValue; 31 struct DValue;
32 typedef DValue elem; 32 typedef DValue elem;
33 namespace llvm { class Module; }
33 #else 34 #else
34 #ifdef IN_GCC 35 #ifdef IN_GCC
35 union tree_node; typedef union tree_node elem; 36 union tree_node; typedef union tree_node elem;
36 #else 37 #else
37 struct elem; 38 struct elem;
131 void semantic3(Scope* unused_sc = NULL); // pass 3 semantic analysis 132 void semantic3(Scope* unused_sc = NULL); // pass 3 semantic analysis
132 void inlineScan(); // scan for functions to inline 133 void inlineScan(); // scan for functions to inline
133 #ifdef _DH 134 #ifdef _DH
134 void genhdrfile(); // generate D import file 135 void genhdrfile(); // generate D import file
135 #endif 136 #endif
136 void genobjfile(int multiobj);
137 // void gensymfile(); 137 // void gensymfile();
138 void gendocfile(); 138 void gendocfile();
139 int needModuleInfo(); 139 int needModuleInfo();
140 Dsymbol *search(Loc loc, Identifier *ident, int flags); 140 Dsymbol *search(Loc loc, Identifier *ident, int flags);
141 void deleteObjFile(); 141 void deleteObjFile();
169 169
170 Symbol *toSymbol(); 170 Symbol *toSymbol();
171 void genmoduleinfo(); 171 void genmoduleinfo();
172 172
173 // LDC 173 // LDC
174 llvm::Module* genLLVMModule(int multiobj);
174 void buildTargetFiles(); 175 void buildTargetFiles();
175 File* buildFilePath(char* forcename, char* path, char* ext); 176 File* buildFilePath(char* forcename, char* path, char* ext);
176 Module *isModule() { return this; } 177 Module *isModule() { return this; }
177 178
178 bool llvmForceLogging; 179 bool llvmForceLogging;