David Nadlinger
d402cd382e
Always add 'uwtable' attribute on x86_64.
...
This is what Clang does, and omitting it could lead to problems
w.r.t. the System V ABI. Doesn't seem to have caused any issues
so far, though.
2013-05-19 21:47:15 +02:00
David Nadlinger
8d0749c394
Merge pull request #360 from klickverbot/union-initializer
...
Unify struct initializer codegen, fix it for unions
2013-05-19 11:49:55 -07:00
David Nadlinger
1fed92b9b7
VarExp::toElem refactoring and global size assertion.
...
Frontend errors shouldn't be used for glue layer consistency
checks – maybe the error was actually hit in ancient versions.
2013-05-19 20:25:16 +02:00
David Nadlinger
41e580a79f
Get rid of now-obsolete DtoConstInitializerType.
2013-05-19 20:25:16 +02:00
David Nadlinger
eef05ba019
Do not try to guess exact initializer type.
...
This might have been required with the old (pre-3.0) LLVM
type system, but the module linker handles global type
resolution just fine now.
Also, it is virtually impossible to determine the type in
advance for some cases, e.g. an array of unions with an
initializer that contains pointers to the array itself.
2013-05-19 20:25:11 +02:00
David Nadlinger
f8f405000b
Avoid confusing naming convention.
...
We generally do not really use underscore prefixes. But if
they are used in other codebases, they typically refer to
member variables.
2013-05-18 19:51:37 +02:00
David Nadlinger
7b435c2c87
Unify handling of struct initializers.
...
GitHub: Fixes #351 .
2013-05-18 19:51:37 +02:00
David Nadlinger
b577d1cf0b
Handle different element initializer types in array literals.
2013-05-18 16:46:57 +02:00
kai
23df06a3ba
Add <cctype> to asm-x86.h.
...
This removes a conditional block introduced for MSVC.
2013-05-13 21:19:01 +02:00
David Nadlinger
b2ca861f64
Fixed ModuleInfo module name emission.
...
The name string is actually emitted inline, not as a pointer
to a global.
GitHub: Fixes #243 .
2013-05-12 01:25:48 +02:00
David Nadlinger
e1501c712f
Moved constant array creation helper to llvmhelpers.h.
2013-05-12 01:25:12 +02:00
David Nadlinger
ad03a435ad
Remove code for emitting the old ModuleInfo layout.
2013-05-12 00:47:49 +02:00
David Nadlinger
b2da152704
Remove D1 ModuleInfo remnants.
2013-05-12 00:39:15 +02:00
David Nadlinger
5742a0219c
Fix inline asm labels in template functions.
...
This is a giant kludge to avoid a redesign of the inline asm
handling code. I'd be glad if somebody came up with a better
solution.
GitHub: Fixes #340 .
2013-05-11 21:01:24 +02:00
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