Commit graph

219 commits

Author SHA1 Message Date
David Nadlinger
0922254dd1 Directly emit IR into same llvm::Module instead of using Linker
GitHub: Fixes #970.
2015-06-14 21:36:35 +02:00
David Nadlinger
6277218d7b Merge branch 'master' into merge-2.067 2015-06-14 21:26:56 +02:00
David Nadlinger
e5838342df We always define functions for which we emit DWARF subprograms
This fixes a crash with debug info for lambdas, where DMD appends
the lambda function declaration to the wrong module.

But the comparison is supposed to be tautological anyway, as we
only ever call it from DtoDefineFunction. Furthermore, it seems as
passing false can never work unless you manually (without going
through llvm::DIBuilder) resolve the Vars node later. Clang does
not try to do this either.
2015-06-14 04:06:35 +02:00
Kai Nacke
57103829bb Merge branch 'master' into merge-2.067 2015-06-05 14:03:17 +02:00
Kai Nacke
95c897ab3e DebugInfo: Use location of variable declaration instead of current stop point.
There might be no valid stop point but the variable should always have a
location. This fixes an ICE compiling core.demangle.
2015-06-05 13:04:30 +02:00
Kai Nacke
5523330115 Merge branch 'master' into merge-2.067 2015-06-05 00:18:10 +02:00
Kai Nacke
7e82631b94 Revert "DebugInfo: Use DebugLoc::get() for declaration of variable."
This reverts commit 3bab8306aa.
2015-06-05 00:16:48 +02:00
Kai Nacke
cddb59f7b7 Merge branch 'master' into merge-2.067 2015-06-04 22:02:52 +02:00
Kai Nacke
3bab8306aa DebugInfo: Use DebugLoc::get() for declaration of variable. 2015-06-04 22:00:54 +02:00
Kai Nacke
80acadc841 Merge branch 'master' into merge-2.067 2015-06-04 20:48:38 +02:00
Kai Nacke
482711a601 DebugInfo: Do not emit line info if line number is zero. 2015-06-04 20:19:18 +02:00
Kai Nacke
45ec6a0512 Merge branch 'master' into merge-2.067 2015-06-04 19:07:28 +02:00
Kai Nacke
0f86de548c DebugInfo: EmitStopPoint() now has a Loc parameter. 2015-06-04 19:04:23 +02:00
Kai Nacke
131529ecc8 Merge branch 'master' into merge-2.067 2015-06-04 18:02:15 +02:00
Kai Nacke
3b363a1b08 DebugInfo: Add more flags and other refinements.
In D all functions are prototyped. Mark the hidden this pointer with
flag ObjectPointer. Also add a column for a lexical block start.
2015-06-04 18:00:24 +02:00
Kai Nacke
fe2b9d445d Merge branch 'master' into merge-2.067 2015-06-04 16:24:31 +02:00
Kai Nacke
816ecf5502 DebugInfo: At a stop point at end of function. 2015-06-04 16:23:22 +02:00
Kai Nacke
15b1ee1576 DebugInfo: Output the underlying delegate for lazy parameters.
This fixes issue #959.
2015-06-04 15:09:29 +02:00
Kai Nacke
fba1e18427 Merge branch 'master' into merge-2.067 2015-06-04 12:46:49 +02:00
kai
9d3dd1f609 Add true value of "isOptimized" to Dwarf debug info. 2015-05-31 21:32:12 +02:00
Kai Nacke
ccd8dd06c5 Merge branch 'master' into merge-2.067 2015-05-23 23:53:36 +02:00
Kai Nacke
f1c4cf92ff Possible fix for issue #938.
The functions for all arrayops are compiler-generated but the functions
which are also defined in druntime are never emitted. This prevents
inlining of the function body and causes issue #938.

The fix is to emit the arrayops if inlining is enabled and otherwise
use the druntime provided implementations.

An alternative approach could be to always emit the arrayops and
never use the druntime version.
2015-05-23 23:02:17 +02:00
Kai Nacke
60c5d5d9bd Fix merge errors in dibuilder.cpp. 2015-05-01 13:32:01 +02:00
Kai Nacke
f029c9b9af Merge branch 'master' into merge-2.067
Conflicts:
	gen/dibuilder.cpp
	gen/dibuilder.h
2015-05-01 11:28:47 +02:00
kai
6ab801361a LLVM 3.7: Debug info classes changed again.
The solution is to use a typedef to hide the differences in most cases.
2015-04-30 22:43:31 +02:00
kai
17214d2175 Refactoring the debug info for nested local variables.
- the debug info is now stored in the IrFunction object
  -> saves the lookup from VarDeclaration to IrVar
- uses a llvm::DenseMap instead of std::map
  -> no comparison method required
  -> hashing should be faster then a tree lookup
2015-04-28 07:16:03 +02:00
Kai Nacke
1648bcbc09 Merge branch 'master' into merge-2.067
Conflicts:
	dmd2/hdrgen.c
	dmd2/interpret.c
	gen/module.cpp
	tests/d2/CMakeLists.txt
2015-04-27 22:11:48 +02:00
kai
28407c6906 Fix a problem with debug info for nested local variables.
Debug info for nested local variables must be created for each
function (with different address expression). The resulting
debug info was not stored per function which resulted in the
use of the last created debug info even if it was wrong.

This commit fixes the bug and the current assertion with LLVM 3.7.
2015-04-26 20:06:41 +02:00
kai
770bdd2edd Merge branch 'master' into merge-2.067 2015-04-22 21:57:31 +02:00
Martin
fdd449c4e5 LLVM 3.7: Metadata refactoring continues 2015-04-22 12:17:42 +02:00
Kai Nacke
a5cc02235d Merge branch 'master' into merge-2.067 2015-04-17 23:38:01 +02:00
Kai Nacke
7591a31df9 LLVM 3.7: Again more metadata changes. 2015-04-17 23:37:09 +02:00
Kai Nacke
c334096281 Merge branch 'master' into merge-2.067 2015-04-17 23:04:26 +02:00
Kai Nacke
31c3195511 LLVM 3.7: More metadata changes.
The accessible flags moved into a new class.
Same is true for subroutine type.
2015-04-17 23:02:27 +02:00
Kai Nacke
e91c71c37d Merge branch 'master' into merge-2.067 2015-04-12 14:17:37 +02:00
Kai Nacke
4fa7e98ebe LLVM 3.7: DIType.replaceAllUsesWith() is replaced by DIBuilder.replaceTemporary() 2015-04-12 14:16:09 +02:00
Kai Nacke
c9a404be46 Merge branch 'master' into merge-2.067
Conflicts:
	gen/module.cpp
2015-04-10 08:59:15 +02:00
Kai Nacke
76a34f2e35 LLVM 3.7: More metadata changes 2015-04-09 22:14:12 +02:00
kai
8c1a80eae8 Merge branch 'master' into merge-2.067 2015-04-06 02:00:45 +02:00
kai
014627d6a6 Code cleanup: Replace NULL with false in dibuilder.
Removes some warnings.
2015-04-05 14:20:31 +02:00
kai
c39c7e9c35 Update to DMD v2.067.0-b2
Includes all tagged with v2.067.0-b2. Does not includes latest druntime changes from ldc (head) branch.

This is known to be broken. I only merged the frontend stuff but did not try to compile something...
2015-02-24 22:16:17 +01:00
kai
e73a7f2e23 Several updates to debug info generation.
- Do not create debug info after we called finalize.
- Clean up debug info generation for module ctor/dtor.
- Rename EmitSubProgramInternal() to EmitModuleCTor().
- Remove unused parameter from CreateTypeDescription().
2015-02-22 21:10:28 +01:00
unknown
674b614807 Update of PassManager interface to match the corresponding deprecation in LLVM's trunk for 3.7 2015-02-16 15:11:42 -08:00
kai
06d9c081ca DebugInfo: Add accessibility to member types.
This removes a FIXME in dibuilder.
2015-02-08 12:51:27 +01:00
Kai Nacke
1d12c61c62 Merge pull request #815 from redstar/llvm36
Add changes related to the llvm::Metadata refactoring in LLVM 3.6.
2014-12-26 14:17:22 +01:00
kai
441c98532c Add changes related to the llvm::Metadata refactoring in LLVM 3.6.
In LLVM 3.6, the llvm::Metadata hierarchy is distinct from the llvm::Value hierarchy.
This refactoring causes several changes.
2014-12-25 19:02:15 +01:00
Daniel N
25adc26e47 Add "Debug Info Version"
Metadata without a correct version will be stripped by UpgradeDebugInfo.
2014-12-18 12:02:37 +01:00
kai
b3e239a527 Fix generation of DWARF debug information in LLVM 3.6.
The creation of complex expressions (e.g. address calculations) was extended in LLVM 3.6.
2014-10-12 12:40:31 +02:00
Alexey Prokhin
66a392a5c2 Rename Type::irtype to ctype for consistency with dmd and gdc 2014-10-05 16:55:12 +04:00
Alexey Prokhin
9ead7f7996 Move debugVariable and debugFunc from VarDeclaration to IrVar 2014-10-05 16:08:52 +04:00