Commit Graph
262 Commits
Author SHA1 Message Date
David Nadlinger 0206269230 Ignore StaticAssert in DtoDeclarationExp.
Fixes DMD testcase 'testrightthis'.
2013-06-16 21:17:46 +02:00
David Nadlinger acd508945a Allow multiple declarations to share the same mangled name/LLVM global.
This is necessary to enable aliasing compiler-generated
symbols with pragma(mangle, …).

Note that globals for internal use are still directly
created.
2013-06-16 00:28:02 +02:00
David Nadlinger 0305d3bce2 Never make external variables something else than external.
Fixes crash in DMD testcase 'mangle'.
2013-06-15 23:22:34 +02:00
David Nadlinger 86563a2ee1 Allow casting AAs to bool.
Fixed DMD testcase 'nulltype'.
2013-06-14 16:01:09 +02:00
David Nadlinger 95b34c3625 zext bool to i8 in makeLValue. 2013-06-12 20:39:34 +02:00
David Nadlinger ab7ffa9988 Removed obsolete importprot members. 2013-06-12 20:16:37 +02:00
David Nadlinger 4d3f9333c6 Never make functions without body available_externally. 2013-06-12 20:16:37 +02:00
David Nadlinger 292caa1438 Merge the 2.063 frontend. 2013-06-12 20:16:37 +02:00
David Nadlinger 978c2c1b6a Re-enable SymOffExp and remove associated LLVM-only modifications. 2013-06-11 00:40:48 +02:00
David Nadlinger 848dee32d4 Store bools as i8.
I really hope we can refactor this to use a less leaky
abstraction later – it should at least be possible to merge
voidToI8 and i1ToI8.
2013-06-07 03:20:54 +02:00
David Nadlinger 7e92984ebe Downgraded accepts-invalid workaround error to assertion.
Bug 9268 was fixed in 2.062.
2013-06-07 03:20:39 +02:00
David Nadlinger 1c883c5071 Do not generate invalid memcpy() for struct self assignment.
This catches only the most trivial case, need to investigate
this further.

See GitHub #385.
2013-06-07 02:23:00 +02:00
David Nadlinger 3b38d34698 Fix up botched merge in 005f993. 2013-06-02 22:02:09 +02:00
David Nadlinger 005f993982 Merge branch 'release-0.11.0'.
Conflicts:
	gen/llvmhelpers.cpp
2013-06-02 21:53:41 +02:00
David Nadlinger c89d4809d6 Be more lenient with initializer type mismatch; zext as necessary.
The integer initializer width mismatch issue should really be
fixed in the frontend, but is related to forward referencing
and thus hard to track down.

Also fixes an unlisted regression since the 2.061 merge, where
there would be a const(char*) vs. immutable(char*) mismatch
reported for some string constants.

GitHub: Fixes #378.
2013-06-02 21:05:33 +02:00
David Nadlinger ae48a19251 Refactoring-only part of DtoConstExpInit fix. 2013-06-02 21:05:33 +02:00
David Nadlinger d9ce9ce67b Removed TODO-riddled DtoInitializer only used in DtoVarDeclaration. 2013-06-02 21:05:33 +02:00
David Nadlinger 0a7eec400f Removed dead global initializer code. 2013-06-02 21:05:33 +02:00
David Nadlinger c02b38fe9a Removed LLVM 3.0 compatibility code.
There might be still some pieces left here and there, and
there is certainly code that could be rewritten in a nicer
way with the 3.0 requirement out of the picture.
2013-05-31 20:48:38 +02:00
David Nadlinger 41e580a79f Get rid of now-obsolete DtoConstInitializerType. 2013-05-19 20:25:16 +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 2bf0789364 Fixed vector global initialization for > 1 byte elements. 2013-05-04 06:29:34 +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 b13f3d3164 Merge branch 'master' into merge-2.062
Conflicts:
	runtime/druntime
2013-03-24 19:39:39 +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 82ba7fe548 Fix casting typeof(null) to bool.
Covered by the DMD testsuite.
2013-03-16 09:35:29 +01:00
David Nadlinger a303622074 Allow casting AAs to void*.
GitHub: Fixes #302.
2013-03-07 23:18:08 +01:00
kai 1e4a8fffc2 Remove DMDV1 and DMDV2. 2013-03-06 10:20:24 +01:00
sgraf812 db9edaf053 Fix #265: Use declared struct type in initexpr. 2013-02-11 04:20:59 +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 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 8ff3a8060a Use llvm_unreachable instead of assert(0).
Also removed some unused functions.
2013-02-07 03:38:15 +01:00
David Nadlinger 7974c33c61 Merge branch 'master' into merge-2.061-2. 2013-01-12 14:31:54 +01:00
David Nadlinger 4a6444c320 Revert "Fix overly conservative inlining prediction".
The commit itself should be fine, but the more aggressive
inlining being done on the GC code (due to the gcbits functions
being in available in gc.gcx) seems to have uncovered a
misoptimization bug in LLVM (at least in 3.2) on x86, leading to
various unit tests failing in relase mode.

This reverts part of commit f02e4b1925.
2013-01-12 14:30:59 +01:00
David Nadlinger 30caa4bfe6 Merge branch 'master' into merge-2.061-2 2013-01-12 01:27:02 +01:00
David Nadlinger f02e4b1925 Fix overly conservative inlining prediction.
A "statementsToo" flag was added to DMD, which disables inlining
of pretty much any functions that actually return a value – set it
to false for our purposes.

The other parts of the diff are just cosmetic.
2013-01-12 01:23:55 +01:00
David Nadlinger 859177fe3d Do not unnecessarily call postblit after rvalue array initializers.
Fixes DMD testcases 'sdtor' and 'structlit'.
2013-01-04 16:48:10 +01:00
David Nadlinger 55fb4798a7 Added workaround for DMD accepts-invalid regression 9268. 2013-01-04 06:22:57 +01:00
David Nadlinger 08708917bc D1 build fix.
The workaround could later be merged to D1 if the same problem
starts to appear there as well.
2012-12-31 06:27:11 +01:00
David Nadlinger 39e3e3a678 Replace template symbol module fix with more localized hack.
This reverts commit c4adbedcc, which would have fixed the
problem at its roots, but caused strange template function
attribute inference failures in D-YAML, presumably due to
the different order of semantic3 execution on the templates.
2012-12-31 05:46:29 +01:00
kai 2898e5cac3 Add support for PPC 128bit doubledouble type.
On a PowerPC target the datatype real is mapped to PPC 128bit doubledouble type.
Please note that this yet does not work if you cross compile from a different
architecture.
2012-12-30 17:18:36 +01:00
David Nadlinger 33093a7403 Factor out TOK to icmp predicate conversion into helper method. 2012-12-28 18:08:49 +01:00
David Nadlinger 0cd78dd579 Cleanup: Clang warning fixes.
No warnings left on a '-Wall' build except for a single tautological
compare in gen/asm-x86-32.h, which indeed seems like a bug.
2012-12-20 01:00:55 +01:00
David Nadlinger 2988bc46e0 Removed long obsolete (and broken) LLVM IR annotation code.
If someone wants to redo this properly, an idea that actually works
would be to use a custom llvm::AssemblyAnnotationWriter.
2012-12-19 01:50:48 +01:00
David Nadlinger 1bb14c45d2 Removed trailing whitespace. 2012-12-16 17:19:15 +01:00
David Nadlinger 9458911839 Added LLVM-style license headers to all our files. 2012-12-16 17:19:14 +01:00
kai a7c7b514c0 Add changes for LLVM 3.2
- The Attributes class was changed again
- TargetData was renamed to DataLayout

Compiles again with LLVm 3.0, 3.1 and trunk(3.2).
2012-10-13 18:54:42 +02:00
Jernej Krempuš 7966abeb5e Bitcast the LLValue to the correct type. 2012-10-05 21:58:19 +02:00
Jernej Krempuš 39300283c0 Made casts between vector types work. 2012-10-05 19:38:43 +02:00