platform/upstream/llvm.git
9 years agoAdd r228886 back now that r229530 fixed the issue lldb was hitting.
Rafael Espindola [Tue, 17 Feb 2015 20:31:13 +0000 (20:31 +0000)]
Add r228886 back now that r229530 fixed the issue lldb was hitting.

Original message:

Create the Seciton -> Rel Section map when it is first needed. NFC.

Saves a walk over every section.

llvm-svn: 229536

9 years agomake basic block label matching more flexible for less sad buildbots
Sanjay Patel [Tue, 17 Feb 2015 20:29:31 +0000 (20:29 +0000)]
make basic block label matching more flexible for less sad buildbots

llvm-svn: 229535

9 years agoR600/SI: Fix asam errors in SIFoldOperands
Tom Stellard [Tue, 17 Feb 2015 20:11:54 +0000 (20:11 +0000)]
R600/SI: Fix asam errors in SIFoldOperands

We were trying to fold into implicit uses, which led to out of bounds
access of the MCInstrDesc::OpInfo arrray.

llvm-svn: 229533

9 years agoRemove a recovery attempt that was untested and crashed when used.
Nico Weber [Tue, 17 Feb 2015 20:09:39 +0000 (20:09 +0000)]
Remove a recovery attempt that was untested and crashed when used.

Found by SLi's bot.

llvm-svn: 229532

9 years agoprevent folding a scalar FP load into a packed logical FP instruction (PR22371)
Sanjay Patel [Tue, 17 Feb 2015 20:08:21 +0000 (20:08 +0000)]
prevent folding a scalar FP load into a packed logical FP instruction (PR22371)

Change the memory operands in sse12_fp_packed_scalar_logical_alias from scalars to vectors.
That's what the hardware packed logical FP instructions define: 128-bit memory operands.
There are no scalar versions of these instructions...because this is x86.

Generating the wrong code (folding a scalar load into a 128-bit load) is still possible
using the peephole optimization pass and the load folding tables. We won't completely
solve this bug until we either fix the lowering in fabs/fneg/fcopysign and any other
places where scalar FP logic is created or fix the load folding in foldMemoryOperandImpl()
to make sure it isn't changing the size of the load.

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

llvm-svn: 229531

9 years agoDon't deference the section_end() iterator.
Rafael Espindola [Tue, 17 Feb 2015 20:07:28 +0000 (20:07 +0000)]
Don't deference the section_end() iterator.

Hard to test given the undefined behavior nature.

llvm-svn: 229530

9 years agoExpose LLVM_VERSION_PATCH in llvm-config.h
Reid Kleckner [Tue, 17 Feb 2015 20:02:34 +0000 (20:02 +0000)]
Expose LLVM_VERSION_PATCH in llvm-config.h

There was no reason to keep this private in config.h, and users
requested that it be available in PR22615.

Also fix a bug where patch versions of '0' would cause the macro to
remain undefined. The "#cmakedefine" command only creates a macro if the
named variable would be considered true in the context of an if().

llvm-svn: 229529

9 years agoMake the ARM AsmPrinter independent of global subtarget
Eric Christopher [Tue, 17 Feb 2015 20:02:32 +0000 (20:02 +0000)]
Make the ARM AsmPrinter independent of global subtarget
initialization. Initialize the subtarget once per function and
migrate Emit{Start|End}OfAsmFile to either use attributes on the
TargetMachine or get information from the subtarget we'd use
for assembling. One bit (getISAEncoding) touched the general
AsmPrinter and the debug output. Handle this one by passing
the function for the subprogram down and updating all callers
and users.

The top-level-ness of the ARM attribute output for assembly is,
by nature, contrary to how we'd want to do this for an LTO
situation where we have multiple cpu architectures so this
solution is good enough for now.

llvm-svn: 229528

9 years ago80-column fixups.
Eric Christopher [Tue, 17 Feb 2015 20:02:28 +0000 (20:02 +0000)]
80-column fixups.

llvm-svn: 229527

9 years agoRemove the ABI from the target features. It's obsoleted by
Eric Christopher [Tue, 17 Feb 2015 19:51:15 +0000 (19:51 +0000)]
Remove the ABI from the target features. It's obsoleted by
the -target-abi use and those features don't exist anymore.

llvm-svn: 229526

9 years ago[MC] Constifying MCInst::size()
Colin LeMahieu [Tue, 17 Feb 2015 19:46:23 +0000 (19:46 +0000)]
[MC] Constifying MCInst::size()

llvm-svn: 229524

9 years agoAdd LLDB_API to all of the public API class definitions.
Zachary Turner [Tue, 17 Feb 2015 19:36:25 +0000 (19:36 +0000)]
Add LLDB_API to all of the public API class definitions.

You cannot export a class from a DLL without this on
Windows, so it was causing lldb-mi to fail to link
after recent changes.

Please make sure to include this at the start of every
public type in the future.

llvm-svn: 229523

9 years agoAdd a testcase that exercises DIBuilder's handling of cyclic debug info nodes.
Adrian Prantl [Tue, 17 Feb 2015 19:17:56 +0000 (19:17 +0000)]
Add a testcase that exercises DIBuilder's handling of cyclic debug info nodes.

rdar://problem/19839612

llvm-svn: 229522

9 years agoDIBuilder: add trackIfUnresolved() to all nodes that may be cyclic.
Adrian Prantl [Tue, 17 Feb 2015 19:17:39 +0000 (19:17 +0000)]
DIBuilder: add trackIfUnresolved() to all nodes that may be cyclic.
Tested in clang/test/CodeGenObjCCXX/debug-info-cyclic.mm

rdar://problem/19839612

llvm-svn: 229521

9 years ago[Object] Support reading 64-bit MIPS ELF archives
Simon Atanasyan [Tue, 17 Feb 2015 18:54:22 +0000 (18:54 +0000)]
[Object] Support reading 64-bit MIPS ELF archives

The 64-bit MIPS ELF archive file format is used by MIPS64 targets.
The main difference from a regular archive file is the symbol table format:
1. ar_name is equal to "/SYM64/"
2. number of symbols and offsets are 64-bit integers

http://techpubs.sgi.com/library/manuals/4000/007-4658-001/pdf/007-4658-001.pdf
Page 96

The patch allows reading of such archive files by llvm-nm, llvm-objdump
and other tools. But it does not support archive files with number of symbols
and/or offsets exceed 2^32. I think it is a rather rare case requires more
significant modification of `Archive` class code.

http://reviews.llvm.org/D7546

llvm-svn: 229520

9 years ago[LSan] Make parent tool responsible for initializing LSan flags.
Alexey Samsonov [Tue, 17 Feb 2015 18:50:30 +0000 (18:50 +0000)]
[LSan] Make parent tool responsible for initializing LSan flags.

Summary:
LSan can be combined with a parent tool (for now it's only ASan).
Also, we allow LSAN_OPTIONS to override certain common flags. It means
we have to parse LSAN_OPTIONS early enough, before the rest of the
parent tool (including chunks of sanitizer_common) is initialized.

In future, we can use the same approach for UBSan, after we embed it
into ASan runtime in a similar way.

Test Plan: regression test suite

Reviewers: earthdok, eugenis

Subscribers: llvm-commits

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

llvm-svn: 229519

9 years agoRemove inclusion of netinet/ip_compat.h for FreeBSD. This header is not
Dimitry Andric [Tue, 17 Feb 2015 18:27:39 +0000 (18:27 +0000)]
Remove inclusion of netinet/ip_compat.h for FreeBSD.  This header is not
always available, and nothing in sanitizer_platform_limits_posix.cc uses
any of its definitions.

See also: https://svnweb.freebsd.org/changeset/base/277201

Reviewers: kcc, kutuzov.viktor.84, samsonov
Reviewed By: samsonov
Differential Revision: http://reviews.llvm.org/D7486

llvm-svn: 229518

9 years agoFix argdumper build in cmake (OS X) after r228636
Ilia K [Tue, 17 Feb 2015 18:25:27 +0000 (18:25 +0000)]
Fix argdumper build in cmake (OS X) after r228636

Previos version of this patch (see r229148) contained two errors:
* make_symlink_darwin_debug passes 2 arguments into make_symlink, but it required 4 arguments (was fixed by r229159)
* make_symlink doesn't work on OS X

As a quick fix, the r229148 and the r229159 were reverted. Now these errors are fixed.

Summary:
This patch fixes the following tests on OS X:

```
  FAIL: test_with_dsym (TestLaunchWithGlob.LaunchWithGlobTestCase)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/lldbtest.py", line 456, in wrapper
      return func(self, *args, **kwargs)
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py", line 21, in test_with_dsym
      self.do_test ()
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py", line 42, in do_test
      self.runCmd("process launch -G true -w %s -- fi*.tx?" % (os.getcwd()))
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/lldbtest.py", line 1953, in runCmd
      msg if msg else CMD_MSG(cmd))
  AssertionError: False is not True : Command 'process launch -G true -w /Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/functionalities/launch_with_glob -- fi*.tx?' returns successfully
  Config=x86_64-clang
  ======================================================================
  FAIL: test_with_dwarf (TestLaunchWithGlob.LaunchWithGlobTestCase)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/lldbtest.py", line 473, in wrapper
      return func(self, *args, **kwargs)
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py", line 28, in test_with_dwarf
      self.do_test ()
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py", line 42, in do_test
      self.runCmd("process launch -G true -w %s -- fi*.tx?" % (os.getcwd()))
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/lldbtest.py", line 1953, in runCmd
      msg if msg else CMD_MSG(cmd))
  AssertionError: False is not True : Command 'process launch -G true -w /Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/functionalities/launch_with_glob -- fi*.tx?' returns successfully
```

Reviewers: epertoso, emaste, abidh, clayborg, zturner

Reviewed By: clayborg

Subscribers: abidh, lldb-commits, emaste, epertoso, zturner, clayborg

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

llvm-svn: 229517

9 years agoRevert "Revert "I had recently added a new SBFrame::GetVariables() overload with...
Zachary Turner [Tue, 17 Feb 2015 17:55:50 +0000 (17:55 +0000)]
Revert "Revert "I had recently added a new SBFrame::GetVariables() overload with yet another bool argument""

Reverting this commit led to other failures which I did not see at
first.  This turned out to be an easy problem to fix, so I added
SBVariablesOptions.cpp to the CMakeLists.txt.  In the future please
try to make sure new files are added to CMake.

llvm-svn: 229516

9 years agoCorrecting the ArrayRef test to not cause use-after-free bugs with initializer lists...
Aaron Ballman [Tue, 17 Feb 2015 17:44:07 +0000 (17:44 +0000)]
Correcting the ArrayRef test to not cause use-after-free bugs with initializer lists. Should also silence a -Wsign-compare warning accidentally introduced.

llvm-svn: 229515

9 years agoRevert "I had recently added a new SBFrame::GetVariables() overload with yet another...
Zachary Turner [Tue, 17 Feb 2015 17:42:05 +0000 (17:42 +0000)]
Revert "I had recently added a new SBFrame::GetVariables() overload with yet another bool argument"

This reverts commit r228975.  It was causing link errors
on the Windows bots, since last Thursday.

http://lab.llvm.org:8011/builders/lldb-x86-win7-msvc/builds/725

Conflicts:
lldb.xcodeproj/project.pbxproj

llvm-svn: 229514

9 years agoAdding additional tests to ensure that initializer lists created from return values...
Aaron Ballman [Tue, 17 Feb 2015 17:08:08 +0000 (17:08 +0000)]
Adding additional tests to ensure that initializer lists created from return values and as function arguments also work as expected.

llvm-svn: 229513

9 years agoAddressing a post-commit review comment suggesting to avoid using direct initialization.
Aaron Ballman [Tue, 17 Feb 2015 16:57:05 +0000 (16:57 +0000)]
Addressing a post-commit review comment suggesting to avoid using direct initialization.

llvm-svn: 229512

9 years agoCanonicalize splats as build_vectors (PR22283)
Sanjay Patel [Tue, 17 Feb 2015 16:54:32 +0000 (16:54 +0000)]
Canonicalize splats as build_vectors (PR22283)

This is a follow-on patch to:
http://reviews.llvm.org/D7093

That patch canonicalized constant splats as build_vectors,
and this patch removes the constant check so we can canonicalize
all splats as build_vectors.

This fixes the 2nd test case in PR22283:
http://llvm.org/bugs/show_bug.cgi?id=22283

The unfortunate code duplication between SelectionDAG and DAGCombiner
is discussed in the earlier patch review. At least this patch is just
removing code...

This improves an existing x86 AVX test and changes codegen in an ARM test.

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

llvm-svn: 229511

9 years agoRevert accidental commit.
Benjamin Kramer [Tue, 17 Feb 2015 16:53:08 +0000 (16:53 +0000)]
Revert accidental commit.

llvm-svn: 229510

9 years ago[libcxx] Add <experimental/ratio>
Eric Fiselier [Tue, 17 Feb 2015 16:52:03 +0000 (16:52 +0000)]
[libcxx] Add <experimental/ratio>

Summary:
This patch is pretty simple. It just adds the _v traits from <ratio>.

The draft can be found here.

Reviewers: jroelofs, K-ballo, mclow.lists

Reviewed By: mclow.lists

Subscribers: cfe-commits

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

llvm-svn: 229509

9 years agoPrefer SmallVector::append/insert over push_back loops. Clang edition.
Benjamin Kramer [Tue, 17 Feb 2015 16:48:30 +0000 (16:48 +0000)]
Prefer SmallVector::append/insert over push_back loops. Clang edition.

Same functionality, but hoists the vector growth out of the loop.

llvm-svn: 229508

9 years agoR600/SI: Extend private extload pattern to include zext loads
Tom Stellard [Tue, 17 Feb 2015 16:36:00 +0000 (16:36 +0000)]
R600/SI: Extend private extload pattern to include zext loads

llvm-svn: 229507

9 years agoUse CloseOnExec in Platform::PutFile
Pavel Labath [Tue, 17 Feb 2015 16:07:52 +0000 (16:07 +0000)]
Use CloseOnExec in Platform::PutFile

Summary:
This does not fix any outstanding issue that I know of, but there is no reason these files should
_not_ have CloseOnExec.

Reviewers: clayborg

Subscribers: lldb-commits

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

llvm-svn: 229506

9 years agoSend default register number instead of GDB register number in StopReplyPacket.
Chaoren Lin [Tue, 17 Feb 2015 15:41:28 +0000 (15:41 +0000)]
Send default register number instead of GDB register number in StopReplyPacket.

Summary:
Using GDB register numbers confuses ProcessGDBRemote since the rest of
LLGS (qRegisterInfo, p, P) uses the default register numbers instead.

Test Plan: dosep.py --options --arch x86 ...

Reviewers: ovyalov, vharron, sivachandra

Subscribers: lldb-commits

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

llvm-svn: 229505

9 years agoWatchpoint debug registers should work in i386 as well.
Chaoren Lin [Tue, 17 Feb 2015 15:41:26 +0000 (15:41 +0000)]
Watchpoint debug registers should work in i386 as well.

llvm-svn: 229504

9 years agoFix small assignment mistake.
Chaoren Lin [Tue, 17 Feb 2015 15:41:23 +0000 (15:41 +0000)]
Fix small assignment mistake.

llvm-svn: 229503

9 years agoI believe we no longer require LLVM_HAS_INITIALIZER_LISTS; it's supported in MSVC...
Aaron Ballman [Tue, 17 Feb 2015 15:37:53 +0000 (15:37 +0000)]
I believe we no longer require LLVM_HAS_INITIALIZER_LISTS; it's supported in MSVC 2013 and GCC. Added a trivial test to ensure the ArrayRef initializer list constructor is called and behaves as expected.

If any of the bots complain (perhaps due to an antiquated version of an STL implementation), I will revert.

llvm-svn: 229502

9 years agoADT/PointerIntPairTest.cpp: Prune obsolete #if. We don't support msc17 anymore.
NAKAMURA Takumi [Tue, 17 Feb 2015 15:36:01 +0000 (15:36 +0000)]
ADT/PointerIntPairTest.cpp: Prune obsolete #if. We don't support msc17 anymore.

llvm-svn: 229501

9 years agoPrefer SmallVector::append/insert over push_back loops.
Benjamin Kramer [Tue, 17 Feb 2015 15:29:18 +0000 (15:29 +0000)]
Prefer SmallVector::append/insert over push_back loops.

Same functionality, but hoists the vector growth out of the loop.

llvm-svn: 229500

9 years agoAppend -fno-assume-sane-operator-new in ASan builds.
Sergey Matveev [Tue, 17 Feb 2015 15:09:33 +0000 (15:09 +0000)]
Append -fno-assume-sane-operator-new in ASan builds.

This should help LSan detect leaks where operator new would otherwise be
optimized out.

llvm-svn: 229498

9 years agoReverting r229473; it does not compile with MSVC 2013, and I suspect it was meant...
Aaron Ballman [Tue, 17 Feb 2015 13:18:43 +0000 (13:18 +0000)]
Reverting r229473; it does not compile with MSVC 2013, and I suspect it was meant to be reverted in r229483.

llvm-svn: 229496

9 years agoFixed a bug in store sinking.
Elena Demikhovsky [Tue, 17 Feb 2015 13:10:05 +0000 (13:10 +0000)]
Fixed a bug in store sinking.
The problem was in store-sink barrier check.

Store sink barrier should be checked for ModRef (read-write) mode.

http://llvm.org/bugs/show_bug.cgi?id=22613

llvm-svn: 229495

9 years agoOrcJIT: Appease msc18 not to be confused on executeCompileCallback<OrcX86_64>.
NAKAMURA Takumi [Tue, 17 Feb 2015 12:53:16 +0000 (12:53 +0000)]
OrcJIT: Appease msc18 not to be confused on executeCompileCallback<OrcX86_64>.

llvm-svn: 229494

9 years agoReformat.
NAKAMURA Takumi [Tue, 17 Feb 2015 12:53:05 +0000 (12:53 +0000)]
Reformat.

llvm-svn: 229493

9 years agoOrcJIT: Try to appease msc18 to add move constructor in FullyPartitionedModule .
NAKAMURA Takumi [Tue, 17 Feb 2015 12:52:58 +0000 (12:52 +0000)]
OrcJIT: Try to appease msc18 to add move constructor in FullyPartitionedModule .

llvm-svn: 229492

9 years ago[Msan] Fix the unit tests' PathToLoadable() to work on FreeBSD
Viktor Kutuzov [Tue, 17 Feb 2015 12:52:08 +0000 (12:52 +0000)]
[Msan] Fix the unit tests' PathToLoadable() to work on FreeBSD
Differential Revision: http://reviews.llvm.org/D7587

llvm-svn: 229491

9 years agoFix problem with uninitialized bool found by asan.
Manuel Klimek [Tue, 17 Feb 2015 12:42:14 +0000 (12:42 +0000)]
Fix problem with uninitialized bool found by asan.

llvm-svn: 229490

9 years ago[X86][FastISel] Add missing flag -fast-isel-abort to run lines in test fast-isel...
Andrea Di Biagio [Tue, 17 Feb 2015 12:25:49 +0000 (12:25 +0000)]
[X86][FastISel] Add missing flag -fast-isel-abort to run lines in test fast-isel-fptrunc-fpext.ll.

Flag -fast-isel-abort is required in order to verify that X86FastISel
never fails to select FPExt (float-to-double) and FPTrunc (double-to-float).
No Functional change intended.

llvm-svn: 229489

9 years ago[X86] Silence -Wsign-compare warnings.
Andrea Di Biagio [Tue, 17 Feb 2015 11:20:11 +0000 (11:20 +0000)]
[X86] Silence -Wsign-compare warnings.

GCC 4.8 reported two new warnings due to comparisons
between signed and unsigned integer expressions. The new warnings were
accidentally introduced by revision 229480.
Added explicit casts to silence the warnings. No functional change intended.

llvm-svn: 229488

9 years agoFix AArhc64 ELF test failure on Windows
Will Newton [Tue, 17 Feb 2015 11:16:54 +0000 (11:16 +0000)]
Fix AArhc64 ELF test failure on Windows

The atoms may be processed in different orders on different systems
based on allocated addresses. This is a bit unfortunate as it would
be nice to have error messages emitted in order of file contents.
However we are emitting errors inside a parallel_for_each so even if
we stabilize the order of atom processing we would need to do some
further work in order to ensure that thread scheduling doesn't perturb
the order of errors. For now switch to using CHECK-DAG instead of CHECK.

llvm-svn: 229487

9 years agoclang-format: Don't force a break after "endl" if everything fits on one line.
Daniel Jasper [Tue, 17 Feb 2015 10:05:15 +0000 (10:05 +0000)]
clang-format: Don't force a break after "endl" if everything fits on one line.

llvm-svn: 229486

9 years agoclang-format: Fix crasher.
Daniel Jasper [Tue, 17 Feb 2015 09:58:03 +0000 (09:58 +0000)]
clang-format: Fix crasher.

llvm-svn: 229485

9 years agoMake tests independent of llvm variable naming.
Manuel Klimek [Tue, 17 Feb 2015 09:49:31 +0000 (09:49 +0000)]
Make tests independent of llvm variable naming.

llvm-svn: 229484

9 years agoRevert "InstrProf: Add unit tests for the profile reader and writer"
Justin Bogner [Tue, 17 Feb 2015 09:21:43 +0000 (09:21 +0000)]
Revert "InstrProf: Add unit tests for the profile reader and writer"

This added API to the InstrProfWriter to write to a string so I could
write unittests without using temp files. This doesn't really work,
since the format has tighter alignment requirements than a char.

This reverts r229478 and its follow-up, r229481.

llvm-svn: 229483

9 years agoAVX-512: changes in intel_ocl_bi calling conventions
Elena Demikhovsky [Tue, 17 Feb 2015 09:20:12 +0000 (09:20 +0000)]
AVX-512: changes in intel_ocl_bi calling conventions
- added mask types v8i1 and v16i1 to possible function parameters
- enabled passing 512-bit vectors in standard CC
- added a test for KNL intel_ocl_bi conventions

llvm-svn: 229482

9 years agoInstrProf: Add missing header from r229478
Justin Bogner [Tue, 17 Feb 2015 08:26:06 +0000 (08:26 +0000)]
InstrProf: Add missing header from r229478

llvm-svn: 229481

9 years ago[X86] Combine vector anyext + and into a vector zext
Michael Kuperstein [Tue, 17 Feb 2015 08:22:51 +0000 (08:22 +0000)]
[X86] Combine vector anyext + and into a vector zext

Vector zext tends to get legalized into a vector anyext, represented as a vector shuffle with an undef vector + a bitcast, that gets ANDed with a mask that zeroes the undef elements.
Combine this into an explicit shuffle with a zero vector instead. This allows shuffle lowering to match it as a zext, instead of matching it as an anyext and emitting an explicit AND.
This combine only covers a subset of the cases, but it's a start.

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

llvm-svn: 229480

9 years agoAdd missing files to autoconf build
Tobias Grosser [Tue, 17 Feb 2015 08:15:14 +0000 (08:15 +0000)]
Add missing files to autoconf build

llvm-svn: 229479

9 years agoRe-apply "InstrProf: Add unit tests for the profile reader and writer"
Justin Bogner [Tue, 17 Feb 2015 07:50:59 +0000 (07:50 +0000)]
Re-apply "InstrProf: Add unit tests for the profile reader and writer"

Add these tests again, but use va_list instead of initializer lists.

This reverts r229456, reapplying r229455.

llvm-svn: 229478

9 years ago[PBQP] NDEBUG guards added around code needed for assert.
Jonas Paulsson [Tue, 17 Feb 2015 07:45:06 +0000 (07:45 +0000)]
[PBQP] NDEBUG guards added around code needed for assert.

wasConservativelyAllocatable() is only called to assert that a conservatively
allocatable node wasn't forced to spill.

llvm-svn: 229477

9 years agoUpdate isl to 0ae2b02 "isl_seq_combine: optimize for common case"
Tobias Grosser [Tue, 17 Feb 2015 07:39:25 +0000 (07:39 +0000)]
Update isl to 0ae2b02 "isl_seq_combine: optimize for common case"

This is just a single commit that includes a performance optimization that
should improve dependence analysis time. Our performance bots should measure
this difference.

llvm-svn: 229476

9 years agoMake the PowerPC AsmPrinter independent of global subtarget
Eric Christopher [Tue, 17 Feb 2015 07:21:21 +0000 (07:21 +0000)]
Make the PowerPC AsmPrinter independent of global subtarget
initialization. Initialize the subtarget once per function and
migrate EmitStartOfAsmFile to either use attributes on the
TargetMachine or get information from all of the various
subtargets.

llvm-svn: 229475

9 years ago[X86] Convert palignr builtin handling to use shuffle form of right shift instead...
Craig Topper [Tue, 17 Feb 2015 07:18:01 +0000 (07:18 +0000)]
[X86] Convert palignr builtin handling to use shuffle form of right shift instead of intrinsics. This should allow the instrinsics to removed from the backend.

llvm-svn: 229474

9 years agoInstrProf: Use a test fixture in the coverage mapping tests
Justin Bogner [Tue, 17 Feb 2015 06:56:49 +0000 (06:56 +0000)]
InstrProf: Use a test fixture in the coverage mapping tests

llvm-svn: 229473

9 years agoAdd a FIXME to move IsLittleEndian to the target machine.
Eric Christopher [Tue, 17 Feb 2015 06:45:17 +0000 (06:45 +0000)]
Add a FIXME to move IsLittleEndian to the target machine.

llvm-svn: 229472

9 years agoMove ABI handling and 64-bitness to the PowerPC target machine.
Eric Christopher [Tue, 17 Feb 2015 06:45:15 +0000 (06:45 +0000)]
Move ABI handling and 64-bitness to the PowerPC target machine.
This required changing how the computation of the ABI is handled
and how some of the checks for ABI/target are done.

llvm-svn: 229471

9 years agoAdd more tests for NSArray/NSDictionary literals
Alex Denisov [Tue, 17 Feb 2015 06:43:10 +0000 (06:43 +0000)]
Add more tests for NSArray/NSDictionary literals

llvm-svn: 229470

9 years ago[X86] Merge the 2 separate builtin handlers for PALIGNR into a single one that handle...
Craig Topper [Tue, 17 Feb 2015 06:37:58 +0000 (06:37 +0000)]
[X86] Merge the 2 separate builtin handlers for PALIGNR into a single one that handles both.

llvm-svn: 229469

9 years ago[X86] Remove code that does custom handling of the builtin for MMX palignr. This...
Craig Topper [Tue, 17 Feb 2015 06:22:50 +0000 (06:22 +0000)]
[X86] Remove code that does custom handling of the builtin for MMX palignr. This code is unreachable since its already marked for non-custom handling in llvm's IntrinsicsX86.td file.

llvm-svn: 229468

9 years ago[Orc][Kaleidoscope] Fix misnumbered steps in comments, plus tidy one
Lang Hames [Tue, 17 Feb 2015 05:53:28 +0000 (05:53 +0000)]
[Orc][Kaleidoscope] Fix misnumbered steps in comments, plus tidy one
explanation up a little.

llvm-svn: 229467

9 years ago[Orc][Kaleidoscope] Add an example of extreme-laziness in Orc.
Lang Hames [Tue, 17 Feb 2015 05:40:42 +0000 (05:40 +0000)]
[Orc][Kaleidoscope] Add an example of extreme-laziness in Orc.

The version of the tutorial uses the new compile callbacks API to inject stubs
that trigger IRGen & Codegen of their respective function bodies when they are
first called.

llvm-svn: 229466

9 years ago[Orc][Kaleidoscope] Update the MainLoop code of the orc/kaleidoscope tutorials
Lang Hames [Tue, 17 Feb 2015 05:36:59 +0000 (05:36 +0000)]
[Orc][Kaleidoscope] Update the MainLoop code of the orc/kaleidoscope tutorials
to get rid of the duplicate prompt. NFC.

llvm-svn: 229465

9 years agoAsmPrinter: Use DIExpression default constructor, NFC
Duncan P. N. Exon Smith [Tue, 17 Feb 2015 02:42:45 +0000 (02:42 +0000)]
AsmPrinter: Use DIExpression default constructor, NFC

llvm-svn: 229464

9 years ago[x86] Teach the unpack lowering to try wider element unpacks.
Chandler Carruth [Tue, 17 Feb 2015 02:12:24 +0000 (02:12 +0000)]
[x86] Teach the unpack lowering to try wider element unpacks.

This allows it to match still more places where previously we would have
to fall back on floating point shuffles or other more complex lowering
strategies.

I'm hoping to replace some of the hand-rolled unpack matching with this
routine is it gets more and more clever.

llvm-svn: 229463

9 years ago[BDCE] Add a bit-tracking DCE pass
Hal Finkel [Tue, 17 Feb 2015 01:36:59 +0000 (01:36 +0000)]
[BDCE] Add a bit-tracking DCE pass

BDCE is a bit-tracking dead code elimination pass. It is based on ADCE (the
"aggressive DCE" pass), with the added capability to track dead bits of integer
valued instructions and remove those instructions when all of the bits are
dead.

Currently, it does not actually do this all-bits-dead removal, but rather
replaces the instruction's uses with a constant zero, and lets instcombine (and
the later run of ADCE) do the rest. Because we essentially get a run of ADCE
"for free" while tracking the dead bits, we also do what ADCE does and removes
actually-dead instructions as well (this includes instructions newly trivially
dead because all bits were dead, but not all such instructions can be removed).

The motivation for this is a case like:

int __attribute__((const)) foo(int i);
int bar(int x) {
  x |= (4 & foo(5));
  x |= (8 & foo(3));
  x |= (16 & foo(2));
  x |= (32 & foo(1));
  x |= (64 & foo(0));
  x |= (128& foo(4));
  return x >> 4;
}

As it turns out, if you order the bit-field insertions so that all of the dead
ones come last, then instcombine will remove them. However, if you pick some
other order (such as the one above), the fact that some of the calls to foo()
are useless is not locally obvious, and we don't remove them (without this
pass).

I did a quick compile-time overhead check using sqlite from the test suite
(Release+Asserts). BDCE took ~0.4% of the compilation time (making it about
twice as expensive as ADCE).

I've not looked at why yet, but we eliminate instructions due to having
all-dead bits in:
External/SPEC/CFP2006/447.dealII/447.dealII
External/SPEC/CINT2006/400.perlbench/400.perlbench
External/SPEC/CINT2006/403.gcc/403.gcc
MultiSource/Applications/ClamAV/clamscan
MultiSource/Benchmarks/7zip/7zip-benchmark

llvm-svn: 229462

9 years ago[Orc] Update the Orc indirection utils and refactor the CompileOnDemand layer.
Lang Hames [Tue, 17 Feb 2015 01:18:38 +0000 (01:18 +0000)]
[Orc] Update the Orc indirection utils and refactor the CompileOnDemand layer.

This patch replaces most of the Orc indirection utils API with a new class:
JITCompileCallbackManager, which creates and manages JIT callbacks.
Exposing this functionality directly allows the user to create callbacks that
are associated with user supplied compilation actions. For example, you can
create a callback to lazyily IR-gen something from an AST. (A kaleidoscope
example demonstrating this will be committed shortly).

This patch also refactors the CompileOnDemand layer to use the
JITCompileCallbackManager API.

llvm-svn: 229461

9 years agoSpecify arch in test/CodeGen/X86/float-conv-elim.ll
Hal Finkel [Tue, 17 Feb 2015 00:11:19 +0000 (00:11 +0000)]
Specify arch in test/CodeGen/X86/float-conv-elim.ll

This test was failing on non-x86 hosts because it specified a cpu of x86_64,
but not an architecture. x86_64 is obviously not a valid cpu on all
architectures.

llvm-svn: 229460

9 years agoAsmPrinter: Stop creating DebugLocs
Duncan P. N. Exon Smith [Tue, 17 Feb 2015 00:02:27 +0000 (00:02 +0000)]
AsmPrinter: Stop creating DebugLocs

While looking at a heap profile of a clang LTO bootstrap with -g, I
noticed that 2.2% of memory in an `llvm-lto` of clang is from calling
`DebugLoc::get()` in `collectVariableInfo()` (accounting for ~40% of
memory used for `MDLocation`s).

I suspect this was introduced by r226736, whose goal was to prevent
uniquing of `DebugLoc`s (goal achieved, if so).

There's no reason we need a `DebugLoc` here at all -- it was just being
used for (in)convenient API -- so the fix is to pass the scope and
inlined-at directly to `LexicalScopes::findInlinedScope()`.

llvm-svn: 229459

9 years ago[Objctive-C sema]. Do not do the unused-getter-return-value
Fariborz Jahanian [Mon, 16 Feb 2015 23:49:44 +0000 (23:49 +0000)]
[Objctive-C sema]. Do not do the unused-getter-return-value
warning when property getter is used in direct method call
and return value of property is unused. rdar://19773512

llvm-svn: 229458

9 years ago[PowerPC] Support non-direct-sub/superclass VSX copies
Hal Finkel [Mon, 16 Feb 2015 23:46:30 +0000 (23:46 +0000)]
[PowerPC] Support non-direct-sub/superclass VSX copies

Our register allocation has become better recently, it seems, and is now
starting to generate cross-block copies into inflated register classes. These
copies are not transformed into subregister insertions/extractions by the
PPCVSXCopy class, and so need to be handled directly by
PPCInstrInfo::copyPhysReg. The code to do this was *almost* there, but not
quite (it was unnecessarily restricting itself to only the direct
sub/super-register-class case (not copying between, for example, something in
VRRC and the lower-half of VSRC which are super-registers of F8RC).

Triggering this behavior manually is difficult; I'm including two
bugpoint-reduced test cases from the test suite.

llvm-svn: 229457

9 years agoRevert "InstrProf: Add unit tests for the profile reader and writer"
Justin Bogner [Mon, 16 Feb 2015 23:31:07 +0000 (23:31 +0000)]
Revert "InstrProf: Add unit tests for the profile reader and writer"

Looks like the bots don't like my initializer lists.

This reverts r229455

llvm-svn: 229456

9 years agoInstrProf: Add unit tests for the profile reader and writer
Justin Bogner [Mon, 16 Feb 2015 23:27:48 +0000 (23:27 +0000)]
InstrProf: Add unit tests for the profile reader and writer

This required some minor API to be added to these types to avoid
needing temp files.

Also, I've used initializer lists in the tests, as MSVC 2013 claims to
support them. I'll redo this without them if the bots complain.

llvm-svn: 229455

9 years agoMinor tweaks to r229447 to ensure the attribute is properly quoted when diagnosed.
Aaron Ballman [Mon, 16 Feb 2015 23:12:37 +0000 (23:12 +0000)]
Minor tweaks to r229447 to ensure the attribute is properly quoted when diagnosed.

llvm-svn: 229454

9 years ago[Mips] Replace a magic number by enumeration
Simon Atanasyan [Mon, 16 Feb 2015 23:08:20 +0000 (23:08 +0000)]
[Mips] Replace a magic number by enumeration

No functional changes.

llvm-svn: 229453

9 years ago[Mips] Add .MIPS.options section descriptor kinds enumeration
Simon Atanasyan [Mon, 16 Feb 2015 22:59:29 +0000 (22:59 +0000)]
[Mips] Add .MIPS.options section descriptor kinds enumeration

No functional changes.

llvm-svn: 229452

9 years ago[Orc] Add an emitAndFinalize method to the ObjectLinkingLayer, IRCompileLayer
Lang Hames [Mon, 16 Feb 2015 22:36:25 +0000 (22:36 +0000)]
[Orc] Add an emitAndFinalize method to the ObjectLinkingLayer, IRCompileLayer
and LazyEmittingLayer of Orc.

This method allows you to immediately emit and finalize a module. It is required
by an upcoming refactor of the indirection utils and the compile-on-demand
layer.

I've filed http://llvm.org/PR22608 to write unit tests for this and other Orc
APIs.

llvm-svn: 229451

9 years agoWrap to 80 columns. No behavior change.
Nico Weber [Mon, 16 Feb 2015 22:35:45 +0000 (22:35 +0000)]
Wrap to 80 columns. No behavior change.

llvm-svn: 229450

9 years agoFor variables with dependent type, don't crash on `var->::new` or `var->__super`
Nico Weber [Mon, 16 Feb 2015 22:32:46 +0000 (22:32 +0000)]
For variables with dependent type, don't crash on `var->::new` or `var->__super`

ParsePostfixExpressionSuffix() for '->' (or '.') postfixes first calls
ActOnStartCXXMemberReference() to inform sema that a member reference is about
to start, and that function lets the parser know if sema thinks that the
base expression's type could allow a pseudo destructor from a semantic point of
view (for example, if the the base expression has a dependent type).

ParsePostfixExpressionSuffix() then calls ParseOptionalCXXScopeSpecifier() and
passes MayBePseudoDestructor on to that function, expecting the function to
set it to false if a pseudo destructor is impossible from a syntactic point of
view (due to a lack of '~' sigil).  However, ParseOptionalCXXScopeSpecifier()
had early-outs for ::new and __super, so MayBePseudoDestructor stayed true,
so we tried to parse a pseudo dtor, and then became confused since we couldn't
find a '~'.  Move the snippet in ParseOptionalCXXScopeSpecifier() that sets
MayBePseudoDestructor to false above the early exits.

Parts of this found by SLi's bot.

llvm-svn: 229449

9 years ago[ARM] Remove unused declaration. NFC.
Ahmed Bougacha [Mon, 16 Feb 2015 22:30:08 +0000 (22:30 +0000)]
[ARM] Remove unused declaration. NFC.

GlobalMerge was moved to lib/CodeGen a while ago, and is no longer
called "ARMGlobalMerge".

llvm-svn: 229448

9 years agoSema: diagnose use of unscoped deprecated prior to C++14
Saleem Abdulrasool [Mon, 16 Feb 2015 22:27:01 +0000 (22:27 +0000)]
Sema: diagnose use of unscoped deprecated prior to C++14

The deprecated attribute was adopted as part of the C++14, however, there is a
GNU version available in C++11.  When using C++ earlier than C++14, diagnose the
use of the attribute without the GNU scope, but only when using the generalised
attribute syntax.

llvm-svn: 229447

9 years agoParse: return true from ParseCXX11AttributeArgs if an attribute was added
Saleem Abdulrasool [Mon, 16 Feb 2015 22:26:52 +0000 (22:26 +0000)]
Parse: return true from ParseCXX11AttributeArgs if an attribute was added

In the case that we diagnosed an invalid attribute due to missing or present
arguments, we would return false, indicating to the caller that the parsing
failed.  However, we would have added the attribute in ParseAttributeArgsCommon
(which may have been called indirectly through ParseGNUAttributeArgs).
Returning true in this case ensures that a second copy of the attribute is not
added.

I haven't added a test case for this as the existing test will cover this with
the next commit which diagnoses a C++14 attribute applied in C++11 mode.  Rather
than duplicating the existing test case, allow the tree to remain without a test
between this and the next change.  We would see double warnings in the
[[deprecated()]] applied to a declaration in C++11 mode, which will cause an
error in the cxx0x-attributes test.

llvm-svn: 229446

9 years ago[AVX512] Make 512b vector floating point rounds legal on AVX512.
Cameron McInally [Mon, 16 Feb 2015 22:15:42 +0000 (22:15 +0000)]
[AVX512] Make 512b vector floating point rounds legal on AVX512.

llvm-svn: 229445

9 years agoRegisterCoalescer: Don't rematerialize subregister definitions.
Matthias Braun [Mon, 16 Feb 2015 22:05:17 +0000 (22:05 +0000)]
RegisterCoalescer: Don't rematerialize subregister definitions.

We cannot simply rematerialize instructions which only defining a
subregister, as the final value also depends on the previous
instructions.

This fixes test/CodeGen/R600/subreg-coalescer-bug.ll with subreg
liveness enabled.

llvm-svn: 229444

9 years agoRegisterCoalescer: Do not look for regclass of IMPLICIT_DEF.
Matthias Braun [Mon, 16 Feb 2015 22:05:12 +0000 (22:05 +0000)]
RegisterCoalescer: Do not look for regclass of IMPLICIT_DEF.

IMPLICIT_DEF is a generic instruction and has no (fixed) output register
class defined. The rematerialization code of the register coalescer
should not scan the instruction description for a register class.

This fixes a problem showing up in
test/CodeGen/R600/subreg-coalescer-crash.ll with subregister liveness
enabled.

llvm-svn: 229443

9 years ago[Mips] Read GP0 value from .MIPS.options section
Simon Atanasyan [Mon, 16 Feb 2015 21:52:43 +0000 (21:52 +0000)]
[Mips] Read GP0 value from .MIPS.options section

llvm-svn: 229442

9 years ago[Mips] Show error if MIPS_REGINFO section has invalid size
Simon Atanasyan [Mon, 16 Feb 2015 21:52:35 +0000 (21:52 +0000)]
[Mips] Show error if MIPS_REGINFO section has invalid size

llvm-svn: 229441

9 years ago[Mips] Factor out the code to search section by type and flags into the
Simon Atanasyan [Mon, 16 Feb 2015 21:52:27 +0000 (21:52 +0000)]
[Mips] Factor out the code to search section by type and flags into the
separate functions

No functional changes.

llvm-svn: 229440

9 years ago[X86][SSE] Add SSE MOVQ instructions to SSEPackedInt domain
Simon Pilgrim [Mon, 16 Feb 2015 21:50:56 +0000 (21:50 +0000)]
[X86][SSE] Add SSE MOVQ instructions to SSEPackedInt domain

Patch to explicitly add the SSE MOVQ (rr,mr,rm) instructions to SSEPackedInt domain - prevents a number of costly domain switches.

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

llvm-svn: 229439

9 years agoSelectionDAG: fold (fp_to_u/sint (s/uint_to_fp)) here too
Mehdi Amini [Mon, 16 Feb 2015 21:47:58 +0000 (21:47 +0000)]
SelectionDAG: fold (fp_to_u/sint (s/uint_to_fp)) here too

Update SPARC tests to match.

From: Fiona Glaser <fglaser@apple.com>
llvm-svn: 229438

9 years agoInstCombine: fold more cases of (fp_to_u/sint (u/sint_to_fp val))
Mehdi Amini [Mon, 16 Feb 2015 21:47:54 +0000 (21:47 +0000)]
InstCombine: fold more cases of (fp_to_u/sint (u/sint_to_fp val))

Fixes radar 15486701.

From: Fiona Glaser <fglaser@apple.com>
llvm-svn: 229437

9 years agoTests: reformat sitofp.ll and use FileCheck
Mehdi Amini [Mon, 16 Feb 2015 21:47:50 +0000 (21:47 +0000)]
Tests: reformat sitofp.ll and use FileCheck

From: Fiona Glaser <fglaser@apple.com>
llvm-svn: 229436

9 years ago[X86] Remove completely unnecessary switch statement.
Craig Topper [Mon, 16 Feb 2015 21:30:08 +0000 (21:30 +0000)]
[X86] Remove completely unnecessary switch statement.

llvm-svn: 229435

9 years agoInstrProf: Update for LLVM API change
Justin Bogner [Mon, 16 Feb 2015 21:29:05 +0000 (21:29 +0000)]
InstrProf: Update for LLVM API change

Update for the API change in r229433

llvm-svn: 229434

9 years agoInstrProf: Use ErrorOr for IndexedInstrProfReader::create (NFC)
Justin Bogner [Mon, 16 Feb 2015 21:28:58 +0000 (21:28 +0000)]
InstrProf: Use ErrorOr for IndexedInstrProfReader::create (NFC)

The other InstrProfReader::create factories were updated to return
ErrorOr in r221120, and it's odd for these APIs not to match.

llvm-svn: 229433