Commit Graph

37 Commits

Author SHA1 Message Date
Adrian Prantl 45b0585fa2 Module Debugging: Fix a crash when emitting debug info for nested tag types
whose DeclContext is not yet complete by deferring their emission.

rdar://problem/24918680

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262851 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-07 20:58:52 +00:00
James Y Knight e85ad57298 Make TargetInfo store an actual DataLayout instead of a string.
Use it to calculate UserLabelPrefix, instead of specifying it (often
incorrectly).

Note that the *actual* user label prefix has always come from the
DataLayout, and is handled within LLVM. The main thing clang's
TargetInfo::UserLabelPrefix did was to set the #define value. Having
these be different from each-other is just silly.

Differential Revision: http://reviews.llvm.org/D17183

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262737 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-04 19:00:41 +00:00
Benjamin Kramer 1dde17c5ad Move DebugInfoKind into its own header to cut the cyclic dependency edge from Driver to Frontend.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@259489 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-02 11:06:51 +00:00
Adrian Prantl f5a6cecb8d Module Debugging: Canonicalize the file names used as PCH module names
by stripping the path. Follow-up to r258555.

This is safe because only one PCH per CU is currently supported for
module debugging.

rdar://problem/24301262

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258582 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 23:30:56 +00:00
Adrian Prantl d97ae762ac Module debugging: Create a parent DIModule with the PCH name for types
emitted into a precompiled header to mirror the debug info emitted for
object files importing the PCH.

rdar://problem/24290667

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258555 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 21:14:41 +00:00
Adrian Prantl c87ca354aa Fix the build by using the correct suffix for 64 bit literals
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258531 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 19:29:41 +00:00
Adrian Prantl 9fd9596d49 Fix a typo in r258507 and change the PCH dwoid constant to ~1UL.
rdar://problem/24290667

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258519 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 18:46:45 +00:00
Adrian Prantl a892974a4f Module Debugging: Use a nonzero DWO id for precompiled headers.
PCH files don't have a module signature and LLVM uses a nonzero DWO id as
an indicator for skeleton / module CUs. This change pins the DWO id for PCH
files to a known constant value.
The correct long-term solution here is to implement a module signature
that is an actual dterministic hash (at the moment module signatures are
just random nonzero numbers) and then enable this for PCH files as well.

<rdar://problem/24290667>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258507 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 17:43:43 +00:00
Adrian Prantl 135b6cd218 Module Debugging: Make sure that anonymous tag decls that define global
variables are visited.

This shouldn't encourage anyone to put global variables into clang modules.
rdar://problem/24199640

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258250 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-19 23:42:44 +00:00
Adrian Prantl ed2c14216c Module Debugging: Defer the emission of anonymous tag decls
until we are visiting their declcontext.

This fixes a regression introduced in r256962:
When building debug info for a typdef'd anonymous tag type, we would be
visiting the inner anonymous type first thus creating a "typedef changes
linkage of anonymous type, but linkage was already computed" error.

rdar://problem/24199640

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258152 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-19 18:02:47 +00:00
Adrian Prantl e74697e20e Module debugging: Defer emitting tag types until their definition
was visited and all decls have been merged.

We only get a single chance to emit the types for virtual classes because
CGDebugInfo::completeRequiredType() categorically doesn't complete them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256962 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-06 19:22:19 +00:00
Adrian Prantl 00338de691 Module Debugging: Emit module debug info for types inside of Objective-C
containers.

rdar://problem/23196170

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251120 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-23 17:02:22 +00:00
Adrian Prantl 9bb39ed581 Remove a redundant check. NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251116 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-23 16:51:32 +00:00
Adrian Prantl 73315f72a2 Module Debugging: Use the clang module signature as the module's dwo_id
when building a module. Clang already records the module signature when
building a skeleton CU to reference a clang module.

Matching the id in the skeleton with the one in the module allows a DWARF
consumer to verify that they found the correct version of the module
without them needing to know about the clang module format.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248345 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-22 23:26:43 +00:00
Adrian Prantl 9345c88c02 Debug Info: When building a module, emit skeleton CUs for imported modules.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248184 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-21 17:48:37 +00:00
Adrian Prantl a83de9f778 Module debugging: Support submodules in the PCM/PCH debug info.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248127 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-20 16:51:35 +00:00
Adrian Prantl e7217ff0c5 Further simplify the interface of PCHContainerGenerator
by dropping the const qualifier on the CI.

NFC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248101 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-19 21:42:52 +00:00
Adrian Prantl 9083fb296d Eliminate a redundant check.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248068 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-19 00:10:25 +00:00
Adrian Prantl 5cc443cba8 Simplify the interface of PCHContainerGenerator and friends
by passing in a CompilerInstance instead of all its individual members.

NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248053 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-18 22:10:59 +00:00
Adrian Prantl 4e5a4032df Debug Info: Remove an unnecessary debug type visitor.
Thanks to dblaikie for spotting this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247303 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-10 17:13:31 +00:00
Hans Wennborg 298c9cbb3d Re-commit r247218: "Fix Clang-tidy misc-use-override warnings, other minor fixes"
This never broke the build; it was the LLVM side, r247216, that caused problems.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247302 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-10 17:07:54 +00:00
Hans Wennborg 38a792cafd Revert r247218: "Fix Clang-tidy misc-use-override warnings, other minor fixes"
Seems it broke the Polly build.
From http://lab.llvm.org:8011/builders/perf-x86_64-penryn-O3-polly-fast/builds/11687/steps/compile/logs/stdio:

In file included from /home/grosser/buildslave/perf-x86_64-penryn-O3-polly-fast/llvm.src/lib/TableGen/Record.cpp:14:0:
/home/grosser/buildslave/perf-x86_64-penryn-O3-polly-fast/llvm.src/include/llvm/TableGen/Record.h:369:3: error: looser throw specifier for 'virtual llvm::TypedInit::~TypedInit()'
/home/grosser/buildslave/perf-x86_64-penryn-O3-polly-fast/llvm.src/include/llvm/TableGen/Record.h:270:11: error:   overriding 'virtual llvm::Init::~Init() noexcept (true)'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247222 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-10 00:37:18 +00:00
Hans Wennborg 91d4921dc4 Fix Clang-tidy misc-use-override warnings, other minor fixes
Patch by Eugene Zelenko!

Differential Revision: http://reviews.llvm.org/D12741

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247218 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-10 00:24:40 +00:00
Adrian Prantl d9178eb887 Module Debugging: Emit debug type information into clang ObjC modules.
When -fmodule-format is set to "obj", emit debug info for all types
declared in a module or referenced by a declaration into the module's
object file container.

This patch adds support for Objective-C types and methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247068 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-08 20:41:52 +00:00
Adrian Prantl 8d25e29a9e Module Debugging: Emit debug type information into clang modules.
When -fmodule-format is set to "obj", emit debug info for all types
declared in a module or referenced by a declaration into the module's
object file container.

This patch adds support for C and C++ types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247049 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-08 19:20:27 +00:00
Adrian Prantl 7bbf57e36a Add a -gmodules option to the driver and a -dwarf-ext-refs to cc1
to enable the use of external type references in the debug info
(a.k.a. module debugging).

The driver expands -gmodules to "-g -fmodule-format=obj -dwarf-ext-refs"
and passes that to cc1. All this does at the moment is set a flag
codegenopts.

http://reviews.llvm.org/D11958

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246192 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-27 19:46:20 +00:00
Richard Smith 7537674b90 Initialize the AST consumer as soon as we have both an ASTConsumer and an
ASTContext. Fixes some cases where we could previously initialize the AST
consumer more than once.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245346 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-18 20:39:29 +00:00
Yaron Keren f49d6b8491 Remove and forbid raw_svector_ostream::flush() calls.
After r244870 flush() will only compare two null pointers and return,
doing nothing but wasting run time. The call is not required any more
as the stream and its SmallString are always in sync.

Thanks to David Blaikie for reviewing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244928 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-13 18:12:56 +00:00
Richard Smith 5624537c4c [modules] PR22534: Load files specified by -fmodule-file= eagerly. In particular, this avoids the need to re-parse module map files when using such a module.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244416 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-09 08:48:41 +00:00
Eric Christopher b88f708037 Rename DescriptionString -> DataLayoutString as it matches the actual
use of the string.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244178 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 23:48:05 +00:00
Mehdi Amini 02595590ed LLVM API Change: the Module always owns the DataLayout
From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243115 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-24 16:04:29 +00:00
Adrian Prantl 1e6cac6da0 Make the clang module container format selectable from the command line.
- introduces a new cc1 option -fmodule-format=[raw,obj]
  with 'raw' being the default
- supports arbitrary module container formats that libclang is agnostic to
- adds the format to the module hash to avoid collisions
- splits the old PCHContainerOperations into PCHContainerWriter and
  a PCHContainerReader.

Thanks to Richard Smith for reviewing this patch!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242499 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-17 01:19:54 +00:00
Adrian Prantl fe95d3d2cb Rename ModuleContainerGenerator to PCHContainergenerator for consistency
and re-clang-format (NFC).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241841 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-09 19:46:39 +00:00
Adrian Prantl 09fd829bf4 Revert "Revert r241620 and follow-up commits" and move the initialization
of the llvm targets from clang/CodeGen into ClangCheck.cpp and CIndex.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241653 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-08 01:00:30 +00:00
Adrian Prantl bf47af3076 Revert r241620 and follow-up commits while investigating linux buildbot failures.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241642 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-07 23:19:46 +00:00
Adrian Prantl 5f180ca911 Cleanup: Use the C++ API to initialize the backend.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241635 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-07 22:34:47 +00:00
Adrian Prantl d5b174ab68 Wrap clang modules and pch files in an object file container.
This patch adds ObjectFilePCHContainerOperations uses the LLVM backend
to put the contents of a PCH into a __clangast section inside a COFF, ELF,
or Mach-O object file container.

This is done to facilitate module debugging by makeing it possible to
store the debug info for the types defined by a module alongside the AST.

rdar://problem/20091852

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241620 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-07 20:11:29 +00:00