1273 Commits

Author SHA1 Message Date
David Blaikie
d61481245d dwarfdump: Correctly indentify the indicies for DWP records
The indicies are one-based, not zero-based, per the spec.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254626 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-03 18:41:59 +00:00
NAKAMURA Takumi
175c9617cc llvm/test/DebugInfo/X86/safestack-byval.ll: Give an explicit triple for now. It crashes for targeting *-win32.
Also revert r254375 and r254361.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254397 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-01 10:07:41 +00:00
NAKAMURA Takumi
eade7630a7 Move llvm/test/DebugInfo/Generic/safestack-byval.ll to X86. It depends on x86-64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254396 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-01 10:07:37 +00:00
Colin LeMahieu
442a04a282 [Hexagon] Disabling failing safestack test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254375 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-01 04:56:25 +00:00
NAKAMURA Takumi
a1d72288c9 llvm/test/DebugInfo/Generic/safestack-byval.ll is using tls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254361 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-01 01:15:03 +00:00
Evgeniy Stepanov
390ced1108 Extend debug info for function parameters in SDAG.
SDAG currently can emit debug location for function parameters when
an llvm.dbg.declare points to either a function argument SSA temp,
or to an AllocaInst. This change extends this logic by adding a
fallback case when neither of the above is true.

This is required for SafeStack, which may copy the contents of a
byval function argument into something that is not an alloca, and
then describe the target as the new location of the said argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254352 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-01 00:34:30 +00:00
Artyom Skrobov
cc1b3e47c0 Removing specific target from the generic test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253562 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-19 12:24:47 +00:00
Pete Cooper
6d024c616a Revert "Change memcpy/memset/memmove to have dest and source alignments."
This reverts commit r253511.

This likely broke the bots in
http://lab.llvm.org:8011/builders/clang-ppc64-elf-linux2/builds/20202
http://bb.pgr.jp/builders/clang-3stage-i686-linux/builds/3787

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253543 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-19 05:56:52 +00:00
Pete Cooper
8b170f7f29 Change memcpy/memset/memmove to have dest and source alignments.
Note, this was reviewed (and more details are in) http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20151109/312083.html

These intrinsics currently have an explicit alignment argument which is
required to be a constant integer.  It represents the alignment of the
source and dest, and so must be the minimum of those.

This change allows source and dest to each have their own alignments
by using the alignment attribute on their arguments.  The alignment
argument itself is removed.

There are a few places in the code for which the code needs to be
checked by an expert as to whether using only src/dest alignment is
safe.  For those places, they currently take the minimum of src/dest
alignments which matches the current behaviour.

For example, code which used to read:
  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src, i32 500, i32 8, i1 false)
will now read:
  call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %dest, i8* align 8 %src, i32 500, i1 false)

For out of tree owners, I was able to strip alignment from calls using sed by replacing:
  (call.*llvm\.memset.*)i32\ [0-9]*\,\ i1 false\)
with:
  $1i1 false)

and similarly for memmove and memcpy.

I then added back in alignment to test cases which needed it.

A similar commit will be made to clang which actually has many differences in alignment as now
IRBuilder can generate different source/dest alignments on calls.

In IRBuilder itself, a new argument was added.  Instead of calling:
  CreateMemCpy(Dst, Src, getInt64(Size), DstAlign, /* isVolatile */ false)
you now call
  CreateMemCpy(Dst, Src, getInt64(Size), DstAlign, SrcAlign, /* isVolatile */ false)

There is a temporary class (IntegerAlignment) which takes the source alignment and rejects
implicit conversion from bool.  This is to prevent isVolatile here from passing its default
parameter to the source alignment.

Note, changes in future can now be made to codegen.  I didn't change anything here, but this
change should enable better memcpy code sequences.

Reviewed by Hal Finkel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253511 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-18 22:17:24 +00:00
Artyom Skrobov
83d9e5696b Removing specific target from the generic test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253479 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-18 17:50:47 +00:00
Rafael Espindola
cfc74b78b1 Stop producing .data.rel sections.
If a section is rw, it is irrelevant if the dynamic linker will write to
it or not.

It looks like llvm implemented this because gcc was doing it. It looks
like gcc implemented this in the hope that it would put all the
relocated items close together and speed up the dynamic linker.

There are two problem with this:
* It doesn't work. Both bfd and gold will map .data.rel to .data and
  concatenate the input sections in the order they are seen.
* If we want a feature like that, it can be implemented directly in the
  linker since it knowns where the dynamic relocations are.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253436 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-18 06:02:15 +00:00
David Blaikie
6715b1eee1 dwarfdump: support indexed string dumping in dwp based on the STR_OFFSETS component of the index
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253392 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-17 22:39:23 +00:00
David Blaikie
e6878ebe82 dwarfdump: Reference the appropriate line table segment when dumping dwp files
Also improves .dwo type unit dumping which didn't handle this either.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253377 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-17 21:08:05 +00:00
Dan Gohman
8dc1efba58 Update DebugInfo tests for the change in DEBUG_VALUE output in r253338.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253340 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-17 16:15:11 +00:00
David Blaikie
7cd8652959 dwarfdump: Use the index to find the right abbrev offset in DWP files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253277 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-17 00:39:55 +00:00
Keno Fischer
e35a90c9bb Fix r253186 test case
Referencing a DILocation whose scope is a different subprogram causes
an assertion failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253187 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-16 08:25:14 +00:00
Keno Fischer
238d6fc46f [DIBuilder] Make createReferenceType take size and align
Summary: Since we're passing references to dbg.value as pointers,
we need to have the frontend properly declare their sizes and
alignments (as it already does for regular pointers) in preparation
for my upcoming patch to have the verifer check that the sizes agree.

Also augment the backend logic that skips actually emitting this
information into DWARF such that it also handles reference types.

Reviewers: aprantl, dexonsmith, dblaikie

Subscribers: dblaikie, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253186 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-16 07:57:32 +00:00
David Blaikie
6c420832f3 dwarfdump: Add support for dumping the table contents of DWP indexes
This is a recommit of 252842 which was reverted in 252859. The issue was
using %s format specifier for a StringRef - used Format's
left_justify(StringRef, int) instead.

It'd be nice to have __attribute__((format(..))) on llvm::format, but
apparently it's only implemented for c-style variadics, not C++ variadic
templates. Perhaps we could fix that & conditionalize the attribute on
such...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253065 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-13 19:18:49 +00:00
Vasileios Kalintiris
f771b118df Re-apply "[mips] Use correct frame register for DWARF info when dynamically realigning the stack.""
r252219 reversed the direction of subprogram -> function edge. Fixed the
IR to account for this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252895 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 14:11:43 +00:00
Vasileios Kalintiris
fff75cb0f8 Revert "[mips] Use correct frame register for DWARF info when dynamically realigning the stack."
This reverts commit r252882. LLParser complains for invalid field 'function'
in DISubprogram.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252884 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 13:19:11 +00:00
Vasileios Kalintiris
c988258daa [mips] Use correct frame register for DWARF info when dynamically realigning the stack.
Summary:
This patch overrides TargetFrameLowering::getFrameIndexReference() in order to
specify the correct register when the function needs dynamic stack realignment.
The values returned from this function are used in order to create DW_AT_locations
for DWARF info. These locations would use the wrong registers as it's been
reported in PR25028.

Reviewers: dsanders

Subscribers: dean, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252882 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 13:04:16 +00:00
Amjad Aboud
65d7d51529 dwarfdump: Added macro support to llvm-dwarfdump tool.
Added "macro" option to "-debug-dump" flag, which trigger parsing and dumping of the ".debug_macinfo" section.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252866 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 09:38:54 +00:00
David Blaikie
c65ca6797f Mostly revert 252842 due to failures on some buildbots.
I imagine there's some UB in here somewhere, though Valgrind doesn't
seem to have picked it up (not sure if I have a working asan build right
now to test there).

GDB bot seems to be crashing:
http://lab.llvm.org:8011/builders/clang-x86_64-ubuntu-gdb-75/builds/26267/steps/check-all/logs/FAIL%3A%20LLVM%3A%3Adwarfdump-dwp.test

Hexagon ELF bot is, presumably, just getting different output:
http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/32927/steps/check-all/logs/FAIL%3A%20LLVM%3A%3Adwarfdump-dwp.test

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252859 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 06:33:14 +00:00
David Blaikie
ab8c64ccda dwarfdump: Dump the contents of DWP indexes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252842 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 01:41:52 +00:00
David Blaikie
8ad0ca8af4 dwarfdump: DWP type unit index dumping skeleton
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252786 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 19:40:49 +00:00
David Blaikie
1040f990fc dwarfdump: First piece of support for DWP dumping
Just a tiny piece of index dumping - the header in this instance.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252781 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 19:28:21 +00:00
Dehao Chen
8c9ed51e3f Emit discriminator for inlined callsites.
Summary: Inlined callsites need to be emitted in debug info so that sample profile can be annotated to the correct inlined instance.

Reviewers: dnovillo, dblaikie

Subscribers: dblaikie, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252768 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 18:08:18 +00:00
Artyom Skrobov
e5bd698a3c test/DebugInfo/ARM/prologue_end.ll references thumbv1, which is invalid.
The committer didn't respond at http://reviews.llvm.org/D14338, so we've got to fix this for them.

This test doesn't pass with thumbv6, so I suppose what they meant is thumbv7.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252754 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 17:22:18 +00:00
Peter Collingbourne
5f220beefc DI: Reverse direction of subprogram -> function edge.
Previously, subprograms contained a metadata reference to the function they
described. Because most clients need to get or set a subprogram for a given
function rather than the other way around, this created unneeded inefficiency.

For example, many passes needed to call the function llvm::makeSubprogramMap()
to build a mapping from functions to subprograms, and the IR linker needed to
fix up function references in a way that caused quadratic complexity in the IR
linking phase of LTO.

This change reverses the direction of the edge by storing the subprogram as
function-level metadata and removing DISubprogram's function field.

Since this is an IR change, a bitcode upgrade has been provided.

Fixes PR23367. An upgrade script for textual IR for out-of-tree clients is
attached to the PR.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252219 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-05 22:03:56 +00:00
Tim Northover
cc5dc01d7f Remove windows line endings introduced by r252177. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252217 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-05 21:54:58 +00:00
Oleg Ranevskyy
101c5b096f [DebugInfo] Fix ARM/AArch64 prologue_end position. Related to D11268.
Summary:
This review is related to another review request http://reviews.llvm.org/D11268, does the same and merely fixes a couple of issues with it.

D11268 is quite old and has merge conflicts against the current trunk.
This request 
 - rebases D11268 onto the new trunk;
 - resolves the merge conflicts;
 - fixes the prologue_end tests, which do not pass due to the subprogram definitions not marked as distinct.

Reviewers: echristo, rengolin, kubabrecka

Subscribers: aemerson, rengolin, jyknight, dsanders, llvm-commits, asl

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252177 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-05 17:50:17 +00:00
Alexey Samsonov
fa3207e31b Fix the test case for Windows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252027 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-04 01:09:37 +00:00
Alexey Samsonov
a6c7bb0f0c [llvm-symbolizer] Improve the test for missing input file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252020 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-04 00:30:19 +00:00
Alexey Samsonov
43a759de81 [LLVMSymbolize] Use symbol table only if function linkage name was requested.
Now it's enough to just specify -functions=short without additionally
providing -use-symbol-table=false.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251339 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-26 20:12:29 +00:00
David Majnemer
9e109e7081 s/NumFiles/NumStreams/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250357 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-15 01:39:00 +00:00
David Majnemer
4e486b6a4d [llvm-pdbdump] Provide a mechanism to dump the raw contents of a PDB
A PDB can be thought of as a very simple file system.  It is
occasionally illuminating to see the contents of the underlying files.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250356 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-15 01:27:19 +00:00
Oliver Stannard
0b63e20666 [Debug] Look through bitcasts to find argument registers
On targets where f32 is not legal, we have to look through a BITCAST SDNode to
find the register that an argument is stored in when emitting debug info, or we
will not be able to emit a DW_AT_location for it.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250056 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-12 15:52:36 +00:00
David Blaikie
c7fc9259e6 Move test back to Generic now it's fixed the right way (thanks Eric!)
I knee-jerk tried to fix this in completely the wrong way - it's not an
CPU limitation, but an OS/object file type one, so moving it
into a CPU-specific classification didn't help at all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249562 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-07 16:26:28 +00:00
Eric Christopher
068c579c16 Remove the comdat-ness from the testcase as it won't lower properly
on darwin with it since darwin doesn't have comdat and it isn't
necessary for the testcase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249504 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-07 01:52:33 +00:00
David Blaikie
d545f1a5b8 Move test to X86-specific due to some IR invalid on other targets
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249489 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-07 00:17:31 +00:00
David Blaikie
968a344550 DebugInfo: Include the decl_line/decl_file in subprogram definitions if they differ from those in the declaration
This is handy for some AutoFDO stuff, and seems like a minor improvement
to correctness (otherwise a debug info consumer might think the decl
line/file of the def was the same as that of the declaration - though
what a consumer might use that for, I'm not sure - maybe "list <func>"
would've misbehaved with the old behavior?) and at a minor cost (in my
experiment, with fission, without type units, without compression, 0.01%
growth in debug info in the executable/objects, 0.02% growth in the .dwo
files).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249487 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-07 00:04:16 +00:00
Colin LeMahieu
df9fc236fc [Hexagon] XFAILing test while diagnosing backend error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249088 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-01 22:14:05 +00:00
Colin LeMahieu
4d46a2bcbc [Hexagon] XFAILing test while diagnosing backend error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249075 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-01 21:19:03 +00:00
Evgeniy Stepanov
5a7136645b Move dw_op_minus test to DebugInfo/X86.
The test requires X86 target support, and checks the actual debug
info contents, including register numbers which would be different on
other platforms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248938 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-30 20:23:24 +00:00
Evgeniy Stepanov
1eca697107 Fix debug info with SafeStack.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248933 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-30 19:55:43 +00:00
Adrian Prantl
d4d53a507c Add REQUIRES: default_triple to these testcases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248452 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-24 00:35:14 +00:00
Adrian Prantl
0800f64c6b Debug Info: Emit the dwo_name only in skeleton CUs, not in DWOs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248340 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-22 23:21:00 +00:00
Matthias Braun
d53e4c92e5 SelectionDAGDumper: Hide [ID=X], [ORD=X] and source locations by default.
You can show them with the new -dag-dump-verbose switch.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248011 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-18 17:57:28 +00:00
Matthias Braun
6c76d11db8 SelectionDAG: Introduce PersistentID to SDNode for assert builds.
This gives us more human readable numbers to identify nodes in debug
dumps.

Before:
  0x7fcbd9700160: ch = EntryToken

  0x7fcbd985c7c8: i64 = Register %RAX

   ...

      0x7fcbd9700160: <multiple use>
    0x7fcbd985c578: i64,ch = MOV64rm 0x7fcbd985c6a0, 0x7fcbd985cc68, 0x7fcbd985c200, 0x7fcbd985cd90, 0x7fcbd985ceb8, 0x7fcbd9700160<Mem:LD8[@foo]> [ORD=2]

  0x7fcbd985c8f0: ch,glue = CopyToReg 0x7fcbd9700160, 0x7fcbd985c7c8, 0x7fcbd985c578 [ORD=3]

    0x7fcbd985c7c8: <multiple use>
    0x7fcbd985c8f0: <multiple use>
    0x7fcbd985c8f0: <multiple use>
  0x7fcbd985ca18: ch = RETQ 0x7fcbd985c7c8, 0x7fcbd985c8f0, 0x7fcbd985c8f0:1 [ORD=3]

Now:
  t0: ch = EntryToken

  t5: i64 = Register %RAX

    ...

      t0: <multiple use>
    t3: i64,ch = MOV64rm t10, t12, t11, t13, t14, t0<Mem:LD8[@foo]> [ORD=2]

  t6: ch,glue = CopyToReg t0, t5, t3 [ORD=3]

    t5: <multiple use>
    t6: <multiple use>
    t6: <multiple use>
  t7: ch = RETQ t5, t6, t6:1 [ORD=3]

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248010 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-18 17:41:00 +00:00
NAKAMURA Takumi
287f56c465 Copy back Inputs/gmlt.ll. Also DebugInfo/X86/gmlt.test uses it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247777 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-16 06:22:55 +00:00