Christian Kamm
625f28814d
[svn r393] Started implementation for DtoNullValue.
2008-07-15 14:53:16 +02:00
Christian Kamm
1486f29abb
[svn r391] Fix classes nested inside functions for real.
2008-07-15 10:23:50 +02:00
Christian Kamm
e69f92b613
[svn r390] Make the zero value used when no nested context was created of the correct type.
...
Fixes run/class_06.
2008-07-15 08:44:08 +02:00
Christian Kamm
e846017e80
[svn r388] ClassInfo declaration could fail if base classdecl hadn't been resolved.
...
Use ForceDeclare on the class decl instead of declaring class info only.
2008-07-15 08:17:43 +02:00
Tomas Lindquist Olsen
86a3f53cfe
[svn r386] Fixed broken DtoBoolean.
...
Some code cleanup.
2008-07-15 00:17:03 +02:00
Christian Kamm
25dea7a16e
[svn r385] Fix lvalue cast problems with -= and friends.
...
Fix complex DtoBoolean.
2008-07-14 22:48:03 +02:00
Tomas Lindquist Olsen
27674069e7
[svn r384] Some minor code cleanups.
2008-07-14 21:49:54 +02:00
Christian Kamm
ef2bdb9c1c
[svn r382] In CastExp, after the cast to CastExp.to force the type to be CastExp.type.
...
This is used for c.im for instance, where the cast is to idouble but type is double.
2008-07-14 19:17:25 +02:00
Christian Kamm
0d2ca74dac
[svn r381] Allow concatenating with static arrays.
2008-07-14 17:26:58 +02:00
Christian Kamm
7e7441a5f8
[svn r380] Improve complex number support.
2008-07-14 17:22:43 +02:00
Christian Kamm
4d24676beb
[svn r379] Fix slice assigns of the form T[] = T when T is a typedef.
...
Fixes run/a/array_initialization_20_B, D, F, H.
2008-07-14 12:39:23 +02:00
Christian Kamm
b0b530ea42
[svn r378] Make some errors fatal to prevent segfaults. Error instead of assert on missing label.
...
Fixes: nocompile/
finally_02, 03, 07, 08
goto_16_A, 16_B, 12, 13, 14
2008-07-14 12:11:30 +02:00
Christian Kamm
bcc4cfdea4
[svn r377] The previous check was too strict, it completely disallowed gotos within finally blocks. This reenables them as long as they don't cross a finally boundary.
2008-07-14 12:00:24 +02:00
Christian Kamm
c1fbcd9942
[svn r376] Fix bug with finally blocks and labels. The labels would get emitted multiple times and conflict.
...
It is now possible to add label scopes in IrFunction and all labels names will be prefixed accordingly.
Also disallow goto into finally blocks.
Fixes nocompile/finally_02 and others.
2008-07-14 11:48:55 +02:00
Christian Kamm
65be990012
[svn r375] Make DeclarationExp reuse storage if already allocated.
2008-07-14 11:47:03 +02:00
Christian Kamm
7e7ac3a6f7
[svn r374] Move label target basic block from AST to IRFunction. This is a first step to allowing labels to be emitted multiple times. (for instance within finally blocks)
2008-07-14 11:07:15 +02:00
Christian Kamm
80ba763fda
[svn r373] Labels inside tryfinally statements are not wrong in principle, so remove the assert.
2008-07-14 10:01:09 +02:00
Tomas Lindquist Olsen
45e8999c88
[svn r372] Fixed extern(C++) handling now same as DMD, which is to treat it like extern(C).
...
Fixed a problem in resolving struct types where the size of elements might not yet be known. Switched to using DMD size() instead
of LLVM ABI size (TargetData).
2008-07-14 03:23:43 +02:00
Tomas Lindquist Olsen
ee5d84a1fa
[svn r371] Fixed array init was still broken for immediate slices and complex values.
2008-07-14 01:03:53 +02:00
Christian Kamm
c2697dbce0
[svn r369] Fix nested classes when nestedVar is not generated.
2008-07-13 21:16:40 +02:00
Tomas Lindquist Olsen
dbd640a3dc
[svn r368] Fixed custom class allocators with arbitrary user arguments. Closes #25
...
Removed some dead code.
Started on a more generalised approach to call misc. D functions.
2008-07-13 20:49:10 +02:00
Tomas Lindquist Olsen
c4982165ba
[svn r366] Fixed identity exprs for structs was comparing addresses, not content!
2008-07-13 04:27:02 +02:00
Tomas Lindquist Olsen
a4e4f34a34
[svn r365] Implemented raw struct equality comparison, uses C memcmp.
...
Renamed DtoDelegateCompare to DtoDelegateEquals, for consistency with the other equality helpers.
2008-07-13 04:11:08 +02:00
Tomas Lindquist Olsen
d1e41f611e
[svn r361] Removed some dead code.
2008-07-13 02:04:25 +02:00
Tomas Lindquist Olsen
85c1b42b1b
[svn r360] Another mostly rewrite of DtoArrayInit. Should be much more robust now, and probably faster code generated for the most common cases too!
...
Fixed issues with slice initialization (!!!) of multidimensional static arrays.
Attempt to fix issue with referencing nested 'this' pointers introduced in DMD 1.033 merge.
2008-07-13 01:29:49 +02:00
Christian Kamm
c67753508b
[svn r359] Try to fix DtoArrayInit. Unfinished, breaks for arrays of primitive types.
2008-07-12 23:56:56 +02:00
Tomas Lindquist Olsen
832504e5d7
[svn r357] Merged DMD 1.033
2008-07-12 19:38:31 +02:00
Tomas Lindquist Olsen
fc6e0cfc65
[svn r356] Fixed problem with array length assignment introduced in [355]
2008-07-12 17:04:36 +02:00
Christian Kamm
717d52d4f0
[svn r355] Get rid of IRState::exps and topexp.
2008-07-12 15:43:13 +02:00
Christian Kamm
485b638272
[svn r352] Implement SwitchErrorStatement. Fixes #52 .
2008-07-11 21:06:39 +02:00
Tomas Lindquist Olsen
8c48f86f0a
[svn r350] Fixed incorrect function types for lazy arguments. looks like lazy arguments have never even worked :o well.. now they should.
2008-07-11 01:34:04 +02:00
Tomas Lindquist Olsen
521de1a47e
[svn r349] Fixed problems with static arrays of void as well as a static arrays with zero length.
...
Fixed issues with DMD generated assert statements when using class invariants, generally due to incomplete ASTs.
Removed some dead code.
Added a few comments.
2008-07-11 00:17:00 +02:00
Christian Kamm
bace4dd0e7
[svn r348] Switch on class invariants (except in release mode).
...
Generate correct member for classInvariant in classinfo struct.
2008-07-10 22:00:27 +02:00
Christian Kamm
6a45ce2474
[svn r346] Fixed #55 - llvmdc can link as fast as dmd now!
...
Made runtime to compile to native by default. Changed linker.cpp to link in native runtime library.
This change requires a runtime rebuild as well as a new symbolic link in lib/ to tango/lib/libtango-base-llvmdc-native.a.
2008-07-10 19:38:34 +02:00
Tomas Lindquist Olsen
9c28c0263a
[svn r345] Fixed the new moduleinfo stuff to have consistent symbol names with the D style.
2008-07-10 00:13:09 +02:00
Tomas Lindquist Olsen
2dfb2fcf19
[svn r344] Fixed some very minor issues with the usage listing when calling llvmdc with no arguments.
...
Changed the way moduleinfo is registered to use the same approach as DMD, this eliminates the need for correct linking order and should make the way for using a natively compiled runtime library. This should speed up linking tremendously and should now be possible.
Fixed the llvm.used array to only be emitted if really necessary.
2008-07-09 23:43:51 +02:00
Christian Kamm
d16ddb524f
[svn r342] Fix DMD bug 2206.
...
Implement mixin declarations in LLVMDC.
2008-07-09 17:01:08 +02:00
Christian Kamm
ce79feeb9b
[svn r340] Rework exception handling to work with nested tryfinally and trycatch.
2008-07-05 10:22:56 +02:00
Christian Kamm
0e43caf1cc
[svn r338] Intrinsic calls can never be invokes.
2008-07-04 08:55:58 +02:00
Christian Kamm
5f15274bc0
[svn r337] Reverted changes to toobj.cpp: Module constructor calls can never be invokes.
2008-07-04 08:51:49 +02:00
Christian Kamm
37305fb47e
[svn r336] Made sure calls within a landing pad area are invokes.
...
Nested trys still need some consideration.
2008-07-03 22:05:45 +02:00
Christian Kamm
9f0b3fb062
[svn r335] The basics of exception handling are in place.
...
Still need to make sure calls are turned into invokes everywhere. (NewExpression for instance)
Still some rough edges and corner cases to figure out.
Needs testing!
2008-07-02 22:20:18 +02:00
Christian Kamm
7d4ea30633
[svn r334] Produce an error for zero-size types instead of segfaulting.
2008-06-29 22:22:37 +02:00
Christian Kamm
ff52c70e1d
[svn r333] Fix inline asm bug with multiple branches to the same label.
2008-06-29 22:07:15 +02:00
Christian Kamm
7dd287be94
[svn r332] Fix codegen for continue within switch.
2008-06-28 18:37:27 +02:00
Tomas Lindquist Olsen
0d160ffc76
[svn r330] Implemented synchronized statements.
...
Changed the tryfinally handlers to a more generalized EnclosingHandler.
Changed ClassInfoS to be mutable so they can be used as locks.
Added new BB after throw ala return/break etc.
2008-06-28 11:37:53 +02:00
Tomas Lindquist Olsen
ac3744a59d
[svn r329] Cleaned up a bunch of array code for handling special slice cases no
...
longer relevant.
2008-06-28 05:57:16 +02:00
Tomas Lindquist Olsen
86d299a641
[svn r328] Fixed an issue with interfaces where the vtable type of a interface implemented could be invalid. Fixes several tango modules like, FileStream, ServerSocket
...
and most tina cluster modules :)
2008-06-28 03:45:18 +02:00
Tomas Lindquist Olsen
a3c7b8b369
[svn r327] Fixed some more MinGW32 issues. It's now very close to working.
...
Fixed problems with inline asm like: mov EAX, FS:4 , which incidentally is used in the runtime to get the stack bottom, on Windows.
2008-06-27 23:58:22 +02:00
Tomas Lindquist Olsen
03d26e1178
[svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
...
Fixed problems with label collisions when using labels inside inline asm. LabelStatement is now easily reached given its
Identifier, which should be useful elsewhere too.
Enabled inline asm for building the lib/compiler/llvmdc runtime code, fixing branches out of asm makes this possible.
2008-06-27 22:04:35 +02:00