mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-04-22 19:59:02 +02:00
Implemented proper support for naked asm using llvm module level asm. Still not 100% complete, but already 1000 times better that what we had before. Don's BignumX86 implementation from Tango (when turned into a standalone unittest) seems to fully work with no changes, and great performance :)
Fixed align N; in asm blocks. Fixed inreg parameter passing on x86 for ref/out params. Removed support for lazy initialization of function local static variables, I have no idea why I ever implemented this, it's not in the D spec, and DMD doesn't support it :P Some of the global variable related changes might cause minor regressions, but they should be easily fixable.
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <vector>
|
||||
#include <list>
|
||||
#include <sstream>
|
||||
|
||||
#include "root.h"
|
||||
#include "aggregate.h"
|
||||
@@ -200,10 +201,12 @@ struct IRState
|
||||
|
||||
// for inline asm
|
||||
IRAsmBlock* asmBlock;
|
||||
std::ostringstream nakedAsm;
|
||||
|
||||
// dwarf dbg stuff
|
||||
// 'used' array solely for keeping a reference to globals
|
||||
std::vector<LLConstant*> usedArray;
|
||||
|
||||
// dwarf dbg stuff
|
||||
LLGlobalVariable* dwarfCUs;
|
||||
LLGlobalVariable* dwarfSPs;
|
||||
LLGlobalVariable* dwarfGVs;
|
||||
|
||||
Reference in New Issue
Block a user