Changeset 1576:4551475bc6b6
- Timestamp:
- 08/25/09 15:35:43
(3 years ago)
- Author:
- Benjamin Kramer <benny.kra@gmail.com>
- branch:
- default
- Message:
Kill off StripMetaData?.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r1570 |
r1576 |
|
| 939 | 939 | for (int i = 0; i < llvmModules.size(); i++) |
|---|
| 940 | 940 | { |
|---|
| 941 | | #if USE_METADATA |
|---|
| 942 | | //FIXME: workaround for llvm metadata bug: |
|---|
| 943 | | // the LinkInModule call asserts with metadata unstripped |
|---|
| 944 | | llvm::ModulePass* stripMD = createStripMetaData(); |
|---|
| 945 | | stripMD->runOnModule(*llvmModules[i]); |
|---|
| 946 | | delete stripMD; |
|---|
| 947 | | #endif // USE_METADATA |
|---|
| 948 | 941 | if(linker.LinkInModule(llvmModules[i], &errormsg)) |
|---|
| 949 | 942 | error("%s", errormsg.c_str()); |
|---|
| r1558 |
r1576 |
|
| 59 | 59 | cl::ZeroOrMore); |
|---|
| 60 | 60 | |
|---|
| 61 | | // Not recommended; metadata currently triggers an assert in the backend... |
|---|
| 62 | | static cl::opt<bool> |
|---|
| 63 | | disableStripMetaData("disable-strip-metadata", |
|---|
| 64 | | cl::desc("Disable default metadata stripping (not recommended)"), |
|---|
| 65 | | cl::ZeroOrMore); |
|---|
| 66 | | |
|---|
| 67 | 61 | static cl::opt<opts::BoolOrDefaultAdapter, false, opts::FlagParser> |
|---|
| 68 | 62 | enableInlining("inlining", |
|---|
| … | … | |
| 223 | 217 | bool ldc_optimize_module(llvm::Module* m) |
|---|
| 224 | 218 | { |
|---|
| 225 | | if (!optimize()) { |
|---|
| 226 | | #if USE_METADATA |
|---|
| 227 | | if (!disableStripMetaData) { |
|---|
| 228 | | // This one always needs to run if metadata is generated, because |
|---|
| 229 | | // the code generator will assert if it's not used. |
|---|
| 230 | | ModulePass* stripMD = createStripMetaData(); |
|---|
| 231 | | stripMD->runOnModule(*m); |
|---|
| 232 | | delete stripMD; |
|---|
| 233 | | } |
|---|
| 234 | | #endif |
|---|
| | 219 | if (!optimize()) |
|---|
| 235 | 220 | return false; |
|---|
| 236 | | } |
|---|
| 237 | 221 | |
|---|
| 238 | 222 | PassManager pm; |
|---|
| … | … | |
| 271 | 255 | addPassesForOptLevel(pm); |
|---|
| 272 | 256 | |
|---|
| 273 | | #if USE_METADATA |
|---|
| 274 | | if (!disableStripMetaData) { |
|---|
| 275 | | // This one is purposely not disabled by disableLangSpecificPasses |
|---|
| 276 | | // because the code generator will assert if it's not used. |
|---|
| 277 | | addPass(pm, createStripMetaData()); |
|---|
| 278 | | } |
|---|
| 279 | | #endif // USE_METADATA |
|---|
| 280 | | |
|---|
| 281 | 257 | pm.run(*m); |
|---|
| 282 | 258 | return true; |
|---|
| r1558 |
r1576 |
|
| 13 | 13 | #if USE_METADATA |
|---|
| 14 | 14 | llvm::FunctionPass* createGarbageCollect2Stack(); |
|---|
| 15 | | llvm::ModulePass* createStripMetaData(); |
|---|
| 16 | 15 | #endif // USE_METADATA |
|---|
| 17 | 16 | |
|---|