Commit graph

309 commits

Author SHA1 Message Date
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
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
c2430c713b [svn r285] Fixed D -> bool LLVM helper for floating point values.
Changed the way D-style varargs are passed, now each param should be aligned to size_t.sizeof.
2008-06-14 17:28:13 +02:00
Tomas Lindquist Olsen
37b6748897 [svn r263] Changed *** ATTENTION *** to warnings.
Implemented debug info for dynamic arrays, start of general composite support.
2008-06-09 15:52:22 +02:00
Tomas Lindquist Olsen
8b83eda2a2 [svn r261] Fixed debug info for integer and floating local variables, can now be inspected in GDB.
Did a lot of smaller cleans up here and there.
Replaced more llvm::Foo with LLFoo for common stuff.
Split up tollvm.cpp.
2008-06-09 09:37:08 +02:00
Tomas Lindquist Olsen
6ededdd9e3 [svn r253] Removed -inlineasm option. inline asm is now enabled by default unless the new -noasm option is passed.
Tried adding a stack trace print when compiler crashes, not sure it's working though.
Changed data layouts to match that of llvm-gcc.
Fixed casting function pointers.
Added support checks in AsmStatement.
2008-06-08 19:09:24 +02:00
Tomas Lindquist Olsen
d03c3a7757 [svn r233] Added: -oq command line option for writing fully qualified object names.
Added: started support for x86 80bit floating point.
Changed: aggregates passed by value now use the llvm 'byval' parameter attribute, also lays ground work for
using other attributes.
Changed: eliminated a lot more std::vectorS, these showed up pretty much at the top when profiling!
Changed: performed other misc. cleanups.
Changed: halt expression now call the new llvm trap intrinsic instead of an assert(0).
Changed: dstress suite now passes -O0 by default, this only eliminates unreferenced globals, which speeds up
linking quite a bit.
2008-06-05 06:38:36 +02:00
Tomas Lindquist Olsen
b4bb3aaec4 [svn r229] Updated the object.d implementation to the latest Tango.
Fixed a bunch of the built-in typeinfos for arrays, they did not inherit TypeInfo_Array.
Applied patch to tango/text/convert/Layout.d by fvbommel, closes #47 .
Cleaned up some type code.
Replaced uses of llvm::Type with LLType (a typedef), same for Value and Constant.
Fixed a few cases where typeinfo for user structs could be emitted multiple times, seems to still be some cases of this :/
2008-05-30 19:32:04 +02:00
Tomas Lindquist Olsen
a954f06e90 [svn r226] Fixed: deleting interface.
Removed: unused util function for calling class destructors.
2008-05-14 02:00:23 +02:00
Tomas Lindquist Olsen
19748f09ec [svn r225] Fixed: delete expressions no longer use llvm's free instruction, which crashes on a GC provided pointer. 2008-05-14 01:22:40 +02:00
Tomas Lindquist Olsen
1eb35898c6 [svn r223] Fixed: assert with message could be broken.
Fixed: array length exp could fail on slice.
2008-05-13 21:40:39 +02:00
Tomas Lindquist Olsen
3365b4c02f [svn r221] Update: Switched to the 2.3 LLVM svn branch, http://llvm.org/svn/llvm-project/llvm/branches/release_23 .
Fixed: Implemented volatile statements. Uses the LLVM memory barrier intrinsic, closes #21 .
2008-05-13 17:58:11 +02:00
Tomas Lindquist Olsen
c380f43929 [svn r219] Fixed: the tango/lib/gc/basic garbage collector now compiles and links into an executable (change in tango/lib/llvmdc-posix.mak), closes #5 .
Changed: removed the crappy realloc based dynamic memory runtime and started moving over to DMD style runtime support, part of moving to real GC.
Fixed: dynamic arrays now use GC runtime for allocating memory.
Fixed: new expression now use GC for allocating memory.
Changed: revamped the dynamic array support routines related to dynamic memory.
Fixed: assertions no longer create exsessive allocas.
Changed: misc. minor cleanups.
2008-05-13 14:42:09 +02:00
Tomas Lindquist Olsen
c571bf0f70 [svn r217] Updated: the rebuild profiles.
Fixed: way to find class data fields was too strict type wise.
Fixed: foreach resulting in an implicit delegate could fail.
2008-05-12 22:44:25 +02:00
Tomas Lindquist Olsen
9f3be435b0 [svn r209] Fixed: exotic array to pointer casts were broken.
Changed: classes now have opaque vtables.
2008-05-12 18:44:11 +02:00
Christian Kamm
8d81154a97 [svn r205] moved some local static variables used for memset and memcpy intrinsics to IrState 2008-05-10 19:00:11 +02:00
Tomas Lindquist Olsen
24bd9034c3 [svn r193] Fixed: abstract classes implementing interfaces now output proper Interface info arrays. (null vtables).
Did a little renaming of delegate utils.
2008-05-07 04:45:51 +02:00
Christian Kamm
0fba6312c2 [svn r189] moving IR data back into DMD frontend nodes 2008-05-06 07:56:03 +02:00
Tomas Lindquist Olsen
a0c6cb6673 [svn r179] lots and lots of fixes, much more of tango now compiles/works. 2008-05-05 07:36:29 +02:00
Christian Kamm
db2b3d1937 [svn r177] moved variable for interface info type from being local static to being within IRState 2008-05-04 21:25:48 +02:00
Tomas Lindquist Olsen
a522719b85 [svn r176] Fixed a bug with class constructors. 2008-05-04 04:35:27 +02:00
Christian Kamm
91ae70e969 [svn r173] moved IR state previously stored in Type into IrType and a Type->IrType map; fixes #7 2008-05-01 13:32:08 +02:00
Christian Kamm
24726394f6 [svn r172] moving all IR state previously stored in Dsymbol into IrDsymbol and a Dsymbol->IrDsymbol map 2008-05-01 13:05:53 +02:00
Christian Kamm
48f1a9c507 [svn r171] starting to move IR data from AST nodes into IRState; started with IrFunction 2008-04-29 21:33:50 +02:00
Tomas Lindquist Olsen
ecd91a48f2 [svn r155] Fixed a bunch of linkage problems (especially with templates) 2008-03-24 19:43:02 +01:00
Tomas Lindquist Olsen
64537a9478 [svn r149] fixed: a bunch of D-style variadics problems.
fixed: GotoDefaultStatement implemented.
fixed: some other minor bugs.
2008-01-26 17:13:22 +01:00
Tomas Lindquist Olsen
be7828b589 [svn r146] fixed some potential problems with mismatch in order of interfaces in class data layout 2008-01-23 15:48:19 +01:00
Tomas Lindquist Olsen
f9685eab09 [svn r145] fixed some x86 problems 2008-01-23 12:58:51 +01:00
Tomas Lindquist Olsen
17247d63e7 [svn r141] fixed more problems with classinfo
moved more IR state out of the AST classes
2008-01-18 16:42:16 +01:00
Tomas Lindquist Olsen
5652546986 [svn r140] did a lot of the work towards being able to pass multiple modules on the command line. not complete yet though 2008-01-17 03:15:12 +01:00
Tomas Lindquist Olsen
4f977e3cec [svn r139] Fixed bug #33, thanks for the report :) 2008-01-14 23:09:55 +01:00
Tomas Lindquist Olsen
4505b9b006 [svn r137] Many fixes towards tango.io.Console working, but not quite there yet...
In particular, assertions has been fixed to include file/line info, and much more!
2008-01-14 05:11:54 +01:00
Tomas Lindquist Olsen
b15b3484c8 [svn r136] MAJOR UNSTABLE UPDATE!!!
Initial commit after moving to Tango instead of Phobos.

Lots of bugfixes...

This build is not suitable for most things.
2008-01-11 17:57:40 +01:00
Tomas Lindquist Olsen
bc08c6fcb1 [svn r135] * Merged DMD 1.025 *
* Fixed a minor linking order mishap *
* Added an command line option -annotate *
* Fixed some problems with running optimizations *
* Added std.stdio and dependencies to lphobos (still not 100% working, but compiles and links) *
* Fixed problems with passing aggregate types to variadic functions *
* Added initial code towards full GC support, currently based on malloc and friends, not all the runtime calls the GC yet for memory *
* Fixed problems with resolving nested function context pointers for some heavily nested cases *
* Redid function argument passing + other minor code cleanups, still lots to do on this end... *
2008-01-04 01:38:42 +01:00
Tomas Lindquist Olsen
5eb88f9e80 [svn r133] Fixed some problems with inlining not happening :P
Fixed problems with certain cases of deeply nested classes/functions.
2007-12-28 22:55:24 +01:00
Tomas Lindquist Olsen
ea362d8402 [svn r125] Renamed/moved a few backend member inside DMD structures for consistency.
Unit tests are now implemented.
2007-11-27 03:09:36 +01:00
Tomas Lindquist Olsen
cb37aab93b [svn r120] ModuleInfo implementation is now almost complete.
Fixed some nasty static array-initializer bugs.
Fixed bug in DtoArrayLen and DtoArrayPtr for full slices of static arrays.
2007-11-25 18:55:52 +01:00
Tomas Lindquist Olsen
541a677a54 [svn r118] Fixed dynamic casts.
Fixed a few interface bugs.
2007-11-25 00:19:13 +01:00
Tomas Lindquist Olsen
b43f5729b0 [svn r117] Initial working implementation of interfaces.
Groundwork for all the different types of class/interface casts laid out.
2007-11-24 06:33:00 +01:00
Tomas Lindquist Olsen
d51e392b8d [svn r113] Added initial support for associative arrays (AAs).
Fixed some problems with the string runtime support functions.
Fixed initialization of array of structs.
Fixed slice assignment where LHS is slice but RHS is dynamic array.
Fixed problems with result of assignment expressions.
Fixed foreach problems with key type mismatches.
2007-11-21 04:13:15 +01:00
Tomas Lindquist Olsen
a807cbfc91 [svn r112] Fixed 'case 1,2,3:' style case statements.
Fixed a bunch of bugs with return/break/continue in loops.
Fixed support for the DMDFE hidden implicit return value variable. This can be needed for some foreach statements where the loop body is converted to a nested delegate, but also possibly returns from the function.
Added std.math to phobos.
Added AA runtime support code, done ground work for implementing AAs.
Several other bugfixes.
2007-11-20 05:29:20 +01:00
Tomas Lindquist Olsen
adab52fad9 [svn r111] Fixed most problems with complex number support and added typeinfo for them.
Added typeinfo ti_C.
Did some changes to the way expressions that have both lvalue and rvalue LLVM values are handled.
2007-11-20 00:02:35 +01:00
Tomas Lindquist Olsen
2af443b045 [svn r110] Fixed typeinfo for classes. 2007-11-19 06:01:48 +01:00
Tomas Lindquist Olsen
5e9f5034ff [svn r108] Now basic suppport for complex types. =,+,-,*,/ are supported. 2007-11-19 02:58:58 +01:00
Tomas Lindquist Olsen
6da09c01b3 [svn r107] Getting .classinfo on a class instance now works (classinfo is stored in vtable) 2007-11-18 08:25:07 +01:00
Tomas Lindquist Olsen
c99938debf [svn r106] Turns out the last commit wasn't enough, now the D->LLVM process is even more split up.
Basically it tries to do the following in order: Resolve types, Declare symbols, Create constant initializers, Apply initializers, Generate functions bodies.
ClassInfo is now has the most useful(biased?) members working.
Probably other stuf...
2007-11-18 06:52:57 +01:00
Tomas Lindquist Olsen
d1cfe9524c [svn r104] TONS OF FIXES.
Split up declaration, constant initializer gen and definition for globals, structs, classes and functions.
Improved ClassInfo support (not complete), not in vtable yet.
Fixed a bunch of forward reference problems.
Much more. Major commit! :)
2007-11-16 08:21:47 +01:00
Tomas Lindquist Olsen
7d6bbcd87d [svn r103] Array comparisons are now fully implemented, that is - to the extent that TypeInfo is. 2007-11-15 00:24:44 +01:00
Tomas Lindquist Olsen
302015d7e8 [svn r102] Further delayed emission of function bodies to avoid problems with circular-forward-references.
Now uses the DMD _adEq(void[], void[], TypeInfo) runtime function for array equality comparison.
2007-11-14 23:39:10 +01:00