comparison gen/irstate.h @ 920:545f54041d91

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.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Tue, 03 Feb 2009 08:54:57 +0100
parents 340acf1535d0
children 03d7c4aac654
comparison
equal deleted inserted replaced
919:c76f74d09fb1 920:545f54041d91
1 #ifndef LDC_GEN_IRSTATE_H 1 #ifndef LDC_GEN_IRSTATE_H
2 #define LDC_GEN_IRSTATE_H 2 #define LDC_GEN_IRSTATE_H
3 3
4 #include <vector> 4 #include <vector>
5 #include <list> 5 #include <list>
6 #include <sstream>
6 7
7 #include "root.h" 8 #include "root.h"
8 #include "aggregate.h" 9 #include "aggregate.h"
9 10
10 #include "ir/irfunction.h" 11 #include "ir/irfunction.h"
198 FuncDeclVector dtors; 199 FuncDeclVector dtors;
199 FuncDeclVector unitTests; 200 FuncDeclVector unitTests;
200 201
201 // for inline asm 202 // for inline asm
202 IRAsmBlock* asmBlock; 203 IRAsmBlock* asmBlock;
203 204 std::ostringstream nakedAsm;
204 // dwarf dbg stuff 205
205 // 'used' array solely for keeping a reference to globals 206 // 'used' array solely for keeping a reference to globals
206 std::vector<LLConstant*> usedArray; 207 std::vector<LLConstant*> usedArray;
208
209 // dwarf dbg stuff
207 LLGlobalVariable* dwarfCUs; 210 LLGlobalVariable* dwarfCUs;
208 LLGlobalVariable* dwarfSPs; 211 LLGlobalVariable* dwarfSPs;
209 LLGlobalVariable* dwarfGVs; 212 LLGlobalVariable* dwarfGVs;
210 }; 213 };
211 214