Commit Graph
1627 Commits
Author SHA1 Message Date
David Nadlinger 15fd67be03 Remove code for unimplemented goto-into-asm check.
The check was never fully implemented. We need to look into
this again, as currently we fail with a fairly unintellegible
LLVM ICE (added as GitHub #).
2013-05-11 20:18:34 +02:00
David Nadlinger 8b9deecf34 Remove dead code. 2013-05-11 20:12:25 +02:00
David Nadlinger d15a3bacac Minor cleanup. 2013-05-11 18:43:41 +02:00
kai e233f803ff Merge branch 'memcpy' 2013-05-10 13:48:39 +02:00
kai 522c06ff7f Do not memcpy with same source and destination.
This can happen for sret_args. Drop the assignment in this case.
2013-05-10 12:59:14 +02:00
David Nadlinger a792ecbaf2 Fix function attribute handling on LLVM 3.3+.
The issue was that when merging in the old attributes, attrs
wasn't assigned to, thus silently dropping all of them
(leading e.g. to noinline being omitted on functions containing
inline asm).

The new code hopefully also makes the intent clearer.
2013-05-09 22:57:33 +02:00
kai 2e7884a80d Add support for new parameter attribute returned.
Starting with LLVM 3.3 a new parameter attribute `returned` is supported.
The attribute states that the parameter is the return value, too. This is the
case in constructors. (Destructors and postblits do not return `this`.)
Attribute `returned` is now added to the `this` parameter of constructors.
2013-05-05 16:17:34 +02:00
David Nadlinger 0a376b9c71 Avoid unnecessary memset when allocating array literals.
This completes the merge of pull request #294. Thanks a lot to
Chris Holdsworth who originally wrote the patch!

GitHub: Fixes #294.
GitHub: Fixes #141.
2013-05-04 21:20:09 +02:00
David Nadlinger 2bf0789364 Fixed vector global initialization for > 1 byte elements. 2013-05-04 06:29:34 +02:00
John Colvin e74d9b79b6 typo 2013-04-09 00:02:55 +02:00
David Nadlinger 5e598af541 Merge remote-tracking branch 'redstar/issue133'. 2013-04-02 17:01:45 +02:00
David Nadlinger b8cdfad8c0 global.params.useAvailableExternally -> global.inExtraInliningSemantic.
This will hopefully make the associated code a bit easier
to read.
2013-04-01 21:17:13 +02:00
kai 6ab2275f09 Mark string constants as unnamed_addr 2013-03-30 15:28:38 +01:00
kai 971dc95c74 Do not emit warning about vararg for PPC64 2013-03-30 14:11:44 +01:00
kai ec0bc749d0 Calling convention fastcc is not implemented on PPC64. 2013-03-29 21:45:12 +01:00
kai e49082840f Fix comments in abi-ppc64 files. 2013-03-29 20:15:37 +01:00
kai b13f3d3164 Merge branch 'master' into merge-2.062
Conflicts:
	runtime/druntime
2013-03-24 19:39:39 +01:00
David Nadlinger b889c20dca Merge pull request #315 from klickverbot/o-o3
Make '-O' equivalent to '-O3'.
2013-03-23 09:52:58 -07:00
kai dce378ba75 Return type must be of type DIComposite. 2013-03-23 16:21:21 +01:00
kai c8d98ad31c More Dwarf debug code changes.
Add a fix for LLVM 3.3 (`createTemporaryType()` was removed) and add
linkage name to `createGlobalVariable()` (new in 3.3).
2013-03-23 15:40:29 +01:00
David Nadlinger 4cd967c4b6 Workaround for private variables pulled in from CTFE'd template functions. 2013-03-22 11:23:34 +01:00
kai 7d65a311b1 More changes to std::vector usage.
Replace with std::vector with static array, llvm::SmallVector or
add code to reserve space.
2013-03-17 23:58:30 +01:00
David Nadlinger 7d740a6d5b Emit null init() ptr for zero-initialized structs.
Fixes std.algorithm tests.
2013-03-17 18:07:00 +01:00
David Nadlinger bb5b60e591 Make '-O' equivalent to '-O3'.
I have seen it used several times in benchmarks comparing it
to 'gdc -O3' and 'dmd -O -inline' now, so people apparently
expect it to yield the highest available optimization level.
2013-03-17 02:09:54 +01:00
David Nadlinger bc09ceae18 Remove useless log delimiters, we do have log scopes. 2013-03-17 02:00:42 +01:00
David Nadlinger 5f8e13fac7 Added comment about multi-include x86 asm parser. 2013-03-17 02:00:42 +01:00
kai 93c4cf3ea5 Replace more occurances of std::vector with an array. 2013-03-17 00:50:05 +01:00
kai 31decc27df Cosmetic changes to gen/todebug.h.
Remove an unused prototype and transform comment from JavaDoc-style
to Doxygen.
2013-03-16 23:43:19 +01:00
kai 36be9b5af4 Better encoding of basic types.
The new code distinguishes between bool, int, char, float and complex types.
2013-03-16 21:35:03 +01:00
kai 46f8d999c5 Fix a LLVM 3.3 problem with debug info generation.
In some cases an assertion is triggered because the debug context of a
local variale is verified. It turns out that LLVM returns always false
for DISubprogram.Verify() if the return type is not a composite type.
Reading the Clang source it looks like the return type must be a
subroutine type. This commit introduces a dummy subroutine type to
define the return type.
2013-03-16 21:09:40 +01:00
David Nadlinger 82ba7fe548 Fix casting typeof(null) to bool.
Covered by the DMD testsuite.
2013-03-16 09:35:29 +01:00
David Nadlinger 99819d0c63 Merge branch 'master' into merge-2.062. 2013-03-11 23:07:32 +01:00
kai 0b19b81ac9 Add new intrinsic LDC_never_inline.
LDC_never_inline is a complementary intrinsic to LDC_allow_inline.
It tells the LLVM optimizer to never inline a function. This can be
useful if inlining creates incorrect code.
A possible application is core.thread.getStackTop().
2013-03-11 22:32:40 +01:00
kai 71171dbc24 Merge branch 'master' into merge-2.062
Conflicts:
	gen/llvmhelpers.cpp
2013-03-08 06:07:34 +01:00
David Nadlinger a303622074 Allow casting AAs to void*.
GitHub: Fixes #302.
2013-03-07 23:18:08 +01:00
kai d5744346c6 Change naked asm functions to accept enum declaration.
An enum defines constant values which can be used without trouble in
naked asm functions.
2013-03-06 18:18:56 +01:00
kai ecd9f14b0d Remove SARRAYVALUE 2013-03-06 18:18:00 +01:00
kai 0fd586a818 Remove STRUCTTHISREF 2013-03-06 18:18:00 +01:00
kai aa4fe6a748 Remove DMDV1 and DMDV2. 2013-03-06 18:18:00 +01:00
David Nadlinger c8a54de074 Merge Kai's D1 removal commits. 2013-03-06 16:41:29 +01:00
kai 37558273c2 Remove SARRAYVALUE 2013-03-06 10:20:24 +01:00
kai c3801d65f5 Remove STRUCTTHISREF 2013-03-06 10:20:24 +01:00
kai 1e4a8fffc2 Remove DMDV1 and DMDV2. 2013-03-06 10:20:24 +01:00
David Nadlinger 10bc3fd52b Merge pull request #298 from redstar/bitops
Fix big-endian code generation for btc, btr and bts.
2013-03-04 09:51:22 -08:00
kai 5a9336bf25 Fix another attribute problem with LLVM 3.3. 2013-03-03 15:10:33 +01:00
kai 1ab2204e0b Fix big-endian code generation for btc, btr and bts.
These intrinsics operate on size_t words. The generated LLVM IR operates
on bytes and therefore assumes a little-endian architecture.
The fix is to change the generated IR to work on size_t words.
2013-03-02 19:30:34 +01:00
kai 820f6dbc7c Fix deprecation messages for non-vendor pragmas.
The deprecation message for non-vendor pragmas was never shown.
2013-02-28 08:00:43 +01:00
kai 72b04d6ef8 Fix LLVM 3.3 build.
llvm/CallingConv.h was moved to folder llvm/IR.
2013-02-28 06:56:18 +01:00
David Nadlinger 2d3de4a3d4 Fix ABI on Win32.
We can't simply use the C calling convention, as the D(MD)
ABI is callee-pop, and this is hardcoded in naked functions
with stack parameters.

The \1 "trick" is normally used to avoid prefixes added by
LLVM; on the 3.2 release, a patch is needed to make it work
for the @<n> stdcall suffixes as well.
2013-02-26 13:14:32 +01:00
David Nadlinger d2f8c929d0 MinGW: pragma(lib,...) DMD compatibility hacks. 2013-02-26 13:14:32 +01:00