David Nadlinger
8ead24a2bb
Handle typeof(null) -> Object conversion.
...
Not sure why this wasn't triggered by the test suite before.
2013-10-13 19:18:24 +02:00
David Nadlinger
787c147986
Use Module::members -> Dsymbol::codegen to define symbols.
...
This commit fundamentally changes the way symbol emission in
LDC works: Previously, whenever a declaration was used in some
way, the compiler would check whether it actually needs to be
defined in the currently processed module, based only on the
symbol itself. This lack of contextual information proved to
be a major problem in correctly handling emission of templates
(see e.g. #454 ).
Now, the DtoResolve…() family of functions and similar only
ever declare the symbols, and definition is handled by doing
a single pass over Module::members for the root module. This
is the same strategy that DMD uses as well, which should
also reduce the maintainance burden down the road (which is
important as during the last few releases, there was pretty
much always a symbol emission related problem slowing us
down).
Our old approach might have been a bit better tuned w.r.t.
avoiding emission of unneeded template instances, but 2.064
will bring improvements here (DMD: FuncDeclaration::toObjFile).
Barring such issues, the change shoud also marginally improve
compile times because of declarations no longer being emitted
when they are not needed.
In the future, we should also consider refactoring the code
so that it no longer directly accesses Dsymbol::ir but uses
wrapper functions that ensure that the appropriate
DtoResolve…() function has been called.
GitHub: Fixes #454 .
2013-10-13 19:18:24 +02:00
David Nadlinger
b556ad9996
Don't log the uninteresting case of DtoConstExpInit.
2013-10-13 01:00:25 +02:00
David Nadlinger
e1abb01e55
Remove superfluous Dsymbol::codegen overload.
2013-10-13 01:00:25 +02:00
David Nadlinger
7dff0bbe4b
Fix IrType::isVector (so far unused anyway).
2013-10-13 01:00:24 +02:00
David Nadlinger
3d9b70c7a6
Mention TypeInfo emission in debug log.
2013-10-13 01:00:24 +02:00
David Nadlinger
d46d4ce4b1
Merge pull request #503 from klickverbot/const-array
...
Fix assertion error when building Phobos with debug builds.
2013-10-12 16:00:03 -07:00
David Nadlinger
49835a3ce2
Fix assertion error when building Phobos with debug builds.
...
Turns out that Expression::isConst() actually is much too
pessemistic as it e.g. never regards struct literals as
const.
We should get this fixed to avoid unnecessary heap
allocations for array initialization.
2013-10-13 00:58:56 +02:00
David Nadlinger
b20ba76677
Merge pull request #500 from klickverbot/ldmd-valgrind
...
LDMD: Avoid unitialized data.
2013-10-09 11:50:50 -07:00
David Nadlinger
18fbc20c0e
Merge pull request #498 from klickverbot/cmake-version-tag
...
Prefer named tags to Git revision hashes for LDC verison.
2013-10-09 11:50:32 -07:00
David Nadlinger
1c36a35009
Merge pull request #499 from klickverbot/travis
...
Travis CI fixes
2013-10-09 11:50:14 -07:00
David Nadlinger
a2a3e400c9
LDMD: Avoid unitialized data.
...
Found using Valgrind.
2013-10-09 19:50:28 +02:00
David Nadlinger
0ade0d6404
Travis: Use Launchpad PPA for LLVM 3.3; the llvm.org repo no longer has it.
2013-10-09 19:39:26 +02:00
David Nadlinger
d80325170e
Travis: Avoid running testsuite when build didn't succeed.
2013-10-09 19:30:35 +02:00
David Nadlinger
f9e141a006
Prefer named tags to Git revision hashes for LDC verison.
...
This allows for building of release packages without
manually overriding the version string.
The --tag argument is needed to pick up un-annotated tags
as well.
2013-10-09 16:05:29 +02:00
kai
e440bb04ed
Add Linux/ARM druntime changes
2013-10-09 13:00:08 +02:00
kai
4e49ea94de
Merge branch 'master' of https://github.com/ldc-developers/ldc
2013-10-09 12:44:11 +02:00
kai
3e0d2be503
Revert my last commit
2013-10-09 08:10:28 +02:00
kai
fd430f26ce
Add druntime changes for MinGW
2013-10-09 07:54:54 +02:00
David Nadlinger
c5d4897872
Merge pull request #494 from ldc-developers/unnamed-addr
...
unnamed_addr for immutable array literals
2013-10-08 21:54:03 -07:00
David Nadlinger
4987894468
Also make storage for immutable array const initializers constant/unnamed_addr.
2013-10-09 05:32:41 +02:00
David Nadlinger
498b7cfc2e
Merge pull request #493 from klickverbot/sarray-init
...
Avoid allocating array literals on initialization
2013-10-08 20:26:14 -07:00
David Nadlinger
47e212178e
Emit array literals as unnamed_addr.
...
There is really no reason not to.
2013-10-09 04:34:32 +02:00
David Nadlinger
26e3cc8a40
Never emit long array literals as inline constant.
...
Also cleaned up rest of the code a bit.
The LLVM 3.1 problem was already fixed before by not doing
anything on zero-element arrays anyway.
2013-10-09 04:27:41 +02:00
David Nadlinger
0cdb74aae7
Do not heap-allocate immutable array literals.
2013-10-09 04:07:46 +02:00
David Nadlinger
60cdf58168
Combine ArrayLiteralExp::toConstElem and initializeArrayLiteral implementations.
2013-10-09 04:07:46 +02:00
David Nadlinger
eb3261f93c
Do not GC-allocate temporary for static array initialization.
2013-10-09 01:51:45 +02:00
David Nadlinger
9866e5a14f
Comment typo fix.
2013-10-09 01:51:45 +02:00
David Nadlinger
44f60199ad
Factored actual literal building code out of ArrayLiteralExp::toElem.
2013-10-09 01:51:45 +02:00
David Nadlinger
d51d05c52e
Merge pull request #491 from klickverbot/ldmd-3.4
...
Fix prependMainExecutablePath for LLVM 3.4.
v0.12.0-alpha1
2013-10-08 09:33:23 -07:00
David Nadlinger
7b8a85a8df
Fix prependMainExecutablePath for LLVM 3.4.
2013-10-08 17:56:10 +02:00
kai
7226f005b7
Fix Windows build with MSVC.
2013-10-07 18:10:53 +02:00
David Nadlinger
5dc02c0f74
Merge pull request #488 from klickverbot/arm
...
Phobos "Hello World" compiles now on ARM.
No EH support yet.
2013-10-06 12:01:25 -07:00
David Nadlinger
e4fee1116a
ARM: Use -arm-enable-ehabi(-descriptors).
...
D exception handling does not work at all yet, but with these
flags it does for C++/Clang, at least in simple cases.
2013-10-06 20:15:28 +02:00
David Nadlinger
aba1b82539
Finally fix LLVM 3.1 compilation.
2013-10-06 19:26:58 +02:00
David Nadlinger
445b743ba5
Implement lookupTarget() with arch override for LLVM 3.1.
...
To be removed again once we drop 3.1 support.
2013-10-06 19:12:36 +02:00
David Nadlinger
250f7fab27
ARM: Fold in druntime fixes.
2013-10-06 14:54:02 +02:00
David Nadlinger
1d7943bc7e
Simplify FindLibconfig++ using find_package_handle_standard_args features.
2013-10-06 07:39:12 +02:00
David Nadlinger
422715fc89
Add -float-abi switch and auto-detection for ARM.
...
This is based on the implementation that was reverted in
fc8e0c4c20 .
2013-10-06 07:39:12 +02:00
David Nadlinger
49697a8bc2
if chain -> switch.
2013-10-06 07:39:12 +02:00
David Nadlinger
1335e26c45
Log/error message prettification.
2013-10-06 07:37:03 +02:00
David Nadlinger
359f6c585a
CPU detection for ARM.
...
This is not perfect yet, as lookupTarget wipes out any more
specific arch info (e.g. armv8) the triple might have.
2013-10-06 07:36:59 +02:00
David Nadlinger
5900d6845e
Merge pull request #487 from klickverbot/targetmachine
...
driver/target -> driver/targetmachine and main() cleanup
2013-10-05 17:40:11 -07:00
David Nadlinger
e9e4e10085
Auto-detect target attributes for -mcpu=native.
...
This is currently only implemented for ARM in LLVM.
2013-10-06 02:38:50 +02:00
David Nadlinger
e57d0458fb
getX86TargetCPU cleanup.
2013-10-06 01:48:21 +02:00
David Nadlinger
d17aa2aaac
Disentangle -march and -mcpu.
...
-mcpu=native now actually works.
GitHub: Fixes #414 .
2013-10-06 01:48:12 +02:00
David Nadlinger
02abf028f8
Don't require -triple when using -march.
...
There is really no reason we should, and I couldn't find out
why that check was added back in 2009.
Also cleaned up the code a bit now that the LLVM 3.0 branches
are gone.
2013-10-06 01:35:20 +02:00
David Nadlinger
639bc0ab71
Removed a few fatal() calls in argument parsing code.
...
global.errors is checked immediately after return anyway.
2013-10-06 01:33:29 +02:00
David Nadlinger
b2b56203a9
Use llvm::Triple::isArch64Bit (LLVM 3.1+).
2013-10-06 01:33:29 +02:00
David Nadlinger
b94ed4092e
De-ancient-C-ification, spelled out EXIT_SUCCESS.
2013-10-06 01:33:29 +02:00