oota-llvm.git
9 years ago[Hexagon] Adding encoding bits for halfword multiplies.
Colin LeMahieu [Mon, 15 Dec 2014 19:22:07 +0000 (19:22 +0000)]
[Hexagon] Adding encoding bits for halfword multiplies.

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

9 years ago[X86] Also pretty-print shuffle mask for INSERTPS rm variants.
Ahmed Bougacha [Mon, 15 Dec 2014 19:17:54 +0000 (19:17 +0000)]
[X86] Also pretty-print shuffle mask for INSERTPS rm variants.

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

9 years agoIR: Make metadata typeless in assembly
Duncan P. N. Exon Smith [Mon, 15 Dec 2014 19:07:53 +0000 (19:07 +0000)]
IR: Make metadata typeless in assembly

Now that `Metadata` is typeless, reflect that in the assembly.  These
are the matching assembly changes for the metadata/value split in
r223802.

  - Only use the `metadata` type when referencing metadata from a call
    intrinsic -- i.e., only when it's used as a `Value`.

  - Stop pretending that `ValueAsMetadata` is wrapped in an `MDNode`
    when referencing it from call intrinsics.

So, assembly like this:

    define @foo(i32 %v) {
      call void @llvm.foo(metadata !{i32 %v}, metadata !0)
      call void @llvm.foo(metadata !{i32 7}, metadata !0)
      call void @llvm.foo(metadata !1, metadata !0)
      call void @llvm.foo(metadata !3, metadata !0)
      call void @llvm.foo(metadata !{metadata !3}, metadata !0)
      ret void, !bar !2
    }
    !0 = metadata !{metadata !2}
    !1 = metadata !{i32* @global}
    !2 = metadata !{metadata !3}
    !3 = metadata !{}

turns into this:

    define @foo(i32 %v) {
      call void @llvm.foo(metadata i32 %v, metadata !0)
      call void @llvm.foo(metadata i32 7, metadata !0)
      call void @llvm.foo(metadata i32* @global, metadata !0)
      call void @llvm.foo(metadata !3, metadata !0)
      call void @llvm.foo(metadata !{!3}, metadata !0)
      ret void, !bar !2
    }
    !0 = !{!2}
    !1 = !{i32* @global}
    !2 = !{!3}
    !3 = !{}

I wrote an upgrade script that handled almost all of the tests in llvm
and many of the tests in cfe (even handling many `CHECK` lines).  I've
attached it (or will attach it in a moment if you're speedy) to PR21532
to help everyone update their out-of-tree testcases.

This is part of PR21532.

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

9 years agoSilence more static analyzer warnings.
Michael Ilseman [Mon, 15 Dec 2014 18:48:43 +0000 (18:48 +0000)]
Silence more static analyzer warnings.

Add in definedness checks for shift operators, null checks when
pointers are assumed by the code to be non-null, and explicit
unreachables.

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

9 years agoMove mips1 tests to test/MC/Disassembler/Mips/mips1
Reid Kleckner [Mon, 15 Dec 2014 17:56:02 +0000 (17:56 +0000)]
Move mips1 tests to test/MC/Disassembler/Mips/mips1

This matches the pattern of the mips2 and 3 tests, as well as our normal
conventions.

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

9 years agoAdd disassembler tests for mips3 platform. There are no functional changes.
Vladimir Medic [Mon, 15 Dec 2014 16:19:34 +0000 (16:19 +0000)]
Add disassembler tests for mips3 platform. There are no functional changes.

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

9 years agoAdd disassembler tests for mips2 platform. There are no functional changes.
Vladimir Medic [Mon, 15 Dec 2014 15:58:20 +0000 (15:58 +0000)]
Add disassembler tests for mips2 platform. There are no functional changes.

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

9 years agoThis is the first in a series of patches that add missing disassembler tests for...
Vladimir Medic [Mon, 15 Dec 2014 15:22:33 +0000 (15:22 +0000)]
This is the first in a series of patches that add missing disassembler tests for mips platform. The patches are divided per version of mips CPU to keep the patches smaller and ease the review. There are no functional changes, code is changed only if new tests reveal a bug.This patch adds disassembler tests for mips1 CPU.

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

9 years agoChanging a cast from unsigned to uint64_t, should be NFC in practice.
Aaron Ballman [Mon, 15 Dec 2014 14:25:12 +0000 (14:25 +0000)]
Changing a cast from unsigned to uint64_t, should be NFC in practice.

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

9 years agoAdded a test related to 224247 revision
Elena Demikhovsky [Mon, 15 Dec 2014 14:14:10 +0000 (14:14 +0000)]
Added a test related to 224247 revision

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

9 years agoSink store based on alias analysis
Elena Demikhovsky [Mon, 15 Dec 2014 14:09:53 +0000 (14:09 +0000)]
Sink store based on alias analysis
 - by Ella Bolshinsky
The alias analysis is used define whether the given instruction
is a barrier for store sinking. For 2 identical stores, following
instructions are checked in the both basic blocks, to determine
whether they are sinking barriers.

http://reviews.llvm.org/D6420

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

9 years ago[X86] Break false dependencies before partial register updates when the source operan...
Michael Kuperstein [Mon, 15 Dec 2014 13:18:21 +0000 (13:18 +0000)]
[X86] Break false dependencies before partial register updates when the source operand is in memory

Adds the various "rm" instruction variants into the list of instructions that have a partial register update. Also adds all variants of SQRTSD that were missing in the original list.

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

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

9 years agoTypo Correction in Test Case. NFC.
Suyog Sarda [Mon, 15 Dec 2014 12:19:46 +0000 (12:19 +0000)]
Typo Correction in Test Case. NFC.

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

9 years agoAVX-512: Added EXPAND instructions and intrinsics.
Elena Demikhovsky [Mon, 15 Dec 2014 10:03:52 +0000 (10:03 +0000)]
AVX-512: Added EXPAND instructions and intrinsics.

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

9 years agoFix line mapping information in LLVM JIT profiling with Vtune
Alexey Bataev [Mon, 15 Dec 2014 04:45:43 +0000 (04:45 +0000)]
Fix line mapping information in LLVM JIT profiling with Vtune
The line mapping information for dynamic code is reported incorrectly. It causes VTune to map LLVM generated code to source lines incorrectly. This patch fix this issue.
Patch by Denis Pravdin.
Differential Revision: http://reviews.llvm.org/D6603

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

9 years agoThreadLocal: Move Unix-specific code out of Support/ThreadLocal.cpp
David Majnemer [Mon, 15 Dec 2014 01:19:53 +0000 (01:19 +0000)]
ThreadLocal: Move Unix-specific code out of Support/ThreadLocal.cpp

Just a cleanup, no functionality change is intended.

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

9 years agoStringPool: Cleanup typos in unittest comments
David Majnemer [Mon, 15 Dec 2014 01:04:49 +0000 (01:04 +0000)]
StringPool: Cleanup typos in unittest comments

No functional change intended.

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

9 years agoThreadLocal: Return a mutable pointer if templated with a non-const type
David Majnemer [Mon, 15 Dec 2014 01:04:45 +0000 (01:04 +0000)]
ThreadLocal: Return a mutable pointer if templated with a non-const type

It makes more sense for ThreadLocal<const T>::get to return a const T*
and ThreadLocal<T>::get to return a T*.

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

9 years agoUse unique_ptr to remove explicit delete.
Craig Topper [Mon, 15 Dec 2014 00:40:07 +0000 (00:40 +0000)]
Use unique_ptr to remove explicit delete.

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

9 years agoLoop Vectorizer minor changes in the code -
Elena Demikhovsky [Sun, 14 Dec 2014 09:43:50 +0000 (09:43 +0000)]
Loop Vectorizer minor changes in the code -
some comments, function names, identation.

Reviewed here: http://reviews.llvm.org/D6527

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

9 years agoAPInt: udivrem should use machine instructions for single-word APInts
David Majnemer [Sun, 14 Dec 2014 09:41:56 +0000 (09:41 +0000)]
APInt: udivrem should use machine instructions for single-word APInts

This mirrors the behavior of APInt::udiv and APInt::urem.  Some
architectures, like X86, have a single instruction which can compute
both division and remainder.

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

9 years agoScalarEvolution: Remove SCEVUDivision, it's unused
David Majnemer [Sun, 14 Dec 2014 09:12:33 +0000 (09:12 +0000)]
ScalarEvolution: Remove SCEVUDivision, it's unused

This is just a code simplification, no functionality change is intended.

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

9 years ago[PowerPC] Handle cmp op promotion for SELECT[_CC] nodes in PPCTL::DAGCombineExtBoolTrunc
Hal Finkel [Sun, 14 Dec 2014 05:53:19 +0000 (05:53 +0000)]
[PowerPC] Handle cmp op promotion for SELECT[_CC] nodes in PPCTL::DAGCombineExtBoolTrunc

PPCTargetLowering::DAGCombineExtBoolTrunc contains logic to remove unwanted
truncations and extensions when dealing with nodes of the form:
  zext(binary-ops(binary-ops(trunc(x), trunc(y)), ...)

There was a FIXME in the implementation (now removed) regarding the fact that
the function would abort the transformations if any of the non-output operands
of a SELECT or SELECT_CC node would need to be promoted (because they were
also output operands, for example). As a result, we continued to generate
unnecessary zero-extends for code such as this:

  unsigned foo(unsigned a, unsigned b) {
    return  (a <= b) ? a : b;
  }

which would produce:

  cmplw 0, 3, 4
  isel 3, 4, 3, 1
  rldicl 3, 3, 0, 32
  blr

and now we produce:

  cmplw 0, 3, 4
  isel 3, 4, 3, 1
  blr

which is better in the obvious way.

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

9 years agoReapply "[ARM] Combine base-updating/post-incrementing vector load/stores."
Ahmed Bougacha [Sat, 13 Dec 2014 23:22:12 +0000 (23:22 +0000)]
Reapply "[ARM] Combine base-updating/post-incrementing vector load/stores."

r223862 tried to also combine base-updating load/stores.
r224198 reverted it, as "it created a regression on the test-suite
on test MultiSource/Benchmarks/Ptrdist/anagram by scrambling the order
in which the words are shown."
Reapply, with a fix to ignore non-normal load/stores.
Truncstores are handled elsewhere (you can actually write a pattern for
those, whereas for postinc loads you can't, since they return two values),
but it should be possible to also combine extloads base updates, by checking
that the memory (rather than result) type is of the same size as the addend.

Original commit message:
We used to only combine intrinsics, and turn them into VLD1_UPD/VST1_UPD
when the base pointer is incremented after the load/store.

We can do the same thing for generic load/stores.

Note that we can only combine the first load/store+adds pair in
a sequence (as might be generated for a v16f32 load for instance),
because other combines turn the base pointer addition chain (each
computing the address of the next load, from the address of the last
load) into independent additions (common base pointer + this load's
offset).

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

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

9 years agoRevert "[ARM] Combine base-updating/post-incrementing vector load/stores."
Renato Golin [Sat, 13 Dec 2014 20:23:18 +0000 (20:23 +0000)]
Revert "[ARM] Combine base-updating/post-incrementing vector load/stores."

This reverts commit r223862, as it created a regression on the test-suite
on test MultiSource/Benchmarks/Ptrdist/anagram by scrambling the order
in which the words are shown. We'll investigate the issue and re-apply
when safe.

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

9 years agoFix Doxygen command misspellings.
Benjamin Kramer [Sat, 13 Dec 2014 19:19:07 +0000 (19:19 +0000)]
Fix Doxygen command misspellings.

Found by -Wdocumentation.

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

9 years agoSilencing a -Wsign-compare warning; NFC.
Aaron Ballman [Sat, 13 Dec 2014 16:55:02 +0000 (16:55 +0000)]
Silencing a -Wsign-compare warning; NFC.

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

9 years agoSilencing a *lot* of -Wsign-compare warnings; NFC.
Aaron Ballman [Sat, 13 Dec 2014 16:53:15 +0000 (16:53 +0000)]
Silencing a *lot* of -Wsign-compare warnings; NFC.

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

9 years agoUse range-based for loops.
Craig Topper [Sat, 13 Dec 2014 05:12:19 +0000 (05:12 +0000)]
Use range-based for loops.

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

9 years agoRename argument strings of codegen passes to avoid collisions with command line
Akira Hatanaka [Sat, 13 Dec 2014 04:52:04 +0000 (04:52 +0000)]
Rename argument strings of codegen passes to avoid collisions with command line
options.

This commit changes the command line arguments (PassInfo::PassArgument) of two
passes, MachineFunctionPrinter and MachineScheduler, to avoid collisions with
command line options that have the same argument strings.

This bug manifests when the PassList construct (defined in opt.cpp) is used
in a tool that links with codegen passes. To reproduce the bug, paste the
following lines into llc.cpp and run llc.

#include "llvm/IR/LegacyPassNameParser.h"
static llvm::cl::list<const llvm::PassInfo*, bool, llvm::PassNameParser>
PassList(llvm::cl::desc("Optimizations available:"));

rdar://problem/19212448

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

9 years agoGo bindings: introduce Value.ConstantAsMetadata.
Peter Collingbourne [Sat, 13 Dec 2014 02:25:57 +0000 (02:25 +0000)]
Go bindings: introduce Value.ConstantAsMetadata.

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

9 years agoGo bindings: introduce llvm.TemporaryMDNode.
Peter Collingbourne [Sat, 13 Dec 2014 02:25:54 +0000 (02:25 +0000)]
Go bindings: introduce llvm.TemporaryMDNode.

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

9 years agoGo bindings: introduce Metadata.ReplaceAllUsesWith.
Peter Collingbourne [Sat, 13 Dec 2014 02:25:51 +0000 (02:25 +0000)]
Go bindings: introduce Metadata.ReplaceAllUsesWith.

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

9 years agoGo bindings: expose the Metadata type.
Peter Collingbourne [Sat, 13 Dec 2014 02:25:49 +0000 (02:25 +0000)]
Go bindings: expose the Metadata type.

Also modifies SetCurrentDebugLocation to take individual arguments rather
than an MDNode.

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

9 years agoGo bindings: remove contextless metadata bindings.
Peter Collingbourne [Sat, 13 Dec 2014 02:25:45 +0000 (02:25 +0000)]
Go bindings: remove contextless metadata bindings.

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

9 years ago[PowerPC] Add a DAGToDAG peephole to remove unnecessary zero-exts
Hal Finkel [Fri, 12 Dec 2014 23:59:36 +0000 (23:59 +0000)]
[PowerPC] Add a DAGToDAG peephole to remove unnecessary zero-exts

On PPC64, we end up with lots of i32 -> i64 zero extensions, not only from all
of the usual places, but also from the ABI, which specifies that values passed
are zero extended. Almost all 32-bit PPC instructions in PPC64 mode are defined
to do *something* to the higher-order bits, and for some instructions, that
action clears those bits (thus providing a zero-extended result). This is
especially common after rotate-and-mask instructions. Adding an additional
instruction to zero-extend the results of these instructions is unnecessary.

This PPCISelDAGToDAG peephole optimization examines these zero-extensions, and
looks back through their operands to see if all instructions will implicitly
zero extend their results. If so, we convert these instructions to their 64-bit
variants (which is an internal change only, the actual encoding of these
instructions is the same as the original 32-bit ones) and remove the
unnecessary zero-extension (changing where the INSERT_SUBREG instructions are
to make everything internally consistent).

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

9 years agoValueTracking: Don't recurse too deeply in computeKnownBitsFromAssume
David Majnemer [Fri, 12 Dec 2014 23:59:29 +0000 (23:59 +0000)]
ValueTracking: Don't recurse too deeply in computeKnownBitsFromAssume

Respect the MaxDepth recursion limit, doing otherwise will trigger an
assert in computeKnownBits.

This fixes PR21891.

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

9 years ago[ARMConstantIsland] Insert tbb/tbh optimization where previous jump table resided.
Chad Rosier [Fri, 12 Dec 2014 23:27:40 +0000 (23:27 +0000)]
[ARMConstantIsland] Insert tbb/tbh optimization where previous jump table resided.

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

9 years agoPass EC by reference to MemoryBufferMMapFile to return error code.
Yaron Keren [Fri, 12 Dec 2014 22:27:53 +0000 (22:27 +0000)]
Pass EC by reference to MemoryBufferMMapFile to return error code.

Patch by Kim Grasman!

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

9 years agoutils: update vim syntax highlighting for LLVM IR
Saleem Abdulrasool [Fri, 12 Dec 2014 21:52:44 +0000 (21:52 +0000)]
utils: update vim syntax highlighting for LLVM IR

Add missing externally_initialized keyword from SVN r174340.  Also reflow the
text.

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

9 years agoClean up static analyzer warnings.
Michael Ilseman [Fri, 12 Dec 2014 21:48:03 +0000 (21:48 +0000)]
Clean up static analyzer warnings.

Clang's static analyzer found several potential cases of undefined
behavior, use of un-initialized values, and potentially null pointer
dereferences in tablegen, Support, MC, and ADT. This cleans them up
with specific assertions on the assumptions of the code.

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

9 years ago[Hexagon] Adding double word add/min/minu/max/maxu instructions and tests.
Colin LeMahieu [Fri, 12 Dec 2014 21:29:25 +0000 (21:29 +0000)]
[Hexagon] Adding double word add/min/minu/max/maxu instructions and tests.

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

9 years agoRevert r224149, llvm-dsymutil was already here.
Nico Weber [Fri, 12 Dec 2014 21:25:07 +0000 (21:25 +0000)]
Revert r224149, llvm-dsymutil was already here.

I saw a failure on an internal bot, opened this file, saw it was missing,
thought "aha!", tried to land, got an "file is out of date", synced, didn't see
the file listed right above the line I added (cause I didn't add it in the
right place) and landed. Apologies!

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

9 years ago[Hexagon] Adding J class call instructions.
Colin LeMahieu [Fri, 12 Dec 2014 21:12:27 +0000 (21:12 +0000)]
[Hexagon] Adding J class call instructions.

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

9 years agoAdd llvm-dsymutil to test/CMakeLists.txt
Nico Weber [Fri, 12 Dec 2014 20:56:49 +0000 (20:56 +0000)]
Add llvm-dsymutil to test/CMakeLists.txt

r224134 added this and runs it from a test, but doesn't build it with test
binaries.

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

9 years agoIR: Don't track nullptr on metadata RAUW
Duncan P. N. Exon Smith [Fri, 12 Dec 2014 19:24:33 +0000 (19:24 +0000)]
IR: Don't track nullptr on metadata RAUW

The RAUW support in `Metadata` supports going to `nullptr` specifically
to handle values being deleted, causing `ValueAsMetadata` to be deleted.

Fix the case where the reference is from a `TrackingMDRef` (as opposed
to an `MDOperand` or a `MetadataAsValue`).

This is surprisingly rare -- metadata tracked by `TrackingMDRef` going
to null -- but it came up in an openSUSE bootstrap during inlining.  The
tracking ref was held by the `ValueMap` because it was referencing a
local, the basic block containing the local became dead after it had
been merged in, and when the local was deleted, the tracking ref
asserted in an `isa`.

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

9 years agoMAP_FILE is the default. We don't need to add it.
Rafael Espindola [Fri, 12 Dec 2014 19:12:42 +0000 (19:12 +0000)]
MAP_FILE is the default. We don't need to add it.

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

9 years agoRelax debug-map-parsing.test error message check for Windows
Reid Kleckner [Fri, 12 Dec 2014 18:52:07 +0000 (18:52 +0000)]
Relax debug-map-parsing.test error message check for Windows

On Windows we get the string "no such file or directory".

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

9 years agoMore code format fix from r224133, NFC
Steven Wu [Fri, 12 Dec 2014 18:48:37 +0000 (18:48 +0000)]
More code format fix from r224133, NFC

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

9 years agoRemove silly left over from the Windows resize_file implementation.
Rafael Espindola [Fri, 12 Dec 2014 18:37:43 +0000 (18:37 +0000)]
Remove silly left over from the Windows resize_file implementation.

I didn't notice the problem first because on a non debug build the CRT was
just exiting the process without any message.

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

9 years agoMove the resize file feature from mapped_file_region to the only user.
Rafael Espindola [Fri, 12 Dec 2014 18:13:23 +0000 (18:13 +0000)]
Move the resize file feature from mapped_file_region to the only user.

This removes a duplicated stat on every file that llvm-ar looks at.

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

9 years agoPass a FD to resise_file and add a testcase.
Rafael Espindola [Fri, 12 Dec 2014 17:55:12 +0000 (17:55 +0000)]
Pass a FD to resise_file and add a testcase.

I will add a real use in another commit.

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

9 years agoRemove unused feature. NFC.
Rafael Espindola [Fri, 12 Dec 2014 17:35:34 +0000 (17:35 +0000)]
Remove unused feature. NFC.

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

9 years agoInitial dsymutil tool commit.
Frederic Riss [Fri, 12 Dec 2014 17:31:24 +0000 (17:31 +0000)]
Initial dsymutil tool commit.

The goal of this tool is to replicate Darwin's dsymutil functionality
based on LLVM. dsymutil is a DWARF linker. Darwin's linker (ld64) does
not link the debug information, it leaves it in the object files in
relocatable form, but embbeds a `debug map` into the executable that
describes where to find the debug information and how to relocate it.
When releasing/archiving a binary, dsymutil is called to link all the DWARF
information into a `dsym bundle` that can distributed/stored along with
the binary.

With this commit, the LLVM based dsymutil is just able to parse the STABS
debug maps embedded by ld64 in linked binaries (and not all of them, for
example archives aren't supported yet).

Note that the tool directory is called dsymutil, but the executable is
currently called llvm-dsymutil. This discrepancy will disappear once the
tool will be feature complete. At this point the executable will be renamed
to dsymutil, but until then you do not want it to override the system one.

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

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

9 years agoRestructure code from r224097. NFC
Steven Wu [Fri, 12 Dec 2014 17:21:54 +0000 (17:21 +0000)]
Restructure code from r224097. NFC

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

9 years ago[AVX512] Enabling bit logic lowering
Robert Khasanov [Fri, 12 Dec 2014 17:02:18 +0000 (17:02 +0000)]
[AVX512] Enabling bit logic lowering
Added lowering tests.

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

9 years agoNow that we require a newer python, use the new exception syntax.
Rafael Espindola [Fri, 12 Dec 2014 15:32:23 +0000 (15:32 +0000)]
Now that we require a newer python, use the new exception syntax.

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

9 years agoRequire python 2.7.
Rafael Espindola [Fri, 12 Dec 2014 15:29:31 +0000 (15:29 +0000)]
Require python 2.7.

We were already requiring 2.5, which meant that people on old linux distros
had to upgrade anyway.

Requiring python 2.6 will make supporting 3.X easier as we can use the 3.X
exception syntax.

According to the discussion on llvmdev, there is not much value is requiring
just 2.6, we may as well just require 2.7.

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

9 years ago[mips] Enable code generation for MIPS-III.
Vasileios Kalintiris [Fri, 12 Dec 2014 15:16:46 +0000 (15:16 +0000)]
[mips] Enable code generation for MIPS-III.

Summary:
This commit enables the MIPS-III target and adds support for code
generation of SELECT nodes. We have to use pseudo-instructions with
custom inserters for these nodes as MIPS-III CPUs do not have
conditional-move instructions.

Depends on D6212

Reviewers: dsanders

Subscribers: llvm-commits

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

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

9 years ago[AVX512] Enabling MIN/MAX lowering.
Robert Khasanov [Fri, 12 Dec 2014 15:10:43 +0000 (15:10 +0000)]
[AVX512] Enabling MIN/MAX lowering.
Added lowering tests.

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

9 years agoReapply "[MachineScheduler] Fix for PR21807: minor code difference building with...
Andrea Di Biagio [Fri, 12 Dec 2014 15:09:58 +0000 (15:09 +0000)]
Reapply "[MachineScheduler] Fix for PR21807: minor code difference building with/without -g."

This reapplies r224118 with a fix for test 'misched-code-difference-with-debug.ll'.
That test was failing on some buildbots because it was x86 specific but it was
missing a target triple.
Added an explicit triple to test misched-code-difference-with-debug.ll.

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

9 years ago[Reassociate] Use dbgs() instead of errs().
Chad Rosier [Fri, 12 Dec 2014 14:44:12 +0000 (14:44 +0000)]
[Reassociate] Use dbgs() instead of errs().

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

9 years ago[mips] Support SELECT nodes for targets that don't have conditional-move instructions.
Vasileios Kalintiris [Fri, 12 Dec 2014 14:41:37 +0000 (14:41 +0000)]
[mips] Support SELECT nodes for targets that don't have conditional-move instructions.

Summary:
For Mips targets that do not have conditional-move instructions, ie. targets
before MIPS32 and MIPS-IV, we have to insert a diamond control-flow
pattern in order to support SELECT nodes. In order to do that, we add
pseudo-instructions with a custom inserter that emits the necessary
control-flow that selects the correct value.

With this patch we add complete support for code generation of Mips-II targets
based on the LLVM test-suite.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

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

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

9 years agoDisable --icf=safe to avoid a bug.
Rafael Espindola [Fri, 12 Dec 2014 14:28:19 +0000 (14:28 +0000)]
Disable --icf=safe to avoid a bug.

Thanks to Sameer Sahasrabuddhe for the report!

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

9 years ago[AVX512] Minor fix in lowering pattern for broadcast intrustions.
Robert Khasanov [Fri, 12 Dec 2014 14:21:30 +0000 (14:21 +0000)]
[AVX512] Minor fix in lowering pattern for broadcast intrustions.
No functional change.

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

9 years agoRevert: [MachineScheduler] Fix for PR21807: minor code difference building with/witho...
Andrea Di Biagio [Fri, 12 Dec 2014 13:34:03 +0000 (13:34 +0000)]
Revert: [MachineScheduler] Fix for PR21807: minor code difference building with/without -g.

Test 'misched-code-difference-with-debug.ll' was failing on some buildbots.

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

9 years agoThis patch recognizes (+ (+ v0, v1) (+ v2, v3)), reorders them for bundling into...
Suyog Sarda [Fri, 12 Dec 2014 12:53:44 +0000 (12:53 +0000)]
This patch recognizes (+ (+ v0, v1) (+ v2, v3)), reorders them for bundling into vector of loads,
and vectorizes it.

 Test case :

       float hadd(float* a) {
           return (a[0] + a[1]) + (a[2] + a[3]);
        }

 AArch64 assembly before patch :

        ldp s0, s1, [x0]
  ldp s2, s3, [x0, #8]
  fadd s0, s0, s1
  fadd s1, s2, s3
  fadd s0, s0, s1
  ret

 AArch64 assembly after patch :

        ldp d0, d1, [x0]
  fadd v0.2s, v0.2s, v1.2s
  faddp s0, v0.2s
  ret

Reviewed Link : http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20141208/248531.html

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

9 years ago[MachineScheduler] Fix for PR21807: minor code difference building with/without -g.
Andrea Di Biagio [Fri, 12 Dec 2014 12:41:22 +0000 (12:41 +0000)]
[MachineScheduler] Fix for PR21807: minor code difference building with/without -g.

This patch fixes the issue reported as PR21807. There was a minor difference
in the generated code depending on the -g flag.

The cause was that with -g the machine scheduler used a different
scheduling strategy. This decision was based on the number of instructions
in a schedule region and included debug instructions in that count.

This patch fixes the issue in MISched and provides a test.

Patch by Russell Gallop!

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

9 years agoEmit Tag_ABI_FP_16bit_format build attribute.
Charlie Turner [Fri, 12 Dec 2014 11:59:18 +0000 (11:59 +0000)]
Emit Tag_ABI_FP_16bit_format build attribute.

The __fp16 type is unconditionally exposed. Since -mfp16-format is not yet
supported, there is not a user switch to change this behaviour. This build
attribute should capture the default behaviour of the compiler, which is to
expose the IEEE 754 version of __fp16.

When -mfp16-format is emitted, that will be the way to control the value of
this build attribute.

Change-Id: I8a46641ff0fd2ef8ad0af5f482a6d1af2ac3f6b0

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

9 years agoSilence gcc 4.9.1 warning 'xyz' is used uninitialized in this function.
Yaron Keren [Fri, 12 Dec 2014 11:07:51 +0000 (11:07 +0000)]
Silence gcc 4.9.1 warning 'xyz' is used uninitialized in this function.

In release builds this is actually possible as without asserts there is
no testing of the actual read bytes and the variables could be partially
uninitialized.

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

9 years agoPass output stream to AsLexInput instead of the whole tool_output_file.
Craig Topper [Fri, 12 Dec 2014 07:52:19 +0000 (07:52 +0000)]
Pass output stream to AsLexInput instead of the whole tool_output_file.

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

9 years agoUse unique_ptr to remove an explicit delete. Change return type to pass the unique_pt...
Craig Topper [Fri, 12 Dec 2014 07:52:16 +0000 (07:52 +0000)]
Use unique_ptr to remove an explicit delete. Change return type to pass the unique_ptr to caller.

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

9 years agoUse make_unique instead of reset() and 'new'
Craig Topper [Fri, 12 Dec 2014 07:52:14 +0000 (07:52 +0000)]
Use make_unique instead of reset() and 'new'

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

9 years agoUse range-based for loop.
Craig Topper [Fri, 12 Dec 2014 07:52:11 +0000 (07:52 +0000)]
Use range-based for loop.

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

9 years agoRemove unnecessary calls to unique_ptr::get.
Craig Topper [Fri, 12 Dec 2014 07:52:09 +0000 (07:52 +0000)]
Remove unnecessary calls to unique_ptr::get.

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

9 years agoRemove an unnecessary reference variable that pointed to a unique_ptr variable. Just...
Craig Topper [Fri, 12 Dec 2014 07:52:06 +0000 (07:52 +0000)]
Remove an unnecessary reference variable that pointed to a unique_ptr variable. Just use the unique_ptr variable directly.

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

9 years agoUse unique_ptr operator= instead of constructor to make it explicit that there's...
Craig Topper [Fri, 12 Dec 2014 07:52:00 +0000 (07:52 +0000)]
Use unique_ptr operator= instead of constructor to make it explicit that there's no conversion occurring.

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

9 years agoA fix for PR21176.
Ekaterina Romanova [Fri, 12 Dec 2014 05:11:47 +0000 (05:11 +0000)]
A fix for PR21176.

DW_OP_const <const> doesn't describe a constant value, but a value at a constant address.
The proper way to describe a constant value is DW_OP_constu <const>, DW_OP_stack_value.
Added DW_OP_stack_value to the stack.

Marked incorrect-variable-debugloc1.ll to xfail for PowerPC64, while the the failure (PR21881)
is being investigated.

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

9 years agoFix another infinite loop in InstCombine
Steven Wu [Fri, 12 Dec 2014 04:34:07 +0000 (04:34 +0000)]
Fix another infinite loop in InstCombine

Summary:
InstCombine infinite-loops for the testcase added
It is because InstCombine is generating instructions that can be
optimized by itself. Fix by not optimizing frem if the optimized
type is the same as original type.
rdar://problem/19150820

Reviewers: majnemer

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

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

9 years agoR600: Fix min/max matching problems with unordered compares
Matt Arsenault [Fri, 12 Dec 2014 02:30:37 +0000 (02:30 +0000)]
R600: Fix min/max matching problems with unordered compares

The returned operand needs to be permuted for the unordered
compares. Also fix incorrectly producing fmin_legacy / fmax_legacy
for f64, which don't exist.

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

9 years agoR600/SI: fmin/fmax_legacy are not associative
Matt Arsenault [Fri, 12 Dec 2014 02:30:33 +0000 (02:30 +0000)]
R600/SI: fmin/fmax_legacy are not associative

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

9 years agoR600/SI: Don't promote f32 select to i32
Matt Arsenault [Fri, 12 Dec 2014 02:30:29 +0000 (02:30 +0000)]
R600/SI: Don't promote f32 select to i32

This is nice for the instruction patterns, but it complicates
min / max matching. The select doesn't have the correct type and would
require looking through the bitcasts for the real float operands.

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

9 years agoUpdate the modules build to match r223802.
Richard Smith [Fri, 12 Dec 2014 02:25:18 +0000 (02:25 +0000)]
Update the modules build to match r223802.

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

9 years agoBitcode: Add missing "Remove in 4.0" comments
Duncan P. N. Exon Smith [Fri, 12 Dec 2014 02:11:31 +0000 (02:11 +0000)]
Bitcode: Add missing "Remove in 4.0" comments

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

9 years agoDocument that PassManager::add() may delete the pass right away.
Matthias Braun [Fri, 12 Dec 2014 01:27:01 +0000 (01:27 +0000)]
Document that PassManager::add() may delete the pass right away.

Also remove redundant documentation:
- doxygen will copy documentation to overriden methods.
- Use \copydoc on PIMPL classes instead of replicating the text.

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

9 years agoTom Stellard is now the code owner for libclc.
Peter Collingbourne [Fri, 12 Dec 2014 01:11:48 +0000 (01:11 +0000)]
Tom Stellard is now the code owner for libclc.

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

9 years agoComment and minor code cleanup for GCStrategy (NFC)
Philip Reames [Fri, 12 Dec 2014 00:49:03 +0000 (00:49 +0000)]
Comment and minor code cleanup for GCStrategy (NFC)

Updating comments to reflect the current state of the world after my recent changes to ownership structure and generally better describe what a GCStrategy is and how it works.

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

9 years agoAdd target hook for whether it is profitable to reduce load widths
Matt Arsenault [Fri, 12 Dec 2014 00:00:24 +0000 (00:00 +0000)]
Add target hook for whether it is profitable to reduce load widths

Add an option to disable optimization to shrink truncated larger type
loads to smaller type loads. On SI this prevents using scalar load
instructions in some cases, since there are no scalar extloads.

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

9 years agoremove function names from comments; NFC
Sanjay Patel [Thu, 11 Dec 2014 23:38:43 +0000 (23:38 +0000)]
remove function names from comments; NFC

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

9 years agoR600/SI: Handle physical registers in getOpRegClass
Matt Arsenault [Thu, 11 Dec 2014 23:37:34 +0000 (23:37 +0000)]
R600/SI: Handle physical registers in getOpRegClass

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

9 years agoR600/SI: Don't verify constant bus usage of flag ops
Matt Arsenault [Thu, 11 Dec 2014 23:37:32 +0000 (23:37 +0000)]
R600/SI: Don't verify constant bus usage of flag ops

This was checking if pseudo-operands like the source
modifiers were using the constant bus, which happens to work
because the values these all can be happen to be valid inline
immediates.

This fixes a later commit which starts checking the register class
of the operands.

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

9 years agoBitcode: Use unsigned char to record MDStrings
Duncan P. N. Exon Smith [Thu, 11 Dec 2014 23:34:30 +0000 (23:34 +0000)]
Bitcode: Use unsigned char to record MDStrings

`MDString`s can have arbitrary characters in them.  Prevent an assertion
that fired in `BitcodeWriter` because of sign extension by copying the
characters into the record as `unsigned char`s.

Based on a patch by Keno Fischer; fixes PR21882.

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

9 years agoreturn without temporary; NFC
Sanjay Patel [Thu, 11 Dec 2014 23:30:36 +0000 (23:30 +0000)]
return without temporary; NFC

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

9 years agoEnable MachineVerifier in debug mode for X86, ARM, AArch64, Mips.
Matthias Braun [Thu, 11 Dec 2014 23:18:03 +0000 (23:18 +0000)]
Enable MachineVerifier in debug mode for X86, ARM, AArch64, Mips.

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

9 years ago[X86] Add a temporary testcase for PR21876/r223996.
Ahmed Bougacha [Thu, 11 Dec 2014 23:07:52 +0000 (23:07 +0000)]
[X86] Add a temporary testcase for PR21876/r223996.

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

9 years agoBitcode: Add METADATA_NODE and METADATA_VALUE
Duncan P. N. Exon Smith [Thu, 11 Dec 2014 23:02:24 +0000 (23:02 +0000)]
Bitcode: Add METADATA_NODE and METADATA_VALUE

This reflects the typelessness of `Metadata` in the bitcode format,
removing types from all metadata operands.

`METADATA_VALUE` represents a `ValueAsMetadata`, and always has two
fields: the type and the value.

`METADATA_NODE` represents an `MDNode`, and unlike `METADATA_OLD_NODE`,
doesn't store types.  It stores operands at their ID+1 so that `0` can
reference `nullptr` operands.

Part of PR21532.

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

9 years ago[PowerPC] Better lowering for add/or of a FrameIndex
Hal Finkel [Thu, 11 Dec 2014 22:51:06 +0000 (22:51 +0000)]
[PowerPC] Better lowering for add/or of a FrameIndex

If we have an add (or an or that is really an add), where one operand is a
FrameIndex and the other operand is a small constant, we can combine the
lowering of the FrameIndex (which is lowered as an add of the FI and a zero
offset) with the constant operand.

Amusingly, this is an old potential improvement entry from
lib/Target/PowerPC/README.txt which had never been resolved. In short, we used
to lower:

        %X = alloca { i32, i32 }
        %Y = getelementptr {i32,i32}* %X, i32 0, i32 1
        ret i32* %Y

as:

        addi 3, 1, -8
        ori 3, 3, 4
        blr

and now we produce:

        addi 3, 1, -4
        blr

which is much more sensible.

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

9 years agoBitcode: Add `OLD_` prefix to metadata node records
Duncan P. N. Exon Smith [Thu, 11 Dec 2014 22:30:48 +0000 (22:30 +0000)]
Bitcode: Add `OLD_` prefix to metadata node records

I'm about to change these, so move the old ones out of the way.

Part of PR21532.

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

9 years agoTry to include operand counts for mismatches in tablegen.
Matt Arsenault [Thu, 11 Dec 2014 22:27:14 +0000 (22:27 +0000)]
Try to include operand counts for mismatches in tablegen.

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

9 years agoR600/SI: Use unordered equal instructions
Matt Arsenault [Thu, 11 Dec 2014 22:15:43 +0000 (22:15 +0000)]
R600/SI: Use unordered equal instructions

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