Commit Graph

1903 Commits

Author SHA1 Message Date
Kai Nacke
4006fbbd85 Merge branch 'master' into merge-2.064 2014-01-19 13:43:15 +01:00
Kai Nacke
49599f71e9 Add sanitizer attributes.
If the sanitizer is enabled (e.g. -sanitize=address) then the corresponding
attribute (e.g. llvm::Attribute::SanitizerAddress) must be set.
2014-01-19 13:03:37 +01:00
Kai Nacke
746fe9d2c8 Merge branch 'master' into merge-2.064 2014-01-19 12:38:54 +01:00
Kai Nacke
ea9c996dcd Fix new signature of verifyModule() in LLVM 3.5. 2014-01-19 12:36:42 +01:00
Kai Nacke
5442e7d378 Merge branch 'master' into merge-2.064 2014-01-19 11:03:44 +01:00
Kai Nacke
a39e5582e6 DLL linkage is decoupled from linkage in LLVM 3.5. 2014-01-19 11:02:27 +01:00
Kai Nacke
c193a3b4c8 Merge branch 'master' into merge-2.064 2014-01-13 18:17:51 +01:00
Kai Nacke
87afa717ae Fix more files for LLVM 3.5. 2014-01-13 18:16:22 +01:00
Kai Nacke
588a24a2cf Merge branch 'master' into merge-2.064 2014-01-13 18:02:30 +01:00
Kai Nacke
c14e065138 Fix the LLVM 3.5 build.
Some classes were moved into IR folder.
2014-01-13 17:08:43 +01:00
kai
412aeda046 Remove gen/utils.h
ArrayIter<> is replaced by Array<>::iterator or other patterns.
The class is now unused and can be removed.
2014-01-12 18:07:28 +01:00
kai
c6f856c01e Remove last uses of ArrayIter<>. 2014-01-12 18:07:27 +01:00
Alexey Prokhin
a6973a39b7 Temporary variables cannot be referenced inside a closure 2014-01-12 15:44:17 +04:00
Kai Nacke
680568bb62 Merge branch 'master' into merge-2.064 2014-01-12 11:53:00 +01:00
Kai Nacke
b4b71e6c79 Fix include for LLVM 3.5 2014-01-12 11:37:52 +01:00
Kai Nacke
c41c4476b9 Merge branch 'master' into merge-2.064 2014-01-11 17:27:01 +01:00
Kai Nacke
52a17c3a34 Fix build with LLVM 3.5 2014-01-11 17:25:59 +01:00
kai
6287a4d422 Replace ArrayIter<> with Array<>::iterator.
Just use the new iterator instead of the old Java-like class.
Also removes a dead iterator and replaces an iterator with a
pointer in some place.
2014-01-11 14:48:41 +01:00
Kai Nacke
1463f4a275 Merge branch 'master' into merge-2.064 2014-01-06 11:24:03 +01:00
Jernej Krempuš
7436d94e09 Fixed a bug in DtoInlineIR
Before this fix, debug info was removed from the module while
parsing inline ir.
2014-01-06 01:27:26 +01:00
Kai Nacke
27a9ede3fd Fix error diagnosis for test fail91. 2014-01-04 01:57:56 +01:00
Kai Nacke
acf1ed40b0 Emit error message for struct with unknown size.
This fixes an ICE in test fail91.
2014-01-03 23:36:17 +01:00
Kai Nacke
61720bf1ba Fix ouput for test diag8354 2014-01-03 18:02:29 +01:00
Kai Nacke
13e00a89ca Some class <-> struct changes.
This is partly a backport from DMD 2.065. It fixes nasty warnings with clang.
2014-01-03 16:14:51 +01:00
Kai Nacke
731f2a8fdf Merge branch 'master' into merge-2.064
Conflicts:
	dmd2/root/rmem.c
2014-01-03 15:56:01 +01:00
Kai Nacke
9b4a70c367 Use caching in DtoVaFunctionType.
Remove now unused method IrFuncTy.reset().
2014-01-03 15:14:39 +01:00
Kai Nacke
87006d0a5b Merge branch 'master' into merge-2.064 2014-01-03 13:54:10 +01:00
Kai Nacke
551bce6d18 Change location of assign to irFty.
If the comment about this function is still right (can be called recursively) then the assignment
to irFty should be done after all functions are called.
Takes advantage of move assignment, too.
2014-01-03 13:14:12 +01:00
kai
dfbcb6bfd4 DtoConstSymbolAddress still returns NULL.
This fixes a failure in test ldc_github_248.d.

It would be better if DtoConstSymbolAddress would return undef but this leads to bitcast assertion.
2014-01-02 21:56:59 +01:00
Kai Nacke
58aadf88ef Merge branch 'master' into merge-2.064 2014-01-02 20:31:28 +01:00
Kai Nacke
1619b18f73 Small cleanup of attribute mess. 2013-12-31 17:29:25 +01:00
Kai Nacke
5139008207 Add missing forward declations to gen/utils.h 2013-12-31 16:43:54 +01:00
David Nadlinger
3ec084da59 Return undef instead of null on toConstElem failure.
This fixes a segfault with associative array literals of
arrays of associative array literals, which occured because
of arrayLiteralToConst not handling null values properly.
Ensuring that null pointers are handled correctly in all
toConstElem callers is much more error-prone than just
returning an LLVM undef, an error is emitted anyway.

The root of the problem is actually in the kludgly
implementation of AssocArrayLiteral::toElem, we should
revisit this at some point.
2013-12-27 18:35:50 +01:00
David Nadlinger
6a17b38d83 Merge branch 'master' into merge-2.064. 2013-12-26 15:29:58 +01:00
David Nadlinger
467651fc49 Merge pull request #559 from klickverbot/disable-internalizing-nested-functions
Disable internalizing of nested functions.
2013-12-26 06:27:39 -08:00
David Nadlinger
333d538a23 Handle differing LLVM types for AA literals.
This unsfortunately more or less duplicates the code we have for
emitting ArrayLiteralExps, but with the different iteration
strategies, having a single implementation would wind up
even messier.

Unfortunately, no regression test case yet, as I found this deep
inside vibe.d.
2013-12-26 13:39:59 +01:00
David Nadlinger
be185263ba Disable internalizing of nested functions.
This works around linking problems such as rejectedsoftware/vibe.d#338,
caused by the frontend appending template instances to the wrong
module.

GitHub: Fixes #558.
2013-12-26 13:24:41 +01:00
David Nadlinger
68f8e38f51 Merge branch 'master' into merge-2.064. 2013-12-26 12:37:03 +01:00
David Nadlinger
27ecc11915 Remove unused prototype. 2013-12-26 07:05:21 +01:00
Kai Nacke
c231ae0ad0 Merge remote-tracking branch 'origin/master' into merge-2.064
Conflicts:
	gen/arrays.cpp
2013-12-19 21:27:53 +01:00
Kai Nacke
acb1bb161a Fix a problem with the new array bounds check code. 2013-12-19 20:35:54 +01:00
Kai Nacke
5f520fccf9 Cache result of DtoFunctionType. 2013-12-19 19:45:16 +01:00
Kai Nacke
e7fdbafe2d Fix generation of position-independent code.
The new module discovery scheme requires the following section order:

.minfo_beg
.minfo
.minfo_end

This works for non-PIC code because the segments have the same attributes.
However, if -relocation-model=pic is passed to ldc2 then the .minfo section
becomes writeable and the sequence of sections is changed.

The quick fix is to mark the data always as writeable. Then all sections are
always writeable.

I think a better solution would be to base this in the used relocation model.
But this information is currently only available in the driver.

This fixes the failure in test case runnable/eh2.d
2013-12-18 16:54:49 +01:00
Kai Nacke
dd3cc5f682 Fix for issue #553.
This version uses the skipboundscheck member variable.
2013-12-16 17:32:01 +01:00
Kai Nacke
74630ed7f1 Simplify LLVM passes.
Use a typedef to minimize difference between LLVM 3.1 and Â3.2+.
Use IRBuilder method CreateMemCpy.
2013-12-16 15:00:00 +01:00
Kai Nacke
2188ef9e56 Merge branch 'master' into merge-2.064 2013-12-16 09:08:11 +01:00
Kai Nacke
bac536a29c Fix for issue #553.
Check if a static array is accessed with a known index. In this case the
bounds check can be omitted.
2013-12-16 08:14:58 +01:00
Kai Nacke
038855e4a0 Deprecate -noruntime switch (which has now no function). 2013-12-12 20:02:45 +01:00
Kai Nacke
bea0b597ae Add -nogc switch.
This is a replacement for the -noruntime switch. With the new DSO implementation
every module generates runtime calls. The main motivation for the -noruntime switch
is to avoid implicit GC calls. Therefore a dedicated -nogc switch is introduced.
2013-12-10 18:33:49 +01:00
Kai Nacke
d25d28f914 Extend error message if -noruntime is used.
The name of the implicit called runtime function gives a hint about
what goes wrong.
2013-12-08 20:24:08 +01:00