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
David Nadlinger
3392f70a4e
Move calling convention conversion into TargetABI.
...
The code is tightly coupled to TargetABI (the transformations
there only make sense knowing that the right CC is selected).
2013-02-26 00:20:45 +01:00
David Nadlinger
1a132d5d41
Integrate obj_includelib into its only caller.
2013-02-26 00:20:45 +01:00
kai
7fd4fc81c3
Fix LLVM 3.3 compile errors.
2013-02-25 21:18:10 +01:00
kai
4ec9fbc011
Small cleanup of gen/pragma.cpp
...
- Added locations to many error messages
- Fixed indentation
2013-02-25 20:32:35 +01:00
David Nadlinger
6449d5dea2
Fix MinGW names for naked functions.
2013-02-13 00:07:55 +01:00
David Nadlinger
3662b06a88
Remove unused variable.
2013-02-13 00:07:52 +01:00
David Nadlinger
8b71c78571
Minor code cleanup.
...
No functionality change intended.
2013-02-11 08:25:30 +01:00
Sebastian Graf
673a974260
Un-unroll static array,
...
[David Nadlinger] Note that DtoStructLiteralValues was/is used
only once across the codebase.
2013-02-11 04:20:59 +01:00
Sebastian Graf
5ae17a59e4
Fixed broken static struct member initializer
2013-02-11 04:20:59 +01:00
sgraf812
db9edaf053
Fix #265 : Use declared struct type in initexpr.
2013-02-11 04:20:59 +01:00
Martin
51b45675cc
Support for Windows x64 ABI.
2013-02-10 22:08:35 +01:00
David Nadlinger
d49e1529ed
Revert "Revert "Fix overly conservative inlining prediction".",
...
The previous failures were caused by the issue in
callWithStackShell(), which is fixed now.
This reverts commit 4a6444c320 .
2013-02-09 10:42:52 +01:00
David Nadlinger
70dedd14e2
Some more assert(false) -> llvm_unreachable.
2013-02-08 16:46:05 +01:00
David Nadlinger
d13a997bd0
Added back NULL returns accidentally removed in 8ff3a8060.
...
No functionality change, as the return value wasn't used
anywhere.
2013-02-08 16:37:52 +01:00
David Nadlinger
0a96aea868
Sort includes according to style guidelines:
...
1. Main include corresponding to .cpp file, if any.
2. DMD and LDC includes.
3. LLVM includes.
4. System includes.
Also updated a few include guards to match the default format.
2013-02-07 21:20:55 +01:00
David Nadlinger
5616753768
Consistently use quotes for LLVM includes.
2013-02-07 21:20:54 +01:00
David Nadlinger
d4b391249d
Removed redundant global.params.os field.
...
I hope I have untangled the checks for "native" Windows (Triple::Win32)
vs. Windows/MinGW/Cygwin (Triple::isOSWindows) correctly.
MinGW needs some default libraries as well, has to be fixed later.
2013-02-07 21:20:54 +01:00
David Nadlinger
5f3ba41574
Removed redundant global.params.cpu field.
...
Now that we have global.params.targetTriple, the information
is only duplicated.
2013-02-07 17:36:54 +01:00
David Nadlinger
8ff3a8060a
Use llvm_unreachable instead of assert(0).
...
Also removed some unused functions.
2013-02-07 03:38:15 +01:00
David Nadlinger
28a65ff689
Fix D1 build.
2013-02-07 00:49:52 +01:00
David Nadlinger
6d933f1a41
Merge branch 'master' into merge-2.061-2.
2013-02-04 04:01:38 +01:00
David Nadlinger
88b8ba1053
extern(D): Return static arrays via sret parameters.
...
On x86_64, a proper solution (see GitHub #120 ) is still needed,
but this will have to wait until the special case for extern(D)
is gone from the implementation.
We need this right now as std.digest.md in 2.061 triggers a
miscompilation issue in the LLVM x86 backend (not the optimizer!)
when returning them directly as LLVM arrays.
2013-02-04 03:26:18 +01:00
David Nadlinger
2be27279c7
Added x86_64 System V ABI extern(D) TODO note.
2013-02-04 03:26:08 +01:00
kai
104cd77e9c
Merge branch 'master' into merge-2.061-2
2013-02-03 15:50:39 +01:00
kai
f806ec0ed5
Attribute holds no longer multiple values in LLVM 3.3.
...
The solution is to replace Attribute with AttrBuilder in IrFuncTyArg.
Then the argument attributes can be easily manipulated and transformed
into the final AttributeSet.
2013-02-03 15:09:36 +01:00
kai
6f224c3fdb
Fix some compile warnings for LLVM 3.0
2013-02-03 12:26:48 +01:00
kai
23f3fd18f1
Merge branch 'master' into merge-2.061-2
2013-02-03 10:54:57 +01:00
kai
fffb23f7ce
Replace AttributeWithIndex for LLVM 3.3.
...
The helper class AttribteWithIndex is gone in LLVM 3.3. Instead a
combination of AttrBuilder and AttributeSet must be used.
2013-02-02 22:04:19 +01:00
kai
bfc23acf30
Merge branch 'master' into merge-2.061-2
2013-02-02 15:27:51 +01:00
kai
9081102f24
Use AttrBuilder for LLVM >= 3.2.
...
Due to a misunderstanding of the new semantics of the Attribute(s) class,
this class was used in places where class AttrBuilder should be used.
2013-02-02 15:01:13 +01:00
kai
045d50deb5
Replace SmallVector/vector with C array for type lists
2013-02-02 15:01:13 +01:00
David Nadlinger
e43759cbc7
Merge pull request #273 from kinke/merge-2.061-2
...
Merged x86 and x86_64 assembly parsers.
2013-01-29 04:53:15 -08:00
kai
9a0df005f3
Add ABI infrastructure for PPC64.
...
The generic ABI works well with PPC64 except for LLVM PR 14779.
(http://llvm.org/bugs/show_bug.cgi?id=14779 )
The new ABI infrastucture is based on the UnknownTargetABI. The
PPC64 specific parts coming soon.
2013-01-28 22:08:25 +01:00
kai
9390374f4d
AttributeSet::get(... AttributeWithIndex ...) is now private.
...
AttributeWithIndex is really going away in LLVM 3.3. This is a
horrible hack to keep everything compiling. Attribute handling
needs some rework.
2013-01-28 22:08:25 +01:00
kai
b2a19959bf
Add ABI infrastructure for PPC64.
...
The generic ABI works well with PPC64 except for LLVM PR 14779.
(http://llvm.org/bugs/show_bug.cgi?id=14779 )
The new ABI infrastucture is based on the UnknownTargetABI. The
PPC64 specific parts coming soon.
2013-01-28 22:01:29 +01:00
Martin
25b6b3abf2
Remove AsmOpInfo::takesLabel(), add FIXME comment.
2013-01-28 21:05:48 +01:00
Martin
8a463444ab
Fix negated sc->func->naked for x64 and remove !IN_LLVM block.
2013-01-28 20:00:08 +01:00
kai
145e1b5b24
AttributeSet::get(... AttributeWithIndex ...) is now private.
...
AttributeWithIndex is really going away in LLVM 3.3. This is a
horrible hack to keep everything compiling. Attribute handling
needs some rework.
2013-01-28 19:20:57 +01:00
kai
69d5576141
Merge branch 'master' into merge-2.061-2
...
Conflicts:
gen/runtime.cpp
2013-01-28 06:58:26 +01:00
kai
145978bb51
Replace vector/SmallVector with C array for parameter lists.
...
This has several advantages:
- the code is shorter
- no need to specify number of elements
- only ArrayRef object is created
2013-01-27 23:12:37 +01:00
Martin
62cb04f6f6
Merged x86 and x86_64 assembly parsers.
2013-01-27 15:31:26 +01:00
kai
a817a85bf8
Merge branch 'master' into merge-2.061-2
2013-01-27 00:38:47 +01:00
kai
6cb782791e
Fix build warnings
2013-01-27 00:38:17 +01:00
kai
a3fcdafd1f
Merge branch 'master' into merge-2.061-2
...
Conflicts:
gen/runtime.cpp
2013-01-27 00:20:21 +01:00
kai
28e3a4d80f
Replace std::vector with llvm::SmallVector in gen/tollvm.cpp.
2013-01-27 00:13:20 +01:00
kai
ed5ede3fda
Replace std::vector with llvm::SmallVector in gen/runtime.cpp.
...
The vector arrays for the parameter lists are a perfect fit for
llvm::SmallVector: the vector size is small and known in advance.
2013-01-26 21:01:33 +01:00
kai
e68a0fa2a6
Merge branch 'master' into merge-2.061-2
2013-01-26 17:40:24 +01:00
kai
c0284bac2b
2nd attempt on the latest LLVM 3.3 changes.
...
The previous commit only worked on Windows.
2013-01-26 17:34:08 +01:00