OSDN Git Service
Reid Kleckner [Fri, 3 Jun 2016 20:25:09 +0000 (20:25 +0000)]
[Symbolize] Check if the PE file has a PDB and emit an error if we can't load it
Summary:
Previously we would try to load PDBs for every PE executable we tried to
symbolize. If that failed, we would fall back to DWARF. If there wasn't
any DWARF, we'd print mostly useless symbol information using the export
table.
With this change, we only try to load PDBs for executables that claim to
have them. If that fails, we can now print an error rather than falling
back silently. This should make it a lot easier to diagnose and fix
common symbolization issues, such as not having DIA or not having a PDB.
Reviewers: zturner, eugenis
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20982
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271725
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 3 Jun 2016 20:11:09 +0000 (20:11 +0000)]
[AArch64] Move tests from r271677 to a more appropriately named file. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271718
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 3 Jun 2016 20:05:49 +0000 (20:05 +0000)]
[AArch64] Spot SBFX-compatible code expressed with sign_extend.
This is very similar to r271677, but for extracts from i32 with the SIGN_EXTEND
acting on a arithmetic shift.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271717
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Bruening [Fri, 3 Jun 2016 19:40:37 +0000 (19:40 +0000)]
[esan] Specify which tool via a global variable
Summary:
Adds a global variable to specify the tool, to support handling early
interceptors that invoke instrumented code and require shadow memory to be
initialized prior to __esan_init() being invoked.
Reviewers: aizatsky
Subscribers: vitalybuka, zhaoqin, kcc, eugenis, llvm-commits
Differential Revision: http://reviews.llvm.org/D20973
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271715
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 3 Jun 2016 19:40:06 +0000 (19:40 +0000)]
Revert "SDAG: Update ChainNodesMatched as nodes are deleted"
Seeing failures in CodeGen/Generic/icmp-illegal.ll on quite a few
bots.
This reverts r271706.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271713
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 3 Jun 2016 19:28:33 +0000 (19:28 +0000)]
[llvm-pdbdump] Introduce an abstraction for the output style.
This opens the door to introducing a YAML outputter which can be
used for machine consumption. Currently the yaml output style
is unimplemented and returns an error if you try to use it.
Reviewed By: rnk, ruiu
Differential Revision: http://reviews.llvm.org/D20967
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271712
91177308-0d34-0410-b5e6-
96231b3b80d8
Alina Sbirlea [Fri, 3 Jun 2016 19:20:37 +0000 (19:20 +0000)]
Test commit. Removes some spaces. No functionality changed.
Summary:
Test commit. Removes some spaces.
No functionality changed.
Reviewers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20972
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271711
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 3 Jun 2016 19:10:25 +0000 (19:10 +0000)]
[llvm-profdata] Fix option description (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271710
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 3 Jun 2016 19:05:20 +0000 (19:05 +0000)]
[llvm-profdata] Add option to ingest filepaths from a file
Differential Revision: http://reviews.llvm.org/D20980
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271709
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 3 Jun 2016 18:50:11 +0000 (18:50 +0000)]
SDAG: Update ChainNodesMatched as nodes are deleted
Avoid relying on UB by looking into deleted nodes for a marker value.
Instead, update the list of chain nodes as we go.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271706
91177308-0d34-0410-b5e6-
96231b3b80d8
Taewook Oh [Fri, 3 Jun 2016 18:38:39 +0000 (18:38 +0000)]
In openFileForRead, attempt to fetch the actual name of the file on disk -- including case -- so that clang can later warn about non-portable #include and #import directives.
Differential Revision: http://reviews.llvm.org/D19842
Patch by Eric Niebler
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271704
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Fri, 3 Jun 2016 18:34:36 +0000 (18:34 +0000)]
[WebAssembly] Emit type signatures for declared functions
Under emscripten, C code can take the address of a function implemented
in Javascript (which is exposed via an import in wasm). Because imports
do not have linear memory address in wasm, we need to generate a thunk
to be the target of the indirect call; it call the import directly.
To make this possible, LLVM needs to emit the type signatures for these
functions, because they may not be called directly or referred to other
than where the address is taken.
This uses s new .s directive (.functype) which specifies the signature.
Differential Revision: http://reviews.llvm.org/D20891
Re-apply r271599 but instead of bailing with an error when a declared
function has multiple returns, replace it with a pointer argument. Also
add the test case I forgot to 'git add' last time around.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271703
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 3 Jun 2016 18:09:53 +0000 (18:09 +0000)]
SDAG: Replace some unreachable code with an assert. NFC
The current node shouldn't be (and isn't) removed partway through
selection.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271699
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 3 Jun 2016 18:07:32 +0000 (18:07 +0000)]
[sancov] Disable these tests if there is no X86 backend
Copied from test/CodeGen/X86
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271698
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Aizatsky [Fri, 3 Jun 2016 18:05:22 +0000 (18:05 +0000)]
[libfuzzer] splitting fuzzer.test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271697
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 3 Jun 2016 17:51:42 +0000 (17:51 +0000)]
[sancov] Run sancov tests on more platforms
The only tests that need to be run on Linux are the ones that use C++
demangling. I'm assuming they will fail on Mac, since __cxa_demangle
there won't handle the non-double-underscore prefixed mangled names.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271695
91177308-0d34-0410-b5e6-
96231b3b80d8
Ben Craig [Fri, 3 Jun 2016 17:50:14 +0000 (17:50 +0000)]
Doxygen for FoldingSet::reserve and FoldingSet::capacity
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271694
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Fri, 3 Jun 2016 17:15:54 +0000 (17:15 +0000)]
[ThinLTO/gold] Pass down the imports lists from the thin link (NFC)
No longer need to compute the imports in each backend thread.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271690
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Fri, 3 Jun 2016 16:58:05 +0000 (16:58 +0000)]
[yaml2obj] Sort MachO LinkEdit write operations based on offset
This re-applies r271611, and hopefully the bots won't break this time.
Although ld64 always outputs linkedit data in the same order, it isn't actually required to. This change makes yaml2obj resilient if the offsets are in arbitrary order.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271687
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 3 Jun 2016 15:58:59 +0000 (15:58 +0000)]
Trim some spaces (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271681
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 3 Jun 2016 15:58:20 +0000 (15:58 +0000)]
[codeview] Add basic record type translation
This only translates data members for now. Translating overloaded
methods is complicated, so I stopped short of doing that.
Reviewers: aaboud
Differential Revision: http://reviews.llvm.org/D20924
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271680
91177308-0d34-0410-b5e6-
96231b3b80d8
Sjoerd Meijer [Fri, 3 Jun 2016 15:38:55 +0000 (15:38 +0000)]
Code size optimisation: do not inline memcpy if this expansion results
in more instructions than the libary call.
Differential Revision: http://reviews.llvm.org/D20958
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271678
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 3 Jun 2016 15:00:09 +0000 (15:00 +0000)]
[AArch64] Spot SBFX-compatbile code expressed with sign_extend_inreg.
We were assuming all SBFX-like operations would have the shl/asr form, but often
when the field being extracted is an i8 or i16, we end up with a
SIGN_EXTEND_INREG acting on a shift instead.
This is a port of r213754 from ARM to AArch64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271677
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 3 Jun 2016 14:42:07 +0000 (14:42 +0000)]
[InstCombine] look through bitcasts to find selects
There was concern that creating bitcasts for the simpler potential select pattern:
define <2 x i64> @vecBitcastOp1(<4 x i1> %cmp, <2 x i64> %a) {
%a2 = add <2 x i64> %a, %a
%sext = sext <4 x i1> %cmp to <4 x i32>
%bc = bitcast <4 x i32> %sext to <2 x i64>
%and = and <2 x i64> %a2, %bc
ret <2 x i64> %and
}
might lead to worse code for some targets, so this patch is matching the larger
patterns seen in the test cases.
The motivating example for this patch is this IR produced via SSE intrinsics in C:
define <2 x i64> @gibson(<2 x i64> %a, <2 x i64> %b) {
%t0 = bitcast <2 x i64> %a to <4 x i32>
%t1 = bitcast <2 x i64> %b to <4 x i32>
%cmp = icmp sgt <4 x i32> %t0, %t1
%sext = sext <4 x i1> %cmp to <4 x i32>
%t2 = bitcast <4 x i32> %sext to <2 x i64>
%and = and <2 x i64> %t2, %a
%neg = xor <4 x i32> %sext, <i32 -1, i32 -1, i32 -1, i32 -1>
%neg2 = bitcast <4 x i32> %neg to <2 x i64>
%and2 = and <2 x i64> %neg2, %b
%or = or <2 x i64> %and, %and2
ret <2 x i64> %or
}
For an AVX target, this is currently:
vpcmpgtd %xmm1, %xmm0, %xmm2
vpand %xmm0, %xmm2, %xmm0
vpandn %xmm1, %xmm2, %xmm1
vpor %xmm1, %xmm0, %xmm0
retq
With this patch, it becomes:
vpmaxsd %xmm1, %xmm0, %xmm0
Differential Revision: http://reviews.llvm.org/D20774
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271676
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Tamazov [Fri, 3 Jun 2016 14:41:17 +0000 (14:41 +0000)]
[test/AMDGPU] Square-braced-syntax for registers: add macro test/example.
Test added as per discussion in http://reviews.llvm.org/D20588.
The macro is just a demonstration, useless in practice.
Coding style fixes.
Differential Revision: http://reviews.llvm.org/D20797
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271675
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 3 Jun 2016 14:22:46 +0000 (14:22 +0000)]
[pdb] Add string table offsets to check output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271674
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Jun 2016 14:12:43 +0000 (14:12 +0000)]
[X86][AVX512] Fixed 512-bit vector nontemporal load alignment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271673
91177308-0d34-0410-b5e6-
96231b3b80d8
Sjoerd Meijer [Fri, 3 Jun 2016 14:03:27 +0000 (14:03 +0000)]
RAS extensions are part of ARMv8.2-A. This change enables them by introducing a
new instruction to ARM and AArch64 targets and several system registers.
Patch by: Roger Ferrer Ibanez and Oliver Stannard
Differential Revision: http://reviews.llvm.org/D20282
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271670
91177308-0d34-0410-b5e6-
96231b3b80d8
Ben Craig [Fri, 3 Jun 2016 13:54:48 +0000 (13:54 +0000)]
Adding reserve and capacity methods to FoldingSet
http://reviews.llvm.org/D20930
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271669
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Jun 2016 13:42:49 +0000 (13:42 +0000)]
[X86][AVX512] Added 512-bit vector nontemporal load tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271668
91177308-0d34-0410-b5e6-
96231b3b80d8
Sjoerd Meijer [Fri, 3 Jun 2016 13:19:43 +0000 (13:19 +0000)]
ARM target does not use printAliasInstr machinery which
forces having special checks in ArmInstPrinter::printInstruction. This
patch addresses this issue.
Not all special checks could be removed: either they involve elaborated
conditions under which the alias is emitted (e.g. ldm/stm on sp may be
pop/push but only if the number of registers is >= 2) or the number
of registers is multivalued (like happens again with ldm/stm) and they
do not match the InstAlias pattern which assumes single-valued operands
in the pattern.
Patch by: Roger Ferrer Ibanez
Differential Revision: http://reviews.llvm.org/D20237
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271667
91177308-0d34-0410-b5e6-
96231b3b80d8
Sjoerd Meijer [Fri, 3 Jun 2016 13:17:37 +0000 (13:17 +0000)]
AsmWriterEmitter.cpp assumes that all operands of a printed alias
will appear after a blank. This assumption does not hold in the ARM
target.
Patch by: Roger Ferrer Ibanez
Differential Revision: http://reviews.llvm.org/D20234
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271666
91177308-0d34-0410-b5e6-
96231b3b80d8
Sjoerd Meijer [Fri, 3 Jun 2016 13:14:19 +0000 (13:14 +0000)]
Currently AsmWriterEmiter.cpp (used by tblgen -gen-asm-writer) does not
consider the Predicates attached to InstAlias when generating printAliasInstr.
This forces users of printAliasInstr to check those predicates beforehand.
This commit adds them in the condition set of the IAPrinter object.
Patch by: Roger Ferrer Ibanez
Differential Revision: http://reviews.llvm.org/D20233
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271665
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Kolton [Fri, 3 Jun 2016 11:43:09 +0000 (11:43 +0000)]
[AMDGPU] Assembler: More tests for SDWA instructions. Fix for SDWA float modifiers.
Summary: Depends on D20625
Reviewers: tstellarAMD, vpykhtin, artem.tamazov
Subscribers: arsenm, kzhuravl
Differential Revision: http://reviews.llvm.org/D20674
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271662
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Jun 2016 11:00:55 +0000 (11:00 +0000)]
[X86][SSE] Added nontemporal load tests
These currently all lower to regular loads, generic nontemporal load support will be added in a future patch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271659
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Fri, 3 Jun 2016 10:38:09 +0000 (10:38 +0000)]
[mips] EABI CodeGen is completely untested and seems to have bitrotted. Remove it.
Summary:
There are no tests*, no EABI buildbots, and simple test cases do not work.
* There is a single MIPS16 test using a mips*-gnueabi triple but this test
doesn't test EABI and the triple doesn't cause EABI to be used.
Reviewers: sdardis
Subscribers: tberghammer, danalbert, srhines, dsanders, sdardis, llvm-commits
Differential Revision: http://reviews.llvm.org/D20906
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271658
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 3 Jun 2016 10:36:10 +0000 (10:36 +0000)]
Revert "[LPM] Replace the CALL_ONCE_... macro in the legacy pass manager with the new llvm::call_once facility."
Fallback path doesn't compile. This reverts commit r271652.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271657
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Jun 2016 10:30:54 +0000 (10:30 +0000)]
[X86] Added nontemporal scalar store tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271656
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Kolton [Fri, 3 Jun 2016 10:27:37 +0000 (10:27 +0000)]
[AMDGPU] Assembler: Custom converters for SDWA instructions. Support for _dpp and _sdwa suffixes in mnemonics.
Summary:
Added custom converters for SDWA instruction to support optional operands and modifiers.
Support for _dpp and _sdwa suffixes that allows to force DPP or SDWA encoding for instructions.
Reviewers: tstellarAMD, vpykhtin, artem.tamazov
Subscribers: arsenm, kzhuravl
Differential Revision: http://reviews.llvm.org/D20625
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271655
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Jun 2016 10:24:24 +0000 (10:24 +0000)]
[X86][SSE] Regenerated nontemporal vector store tests and added extra target types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271654
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Fri, 3 Jun 2016 10:22:22 +0000 (10:22 +0000)]
[mips] Remove CPU-only triples from llvm-objdump commands.
Summary: They aren't necessary since llvm-objdump can auto-detect the architecture.
Reviewers: sdardis
Subscribers: jfb, dsanders, llvm-commits, sdardis
Differential Revision: http://reviews.llvm.org/D20904
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271653
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 3 Jun 2016 10:20:02 +0000 (10:20 +0000)]
[LPM] Replace the CALL_ONCE_... macro in the legacy pass manager with
the new llvm::call_once facility.
This facility matches the standard APIs and when the platform supports
it actually directly uses the standard provided functionality. This is
both more efficient on some platforms and much more TSan friendly.
The only remaining user of the cas_flag and home-rolled atomics is the
fallback implementation of call_once. I have a patch that removes them
entirely, but it needs a Windows patch to land first.
This alone substantially cleans up the macros for the legacy pass
manager, and should subsume some of the work Mehdi was doing to clear
the path for TSan testing of ThinLTO, a really important step to have
reliable upstream testing of ThinLTO in all forms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271652
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Jun 2016 10:15:36 +0000 (10:15 +0000)]
[X86] Regenerated nontemporal store tests and added tests for all 128-bit vector types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271651
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 3 Jun 2016 10:13:31 +0000 (10:13 +0000)]
Remove bogus initialization of the PPC and Hexagon SelectionDAGISel
subclasses. These are not passes proper. We don't support registering
them, they can't be constructed with default arguments, and the ID is
actually in a base class.
Only these two targets even had any boiler plate to try to do this, and
it had to be munged out of the INITIALIZE_PASS macros to work. What's
worse, the boiler plate has rotted and the "name" of the pass is
actually the description string now!!! =/ All of this is completely
unnecessary. No other target bothers, and nothing breaks if you don't
initialize them because CodeGen has an entirely separate initialization
path that is somewhat more durable than relying on the implicit
initialization the way the 'opt' tool does for registered passes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271650
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 3 Jun 2016 10:13:29 +0000 (10:13 +0000)]
Use the standard INITIALIZE_PASS macro rather than hand rolling a (not
entirely correct) version of its contents.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271649
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 3 Jun 2016 10:13:26 +0000 (10:13 +0000)]
Reformat the macros in Passes.h with clang-format before editting them.
No functionality changed here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271648
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Jun 2016 10:06:59 +0000 (10:06 +0000)]
[X86][AVX2] Relaxed alignment on nontemporal store tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271646
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Jun 2016 09:56:24 +0000 (09:56 +0000)]
[X86][AVX2] Regenerated nontemporal store tests and added tests for all 256-bit vector types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271645
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Fri, 3 Jun 2016 09:53:06 +0000 (09:53 +0000)]
[mips] Implement 'la' macro in PIC mode for O32.
Summary:
N32 support will follow in a later patch since the symbol version of 'la'
incorrectly believes N32 to have 64-bit pointers and rejects it early.
This fixes the three incorrectly expanded 'la' macros found in bionic.
Reviewers: sdardis
Subscribers: dsanders, llvm-commits, sdardis
Differential Revision: http://reviews.llvm.org/D20820
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271644
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 3 Jun 2016 08:46:16 +0000 (08:46 +0000)]
Run clang-format over PassSupport.h, mostly to get the macros all
formatted fancily.
I'm working on rewriting these macros to use the new call_once stuff,
but really want to have clang-format work on the edits, so just
re-baselining the entire file here. No changes other than clang-format.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271635
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Jun 2016 08:06:03 +0000 (08:06 +0000)]
[X86][XOP] Support for VPERMIL2PD/VPERMIL2PS 2-input shuffle instructions
This patch begins adding support for lowering to the XOP VPERMIL2PD/VPERMIL2PS shuffle instructions - adding the X86ISD::VPERMIL2 opcode and cleaning up the usage.
The internal llvm intrinsics were assuming the shuffle mask operand was the same type as the float/double input operands (I guess to simplify the intrinsic definitions in X86InstrXOP.td to a single value type). These needed changing to integer types (matching the clang builtin and the AMD intrinsics definitions), an auto upgrade path is added to convert old calls.
Mask decoding/target shuffle support will be added in future patches.
Differential Revision: http://reviews.llvm.org/D20049
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271633
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Jun 2016 05:58:52 +0000 (05:58 +0000)]
[X86] Fix some isel patterns to remove an operand from some multiclasses. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271631
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 3 Jun 2016 05:52:57 +0000 (05:52 +0000)]
[pdb] Print out file names instead of file offsets.
When printing line information and file checksums, we were printing
the file offset field from the struct header. This teaches
llvm-pdbdump how to turn those numbers into the filename. In the
case of file checksums, this is done by looking in the global
string table. In the case of line contributions, this is done
by indexing into the file names buffer of the DBI stream. Why
they use a different technique I don't know.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271630
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Jun 2016 05:31:04 +0000 (05:31 +0000)]
[AVX512] Ensure EVEX vpshufd, vpshuflw, and vpshufhw have isel priority over the VEX encoded ones.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271629
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Jun 2016 05:31:00 +0000 (05:31 +0000)]
[AVX512] Fix shuffle comment printing for EVEX encoded PSHUFD, PSHUFHW, and PSHUFLW.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271628
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Jun 2016 05:30:56 +0000 (05:30 +0000)]
[X86] Simplify a multiclass to remove a parameter. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271627
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Jun 2016 04:15:27 +0000 (04:15 +0000)]
[X86] Remove unnecessary pattern predicates from the vector bit cast patterns. The types have to be legal and there are no alternative patterns. Saves almost 200 bytes in isel table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271625
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Jun 2016 04:15:25 +0000 (04:15 +0000)]
[X86] Cleanup formatting a bit to align similar parts of adjacent lines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271624
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Jun 2016 04:15:22 +0000 (04:15 +0000)]
[X86] Remove redundant bitcast patterns for 128/256-bit vectors. These only differ from the SSE/AVX versions by the register class, but register class has no bearing on isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271623
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 3 Jun 2016 04:01:48 +0000 (04:01 +0000)]
[pdb] Dump file checksums from pdb codeview line info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271622
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 3 Jun 2016 03:25:59 +0000 (03:25 +0000)]
[codeview] Dump line number and column information.
To facilitate this, a couple of changes had to be made:
1. `ModuleSubstream` got moved from `DebugInfo/PDB` to
`DebugInfo/CodeView`, and various codeview related types are defined
there. It turns out `DebugInfo/CodeView/Line.h` already defines many of
these structures, but this is really old code that is not endian aware,
doesn't interact well with `StreamInterface` and not very helpful for
getting stuff out of a PDB. Eventually we should migrate the old readobj
`COFFDumper` code to these new structures, or at least merge their
functionality somehow.
2. A `ModuleSubstream` visitor is introduced. Depending on where your
module substream array comes from, different subsets of record types can
be expected. We are already hand parsing these substream arrays in many
places especially in `COFFDumper.cpp`. In the future we can migrate these
paths to the visitor as well, which should reduce a lot of code in
`COFFDumper.cpp`.
Differential Revision: http://reviews.llvm.org/D20936
Reviewed By: ruiu, majnemer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271621
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Fri, 3 Jun 2016 02:42:30 +0000 (02:42 +0000)]
Fix indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271620
91177308-0d34-0410-b5e6-
96231b3b80d8
Qin Zhao [Fri, 3 Jun 2016 02:33:04 +0000 (02:33 +0000)]
[esan|cfrag] Instrument GEP instr for struct field access.
Summary:
Instrument GEP instruction for counting the number of struct field
address calculation to approximate the number of struct field accesses.
Adds test struct_field_count_basic.ll to test the struct field
instrumentation.
Reviewers: bruening, aizatsky
Subscribers: junbuml, zhaoqin, llvm-commits, eugenis, vitalybuka, kcc, bruening
Differential Revision: http://reviews.llvm.org/D20892
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271619
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Fri, 3 Jun 2016 00:24:38 +0000 (00:24 +0000)]
Revert "Testcase cleanup: Remove an unused input file."
This reverts commit r271612.
I somehow managed to remove the wrong file m-(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271616
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Fri, 3 Jun 2016 00:16:46 +0000 (00:16 +0000)]
[LoopUnroll] Set correct thresholds for new recently enabled unrolling heuristic.
In r270478, where I enabled the new heuristic I posted testing results,
which I got when explicitly passed the thresholds values via CL options.
However, setting the CL options init-values is not enough to change the
default values of thresholds, so I'm changing them in another place now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271615
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Thu, 2 Jun 2016 23:58:52 +0000 (23:58 +0000)]
Testcase cleanup: remove an unused RUN line in an input file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271614
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Thu, 2 Jun 2016 23:58:13 +0000 (23:58 +0000)]
Revert "[yaml2obj] Sort MachO LinkEdit write operations based on offset"
This reverts commit r271611 because it broke a bot:
http://bb.pgr.jp/builders/cmake-llvm-x86_64-linux/builds/38184
I don't currently have a handle on what went wrong, so I'll revert while I investigate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271613
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Thu, 2 Jun 2016 23:57:42 +0000 (23:57 +0000)]
Testcase cleanup: Remove an unused input file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271612
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Thu, 2 Jun 2016 23:52:08 +0000 (23:52 +0000)]
[yaml2obj] Sort MachO LinkEdit write operations based on offset
Although ld64 always outputs linkedit data in the same order, it isn't actually required to. This change makes yaml2obj resilient if the offsets are in arbitrary order.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271611
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Thu, 2 Jun 2016 23:49:42 +0000 (23:49 +0000)]
[lit] Improve readability of failing scripts.
- This only applies to scripts executed by the _internal_ shell script
interpreter.
- This patch reworks the log to look more like a shell transcript, and be less
verbose (but in the interest of calling attention to the important parts).
Here is an example of the new format, for commands with/without failures and
with/without output:
```
$ true
$ echo hi
hi
$ false
note: command had no output on stdout or stderr
error: command failed with exit status 1
```
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271610
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Thu, 2 Jun 2016 23:32:35 +0000 (23:32 +0000)]
[lit] Factor out a helper for shell command results.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271608
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Thu, 2 Jun 2016 23:02:44 +0000 (23:02 +0000)]
[TailRecursionElimination] Refactor/cleanup.
In preparation for porting to the new PM.
Patch by Jake VanAdrighem! (review mainly by me/Justin)
Differential Revision: http://reviews.llvm.org/D20610
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271607
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Thu, 2 Jun 2016 23:02:44 +0000 (23:02 +0000)]
Revert "[WebAssembly] Emit type signatures for declared functions"
This reverts r271599, it broke the integration tests.
More places than I expected had nontrival return types in imports, or
else the check was wrong.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271606
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Thu, 2 Jun 2016 22:54:06 +0000 (22:54 +0000)]
[obj2yaml] [yaml2obj] Support for MachO nlist and string table
This commit adds round tripping for MachO symbol data. Symbols are entries in the name list, that contain offsets into the string table which is at the end of the __LINKEDIT segment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271604
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 2 Jun 2016 22:45:49 +0000 (22:45 +0000)]
[InstCombine] change tests to show a more obvious transform possibility
The original tests were intended to show a missing transform that would
be solved by D20774:
http://reviews.llvm.org/D20774
But it's not clear that the transform for the simpler tests is a win for
all targets. Make the tests show a larger pattern that should be a win
regardless of the cost of bitcast instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271603
91177308-0d34-0410-b5e6-
96231b3b80d8
Manuel Jacob [Thu, 2 Jun 2016 22:14:26 +0000 (22:14 +0000)]
[PM] Schedule InstSimplify after late LICM run, to clean up LCSSA nodes.
Summary:
The module pass pipeline includes a late LICM run after loop
unrolling. LCSSA is implicitly run as a pass dependency of LICM. However no
cleanup pass was run after this, so the LCSSA nodes ended in the optimized output.
Reviewers: hfinkel, mehdi_amini
Subscribers: majnemer, bruno, mzolotukhin, mehdi_amini, llvm-commits
Differential Revision: http://reviews.llvm.org/D20606
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271602
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Thu, 2 Jun 2016 22:05:59 +0000 (22:05 +0000)]
[PM] LoadCombine preserves GlobalsAA, doesn't depend on it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271601
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Thu, 2 Jun 2016 22:04:43 +0000 (22:04 +0000)]
[PM/LoadCombine] Inline getAnalysisUsage(). NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271600
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Thu, 2 Jun 2016 21:34:18 +0000 (21:34 +0000)]
[WebAssembly] Emit type signatures for declared functions
Under emscripten, C code can take the address of a function implemented
in Javascript (which is exposed via an import in wasm). Because imports
do not have linear memory address in wasm, we need to generate a thunk
to be the target of the indirect call; it call the import directly.
To make this possible, LLVM needs to emit the type signatures for these
functions, because they may not be called directly or referred to other
than where the address is taken.
This uses s new .s directive (.functype) which specifies the signature.
Differential Revision: http://reviews.llvm.org/D20891
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271599
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 2 Jun 2016 21:32:30 +0000 (21:32 +0000)]
80-column fixup after last formatting change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271598
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Thu, 2 Jun 2016 21:13:47 +0000 (21:13 +0000)]
Add comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271597
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 2 Jun 2016 21:09:17 +0000 (21:09 +0000)]
Fix a couple of misformatted comments spotted in post-commit review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271596
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 2 Jun 2016 21:03:19 +0000 (21:03 +0000)]
This patch is in preparation for a substantial refactoring of the
code. To make the diffs easier to read, clang-format everything first.
No functionality changed.
Patch by Alina Sbirlea!
http://reviews.llvm.org/D20926
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271595
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 2 Jun 2016 20:39:24 +0000 (20:39 +0000)]
Fixup r271533, or check-clang didn't find llvm-lto as the target.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271585
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 2 Jun 2016 20:37:52 +0000 (20:37 +0000)]
fix documentation comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271584
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 2 Jun 2016 20:11:22 +0000 (20:11 +0000)]
[llvm-pdbdump] Dump CodeView line information.
This first pass only splits apart the records and dumps the line
info kinds and binary data. Subsequent patches will parse out
the binary data into more useful information and dump it in
detail.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271576
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 2 Jun 2016 20:05:20 +0000 (20:05 +0000)]
AMDGPU: Handle flat in getMemOpBaseRegImmOfs
It can still report the base register, and the uses give up when it
fails.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271575
91177308-0d34-0410-b5e6-
96231b3b80d8
Meador Inge [Thu, 2 Jun 2016 20:04:44 +0000 (20:04 +0000)]
[ASMParser] Parse FP constants in non-C locales
This patch fixes PR25788, which allows for the parsing of
floating-point constants in non-C locales.
Patch by Antoine Pitrou!
Differential Revision: http://reviews.llvm.org/D15375
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271574
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 2 Jun 2016 20:01:37 +0000 (20:01 +0000)]
transform obscured FP sign bit ops into a fabs/fneg using TLI hook
This is effectively a revert of:
http://reviews.llvm.org/rL249702 - [InstCombine] transform masking off of an FP sign bit into a fabs() intrinsic call (PR24886)
and:
http://reviews.llvm.org/rL249701 - [ValueTracking] teach computeKnownBits that a fabs() clears sign bits
and a reimplementation as a DAG combine for targets that have IEEE754-compliant fabs/fneg instructions.
This is intended to resolve the objections raised on the dev list:
http://lists.llvm.org/pipermail/llvm-dev/2016-April/098154.html
and:
https://llvm.org/bugs/show_bug.cgi?id=24886#c4
In the interest of patch minimalism, I've only partly enabled AArch64. PowerPC, MIPS, x86 and others can enable later.
Differential Revision: http://reviews.llvm.org/D19391
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271573
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 2 Jun 2016 19:54:26 +0000 (19:54 +0000)]
AMDGPU: Cleanup load tests
There are a lot of different kinds of loads to test for,
and these were scattered around inconsistently with
some redundancy. Try to comprehensively test all loads
in a consistent way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271571
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 2 Jun 2016 19:51:48 +0000 (19:51 +0000)]
[codeview] Fix a nasty use after free.
StreamRef was designed to be a thin wrapper over an abstract
stream interface that could itself be treated the same as any
other stream interface. For this reason, it inherited publicly
from StreamInterface, and stored a StreamInterface* internally.
But StreamRef was also designed to be lightweight and easily
copyable, similar to ArrayRef. This led to two misuses of
the classes.
1) When creating a StreamRef A from another StreamRef B, it was
possible to end up with A storing a pointer to B, even when
B was a temporary object, leading to use after free.
2) The above situation could be repeated ad nauseum, so that
A stores a pointer to B, which itself stores a pointer to
another StreamRef C, and so on and so on, creating an
unnecessarily level of nesting depth.
This patch removes the public inheritance relationship between
StreamRef and StreamInterface, making it so that we can never
accidentally convert a StreamRef to a StreamInterface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271570
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 2 Jun 2016 19:00:55 +0000 (19:00 +0000)]
AMDGPU: Temporary fix for broken store combine
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271567
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Thu, 2 Jun 2016 18:51:24 +0000 (18:51 +0000)]
[CodeView] Use None instead of Void if there is no subprogram
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271566
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 2 Jun 2016 18:42:23 +0000 (18:42 +0000)]
Fix the use of sys::MemoryFence after including WindowsSupport.h that
r271558 introduced.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271563
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 2 Jun 2016 18:37:21 +0000 (18:37 +0000)]
Use false for bool instead of 0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271562
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 2 Jun 2016 18:37:16 +0000 (18:37 +0000)]
AMDGPU: Fix crashes on unknown processor name
If the processor name failed to parse for amdgcn,
the resulting output would have R600 ISA in it.
If the processor name was missing or invalid for R600,
the wavefront size would not be set and there would be
crashes from missing itinerary data.
Fixes crashes in future commit caused by dividing by the unset/0
wavefront size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271561
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Thu, 2 Jun 2016 18:29:15 +0000 (18:29 +0000)]
[X86] Define segment MI operands as regs instead of i8imm.
We've been pretending that segments are i8imm since the initial
support (r68645), predating the addition of the SEGMENT_REG class
(r81895). That happens to works, but is wrong, and inconsistent
with how we print (e.g., X86ATTInstPrinter::printMemReference)
and parse them (e.g., X86Operand::addMemOperands).
This change shouldn't affect any tool users, but is visible to
library users or out-of-tree tablegen backends: this causes
MCOperandInfo for the segment op to have an RC instead of "unknown",
and TII::getRegClass to actually return something. As the registers
are reserved and no vregs of the class ever created, that shouldn't
change anything.
No test change; no suspicious getRegClass() in X86 and CodeGen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271559
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 2 Jun 2016 18:22:12 +0000 (18:22 +0000)]
This is yet another attempt to re-instate r220932 as discussed in
D19271.
Previous attempt was broken by NetBSD, so in this version I've made the
fallback path generic rather than Windows specific and sent both Windows
and NetBSD to it.
I've also re-formatted the code some, and used an exact clone of the
code in PassSupport.h for doing manual call-once using our atomics
rather than rolling a new one.
If this sticks, we can replace the fallback path for Windows with
a Windows-specific implementation that is more reliable.
Original commit message:
This patch adds an llvm_call_once which is a wrapper around
std::call_once on platforms where it is available and devoid
of bugs. The patch also migrates the ManagedStatic mutex to
be allocated using llvm_call_once.
These changes are philosophically equivalent to the changes
added in r219638, which were reverted due to a hang on Win32
which was the result of a bug in the Windows implementation
of std::call_once.
Differential Revision: http://reviews.llvm.org/D5922
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271558
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Thu, 2 Jun 2016 18:20:20 +0000 (18:20 +0000)]
pdbdump: print out COFF section headers.
Unlike other sections that can grow to any size, the COFF section header
stream has maximum length because each record is fixed size and the COFF
file format limits the maximum number of sections. So I decided to not
create a specific stream class for it. Instead, I added a member function
to DbiStream class which returns a vector of COFF headers.
Differential Revision: http://reviews.llvm.org/D20717
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271557
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Thu, 2 Jun 2016 18:11:54 +0000 (18:11 +0000)]
Make APInt negate just do a 2's complement negate instead of subtract. NFC.
This is part of an effort to shave allocations from APInt heavy paths. I'll
be moving many of the other operators to r-value references soon and this is
a step towards doing that without too much duplication.
Saves 15k allocations when doing 'opt -O2 verify-uselistorder.bc'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271556
91177308-0d34-0410-b5e6-
96231b3b80d8