Frits van Bommel
081efcbb7d
Copy alloca'd parameters referenced by nested functions to the nesting frame.
2009-04-18 00:34:20 +02:00
Frits van Bommel
46565f1adc
Fix nested functions.
...
My last patch was a little over-zealous in passing `undef`, it always passed
`undef` to inner functions expecting a single context frame.
2009-04-17 13:50:01 +02:00
Frits van Bommel
0262a6ec8f
Use 'undef' instead of null for unneeded contexts.
2009-04-17 03:47:56 +02:00
Frits van Bommel
33eb3133f3
Unbreak nested naked functions.
2009-04-17 01:14:35 +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
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
Frits van Bommel
909c6dae18
Fix some unittests for 64-bit asm. They were operating on int variables as if
...
they were longs.
This was causing asm1_1 to fail when compiled with -O3 because it was
overwriting the spilled value of callee-saved register %rbx, which the runtime
was using as a pointer value at the time.
2009-04-13 17:42:36 +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
Christian Kamm
a6ba7d16b2
Fix mini test runner.
2009-04-12 19:53:41 +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
Christian Kamm
18baa5c40b
Remove unnecessary GCC_EXE CMake flag. Closes #208 , thanks impulze.
2009-04-12 13:50: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
Lars Ivar Igesund
8063e8df9d
Ported script to Tango
2009-04-07 18:37:19 +02:00
Christian Kamm
ba200214d4
Make sure -run doesn't consume the config file flags.
2009-04-05 15:58:28 +02:00
Christian Kamm
253e743d05
Apply fawzi's stacktracing update from #254 .
2009-04-05 15:02:44 +02:00
Tomas Lindquist Olsen
3d1f8cc565
Merged DMD 1.042.
2009-04-03 17:59:34 +02:00
Tomas Lindquist Olsen
57bf95cb42
Moved some DMDFE files into a seperate dmd/root subdir to closer match the DMD file structure since 1.041.
2009-04-03 17:02:52 +02:00
Frits van Bommel
b7b54b5878
Don't expand tilde ('~') in paths unless it's the first character of the path
...
in question.
This should fix #255 .
2009-04-03 16:35:47 +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
Tomas Lindquist Olsen
4df1f9be35
updated ir/irtype.h guard name
2009-04-03 14:54:17 +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
Christian Kamm
8d01068c9b
Apply small includes patch for FreeBSD. Thanks kimelto!
2009-04-02 19:16:44 +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
Frits van Bommel
aa8aad611c
Commit requested by lindquist.
2009-03-31 03:06:19 +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
972fca5729
Fix #246 by running type->semantic() on parameters so tuples are expanded.
2009-03-29 23:57:51 +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