David Nadlinger
90127ab87a
Fix broken indentation in debug log output.
2013-09-12 10:21:01 +02:00
kai
6875d8a20f
Mark frontend generated strings with attribute unnamed_addr.
...
This is part of a fix for issue #133 .
2013-08-18 23:34:41 +02:00
kai
f769406216
Fix for issue #119 .
...
Instead of creating individual stores to the array elements an constant
array is created and assigned to the destination memory. This is much
less IR than before. With -O it is optimized to a memset.
2013-08-18 19:36:58 +02:00
kai
c28c7fb134
Introduce a debug info builder.
...
Moves all code from todebug into a new class.
Also caches the compilation unit in order to fix a LLVM 3.4 compile error.
2013-07-29 00:04:08 +02:00
Alexey Prokhin
8b783da523
Fixed cases where the destructor is called on an uninitialized temporary
2013-07-10 18:15:05 +04:00
Alexey Prokhin
1999749415
Issue #426 part 2. Generate a try-finally block only if it is required
...
(i.e. there are actually some destructor calls that are needed to be put into finally)
2013-07-10 13:34:52 +04:00
Alexey Prokhin
71023952d4
Issue #426 part 1. Wrap destructor calls of temporary variables in a try/finally expression.
2013-07-10 13:34:52 +04:00
Kai Nacke
ebadc7fcb3
Merge pull request #412 from AlexeyProkhin/cpp
...
extern(C++) interfaces
2013-06-30 15:37:10 -07:00
kai
67a9391f79
Replace an old-style cast.
2013-06-30 22:30:13 +02:00
Alexey Prokhin
90bb32d2d8
extern(C++) interfaces
2013-06-22 17:33:00 +04:00
David Nadlinger
235bb94878
Make -release only disable bounds checking in non-@safe code.
2013-06-17 13:31:21 +02:00
David Nadlinger
1215ffacd3
Complete IrStruct->IrAggr rename.
2013-06-17 13:14:15 +02:00
David Nadlinger
897c4382af
Do not re-codegen struct literals on taking address of globals.
...
The AST the frontend generates is arguably invalid, but we
have to deal with that.
Fixes DMD testcase 'interpret'.
2013-06-16 01:02:46 +02:00
David Nadlinger
2e0941c194
Add names for globals to make LDC compile against LLVM 3.1.
2013-06-15 16:16:47 +02:00
David Nadlinger
c813ccdcf7
Small debug diagnostics improvements.
2013-06-15 15:04:48 +02:00
David Nadlinger
bca5dac669
Fixed ClassReferenceExp codegen, handle self-referential literals.
2013-06-15 15:04:48 +02:00
David Nadlinger
041e8e8b54
Remove LDC-specific .classinfo AST rewrite.
...
Apart from reducing the diff to upstream DMD, this also fixes a
"cannot interpret" CTFE issue.
2013-06-14 21:49:44 +02:00
David Nadlinger
9dc387aa91
Do not invoke postblit twice on struct literal creation.
...
The frontend seems to explicitly insert __cpctor now.
Fixes DMD testcase 'sdtor'.
2013-06-14 16:43:41 +02:00
David Nadlinger
4901877d24
Handle side-effects in TupleExp::e0.
...
Fixes DMD testcase 'aliasthis'.
2013-06-14 15:03:24 +02:00
David Nadlinger
83415eeeb8
Minor debug log fixes.
2013-06-14 15:03:24 +02:00
David Nadlinger
c64c4f479a
Handle static array typed SliceExps.
...
Fixes DMD testcase 'testbounds2'.
2013-06-13 18:45:07 +02:00
David Nadlinger
bc910004a4
Adapt codegen to removal of old _d_invariant from druntime.
...
We should think about using symbolic constants for runtime function
names though, this is not maintainable in the long run.
2013-06-12 20:34:50 +02:00
David Nadlinger
4c788699ae
Initial, incomplete ClassReferenceExp::toConstElem implementation.
...
Allows us to get through a Phobos build without errors.
2013-06-12 20:23:27 +02:00
David Nadlinger
a9e620d428
Work around invalid special ref var initializations in 2.063.
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
9a016a1002
Refactor struct initializers codegen.
...
This not only reduces code duplication, but the unification
also enables code a la StructLiteralExp to handle classes
(for CTFE class constant support in 2.063).
2013-06-12 20:16:05 +02:00
David Nadlinger
5dadec2e70
Remove raw address from log output.
...
Makes comparing logs harder.
2013-06-12 17:16:46 +02:00
David Nadlinger
28f39cbdad
Remove superfluous Expression::toConstElem overrides.
...
The error message can be printed by the non-overridden
Expression::toConstElem just as well.
2013-06-12 17:16:31 +02:00
David Nadlinger
978c2c1b6a
Re-enable SymOffExp and remove associated LLVM-only modifications.
2013-06-11 00:40:48 +02:00
David Nadlinger
f5e276d6a6
Revert meaning of AddExp/MinExp for pointers to DMD default.
...
It might be worth considering to move the stride multiplication
down to the glue layer in the upstream sources. But assigning a
different meaning to AST nodes was a giant maintenance
liability, especially with regard to CTFE.
2013-06-10 22:49:01 +02:00
David Nadlinger
049f784e5f
Remove extra semicolons after macro invocation.
...
Silences some Clang warnings.
2013-06-10 19:54:19 +02:00
David Nadlinger
bf0e03df98
Also avoid i1 in TupleExp::toElem.
2013-06-10 19:49:52 +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
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
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
David Nadlinger
e1501c712f
Moved constant array creation helper to llvmhelpers.h.
2013-05-12 01:25:12 +02: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
c8a54de074
Merge Kai's D1 removal commits.
2013-03-06 16:41:29 +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
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
David Nadlinger
1a132d5d41
Integrate obj_includelib into its only caller.
2013-02-26 00:20:45 +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
sgraf812
db9edaf053
Fix #265 : Use declared struct type in initexpr.
2013-02-11 04:20:59 +01:00
David Nadlinger
70dedd14e2
Some more assert(false) -> llvm_unreachable.
2013-02-08 16:46:05 +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
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