Commit Graph

3353 Commits

Author SHA1 Message Date
kai
8408afcf6d Add SSE4.1, SSE4.2, AES and SHA opcodes.
Also adds comments for all AVX opcodes supported by DMD.
This fixes issue #514.
2013-10-29 17:31:43 +01:00
Kai Nacke
c03ed8eea9 Merge pull request #532 from klickverbot/gc2stack-fixes
gc2stack: Cleanup, handle _d_allocmemory.
2013-10-27 23:14:31 -07:00
David Nadlinger
9f1c26b52a gc2stack: Handle _d_allocmemory.
This allows us to clean up after inlining closures.
2013-10-27 17:05:19 +01:00
David Nadlinger
3539e201f8 gc2stack: Move TypeInfo handling code into FunctionInfo subclass.
This is to properly support calls that don't involve TypeInfo
at all, like it is already the case for _d_newclass, and will be
for _d_allocmemory.
2013-10-27 17:05:19 +01:00
David Nadlinger
5b9208ef85 gc2stack: Extract static size checking code into helper function. 2013-10-27 17:05:19 +01:00
David Nadlinger
e1a6d8144b gc2stack: Replace return type bool with proper enum flag.
This makes the code much easier to read.
2013-10-27 15:43:12 +01:00
David Nadlinger
27b4f730aa gc2stack: Remove unused safeToDelete mechanism. 2013-10-27 15:36:14 +01:00
Kai Nacke
5bf42f86aa Remove -Werror from LLVM_CXXFLAGS.
This flag causes compile errors we can't fix.
2013-10-25 23:30:32 +02:00
kai
a73e4602ee Simplify EmitMemSet in GarbageCollect2Stack.
Simply take advantage of the predefined `CreateMemSet()` function.
2013-10-25 23:28:29 +02:00
kai
835e972e6b Fix va_arg handling.
The change of symbol emission ignored the fact that the va_arg intrinsic must be
handled in a special way. This commit corrects the omission (which leads to seg
faults on Linux/PPC64).
2013-10-25 16:15:52 +02:00
Kai Nacke
e5fe110280 Merge pull request #526 from klickverbot/newclass-signature
Correct signature of _d_newclass runtime call.
2013-10-23 21:43:11 -07:00
Kai Nacke
cdecb99891 Merge pull request #525 from klickverbot/fix-gc2stack-ir
Do not generate invalid IR in dgc2stack pass.
2013-10-23 21:42:51 -07:00
David Nadlinger
b052b30442 Correct signature of _d_newclass runtime call.
Fixes programs trying to directly access it (e.g. the
GtkD bindings). Not sure why this didn't come up earlier.
2013-10-24 00:27:09 +02:00
David Nadlinger
1f59740524 _d_allocclass -> "_d_newclass".
The define is a leftover from the times when we supported
both D1 and D2.
2013-10-24 00:25:36 +02:00
David Nadlinger
3d8e2e5e5c Add virtual destructor to GarbageCollect2Stack to silence GCC warning. 2013-10-24 00:24:55 +02:00
David Nadlinger
36b70b68e8 Do not generate invalid IR in dgc2stack pass.
Branching to a block that starts with a landing pad
instruction is illegal.

GitHub: Fixes #524.
2013-10-23 22:53:18 +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