Commit Graph

773 Commits

Author SHA1 Message Date
Tomas Lindquist Olsen
c7936c2ace !ClassInfo instances were not mutable, this is necessary for .classinfo based locking to work. !ModuleInfo generation was commented out as well. 2009-04-17 00:54:20 +02:00
Tomas Lindquist Olsen
803fbf4882 Make !TypeInfo output lazy unless we need to provide full definitions in general. 2009-04-16 22:20:26 +02:00
Tomas Lindquist Olsen
e01917bc0d Make typeinfo for struct 2009-04-16 22:19:36 +02:00
Tomas Lindquist Olsen
8feabfc5c6 Make sure aggregates are resolved before outputting their debug info. 2009-04-16 21:15:42 +02:00
Tomas Lindquist Olsen
414e58a318 Fixed forward referenced structs. 2009-04-16 20:41:27 +02:00
Tomas Lindquist Olsen
1437bd6b7e Merge. 2009-04-16 20:31:21 +02:00
Tomas Lindquist Olsen
02466de996 Removed invalid assertion. 2009-04-16 20:30:30 +02:00
Tomas Lindquist Olsen
9a86f9c0b5 Fixed some minitest regressions. 2009-04-16 19:21:30 +02:00
Frits van Bommel
7782d80919 Fix typo in comment 2009-04-16 12:01:28 +02:00
Frits van Bommel
5ea141e919 Tweak some optimizations.
Delegates passed to inlined functions now also stand a chance of being inlined.
This should make opApply as efficient as a regular loop, as long as both opApply
and the foreachbody are eligible for inlining; which is to say most non-virtual
opApply invocations will likely get fully inlined now.
(Note: above requires -O2 -enable-inlining or -O3)
2009-04-16 11:58:43 +02:00
Tomas Lindquist Olsen
bb98d68f64 Now compiles again, and fixed type of the Interface[N] ClassInfo symbol. 2009-04-16 11:01:49 +02:00
Frits van Bommel
1ef9941daf Name some types. 2009-04-15 21:37:01 +02:00
Frits van Bommel
8c3cc1467f Remove 'noalias' and 'nocapture' from %.nest_arg. They no longer apply now that
it may point to a struct containing variables from outer functions.
2009-04-15 20:59:21 +02:00
Frits van Bommel
c19ab2e539 Unify %.frames_list and %.frame into a single data structure, generalizing r1212
to all frames instead of just the outer-most one.
2009-04-15 20:59:19 +02:00
Tomas Lindquist Olsen
37cf5a5789 Added Doxygen file.
Completely seperated type and symbol generation. Should fix a lot of bugs, but is not yet 100% complete.
2009-04-15 20:06:25 +02:00
Frits van Bommel
c44c52296f Give all symbols nested in functions internal linkage, unless it's one of the
other special cases.
(for example: this shouldn't be done if the symbol in question is also nested
in a template; such symbols should get template-like linkage)
2009-04-13 16:16:03 +02:00
Frits van Bommel
376a825075 Fix a bug in nested context code that occured when calling a function nested in
the outermost scope with a context frame from a function using a more nested
context frame.
2009-04-13 12:19:18 +02:00
Frits van Bommel
5a04c4e9a1 For the outermost function needing a context frame, use the address of that
frame as the nest argument instead of the address of a single-element list
containing only that frame address.
This saves some stack space and reduces memory accesses.
2009-04-13 04:09:08 +02:00
Frits van Bommel
cc492ecc82 Merge 2009-04-12 22:22:15 +02:00
Frits van Bommel
071bad95dc Add some alignment info where LLVM might otherwise be more pessimistic.
In particular, %.nest_arg is always aligned even though it's bitcast from i8*.

Pointers in vtables are also guaranteed to be stored at aligned addresses.
2009-04-12 21:56:43 +02:00
Frits van Bommel
751f528969 Implement -nested-ctx=hybrid 2009-04-12 20:23:00 +02:00
Christian Kamm
893e17c259 Simplify array casts and implement dyn array -> static array. 2009-04-12 19:56:03 +02:00
Frits van Bommel
8820024070 Add an option to change the way nested variables are handled.
Only one value is implemented, which is the old way.
2009-04-12 16:22:21 +02:00
Christian Kamm
d251e5d1f4 Implement static array -> static array cast. Fixes #223.
dynamic array -> static array is still misssing!
2009-04-12 16:18:02 +02:00
Christian Kamm
b8b9c41827 Introduce checks to fix #173. 2009-04-12 14:58:18 +02:00
Frits van Bommel
b5af30636e Isolate all knowledge of what a function's nested context looks like in a
single place. No functional change.
2009-04-12 13:08:24 +02:00
Frits van Bommel
605593bcef Reduce include-order dependencies 2009-04-12 12:52:01 +02:00
Frits van Bommel
35a3d86cc6 Remove reference to llvm::cl::AllowInverse enum value which was removed in
LLVM trunk.
2009-04-08 23:05:30 +02:00
Christian Kamm
2347526ca8 Disable frame pointer elimination when -g or -gc is passed. 2009-04-08 21:12:08 +02:00
Christian Kamm
ba200214d4 Make sure -run doesn't consume the config file flags. 2009-04-05 15:58:28 +02:00
Tomas Lindquist Olsen
9c4b2b4036 Started seperating type resolution from the rest of codegen again, the merge had too many regressions. 2009-04-03 16:34:11 +02:00
Kelly Wilson
7a1052a2fc Some more fixups for mingw -- missing underscores 2009-04-02 17:27:53 -06:00
Christian Kamm
04f3c61b97 Make sure debug info is only declared once per alloca. 2009-04-02 20:56:39 +02:00
Frits van Bommel
ff72b1f640 Make sure -defaultlib and -debuglib don't get cut off if longer than 63 chars,
and clean up some overly verbose code.
2009-04-01 00:52:31 +02:00
Frits van Bommel
c6af051d82 Automated merge with http://hg.dsource.org/projects/ldc 2009-04-01 00:13:21 +02:00
Frits van Bommel
3f49ddb6d5 Fix nested references to 'ref' foreach variables.
These "walk around" the array being iterated over, so they're a bit trickier
than other variables to get right.
2009-04-01 00:01:44 +02:00
Tomas Lindquist Olsen
c6e9f7f9e2 Moved ir/irtype.* into ir/irdtype.*.
Renamed IrType to IrDType, analogous to IrDSymbol.
2009-03-31 20:21:28 +02:00
Kelly Wilson
e2d6a94271 Fix one more naked asm output problem for mingw32 and remove some
duplicate code
2009-03-30 18:22:30 -06:00
Kelly Wilson
aae3d56e32 Fix up some naked asm output for mingw32 2009-03-30 18:18:23 -06:00
Frits van Bommel
df8547a40f Remove some redundancy from the DValue hierarchy: all subclasses had a 'type'
field and identical implementations of virtual function getType().
Move these to DValue itself, and make getType() non-virtual.
2009-03-31 01:18:35 +02:00
Frits van Bommel
b602a13811 Give function & delegate literals, foreach bodies and lazy parameters internal
linkage.
2009-03-30 16:34:36 +02:00
Frits van Bommel
b7ca040f7c Fix a bug I noticed. Varargs were broken if preceded by tuple parameters. 2009-03-30 00:00:43 +02:00
Frits van Bommel
b490d80c07 Automated merge with http://hg.dsource.org/projects/ldc 2009-03-29 19:46:37 +02:00
Frits van Bommel
424bb88da0 Enable inlining by default for -O3+. 2009-03-29 19:38:59 +02:00
Christian Kamm
c9b82af9f2 Add newlines to end of file. 2009-03-29 19:19:32 +02:00
Frits van Bommel
aa508e792a Forgot to commit this file, sorry 2009-03-29 18:50:41 +02:00
Frits van Bommel
6135e4201a Small cleanup: remove mars.h #include 2009-03-29 16:47:19 +02:00
Frits van Bommel
257d305032 Change meaning of optimization levels: -O0 now means 'no optimization' like with
other compilers.
2009-03-29 15:51:14 +02:00
Frits van Bommel
e129494812 Allow specific optimization passes to be requested from the command line.
Now you can run "`ldc test.d -c -mem2reg -simplifycfg`" if you feel the urge.
The -O<N> options are still supported, and are inserted in the passes list in
the position where they appear on the command line.
(so -simplifycfg -O1 -instcombine does the "right thing")

One small change: -inline is renamed to -enable-inlining due to a naming
conflict with the option to add the -inline pass. -inline now inserts the
inlining pass in the position specified, not in the middle of -O<N>.
(ldmd has been updated to translate -inline to -enable-inlining)
2009-03-29 15:46:55 +02:00
Frits van Bommel
9af4c078a0 Another big-endian fix. (Don't lie to [s]printf...) 2009-03-29 03:53:22 +02:00