Martin Kinkelin
34eae780c1
Fix debuginfo for enum of delegates
2020-01-11 03:44:12 +01:00
Martin Kinkelin
66f3267a82
Fix issue #3272 (debuginfo for enum of function pointers)
2020-01-11 03:44:11 +01:00
Fangrui Song
1743be4e8e
dibuilder: fix createGlobalVariableExpression call for LLVM 10 ( #3266 )
2020-01-06 01:16:31 +01:00
Roberto Rosmaninho
a1e44b2c81
Adapt to current LLVM 10 ( #3257 )
2019-12-16 22:23:43 +01:00
Martin Kinkelin
b741ee5715
Fix some ICEs in debuginfo generator wrt. opaque structs
...
Just enough to make new compilable/ice20044.d pass with `-g`.
2019-07-29 21:38:34 +02:00
Martin Kinkelin
e52199469f
Upgrade front-end & libs to v2.087.0-beta.1
2019-06-21 15:39:45 +02:00
Martin Kinkelin
d4858cfbcb
Fix issue #2937 (DI scope for types in static foreach in mixin templates) ( #2939 )
2018-12-16 13:41:18 +01:00
Nicholas Wilson
7a2a59874a
fix compilation with recent LLVM ( #2921 )
2018-11-25 15:27:10 +01:00
Martin Kinkelin
0a6125352d
Debuginfo: Fix Win64 CodeView emission for some by-value params ( #2908 )
...
Don't declare some special params as DI references, but as DI locals
instead.
Also enable some Win32 checks in the args_cdb test, as they are working
now with LLVM 7.
2018-11-15 03:02:09 +01:00
Oleksandr Palamar
540f19c8a9
Debuginfo: Fix type for associative arrays and make -gc emit C++-imitating names ( #2869 )
2018-11-11 17:29:00 +01:00
Martin Kinkelin
71dfc4a637
Fix DIBuilder::EmitNamespace() for LLVM < 5.0
2018-11-03 23:22:19 +01:00
Martin Kinkelin
3e30bc691a
Clang-format messy gen/dibuilder.cpp
2018-11-03 23:22:19 +01:00
Martin Kinkelin
be6c608a67
Refactor DIBuilder [NFC]
2018-11-03 23:22:19 +01:00
Martin Kinkelin
e0319eadf1
Add DI namespaces & use them for templates and C++ namespaces
...
And make sure the template instance names include the template
parameters, a regression after #2826 .
Also prevent `TemplatedSymbol(...).TemplatedSymbol` names, just use
`TemplatedSymbol!(...)` instead.
2018-11-03 23:22:19 +01:00
Martin Kinkelin
4a23399236
Aim for consistent #includes (order + dir prefix)
...
I surely missed a few.
2018-10-20 16:19:46 +02:00
Martin Kinkelin
7776c4081b
Upgrade frontend & libs to v2.083.0-beta.1
2018-10-20 16:19:46 +02:00
Martin Kinkelin
5cdab742f7
Restore special DI name for extern(D) main function (D main
)
2018-10-15 23:17:24 +02:00
Martin Kinkelin
518eafc2f9
Work around apparent LLVM CodeView bug wrt. nested functions
2018-10-15 23:17:24 +02:00
Martin Kinkelin
070d6dab0f
Slightly refactor DIBuilder::EmitSubProgram()
2018-10-15 23:17:24 +02:00
Elie Morisse
dcad25d6fd
Debug info: for extern(D) functions whose order of explicit arguments gets reversed, set the calling convention to DW_CC_D_dmd.
...
DW_CC_D_dmd is set to the first available value according to https://gcc.gnu.org/wiki/GNUDwarfExtensions . A GDB patch to handle this calling convention is being proposed.
2018-10-15 23:17:24 +02:00
Elie Morisse
23e73160cf
Debug info: remove dead getDefinedModule() function.
2018-10-15 23:10:22 +02:00
Elie Morisse
a62a94fa43
Debug info: move the IrTypeAggr::diCompositeType field into IrAggr to get it reset when emitting a new module
...
diCompositeType might contain references to another compile unit, so has to be re-created for each module.
2018-10-15 23:10:22 +02:00
Elie Morisse
02eb4058fa
Debug info: create temporary forward subprograms before creating the subprogram type
...
This is for the special case of auto functions returning a nested type, e.g:
auto foo() {
struct S {};
S s;
return s;
}
2018-10-15 23:10:18 +02:00
Elie Morisse
8d26d5f452
Debug info: DIBuilder::GetSymbolScope() might need to declare functions
2018-10-15 22:57:59 +02:00
Elie Morisse
e292cbc84f
Debug info: at least for GDB, "this" parameters should get declared as DW_TAG_pointer_type instead of DW_TAG_reference_type for member function calls to work
...
Matches GDC and Clang's output.
2018-10-15 22:54:29 +02:00
Elie Morisse
9facf5ad28
Debug info: better handling of static aggregate members with DIFlagStaticMember
...
Once again closer to GDC and Clang's output, and attaching static variables to the module scope prevents an assert from triggering in IR/DIBuilder.cpp:
checkGlobalVariableScope(): Assertion `CT->getIdentifier().empty() && "Context of a global variable should not be a type with identifier"'
2018-10-15 22:51:50 +02:00
Elie Morisse
2cdae62b0e
Debug info: attach entries to their scope, and never use the qualified name except for modules
...
Previously entries were made children of the compile unit, and both global and imported symbols were only accessible by using their mangled name, or since the latest commit by their qualified name.
This brings the DWARF output closer to GDC's.
2018-10-15 22:51:50 +02:00
Elie Morisse
841146644b
Debug info: emit llvm::DIModule and llvm::DIImportedEntity for modules and imports
...
Matches GDC's DWARF output and enables access to global and imported symbols from GDB.
2018-10-15 22:48:03 +02:00
Martin Kinkelin
5c24f60cf9
Raise min LLVM version to 3.9 ( #2872 )
2018-10-15 22:31:59 +02:00
Martin Kinkelin
5d8b581025
Rename ExplicitByvalRewrite to IndirectByvalRewrite
2018-05-27 00:57:26 +02:00
Johan Engelen
5b775a7dc5
Fix compilation with LLVM trunk. ( #2705 )
2018-05-22 20:04:09 +02:00
Martin
114dfa4333
Handle new special enums in debuginfo emission
...
I.e., __c_(u)long and __c_long_double.
This fixes runnable/cppa.d.
2018-04-27 23:50:52 +02:00
Martin
df4f854dd5
Upgrade to D v2.079.0-beta.1
2018-02-20 02:04:41 +01:00
Martin Kinkelin
11dfc4b5d7
Get rid of dead code (arrayops + DtoCallFunction() overload) ( #2500 )
2018-01-14 00:02:42 +01:00
Martin
6e7249c574
DI: Use fully qualified names
...
Tested by dmd-testsuite's runnable/testpdb.
2017-10-22 23:12:30 +02:00
Martin
610a1c37e4
Handle multiple function definitions with same mangled name
...
By discarding (and warning about) all but the first definition.
compilable/test17352.d tests that the compiler accepts 2 distinct but
equivalent templated function instantiations (with an alias to a
different local of the same type and name) ending up with a common
mangled name.
See https://issues.dlang.org/show_bug.cgi?id=17352 .
2017-09-23 22:11:34 +02:00
Martin
8cc5ff6e79
Fix debuginfos for nested ref/out parameters (use llvm.dbg.declare)
...
llvm.dbg.value() apparently doesn't like GEP + deref, so use
llvm.dbg.declare() & GEP.
2017-09-09 22:02:14 +02:00
Martin
8371d173a9
MSVC x64: Declare params rewritten by ExplicitByvalRewrite as DI refs
2017-09-09 22:01:22 +02:00
Martin
8a5984b7d3
Use llvm.dbg.value for all non-special refs & fix nested refs DI
2017-09-09 22:01:22 +02:00
Martin
287e4b9b53
Cosmetics & improved comments wrt. llvm.dbg.value
2017-09-09 22:01:17 +02:00
Johan Engelen
7563930496
ref
variables are not always function parameters: could be from a foreach statement, where it _is_ an alloca.
2017-08-27 21:47:33 +02:00
Johan Engelen
152416bd37
Attempt to use llvm.dbg.value instead for ref params.
2017-08-27 20:49:43 +02:00
Johan Engelen
bea0a37582
An attempt to fix runnable/gdb4149.d test: correct debuginfo for ref
parameters.
2017-08-26 14:56:37 +02:00
Nicholas Wilson
f27109c8e8
New spirv and 6.0 compilation fixes ( #2276 )
...
Update to a new SPIRV-LLVM and fix compilation issues for LLVM6.0
2017-08-18 15:23:56 +08:00
Johan Engelen
cc35356d78
Mark intentional fall through as such. ( #2218 )
2017-07-20 20:22:43 +02:00
Johan Engelen
498f790915
Make the producer name in debuginfo more precise. ( #2205 )
2017-07-19 20:29:57 +02:00
Martin
1fb269f940
Drop support for LLVM < 3.7
2017-07-16 02:18:00 +02:00
Nicholas Wilson
c041205fe0
Dcompute fixes ( #2195 )
...
* Disable debug info for now Until I get it working.
* Don't recurse into uninstansiated templates
* Remove device only modules from objfiles.
* Remove typeid generation for dcompute.
* Dont generate typeinfo member functions
* Whitelist `__dcompute_reflect`
2017-07-13 11:28:09 +08:00
kinke
20084000b0
Merge pull request #2142 from kinke/archiver
...
Integrate LLD for MSVC targets; prepare for other targets
2017-06-04 04:02:22 +02:00
Martin
383c2d3a59
Range-ify usages of front-end Arrays
2017-06-04 00:29:44 +02:00