oota-llvm.git
10 years agoRe-enable inline memcpy expansion for Thumb1.
James Molloy [Fri, 16 May 2014 14:24:22 +0000 (14:24 +0000)]
Re-enable inline memcpy expansion for Thumb1.

Patch by Moritz Roth!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208994 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSmall dyn_cast and auto cleanup.
Rafael Espindola [Fri, 16 May 2014 14:22:33 +0000 (14:22 +0000)]
Small dyn_cast and auto cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208993 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix the Load/Store optimization pass to work with Thumb1.
James Molloy [Fri, 16 May 2014 14:14:30 +0000 (14:14 +0000)]
Fix the Load/Store optimization pass to work with Thumb1.

Patch by Moritz Roth!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208992 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoEnable the Load/Store optimization pass for Thumb1 but make it return immediately...
James Molloy [Fri, 16 May 2014 14:11:38 +0000 (14:11 +0000)]
Enable the Load/Store optimization pass for Thumb1 but make it return immediately for now.

Patch by Moritz Roth!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208991 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix a few comment typos and style issues.
James Molloy [Fri, 16 May 2014 14:08:46 +0000 (14:08 +0000)]
Fix a few comment typos and style issues.

Patch by Moritz Roth!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208990 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add SELEQZ and SELNEZ instructions
Zoran Jovanovic [Fri, 16 May 2014 13:40:57 +0000 (13:40 +0000)]
[mips][mips64r6] Add SELEQZ and SELNEZ instructions
Differential Revision: http://reviews.llvm.org/D3743

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208987 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoChange the GlobalAlias constructor to look a bit more like GlobalVariable.
Rafael Espindola [Fri, 16 May 2014 13:34:04 +0000 (13:34 +0000)]
Change the GlobalAlias constructor to look a bit more like GlobalVariable.

This is part of the fix for pr10367. A GlobalAlias always has a pointer type,
so just have the constructor build the type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208983 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add Compact indexed jumps.
Zoran Jovanovic [Fri, 16 May 2014 13:19:46 +0000 (13:19 +0000)]
[mips][mips64r6] Add Compact indexed jumps.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208981 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix hardcoded slash to native path seperator which was exposed from llvm::sys::path.
Yaron Keren [Fri, 16 May 2014 13:16:30 +0000 (13:16 +0000)]
Fix hardcoded slash to native path seperator which was exposed from llvm::sys::path.

http://reviews.llvm.org/D3687

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208980 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "Implement global merge optimization for global variables."
Rafael Espindola [Fri, 16 May 2014 13:02:18 +0000 (13:02 +0000)]
Revert "Implement global merge optimization for global variables."

This reverts commit r208934.

The patch depends on aliases to GEPs with non zero offsets. That is not
supported and fairly broken.

The good news is that GlobalAlias is being redesigned and will have support
for offsets, so this patch should be a nice match for it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208978 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add Compact zero-compare branch-and-link instructions
Zoran Jovanovic [Fri, 16 May 2014 12:27:19 +0000 (12:27 +0000)]
[mips][mips64r6] Add Compact zero-compare branch-and-link instructions

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208977 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMergeFunctions Pass, introduced total ordering among GEP operations.
Stepan Dyatkovskiy [Fri, 16 May 2014 11:55:02 +0000 (11:55 +0000)]
MergeFunctions Pass, introduced total ordering among GEP operations.

Patch replaces old isEquivalentGEP implementation, and changes type of
comparison result from bool (equal or not) to {-1, 0, 1} (less, equal, greater).

This patch belongs to patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208976 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMC: Add DwarfTypesDWOSection also to MCCOFF.
NAKAMURA Takumi [Fri, 16 May 2014 11:14:51 +0000 (11:14 +0000)]
MC: Add DwarfTypesDWOSection also to MCCOFF.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208975 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add compact branch instructions
Zoran Jovanovic [Fri, 16 May 2014 11:03:45 +0000 (11:03 +0000)]
[mips][mips64r6] Add  compact branch instructions
Differential Revision: http://reviews.llvm.org/D3691

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208974 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMergeFunctions Pass, introduced total ordering among operations.
Stepan Dyatkovskiy [Fri, 16 May 2014 11:02:22 +0000 (11:02 +0000)]
MergeFunctions Pass, introduced total ordering among operations.

Patch replaces old isEquivalentOperation implementation, and changes type of
comparison result from bool (equal or not) to {-1, 0, 1} (less, equal, greater).

This patch belongs to patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208973 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add LWPC and LWUPC instructions
Zoran Jovanovic [Fri, 16 May 2014 10:27:10 +0000 (10:27 +0000)]
[mips][mips64r6] Add LWPC and LWUPC instructions

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208971 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add Floating Point Compare setting Mask - CMP.condn.fmt
Zoran Jovanovic [Fri, 16 May 2014 09:48:29 +0000 (09:48 +0000)]
[mips][mips64r6] Add Floating Point Compare setting Mask - CMP.condn.fmt
Differential Revision: http://reviews.llvm.org/D3750

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208970 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTableGen: fix operand counting for aliases
Tim Northover [Fri, 16 May 2014 09:42:04 +0000 (09:42 +0000)]
TableGen: fix operand counting for aliases

TableGen has a fairly dubious heuristic to decide whether an alias should be
printed: does the alias have lest operands than the real instruction. This is
bad enough (particularly with no way to override it), but it should at least be
calculated consistently for both strings.

This patch implements that logic: first get the *correct* string for the
variant, in the same way as the Matcher, without guessing; then count the
number of whitespace chars.

There are basically 4 changes this brings about after the previous
commits; all of these appear to be good, so I have changed the tests:

+ ARM64: we print "neg X, Y" instead of "sub X, xzr, Y".
+ ARM64: we skip implicit "uxtx" and "uxtw" modifiers.
+ Sparc: we print "mov A, B" instead of "or %g0, A, B".
+ Sparc: we print "fcmpX A, B" instead of "fcmpX %fcc0, A, B"

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208969 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM64: disable printing of "fcmXY ..., #0" aliases
Tim Northover [Fri, 16 May 2014 09:41:48 +0000 (09:41 +0000)]
ARM64: disable printing of "fcmXY ..., #0" aliases

The canonical syntax is "fcmXY ..., #0.0".

This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208968 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAArch64: disable printing of add/sub alias
Tim Northover [Fri, 16 May 2014 09:41:43 +0000 (09:41 +0000)]
AArch64: disable printing of add/sub alias

This alias appears not to have an appropriate PrintMethod. Normally, I'd look
into it, but since AArch64 is disappearing soon it's probably not worth it.

This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208967 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSparc: disable printing of jmp/call aliases (C++ does it)
Tim Northover [Fri, 16 May 2014 09:41:39 +0000 (09:41 +0000)]
Sparc: disable printing of jmp/call aliases (C++ does it)

These aliases are handled entirely in C++ and only having TableGen InstAliases
for some of them was confusing LLVM.

This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208966 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSparc: disable printing on longer "brX,pt" aliases
Tim Northover [Fri, 16 May 2014 09:41:35 +0000 (09:41 +0000)]
Sparc: disable printing on longer "brX,pt" aliases

This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208965 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMips: don't print subu alias for addiu
Tim Northover [Fri, 16 May 2014 09:41:30 +0000 (09:41 +0000)]
Mips: don't print subu alias for addiu

Certainly not without having a custom PrintMethod to invert the immediate
beforehand. But probably not at all.

This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208964 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoX86: disable printing of bare "mov" aliases
Tim Northover [Fri, 16 May 2014 09:41:26 +0000 (09:41 +0000)]
X86: disable printing of bare "mov" aliases

In AT&T syntax, we should probably print the full "movl" or "movw". TableGen
used to ignore these aliases because it was miscounting the number of operands.
This fixes the issue.

This will be tested when the TableGen "should I print this Alias"
heuristic is fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208963 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAArch64: disable printing of MOV -> MOVZ aliases
Tim Northover [Fri, 16 May 2014 09:41:21 +0000 (09:41 +0000)]
AArch64: disable printing of MOV -> MOVZ aliases

Actually, MOV sometimes is canonical, but for now this is a better
approximation than what's there.

This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208962 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM64: disable printing of swapped compare-mask aliases
Tim Northover [Fri, 16 May 2014 09:41:16 +0000 (09:41 +0000)]
ARM64: disable printing of swapped compare-mask aliases

You can perform (say) an fcmle operation by swapping the operands on an fcmge,
but it shouldn't be printed like that.

This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208961 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM64: disable printing of LDUR -> LDR aliases
Tim Northover [Fri, 16 May 2014 09:41:12 +0000 (09:41 +0000)]
ARM64: disable printing of LDUR -> LDR aliases

We accept "ldr w3, [x1, #-1]" as a convenience, but we should still print the
canonical "ldur" form.

This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208960 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM64: give TST aliases priority over ANDS.
Tim Northover [Fri, 16 May 2014 09:41:08 +0000 (09:41 +0000)]
ARM64: give TST aliases priority over ANDS.

If an ANDS instruction has Rd == ZR it should be printed as TST since
its only effect is on the flags register NZCV.

This will be tested when the TableGen "should I print this Alias"
heuristic is fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208959 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM64: give MOV priority over shorter ORR when printing aliases.
Tim Northover [Fri, 16 May 2014 09:41:03 +0000 (09:41 +0000)]
ARM64: give MOV priority over shorter ORR when printing aliases.

MOV is almost always the right thing to print if possile. People understand it.

This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208958 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM64: give NEG priority over SUB when printing aliases.
Tim Northover [Fri, 16 May 2014 09:40:58 +0000 (09:40 +0000)]
ARM64: give NEG priority over SUB when printing aliases.

For example, the full instruction "sub w0, wzr, w1, uxtw" could print as either
"neg w0, w1" or "sub w0, wzr, w1". The former is better.

This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208957 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM64: disable printing of "lslv" type aliases
Tim Northover [Fri, 16 May 2014 09:40:52 +0000 (09:40 +0000)]
ARM64: disable printing of "lslv" type aliases

You can write "lslv w0, w1, w2" (probably for legacy reasons), but it should be
printed as simply "lsl".

This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208956 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[ARM64]Implement NEON post-increment LD1(lane) and post-increment LD1R.
Hao Liu [Fri, 16 May 2014 09:39:02 +0000 (09:39 +0000)]
[ARM64]Implement NEON post-increment LD1(lane) and post-increment LD1R.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208955 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMergeFunctions Pass, introduced total ordering among function attributes.
Stepan Dyatkovskiy [Fri, 16 May 2014 08:55:34 +0000 (08:55 +0000)]
MergeFunctions Pass, introduced total ordering among function attributes.

This patch belongs to patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208953 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add Floating Point Fused Multiply Add Subtract
Zoran Jovanovic [Fri, 16 May 2014 08:42:27 +0000 (08:42 +0000)]
[mips][mips64r6] Add Floating Point Fused Multiply Add Subtract
Differential Revision: http://reviews.llvm.org/D3727

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208952 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM: add some integer/floating point conversion libcalls
Saleem Abdulrasool [Fri, 16 May 2014 05:41:33 +0000 (05:41 +0000)]
ARM: add some integer/floating point conversion libcalls

Add some Windows on ARM specific library calls.  These are provided by msvcrt,
and can be used to perform integer to floating-point conversions (and
vice-versa) mirroring similar functions in the RTABI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208949 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd C API for thread yielding callback.
Juergen Ributzka [Fri, 16 May 2014 02:33:15 +0000 (02:33 +0000)]
Add C API for thread yielding callback.

Sometimes a LLVM compilation may take more time then a client would like to
wait for. The problem is that it is not possible to safely suspend the LLVM
thread from the outside. When the timing is bad it might be possible that the
LLVM thread holds a global mutex and this would block any progress in any other
thread.

This commit adds a new yield callback function that can be registered with a
context. LLVM will try to yield by calling this callback function, but there is
no guaranteed frequency. LLVM will only do so if it can guarantee that
suspending the thread won't block any forward progress in other LLVM contexts
in the same process.

Once the client receives the call back it can suspend the thread safely and
resume it at another time.

Related to <rdar://problem/16728690>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208945 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoProfileData: Allow multiple profiles in RawInstrProfReader
Justin Bogner [Fri, 16 May 2014 00:38:00 +0000 (00:38 +0000)]
ProfileData: Allow multiple profiles in RawInstrProfReader

Allow multiple raw profiles to coexist in a single .profraw file,
given the following conditions:

- Zero padding at the end of or between profiles will be skipped.
- Each profile must start with a valid header.
- Mixing endianness or pointer sizes in concatenated profiles files is
  not allowed.

This is needed to handle cases where a program's shared libraries are
profiled as well as the main executable itself, as we'll need to emit
each executable's counters. Combining the tables in the runtime would
be expensive for the instrumented program.

rdar://16918688

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208938 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove the Options query functions and just access our Options directly.
Eric Christopher [Fri, 16 May 2014 00:32:52 +0000 (00:32 +0000)]
Remove the Options query functions and just access our Options directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208937 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agomusttail: Fix the verification of alignment attributes
Reid Kleckner [Thu, 15 May 2014 23:58:57 +0000 (23:58 +0000)]
musttail: Fix the verification of alignment attributes

Previously this would fail with an assertion failure when trying to add
an alignment attribute without a value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208935 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoImplement global merge optimization for global variables.
Jiangning Liu [Thu, 15 May 2014 23:45:42 +0000 (23:45 +0000)]
Implement global merge optimization for global variables.

This commit implements two command line switches -global-merge-on-external
and -global-merge-aligned, and both of them are false by default, so this
optimization is disabled by default for all targets.

For ARM64, some back-end behaviors need to be tuned to get this optimization
further enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208934 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: Follow up to r208930, comment usage of 'using' to bring in base class...
David Blaikie [Thu, 15 May 2014 23:29:53 +0000 (23:29 +0000)]
DebugInfo: Follow up to r208930, comment usage of 'using' to bring in base class overload.

Code review feedback from Eric Christopher.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208933 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove more MC options into the MCTargetOptions structure.
Eric Christopher [Thu, 15 May 2014 23:27:49 +0000 (23:27 +0000)]
Move more MC options into the MCTargetOptions structure.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208932 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove unused llvm namespace bool variable.
Eric Christopher [Thu, 15 May 2014 23:27:44 +0000 (23:27 +0000)]
Remove unused llvm namespace bool variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208931 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: Don't put fission type units in comdat sections.
David Blaikie [Thu, 15 May 2014 23:18:15 +0000 (23:18 +0000)]
DebugInfo: Don't put fission type units in comdat sections.

Since type units in the dwo file are handled by a debug aware tool, they
don't need to leverage the ELF comdat grouping to implement
deduplication. Avoid creating all the .group sections for these as a
space optimization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208930 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMake the -L option for SaveTempLabels not be static. No functional change.
Eric Christopher [Thu, 15 May 2014 23:06:30 +0000 (23:06 +0000)]
Make the -L option for SaveTempLabels not be static. No functional change.

Note: This option name is terrible, we should fix this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208929 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFinish materialize for ints
Reed Kotler [Thu, 15 May 2014 21:54:15 +0000 (21:54 +0000)]
Finish materialize for ints

Summary: We add code to materialize all integer literals.

Test Plan: simplestorei.ll

Reviewers: dsanders

Reviewed By: dsanders

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208923 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUse range for
Matt Arsenault [Thu, 15 May 2014 21:44:05 +0000 (21:44 +0000)]
Use range for

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208922 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[DWARF parser] Use enums instead of bitfields in DILineInfoSpecifier.
Alexey Samsonov [Thu, 15 May 2014 21:24:32 +0000 (21:24 +0000)]
[DWARF parser] Use enums instead of bitfields in DILineInfoSpecifier.

It is more appropriate than the current situation, when one flag
(AbsoluteFilePath) is relevant only if another flag is set.

This refactoring would also simplify fetching the short function name
(stored in DW_AT_name) instead of a linkage name returned currently.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208921 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't insert lifetime.end markers between a musttail call and ret
Reid Kleckner [Thu, 15 May 2014 21:10:46 +0000 (21:10 +0000)]
Don't insert lifetime.end markers between a musttail call and ret

The allocas going out of scope are immediately killed by the return
instruction.

This is a resend of r208912, which was committed accidentally.

Reviewers: chandlerc

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208920 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "Don't insert lifetime.end markers between a musttail call and ret"
Reid Kleckner [Thu, 15 May 2014 20:41:05 +0000 (20:41 +0000)]
Revert "Don't insert lifetime.end markers between a musttail call and ret"

This reverts commit r208912.

It was committed accidentally without review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208914 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove unused variable in inliner
Reid Kleckner [Thu, 15 May 2014 20:39:42 +0000 (20:39 +0000)]
Remove unused variable in inliner

We have to iterate over all the calls that were inlined to find out if
any were musttail.

Sink another variable down to where its used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208913 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't insert lifetime.end markers between a musttail call and ret
Reid Kleckner [Thu, 15 May 2014 20:39:13 +0000 (20:39 +0000)]
Don't insert lifetime.end markers between a musttail call and ret

The allocas going out of scope are immediately killed by the return
instruction.

Reviewers: chandlerc

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208912 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: Simplify retrieving filename/directory name for line table entry building.
David Blaikie [Thu, 15 May 2014 20:18:50 +0000 (20:18 +0000)]
DebugInfo: Simplify retrieving filename/directory name for line table entry building.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208911 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTeach the inliner how to preserve musttail invariants
Reid Kleckner [Thu, 15 May 2014 20:11:28 +0000 (20:11 +0000)]
Teach the inliner how to preserve musttail invariants

The interesting case is what happens when you inline a musttail call
through a musttail call site.  In this case, we can't break perfect
forwarding or allow any stack growth.

Instead of merging control flow from the inlined return instruction
after a musttail call into the body of the caller, leave the inlined
return instruction in the caller so that the musttail call stays in the
tail position.

More work is required in http://reviews.llvm.org/D3630 to handle the
case where the inlined function has dynamic allocas or byval arguments.

Reviewers: chandlerc

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208910 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: Add FIXME regarding DILexicalBlock uniquing fields.
David Blaikie [Thu, 15 May 2014 20:09:55 +0000 (20:09 +0000)]
DebugInfo: Add FIXME regarding DILexicalBlock uniquing fields.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208909 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoautoconf: Fix libLLVM-Major-Minor-Patch.so symlink
Tom Stellard [Thu, 15 May 2014 19:50:25 +0000 (19:50 +0000)]
autoconf: Fix libLLVM-Major-Minor-Patch.so symlink

The symlink needs to point to a relative path, so we don't break
building in a chroot.

Tested-by: Laurent Carlier <lordheavym@gmail.org>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208908 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[obj2yaml][ELF] Print relocation's offset as a hex number. Use a proper
Simon Atanasyan [Thu, 15 May 2014 18:04:09 +0000 (18:04 +0000)]
[obj2yaml][ELF] Print relocation's offset as a hex number. Use a proper
types to hold relocation's offset and addend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208906 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[obj2yaml][ELF] Do not print empty Link and Info fields for ELF sections.
Simon Atanasyan [Thu, 15 May 2014 18:04:02 +0000 (18:04 +0000)]
[obj2yaml][ELF] Do not print empty Link and Info fields for ELF sections.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208905 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "[PM] Add pass run listeners to the pass manager."
Juergen Ributzka [Thu, 15 May 2014 17:49:20 +0000 (17:49 +0000)]
Revert "[PM] Add pass run listeners to the pass manager."

Revert the current implementation and C API. New implementation and C APIs are
in the works.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208904 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[ARM64] Improve diagnostics for Cn operands in SYS instructions
Bradley Smith [Thu, 15 May 2014 16:28:32 +0000 (16:28 +0000)]
[ARM64] Improve diagnostics for Cn operands in SYS instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208902 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[yaml2obj] Add "-o" command line option to specify an output file name.
Simon Atanasyan [Thu, 15 May 2014 16:14:02 +0000 (16:14 +0000)]
[yaml2obj] Add "-o" command line option to specify an output file name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208900 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agollvm/test/CodeGen/X86/combine-sse41-intrinsics.ll: Add explicit triple.
NAKAMURA Takumi [Thu, 15 May 2014 15:45:31 +0000 (15:45 +0000)]
llvm/test/CodeGen/X86/combine-sse41-intrinsics.ll: Add explicit triple.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208897 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[X86] Teach the backend how to fold SSE4.1/AVX/AVX2 blend intrinsics.
Andrea Di Biagio [Thu, 15 May 2014 15:18:15 +0000 (15:18 +0000)]
[X86] Teach the backend how to fold SSE4.1/AVX/AVX2 blend intrinsics.

Added target specific combine rules to fold blend intrinsics according
to the following rules:
 1) fold(blend A, A, Mask) -> A;
 2) fold(blend A, B, <allZeros>) -> A;
 3) fold(blend A, B, <allOnes>) -> B.

Added two new tests to verify that the new folding rules work for all
the optimized blend intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208895 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add CLASS.fmt instructions
Zoran Jovanovic [Thu, 15 May 2014 15:16:36 +0000 (15:16 +0000)]
[mips][mips64r6] Add CLASS.fmt instructions
Differential Revision: http://reviews.llvm.org/D3712

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208894 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add RINT.fmt instructions
Zoran Jovanovic [Thu, 15 May 2014 15:04:37 +0000 (15:04 +0000)]
[mips][mips64r6] Add RINT.fmt instructions
Differential Revision: http://reviews.llvm.org/D3711

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208892 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add SELEQZ/SELNEZ.fmt instructions
Zoran Jovanovic [Thu, 15 May 2014 14:58:42 +0000 (14:58 +0000)]
[mips][mips64r6] Add SELEQZ/SELNEZ.fmt instructions
Differential Revision: http://reviews.llvm.org/D3710

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208891 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add MAX/MIN/MAXA/MINA.fmt instructions
Zoran Jovanovic [Thu, 15 May 2014 14:54:06 +0000 (14:54 +0000)]
[mips][mips64r6] Add MAX/MIN/MAXA/MINA.fmt instructions
Differential Revision: http://reviews.llvm.org/D3709

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208890 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Stop using VSrc_* as the default register class for types.
Tom Stellard [Thu, 15 May 2014 14:41:57 +0000 (14:41 +0000)]
R600/SI: Stop using VSrc_* as the default register class for types.

We now use SReg_* for integer types and VReg_* for floating-point types.
This should help simplify the SIFixSGPRCopies pass and no longer causes
ISel to insert a COPY after termiator instuctions that output a value.

This change is covered by exisitng tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208888 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Fix a bug with handling of INSERT_SUBREG in SIFixSGPRCopies
Tom Stellard [Thu, 15 May 2014 14:41:55 +0000 (14:41 +0000)]
R600/SI: Fix a bug with handling of INSERT_SUBREG in SIFixSGPRCopies

This prevents a future commit from regressing the load-i1.ll test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208887 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Only use SALU instructions for 64-bit add in a block of CF depth 0
Tom Stellard [Thu, 15 May 2014 14:41:54 +0000 (14:41 +0000)]
R600/SI: Only use SALU instructions for 64-bit add in a block of CF depth 0

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208886 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Use VALU instructions for i1 ops
Tom Stellard [Thu, 15 May 2014 14:41:50 +0000 (14:41 +0000)]
R600/SI: Use VALU instructions for i1 ops

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208885 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTableGen: use correct MIOperand when printing aliases
Tim Northover [Thu, 15 May 2014 13:36:01 +0000 (13:36 +0000)]
TableGen: use correct MIOperand when printing aliases

Previously, TableGen assumed that every aliased operand consumed precisely 1
MachineInstr slot (this was reasonable because until a couple of days ago,
nothing more complicated was eligible for printing).

This allows a couple more ARM64 aliases to print so we can remove the special
code.

On the X86 side, I've gone for explicit AT&T size specifiers as the default, so
turned off a few of the aliases that would have just started printing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208880 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add bitswap, and dbitswap
Daniel Sanders [Thu, 15 May 2014 12:18:23 +0000 (12:18 +0000)]
[mips][mips64r6] Add bitswap, and dbitswap

Summary: Depends on D3728

Reviewers: jkolek, zoran.jovanovic, vmedic

Reviewed By: vmedic

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208877 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoInstead of littering asserts throughout the code after every call to
Jay Foad [Thu, 15 May 2014 12:12:55 +0000 (12:12 +0000)]
Instead of littering asserts throughout the code after every call to
computeKnownBits, consolidate them into one assert at the end of
computeKnownBits itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208876 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM64: print correct aliases for NEON mov & mvn instructions
Tim Northover [Thu, 15 May 2014 12:11:02 +0000 (12:11 +0000)]
ARM64: print correct aliases for NEON mov & mvn instructions

In all cases, if a "mov" alias exists, it is the canonical form of the
instruction. Now that TableGen can support aliases containing syntax variants,
we can enable them and improve the quality of the asm output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208874 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add align and dalign
Daniel Sanders [Thu, 15 May 2014 12:06:36 +0000 (12:06 +0000)]
[mips][mips64r6] Add align and dalign

Summary: Depends on D3689

Reviewers: vmedic, zoran.jovanovic, jkolek

Reviewed By: jkolek

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208872 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTableGen/ARM64: print aliases even if they have syntax variants.
Tim Northover [Thu, 15 May 2014 11:16:32 +0000 (11:16 +0000)]
TableGen/ARM64: print aliases even if they have syntax variants.

To get at least one use of the change (and some actual tests) in with its
commit, I've enabled the AArch64 & ARM64 NEON mov aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208867 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM64: add correct vector registers during asm parsing
Tim Northover [Thu, 15 May 2014 11:16:19 +0000 (11:16 +0000)]
ARM64: add correct vector registers during asm parsing

Previously, we ignored the difference between V64 and V128 when parsing
assembly: they both got mapped to registers in the FPR128 class. This is
basically harmless at the moment because they both print and encode the same
way. However, it will affect the printing of aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208866 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[ARM64] Improve load/store diagnostics and forbid 32-bit register addresses
Bradley Smith [Thu, 15 May 2014 11:08:30 +0000 (11:08 +0000)]
[ARM64] Improve load/store diagnostics and forbid 32-bit register addresses

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208864 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[ARM64] Parse fixed vector lanes properly so that diagnostics can be emitted
Bradley Smith [Thu, 15 May 2014 11:07:57 +0000 (11:07 +0000)]
[ARM64] Parse fixed vector lanes properly so that diagnostics can be emitted

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208863 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[ARM64] Add/Fixup diagnostics for floating point immediates
Bradley Smith [Thu, 15 May 2014 11:07:28 +0000 (11:07 +0000)]
[ARM64] Add/Fixup diagnostics for floating point immediates

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208862 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[ARM64] Add condition code operand type such that proper diagnostics can be emitted
Bradley Smith [Thu, 15 May 2014 11:06:51 +0000 (11:06 +0000)]
[ARM64] Add condition code operand type such that proper diagnostics can be emitted

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208861 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[ARM64] Add more simple diagnostics for immediate/shift ranges
Bradley Smith [Thu, 15 May 2014 11:06:16 +0000 (11:06 +0000)]
[ARM64] Add more simple diagnostics for immediate/shift ranges

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208860 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add addiupc, aluipc, and auipc
Daniel Sanders [Thu, 15 May 2014 10:45:58 +0000 (10:45 +0000)]
[mips][mips64r6] Add addiupc, aluipc, and auipc

Summary:
No support for symbols in place of the immediate yet since it requires new
relocations.

Depends on D3671

Reviewers: jkolek, zoran.jovanovic, vmedic

Reviewed By: vmedic

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208858 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Add aui, daui, dahi, and dati
Daniel Sanders [Thu, 15 May 2014 10:27:19 +0000 (10:27 +0000)]
[mips][mips64r6] Add aui, daui, dahi, and dati

Summary: Depends on D3671

Reviewers: jkolek, zoran.jovanovic, vmedic

Reviewed By: vmedic

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208857 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTeach the constant folder to look through bitcast constant expressions
Chandler Carruth [Thu, 15 May 2014 09:56:28 +0000 (09:56 +0000)]
Teach the constant folder to look through bitcast constant expressions
much more effectively when trying to constant fold a load of a constant.
Previously, we only handled bitcasts by trying to find a totally generic
byte representation of the constant and use that. Now, we look through
the bitcast to see what constant we might fold the load into, and then
try to form a constant expression cast of the found value that would be
equivalent to loading the value.

You might wonder why on earth this actually matters. Well, turns out
that the Itanium ABI causes us to create a single array for a vtable
where the first elements are virtual base offsets, followed by the
virtual function pointers. Because the array is homogenous the element
type is consistently i8* and we inttoptr the virtual base offsets into
the initial elements.

Then constructors bitcast these pointers to i64 pointers prior to
loading them. Boom, no more constant folding of virtual base offsets.
This is the first fix to LLVM to address the *insane* performance Eric
Niebler discovered with Clang on his range comprehensions[1]. There is
more to come though, this doesn't *really* fix the problem fully.

[1]: http://ericniebler.com/2014/04/27/range-comprehensions/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208856 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][mips64r6] Test that branch likelies are not accepted on MIPS64r6.
Daniel Sanders [Thu, 15 May 2014 09:47:43 +0000 (09:47 +0000)]
[mips][mips64r6] Test that branch likelies are not accepted on MIPS64r6.

Summary:
They aren't implemented for any ISA at the moment.

Depends on D3670

Reviewers: jkolek, zoran.jovanovic, vmedic

Reviewed By: vmedic

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208855 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoReverting r208848, reason: build failure: sanitizer-x86_64-linux-bootstrap/builds...
Dinesh Dwivedi [Thu, 15 May 2014 08:22:55 +0000 (08:22 +0000)]
Reverting r208848, reason: build failure: sanitizer-x86_64-linux-bootstrap/builds/3399

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208852 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdded instcombine for 'MIN(MIN(A, 27), 93)' and 'MAX(MAX(A, 93), 27)'
Dinesh Dwivedi [Thu, 15 May 2014 06:13:40 +0000 (06:13 +0000)]
Added instcombine for 'MIN(MIN(A, 27), 93)' and 'MAX(MAX(A, 93), 27)'

MIN(MIN(A, 23), 97) -> MIN(A, 23)
MAX(MAX(A, 97), 23) -> MAX(A, 97)

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208849 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdded inst combine transforms for single bit tests from Chris's note
Dinesh Dwivedi [Thu, 15 May 2014 06:01:33 +0000 (06:01 +0000)]
Added inst combine transforms for single bit tests from Chris's note

if ((x & C) == 0) x |= C becomes x |= C
if ((x & C) != 0) x ^= C becomes x &= ~C
if ((x & C) == 0) x ^= C becomes x |= C
if ((x & C) != 0) x &= ~C becomes x &= ~C
if ((x & C) == 0) x &= ~C becomes nothing

Z3 Verifications code for above transform
http://rise4fun.com/Z3/Pmsh

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208848 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix some dyslexia in an assert message
Jonathan Roelofs [Thu, 15 May 2014 02:24:50 +0000 (02:24 +0000)]
Fix some dyslexia in an assert message

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208842 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix typos
Alp Toker [Thu, 15 May 2014 01:52:21 +0000 (01:52 +0000)]
Fix typos

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208839 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[ARM64] Support aggressive fastcc/tailcallopt breaking ABI by popping out argument...
Jiangning Liu [Thu, 15 May 2014 01:33:17 +0000 (01:33 +0000)]
[ARM64] Support aggressive fastcc/tailcallopt breaking ABI by popping out argument stack from callee.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208837 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove unused functions setting MCOptions from TargetMachine.
Eric Christopher [Thu, 15 May 2014 01:25:04 +0000 (01:25 +0000)]
Remove unused functions setting MCOptions from TargetMachine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208835 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUnify command line handling of MCTargetOptions and remove extra
Eric Christopher [Thu, 15 May 2014 01:10:50 +0000 (01:10 +0000)]
Unify command line handling of MCTargetOptions and remove extra
options and code. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208833 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove the TargetMachine MC options to MCTargetOptions. No functional
Eric Christopher [Thu, 15 May 2014 01:08:00 +0000 (01:08 +0000)]
Move the TargetMachine MC options to MCTargetOptions. No functional
change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208832 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoInstCombine: Optimize -x s< cst
David Majnemer [Thu, 15 May 2014 00:02:20 +0000 (00:02 +0000)]
InstCombine: Optimize -x s< cst

Summary:
This gets rid of a sub instruction by moving the negation to the
constant when valid.

Reviewers: nicholas

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208827 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDwarfDebug: Don't set frame index locations on abstract variables.
David Blaikie [Wed, 14 May 2014 22:51:59 +0000 (22:51 +0000)]
DwarfDebug: Don't set frame index locations on abstract variables.

Abstract variables should never have/use locations. In this case the
data wasn't used, so no functional change intended here, just
simplification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208820 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: Sure up subprogram variable list handling with more assertions and fewer...
David Blaikie [Wed, 14 May 2014 21:52:46 +0000 (21:52 +0000)]
DebugInfo: Sure up subprogram variable list handling with more assertions and fewer conditionals.

Many old tests using prior schemas still had some brokenness here (both
indirect arrays and arrays with single bogus elements). Fixed those up
so they don't hit the new assertions.

Also reduced nesting in some places, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208817 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: Assert that a CU's subprogram list contains only subprograms.
David Blaikie [Wed, 14 May 2014 21:52:37 +0000 (21:52 +0000)]
DebugInfo: Assert that a CU's subprogram list contains only subprograms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208816 91177308-0d34-0410-b5e6-96231b3b80d8