Commit Graph
3338 Commits
Author SHA1 Message Date
David Nadlinger 3d8e2e5e5c Add virtual destructor to GarbageCollect2Stack to silence GCC warning. 2013-10-24 00:24:55 +02:00
Kai Nacke 287e089927 Add info to -version if compiled with address sanitizer 2013-10-23 02:53:53 +02:00
Kai Nacke e6ffffdace Files from DRV_SRC and DRV_HDR should be compiled with same flags as other files. 2013-10-23 01:26:28 +02:00
David Nadlinger 847b7ac611 Merge pull request #522 from redstar/sanitize
Build LDC with address sanitizer enabled.
2013-10-22 02:57:56 -07:00
David Nadlinger 66484b580a Simplify git_describe to work on CMake 2.8.0.
FindGit doesn't seem to work as expected on Ubuntu 10.04
(GIT-NOTFOUND even though Git is installed and available
on the $PATH).

This implementation might be overly simplistic and it
should probably use find_program() to locate Git. We need
to revisit this after the 0.12.0 release is out.
v0.12.0
2013-10-21 23:35:28 +02:00
David Nadlinger ad126e7155 Fix Git tag -> version string conversion on CMake 2.8.0.
This version is notably shipped with Ubuntu 10.04 LTS, used
for building the Linux release binaries.
2013-10-21 23:35:15 +02:00
Kai Nacke 6c7cedc484 Build LDC with address sanitizer enabled.
This commit adds an option to cmake to enable the address sanitizer if LDC is build with clang.
Specify -DSANITIZE=ON on the command line.
2013-10-21 19:49:39 +02:00
David Nadlinger 234772767a Merge pull request #520 from klickverbot/ldmd-m32-m64
LDMD: Properly initialize Params::targetModel.
2013-10-21 05:43:59 -07:00
David Nadlinger 883fd768d3 LDMD: Properly initialize Params::targetModel. 2013-10-21 13:55:49 +02:00
David Nadlinger 1d7fd40893 Merge pull request #516 from klickverbot/fix-version-format
Add 'v' back in at beginning of global.version.
2013-10-20 17:06:22 -07:00
David Nadlinger f8531f1b3c Add 'v' back in at beginning of global.version.
The lexer expects it to be there for handling __VERSION__.
2013-10-20 23:51:34 +02:00
David Nadlinger 0e71a8caef Merge pull request #512 from klickverbot/help-cleanup
-help output cleanup
v0.12.0-beta1
2013-10-14 17:22:43 -07:00
David Nadlinger 7ca329e77e More accurate description for "-vv".
Still not happy with it, but I feel it is still better
than just "very verbose".
2013-10-15 01:50:44 +02:00
David Nadlinger 28cd8b0ad2 Capitalize option decriptions. 2013-10-15 01:50:44 +02:00
David Nadlinger fd012bb002 Hide obsucre LLVM flags on versions that support it.
The idea is to hide any flags that an end user is unlikely
to need so that the -help output gets clearer. Some of the
flags are also downright confusing, as they seem similar
to unrelated D concepts. The hidden flags are still
available using -help-hidden.

Unfortunately, this is only possible on LLVM 3.3+.
2013-10-15 01:50:44 +02:00
Kai Nacke 90d0f6c12a Merge pull request #429 from redstar/moduleflags
Implement pragma(lib) on Windows using module metadata.
2013-10-14 00:26:17 -07:00
David Nadlinger f80be41713 Merge pull request #511 from klickverbot/issue-470
Gracefully handle struct decl/type mismatch when generating TypeInfo.
2013-10-13 18:24:21 -07:00
David Nadlinger 19066c4cb4 Merge pull request #510 from klickverbot/issue-497
Do not try to emit nested functions with unanalyzed parents.
2013-10-13 18:24:09 -07:00
David Nadlinger 07e8fe4908 Gracefully handle struct decl/type mismatch when generating TypeInfo.
The type should have already been resolved if the struct
itself is, but due to multiple-types-per-declaration issues
in DMD, this might not be the case.

GitHub: Fixes #470.
2013-10-13 21:58:41 +02:00
David Nadlinger 265d3ee069 Do not try to emit nested functions with unanalyzed parents.
GitHub: Fixes #497.
2013-10-13 21:37:53 +02:00
David Nadlinger 07eec1840e Folded in test suite updates. 2013-10-13 21:31:40 +02:00
David Nadlinger 0954b2763a [Trivial] Fixed class/struct mismatch. 2013-10-13 21:22:10 +02:00
David Nadlinger 00bb7f5c2e Merge pull request #508 from klickverbot/mcpu-mattr-help
Display -mcpu/-mattr help even with no source files given.
2013-10-13 12:17:46 -07:00
David Nadlinger 40cb10edf1 Merge pull request #509 from klickverbot/fix-disable-fp-elim
Bring back -disable-fp-elim.
2013-10-13 12:17:19 -07:00
David Nadlinger be497c7344 Merge pull request #507 from klickverbot/issue-454
Use Module::members -> Dsymbol::codegen to define symbols.
2013-10-13 12:16:16 -07:00
kai 4f7bc678fb Implement pragma(lib) using module metadata.
Since LLVM 3.3 pragma(lib) can be implemented like DMD does.
2013-10-13 20:35:34 +02:00
David Nadlinger 257da5afe5 Bring back -disable-fp-elim.
It was moved to llvm/CodeGen/CommandLineFlags.h.

GitHub: Fixes #502.
2013-10-13 20:26:19 +02:00
David Nadlinger 54aa182f72 Remove Walter-ism that doesn't even work in release mode. 2013-10-13 20:16:40 +02:00
David Nadlinger c466796b93 Display -mcpu/-mattr help even with no source files given.
Unfortunately, we can't easily add a test for this in our
current test runner setup (i.e. dmd-testsuite).

GitHub: Fixes #505.
2013-10-13 20:16:08 +02:00
David Nadlinger 60f385b062 Use IRState parameter instead of gIR where available. 2013-10-13 19:47:41 +02:00
David Nadlinger 1242be25d0 Remove unused, empty Ir type.
The codegen parameter was changed to IRState instead of
removing it to set the stage for an eventual eradication
of the gIR global.
2013-10-13 19:44:29 +02:00
David Nadlinger c6cf35a012 Remove unused DMD IRState implementations. 2013-10-13 19:20:37 +02:00
David Nadlinger 857d37636e Handle void[0] struct/class members.
This was also broken before the symbol emission
changes; we just accidentally managed to avoid
the only occurence in the standard library tests.
2013-10-13 19:18:24 +02:00
David Nadlinger 4fee629c4d Prefer more specific functions to DtoResolveDsymbol.
The remaining ones should also be easy to remove with a
closer look at the situation.

Ideally, we would get rid of all of them at some point and
use safe wrapper functions for accessing the IrDsymbol
associated with a given declaration (which would emit the
declarations on the fly if not already present).
2013-10-13 19:18:24 +02:00
David Nadlinger 48b7710d22 More robust way of handling static array single element initialization.
Fixes a std.traits test where there would be a mismatch
in const/shared qualifiers on the element type of a dynamic
array initializer.
2013-10-13 19:18:24 +02:00
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