138503 Commits

Author SHA1 Message Date
Justin Bogner
40e5ccb260 Revert "TableGen: Switch from a std::map to a DenseMap in CodeGenSubRegIndex. NFC"
It turns out we iterate over this map a fair amount and the order
matters for clang to be deterministic. See:

  http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20160919/391315.html

This reverts r279875.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282040 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-21 00:25:45 +00:00
Michael Kuperstein
86978b73fc [InferAttributes] Don't access parameters that don't exist.
Check for the correct number of parameters before querying their type.
This fixes PR30455.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282038 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 23:10:31 +00:00
Teresa Johnson
7e15c9e40f [ThinLTO] Always emit a summary when compiling in ThinLTO mode
Summary:
Emit an empty summary section, instead of no summary section, when
there are no global variables in the index. This ensures that LTO
will treat these files as ThinLTO inputs, instead of as regular
LTO inputs.

In addition to not being what the user likely intended when
compiling with -flto=thin, the current behavior is problematic for
distributed build systems that expect to get ThinLTO index and imports
files back for each input compiled with -flto=thin. Combining into
a single regular LTO module also reduces the backend parallelism.
And in the case where the index was suppressed due to uses in
inline assembly, combining into a single LTO module could provoke
renaming of duplicates that we were trying to prevent by suppressing
the index.

This change required a couple of fixes to handle the empty summary
section.

Reviewers: mehdi_amini

Subscribers: mehdi_amini, llvm-commits, pcc

Differential Revision: https://reviews.llvm.org/D24779

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282037 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 23:07:17 +00:00
Xinliang David Li
7732977995 code cleanup -- commoning IR travsersals
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282034 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 22:39:47 +00:00
Eric Christopher
810e009188 Remove the default subtarget from the x86 port as it isn't necessary (or
correct) anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282031 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 22:19:33 +00:00
Eric Christopher
768be7b1ba Revert "Remove extra argument used once on
TargetMachine::getNameWithPrefix and inline the result into the singular
caller." and "Remove more guts of TargetMachine::getNameWithPrefix and
migrate one check to the TLOF mach-o version." temporarily until I can
get the whole call migrated out of the TargetMachine as we could hit
places where TLOF isn't valid.

This reverts commits r281981 and r281983.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282028 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 22:03:28 +00:00
Anna Thomas
61540ac18b [RS4GC] Refactor code for Rematerializing in presence of phi. NFC
Summary:
This is an NFC refactoring change as a precursor to the actual fix for rematerializing in
presence of phi.
https://reviews.llvm.org/D24399

Pasted from review:
findRematerializableChainToBasePointer changed to return the root of the
chain. instead of true or false.
move the PHI matching logic into the caller by inspecting the root return value.
This includes an assertion that the alternate root is in the liveset for the
call.

Tested with current RS4GC tests.

Reviewers: reames, sanjoy

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D24780

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282023 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 21:36:02 +00:00
George Burgess IV
452ae8c3eb [CodeGen] stop short-circuiting the SSP code for sspstrong.
This check caused us to skip adding layout information for calls to
alloca in sspreq/sspstrong mode. We check properly for sspstrong later
on (and add the correct layout info when doing so), so removing this
shouldn't hurt.

No test is included, since testing this using lit seems to require
checking for exact offsets in asm, which is something that the lit tests
for this avoid. If someone cares deeply, I'm happy to write a unittest
or something to cover this, but that feels like overkill.

Patch by Daniel Micay.

Differential Revision: https://reviews.llvm.org/D22714


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282022 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 21:30:01 +00:00
Vedant Kumar
139080743f [llvm-cov] Demangle names for hidden instantiation views
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282020 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 21:27:48 +00:00
Xinliang David Li
163ac62cd3 [Profile] dump ic value profile value/site-count histogram
Differential Revision: http://reviews.google.com/D24783




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282017 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 21:04:22 +00:00
Petr Hosek
38ea316607 Mark ELF sections whose name start with .note as note
Previously, such section would be marked as SHT_PROGBITS which
makes it impossible to use an initialized C variable declaration
to emit an (allocated) ELF note. The new behavior is also consistent
with ELF assembly parser.

Differential Revision: https://reviews.llvm.org/D24692

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282010 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 20:21:13 +00:00
Xinliang David Li
f5969f7e9c [Profile] Do not annotate select insts not covered in profile.
Fixed PR/30466




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282009 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 20:20:01 +00:00
Kevin Enderby
7bcdeca5fc Next set of additional error checks for invalid Mach-O files for bad load commands
that use the Mach::dylib_command type for the load commands that are
currently used in the MachOObjectFile constructor.

This contains the missing checks for LC_ID_DYLIB, LC_ID_DYLIB, etc.
load commands and the fields for the Mach::dylib_command type.

Also checks that only an MH_DYLIB or MH_STUB_DYLIB has an
LC_ID_DYLIB load command (and others filetype don’t) and there
is not more than one of these load commands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282008 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 20:14:14 +00:00
Sanjay Patel
ba03c81918 [x86] split up tests, regenerate checks
Note that we fail to eliminate 'or' with 0!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282005 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 19:31:30 +00:00
Xinliang David Li
19dfeb09a7 [Profile] code refactoring: make getStep a method in base class
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282002 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 19:07:22 +00:00
Evandro Menezes
121f676c40 Revert part of "AArch64: Do not test for CPUs, use SubtargetFeatures"
This reverts part of commit 119e358d9635c8d1f3e7aee67e3ea3b8a62f8db6 by
removing FeatureUseRSqrt et al per request by Eric Christopher
<echristo@gmail.com> (v. http://bit.ly/2cmz6kW).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282001 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 19:02:09 +00:00
Evandro Menezes
1bacc96e0e Revert "[AArch64] Use the reciprocal estimation machinery"
This reverts commit b7d42b0048f65346e9fa37fb65defeea7ce8c337 per request by
Eric Christopher <echristo@gmail.com> (v. http://bit.ly/2cmz6kW).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282000 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 19:02:06 +00:00
Evandro Menezes
ba27f9fd81 Revert "[AArch64] Properly validate the reciprocal estimation."
This reverts commit ad8ca1528242e2a4cb363e3779309e70eb7a430e per request by
Eric Christopher <echristo@gmail.com> (v. http://bit.ly/2cmz6kW).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281999 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 19:02:02 +00:00
Adrian Prantl
3051c6d512 ASAN: Don't drop debug info attachements for global variables.
This is a follow-up to r281284. Global Variables now can have
!dbg attachements, so ASAN should clone these when generating a
sanitized copy of a global variable.

<rdar://problem/24899262>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281994 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 18:28:42 +00:00
Adrian McCarthy
864e0ffb0e Fix syntactical nit from r281990.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281991 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 17:42:13 +00:00
Adrian McCarthy
f5f252d099 Emit S_COMPILE3 CodeView record
CodeView has an S_COMPILE3 record to identify the compiler and source language of the compiland.  This record comes first in the debug$S section for the compiland. The debuggers rely on this record to know the source language of the code.

There was a little test fallout from introducing a new record into the symbols subsection.

Differential Revision: https://reviews.llvm.org/D24317

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281990 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 17:20:51 +00:00
Saleem Abdulrasool
6530b2f3a0 X86: loosen an overly aggressive MachO assertion
We would assert that the FP setup CFI used esp/rsp always.  This held up in
practice when the code was generated from IR.  However, with the integrated
assembler, it is possible to have the input be user specified assembly.  In such
a case, we cannot assume that the function implementation has a compact unwind
representation.  Loosen the assertion into a check and bail if we cannot
represent the frame pointer in the compact unwinding.

Addresses PR30453!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281986 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 17:05:04 +00:00
Eric Christopher
663e1b0cfc Remove more guts of TargetMachine::getNameWithPrefix and migrate one check to the TLOF mach-o version.
NFC intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281983 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 16:05:02 +00:00
Eric Christopher
57ab7e9f49 Remove a use of subtarget initialization in the X86 backend so we can get rid of the default subtarget.
NFC intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281982 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 16:04:59 +00:00
Eric Christopher
a61998926f Remove extra argument used once on TargetMachine::getNameWithPrefix and inline the result into the singular caller.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281981 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 16:04:50 +00:00
Keith Walker
4e09440dd5 Improve the -debug output for Debug Range Extension (NFC)
Include header messages and remove unnecessary blank lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281980 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 16:04:31 +00:00
Tim Northover
a93f61a2c3 GlobalISel: split aggregates for PCS lowering
This should match the existing behaviour for passing complicated struct and
array types, in particular HFAs come through like that from Clang.

For C & C++ we still need to somehow support all the weird ABI flags, or at
least those that are present in the IR (signext, byval, ...), and stack-based
parameter passing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281977 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 15:20:36 +00:00
Simon Pilgrim
e4f1232c49 [X86][SSE] Regenerate multiple combine tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281973 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 14:42:45 +00:00
Sanjay Patel
c091990663 move variables closer to their uses; add FIXMEs; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281972 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 14:36:14 +00:00
Artem Tamazov
412e71bfd8 [AMDGPU][mc] Add regression tests for Bug 28168
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281967 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 11:58:40 +00:00
Elena Demikhovsky
8e5c84a8d4 AVX-512: Fixed a bug in lowering saturated operations on KNL.
The generated code is still not optimal.

Differential Revision: https://reviews.llvm.org/D24723



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281966 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 11:02:26 +00:00
Valery Pykhtin
91016854e7 [AMDGPU] Refactor VOP3 instruction TD definitions
Differential revision: https://reviews.llvm.org/D24664

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281965 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 10:41:16 +00:00
Keith Walker
4aaf90e08e Make llvm::ConvertDebugDeclareToDebugValue() be a void function (NFC)
The routines llvm::ConvertDebugDeclareToDebugValue() always returned
a true value which was never checked at the call site; change the
function return type to void.

This NFC cleanup was approved in the review https://reviews.llvm.org/D23715


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281964 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 10:36:17 +00:00
Nikolay Haustov
2a3c739021 AMDGPU: Improve documentation.
Summary:
Add links to ISA manuals and ABI.
Add text about assembler syntax.
Add info about instructions operands.
Add instruction examples for each encoding.
Update directives section, add missing .amdgpu_hsa_kernel.

Reviewers: tstellarAMD, SamWot, vpykhtin

Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, tony-tye, artem.tamazov, llvm-commits

Differential Revision: https://reviews.llvm.org/D24724

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281962 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 09:04:51 +00:00
Dorit Nuzman
42ea17a3ac Reverting revision 281960 due to test failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281961 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 08:27:48 +00:00
Dorit Nuzman
8e817265bd [SROA] Preserve llvm.mem.parallel_loop_access metadata.
SROA doesn't preserve the llvm.mem.parallel_loop_access metadata when it
transforms loads/stores. This patch fixes a couple occurences of this
issue.

(Partially addresses PR28981).

Differential Revision: https://reviews.llvm.org/D23549



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281960 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 07:50:49 +00:00
Craig Topper
0acae1f681 [AVX-512] Teach X86InstrInfo::copyPhysReg to use a 512-bit move if XMM16-XMM31 or YMM16-YMM31 are the source or dest of the copy and VLX is not supported.
This can happen with SUBREG_TO_REG of ZMM16-ZMM31. Fixes PR30430.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281959 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 06:49:17 +00:00
Craig Topper
fd8c733710 [AVX-512] Use 512-bit vcvtps2ph/vcvtph2ps to implement fp_to_f16/f16_to_fp when F16C and VLX are not supported.
Fixes PR23941.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281958 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 05:44:47 +00:00
Matthias Braun
b72235f318 BranchFolder: Fix invalid undef flags after merge.
It is legal to merge instructions with different undef flags; However we
must drop the undef flag from the merged instruction if it isn't present
everywhere.

This fixes http://llvm.org/PR30199

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281957 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 01:14:42 +00:00
Matthias Braun
34c557c690 Machine{Instr|Operand}: Clarify some isIdenticalTo() subtleties.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281956 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 01:14:39 +00:00
Quentin Colombet
879da284b5 [RegisterBankInfo] Avoid heap allocation in InstructionMapping.
Use SmallVector instead of dynamically allocated arrays for the mapping of the
operands in the InstructionMapping. That way we avoid heap allocation for most
of the cases. Ultimately, we should not have to rely on such tricky, the
instances of InstructionMapping would be TableGen'ed.

This improves the compilation time of the RegBankSelect pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281955 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 00:48:44 +00:00
Sanjay Patel
ef83519d80 [x86] fix variable names; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281953 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 00:27:22 +00:00
Kostya Serebryany
18f63e47d8 [sanitizer-coverage] add comdat to coverage guards if needed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281952 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-20 00:16:54 +00:00
Sanjay Patel
f8408ab22c [x86] auto-generate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281950 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-19 23:44:50 +00:00
Philip Reames
67197eeb7d [LCSSA] Cache LoopExits to avoid wasted work
When looking at the scribus_1.3 example from https://llvm.org/bugs/show_bug.cgi?id=10584, I noticed that we were spending a large amount of time computing loop exits in LCSSA. This code appears to be written with the assumption that LoopExits are stored in the Loop and thus cheap to query. This is not true, so we should cache the result across the potentially long running loop which tends to visit a small handful of Loops.

On the particular example from 10584, this change drops the time spent in LCSSA computation by about 80%.

Differential Revision: https://reviews.llvm.org/D24509



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281949 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-19 23:30:23 +00:00
Quentin Colombet
3d21d847db [RegisterBankInfo] Adapt call to std::fill due to use of SmallVector.
This was meant to be commited with my previous commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281948 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-19 23:18:47 +00:00
David Callahan
15afb79976 Merge branch 'ADCE5'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281947 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-19 23:17:58 +00:00
Lang Hames
4cd6605af1 [Kaleidoscope] Make Chapter 2 use llvm::make_unique, rather than a helper.
This essentially reverts r251936, minimizing the difference between Chapter2
and Chapter 3, and making Chapter 2's code match the tutorial text.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281945 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-19 23:00:27 +00:00
Sanjay Patel
10b68a36b4 [x86] use getSignBit() to simplify code; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281944 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-19 22:07:27 +00:00
Eric Christopher
f1212b9bfc Move the armv8.1-a ras test to a negative with noras test as ras is
included in armv8.1-a by default and so we weren't testing anything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281941 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-19 21:55:04 +00:00