6 years agoInstCombine rule to fold trunc when value available
Anna Thomas [Thu, 23 Jun 2016 20:22:22 +0000 (20:22 +0000)]
InstCombine rule to fold trunc when value available

This instcombine rule folds away trunc operations that have value available from a prior load or store.
This kind of code can be generated as a result of GVN widening the load or from source code as well.

Reviewers: reames, majnemer, sanjoy

Subscribers: llvm-commits

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

llvm-svn: 273608

6 years agoDrop unnecessary ';'
Tobias Grosser [Thu, 23 Jun 2016 20:21:47 +0000 (20:21 +0000)]
Drop unnecessary ';'

This addresses warnings produced by clang's -Wextra-semi.

This cleanup was suggested by Eugene Zelenko <eugene.zelenko@gmail.com> in
http://reviews.llvm.org/D21488 and was split out to increase readability.

llvm-svn: 273607

6 years agoInvoke simplifycfg and sroa before instcombine.
Dehao Chen [Thu, 23 Jun 2016 20:13:10 +0000 (20:13 +0000)]
Invoke simplifycfg and sroa before instcombine.

Summary: InstCombine needs to be performed after simplifycfg and sroa, otherwise it may make bad optimization decisions.

Reviewers: davidxl, wmi, dnovillo

Subscribers: llvm-commits

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

llvm-svn: 273606

6 years agoAMDGPU: Add option to disable spilling SGPRs to VGPRs.
Matt Arsenault [Thu, 23 Jun 2016 20:00:34 +0000 (20:00 +0000)]
AMDGPU: Add option to disable spilling SGPRs to VGPRs.

This can help debug spilling problems.

llvm-svn: 273605

6 years agoAdded a new python example which installs a command called "shadow".
Greg Clayton [Thu, 23 Jun 2016 19:54:32 +0000 (19:54 +0000)]
Added a new python example which installs a command called "shadow".

This shows how to grab individual blocks from stack frames and get only the variables from those blocks. It then will iterate over all of the parent blocks and look for shadowed variables.

llvm-svn: 273604

6 years agoclang-format: [JS] recognize more type locations.
Martin Probst [Thu, 23 Jun 2016 19:52:32 +0000 (19:52 +0000)]
clang-format: [JS] recognize more type locations.

Summary: Includes parenthesized type expressions and type aliases.

Reviewers: djasper

Subscribers: klimek, cfe-commits

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

llvm-svn: 273603

6 years agoImplement p0292r2 (constexpr if), a likely C++1z feature.
Richard Smith [Thu, 23 Jun 2016 19:16:49 +0000 (19:16 +0000)]
Implement p0292r2 (constexpr if), a likely C++1z feature.

llvm-svn: 273602

6 years agoAttempt to fix breakage caused by r273596.
George Burgess IV [Thu, 23 Jun 2016 19:16:04 +0000 (19:16 +0000)]
Attempt to fix breakage caused by r273596.

llvm-svn: 273601

6 years agoRe-commit r273548, reverted in r273589, with a fix to not produce
Richard Smith [Thu, 23 Jun 2016 19:02:52 +0000 (19:02 +0000)]
Re-commit r273548, reverted in r273589, with a fix to not produce
-Wfor-loop-analysis warnings for a for-loop with a condition variable. In such
a case, the loop condition variable is modified on each iteration of the loop
by definition.

Original commit message:

Rearrange condition handling so that semantic checks on a condition variable
are performed before the other substatements of the construct are parsed,
rather than deferring them until the end. This allows better error recovery
from semantic errors in the condition, improves diagnostic order, and is a
prerequisite for C++17 constexpr if.

llvm-svn: 273600

6 years agoDefault to using the Unicode version of Win32 APIs instead of the ANSI version. This...
Aaron Ballman [Thu, 23 Jun 2016 19:02:09 +0000 (19:02 +0000)]
Default to using the Unicode version of Win32 APIs instead of the ANSI version. This helps to catch instances where a developer accidentally forgets to explicitly specify which version of the API to use and accidentally winds up failing to support non-ASCII characters properly.

llvm-svn: 273599

6 years agoUpdate isl to isl-0.17.1-84-g72ffe88
Tobias Grosser [Thu, 23 Jun 2016 18:59:30 +0000 (18:59 +0000)]
Update isl to isl-0.17.1-84-g72ffe88

This is a regular maintenance update to ensure we are testing with a recent
version of isl.

llvm-svn: 273597

6 years ago[CFLAA] Use better interprocedural function summaries.
George Burgess IV [Thu, 23 Jun 2016 18:55:23 +0000 (18:55 +0000)]
[CFLAA] Use better interprocedural function summaries.

Previously, we just unified any arguments that seemed to be related to
each other. With this patch, we now respect dereference levels, etc.
which should make us substantially more accurate. Proper handling of
StratifiedAttrs will be done in a later patch.

Patch by Jia Chen.

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

llvm-svn: 273596

6 years agoRefactor duplicated code. NFC.
Rafael Espindola [Thu, 23 Jun 2016 18:43:06 +0000 (18:43 +0000)]
Refactor duplicated code. NFC.

llvm-svn: 273595

6 years ago[codeview] Fix letter casing in FileCheck regexes
Hans Wennborg [Thu, 23 Jun 2016 18:23:28 +0000 (18:23 +0000)]
[codeview] Fix letter casing in FileCheck regexes

We print those hex numbers with uppercase letters.

llvm-svn: 273594

6 years ago[X86] Extract HiPE prologue constants into metadata
Michael Kuperstein [Thu, 23 Jun 2016 18:17:25 +0000 (18:17 +0000)]
[X86] Extract HiPE prologue constants into metadata

X86FrameLowering::adjustForHiPEPrologue() contains a hard-coded offset
into an Erlang Runtime System-internal data structure (the PCB). As the
layout of this data structure is prone to change, this poses problems
for maintaining compatibility.

To address this problem, the compiler can produce this information as
module-level named metadata. For example (where P_NSP_LIMIT is the
offending offset):

!hipe.literals = !{ !2, !3, !4 }
!2 = !{ !"P_NSP_LIMIT", i32 152 }
!3 = !{ !"X86_LEAF_WORDS", i32 24 }
!4 = !{ !"AMD64_LEAF_WORDS", i32 24 }

Patch by Magnus Lang

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

llvm-svn: 273593

6 years agoTypo.
Vassil Vassilev [Thu, 23 Jun 2016 18:13:46 +0000 (18:13 +0000)]

llvm-svn: 273592

6 years agoFix the wasm build by including EndianStream.h
Reid Kleckner [Thu, 23 Jun 2016 18:12:31 +0000 (18:12 +0000)]
Fix the wasm build by including EndianStream.h

llvm-svn: 273591

6 years agoAdd a test case for the regression in -Wfor-loop-analysis caused by r273548.
Peter Collingbourne [Thu, 23 Jun 2016 18:11:19 +0000 (18:11 +0000)]
Add a test case for the regression in -Wfor-loop-analysis caused by r273548.

llvm-svn: 273590

6 years agoRevert r273548, "Rearrange condition handling so that semantic checks on a condition...
Peter Collingbourne [Thu, 23 Jun 2016 18:11:15 +0000 (18:11 +0000)]
Revert r273548, "Rearrange condition handling so that semantic checks on a condition variable"
as it caused a regression in -Wfor-loop-analysis.

llvm-svn: 273589

6 years agoPrevent generation of temp file in test from r273585.
Nirav Dave [Thu, 23 Jun 2016 18:06:35 +0000 (18:06 +0000)]
Prevent generation of temp file in test from r273585.

llvm-svn: 273588

6 years ago[SCEV] Don't unnecessarily namespace; NFC
Sanjoy Das [Thu, 23 Jun 2016 18:03:32 +0000 (18:03 +0000)]
[SCEV] Don't unnecessarily namespace; NFC

llvm-svn: 273587

6 years ago[IRCE] Use getTerminator instead of rbegin; NFC
Sanjoy Das [Thu, 23 Jun 2016 18:03:26 +0000 (18:03 +0000)]
[IRCE] Use getTerminator instead of rbegin; NFC

llvm-svn: 273586

6 years agoPreserve DebugInfo when replacing values in DAGCombiner
Nirav Dave [Thu, 23 Jun 2016 17:52:57 +0000 (17:52 +0000)]
Preserve DebugInfo when replacing values in DAGCombiner

Recommiting after correcting over-eager Debug Value transfer fixing PR28270.

[DAG] Previously debug values would transfer debuginfo for the selected
start node for a replacement which allows for debug to be dropped.

Push debug value transfer to occur with node/value replacement in
SelectionDAG, remove now extraneous transfers of debug values.

This refixes PR9817 which was being incompletely checked in the

Reviewers: jyknight

Subscribers: dblaikie, llvm-commits

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

llvm-svn: 273585

6 years ago[ValueTracking] simplify logic in ComputeNumSignBits (NFCI)
Sanjay Patel [Thu, 23 Jun 2016 17:41:59 +0000 (17:41 +0000)]
[ValueTracking] simplify logic in ComputeNumSignBits (NFCI)

This was noted in http://reviews.llvm.org/D21610 . The previous code
predated the use of APInt ( http://reviews.llvm.org/rL47654 ), so it
had to account for the fixed width of uint64_t.

Now that we're using the variable width APInt, we can remove some

llvm-svn: 273584

6 years ago[TableGen] Use StringRef::compare instead of != and <. NFC.
Ahmed Bougacha [Thu, 23 Jun 2016 17:09:49 +0000 (17:09 +0000)]
[TableGen] Use StringRef::compare instead of != and <. NFC.

The previous code would always do 1 or 2 prefix compares;
explicitly only do one.

This speeds up debug -gen-asm-matcher by ~10% (e.g. X86: 40s -> 35s).

llvm-svn: 273583

6 years agofix Xcode build for r273547
Todd Fiala [Thu, 23 Jun 2016 16:54:39 +0000 (16:54 +0000)]
fix Xcode build for r273547

llvm-svn: 273582

6 years ago[ARM] Lower (select_cc k k (select_cc ~k ~k x)) into (SSAT l_k x)
Pablo Barrio [Thu, 23 Jun 2016 16:53:49 +0000 (16:53 +0000)]
[ARM] Lower (select_cc k k (select_cc ~k ~k x)) into (SSAT l_k x)

SSAT saturates an integer, making sure that its value lies within
an interval [-k, k]. Since the constant is given to SSAT as the
number of bytes set to one, k + 1 must be a power of 2, otherwise
the optimization is not possible. Also, the select_cc must use <
and > respectively so that they define an interval.

Reviewers: mcrosier, jmolloy, rengolin

Subscribers: aemerson, rengolin, llvm-commits

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

llvm-svn: 273581

6 years agoUpgrade other old memset/memcpy signatures in tests causing buildbot failures with...
Artur Pilipenko [Thu, 23 Jun 2016 16:34:52 +0000 (16:34 +0000)]
Upgrade other old memset/memcpy signatures in tests causing buildbot failures with rL273568.

llvm-svn: 273580

6 years ago[codeview] Emit retained types
Hans Wennborg [Thu, 23 Jun 2016 16:33:53 +0000 (16:33 +0000)]
[codeview] Emit retained types

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

llvm-svn: 273579

6 years agoChange the email address for commit access requests to my llvm address.
Chris Lattner [Thu, 23 Jun 2016 16:29:22 +0000 (16:29 +0000)]
Change the email address for commit access requests to my llvm address.

llvm-svn: 273578

6 years agoNFC, add an "end namespace" comment for consistency
Vedant Kumar [Thu, 23 Jun 2016 16:27:08 +0000 (16:27 +0000)]
NFC, add an "end namespace" comment for consistency

llvm-svn: 273577

6 years agoRemove redundant %libomp-compile step from test/lock/omp_lock.c
Jonathan Peyton [Thu, 23 Jun 2016 16:18:59 +0000 (16:18 +0000)]
Remove redundant %libomp-compile step from test/lock/omp_lock.c

llvm-svn: 273576

6 years agoRevert r273567 "[SystemZ] Let z13 also support FeatureMiscellaneousExtensions."
Hans Wennborg [Thu, 23 Jun 2016 16:13:26 +0000 (16:13 +0000)]
Revert r273567 "[SystemZ] Let z13 also support FeatureMiscellaneousExtensions."

It broke test/CodeGen/SystemZ/vec-extract-02.ll

llvm-svn: 273575

6 years agoRevert r273568 "Remangle intrinsics names when types are renamed"
Hans Wennborg [Thu, 23 Jun 2016 16:13:23 +0000 (16:13 +0000)]
Revert r273568 "Remangle intrinsics names when types are renamed"

It broke 2008-07-15-Bswap.ll and 2009-09-01-PostRAProlog.ll

llvm-svn: 273574

6 years agoFix an old memset signature in 2009-09-01-PostRAProlog.ll test causing a buildbot...
Artur Pilipenko [Thu, 23 Jun 2016 16:07:10 +0000 (16:07 +0000)]
Fix an old memset signature in 2009-09-01-PostRAProlog.ll test causing a buildbot failure

llvm-svn: 273573

6 years ago[Analyzer] Don't cache report generation ExplodedNodes
Ben Craig [Thu, 23 Jun 2016 15:47:12 +0000 (15:47 +0000)]
[Analyzer] Don't cache report generation ExplodedNodes

During the core analysis, ExplodedNodes are added to the
ExplodedGraph, and those nodes are cached for deduplication purposes.

After core analysis, reports are generated. Here, trimmed copies of
the ExplodedGraph are made. Since the ExplodedGraph has already been
deduplicated, there is no need to deduplicate again.

This change makes it possible to add ExplodedNodes to an
ExplodedGraph without the overhead of deduplication. "Uncached" nodes
also cannot be iterated over, but none of the report generation code
attempts to iterate over all nodes. This change reduces the analysis
time of a large .C file from 3m43.941s to 3m40.256s (~1.6% speedup).
It should slightly reduce memory consumption. Gains should be roughly
proportional to the number (and path length) of static analysis

This patch enables future work that should remove the need for an
InterExplodedGraphMap inverse map. I plan on using the (now unused)
ExplodedNode link to connect new nodes to the original nodes.


llvm-svn: 273572

6 years agoUse CreateFileA and add a FIXME to switch to the wide variant
Reid Kleckner [Thu, 23 Jun 2016 15:40:42 +0000 (15:40 +0000)]
Use CreateFileA and add a FIXME to switch to the wide variant

No functional change. Required to build with -DUNICODE, as is done in

llvm-svn: 273571

6 years ago[docs] Bump minimum version of CMake in its own doc
Renato Golin [Thu, 23 Jun 2016 15:28:00 +0000 (15:28 +0000)]
[docs] Bump minimum version of CMake in its own doc

llvm-svn: 273570

6 years ago[ELF][MIPS] Support MIPS TLS relocations
Simon Atanasyan [Thu, 23 Jun 2016 15:26:31 +0000 (15:26 +0000)]
[ELF][MIPS] Support MIPS TLS relocations

The patch adds one more partition to the MIPS GOT. This time it is for
TLS related GOT entries. Such entries are located after 'local' and 'global'
ones. We cannot get a final offset for these entries at the time of
creation because we do not know size of 'local' and 'global' partitions.
So we have to adjust the offset later using `getMipsTlsOffset()` method.

All MIPS TLS relocations which need GOT entries operates MIPS style GOT
offset - 'offset from the GOT's beginning' - MipsGPOffset constant. That
is why I add new types of relocation expressions.

One more difference from othe ABIs is that the MIPS ABI does not support
any TLS relocation relaxations. I decided to make a separate function
`handleMipsTlsRelocation` and put MIPS TLS relocation handling code
there. It is similar to `handleTlsRelocation` routine and duplicates its
code. But it allows to make the code cleaner and prevent pollution of
the `handleTlsRelocation` by MIPS 'if' statements.

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

llvm-svn: 273569

6 years agoRemangle intrinsics names when types are renamed
Artur Pilipenko [Thu, 23 Jun 2016 15:25:09 +0000 (15:25 +0000)]
Remangle intrinsics names when types are renamed

This is a fix for the problem mentioned in "LTO and intrinsics mangling" llvm-dev mail thread:

Reviewers: mehdi_amini, reames

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

llvm-svn: 273568

6 years ago[SystemZ] Let z13 also support FeatureMiscellaneousExtensions.
Jonas Paulsson [Thu, 23 Jun 2016 15:12:06 +0000 (15:12 +0000)]
[SystemZ] Let z13 also support FeatureMiscellaneousExtensions.

This processor feature had been left out by mistake from the z13

Reviewed by Ulrich Weigand.

llvm-svn: 273567

6 years agoRestructure the propagation of -fPIC/-fPIE.
Rafael Espindola [Thu, 23 Jun 2016 15:07:32 +0000 (15:07 +0000)]
Restructure the propagation of -fPIC/-fPIE.

The PIC and PIE levels are not independent. In fact, if PIE is defined
it is always the same as PIC.

This is clear in the driver where ParsePICArgs returns a PIC level and
a IsPIE boolean. Unfortunately that is currently lost and we pass two
redundant levels down the pipeline.

This patch keeps a bool and a PIC level all the way down to codegen.

llvm-svn: 273566

6 years agoRevert "[misched] Extend scheduler to handle unsupported features"
Simon Dardis [Thu, 23 Jun 2016 14:54:47 +0000 (14:54 +0000)]
Revert "[misched] Extend scheduler to handle unsupported features"

This reverts commit r273551.

Patch contained a wrong check for isUnsupported.

llvm-svn: 273565

6 years agoExplicitly specify the ANSI version of these Win32 APIs. While these are seemingly...
Aaron Ballman [Thu, 23 Jun 2016 14:45:54 +0000 (14:45 +0000)]
Explicitly specify the ANSI version of these Win32 APIs. While these are seemingly unrelated changes, they are all NFC because we currently default to the ANSI versions of the APIs when building for Windows. This simply makes the ANSI usage explicit.

llvm-svn: 273564

6 years agoFixing a FIXME related to Unicode support on Windows. Converted the Win32 APIs to...
Aaron Ballman [Thu, 23 Jun 2016 14:33:53 +0000 (14:33 +0000)]
Fixing a FIXME related to Unicode support on Windows. Converted the Win32 APIs to explicitly use the W version when it involves strings that can hold non-ASCII characters (like file paths). Now explicitly using the A version for strings that will always be ASCII (like registry key paths).

No extra tests required as this is currently covered by existing testing, and this is basically impossible to write Unicode-specific tests for.

llvm-svn: 273563

6 years ago[LoopUnrollAnalyzer] Fix a bug in UnrolledInstAnalyzer::visitLoad.
Michael Zolotukhin [Thu, 23 Jun 2016 14:31:31 +0000 (14:31 +0000)]
[LoopUnrollAnalyzer] Fix a bug in UnrolledInstAnalyzer::visitLoad.

When simplifying a load we need to make sure that the type of the
simplified value matches the type of the instruction we're processing.
In theory, we can handle casts here as we deal with constant data, but
since it's not implemented at the moment, we at least need to bail out.

This fixes PR28262.

llvm-svn: 273562

6 years ago[AMDGPU] Enable absolute expression initializer for amd_kernel_code_t fields.
Valery Pykhtin [Thu, 23 Jun 2016 14:13:06 +0000 (14:13 +0000)]
[AMDGPU] Enable absolute expression initializer for amd_kernel_code_t fields.

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

llvm-svn: 273561

6 years ago[X86][AVX512] Added AVX512F vector sign extend tests
Simon Pilgrim [Thu, 23 Jun 2016 14:01:45 +0000 (14:01 +0000)]
[X86][AVX512] Added AVX512F vector sign extend tests

Now that Elena has confirmed that PR26474 has been fixed

llvm-svn: 273560

6 years agoAllow DeadStoreElimination to track combinations of partial later wrties
Hal Finkel [Thu, 23 Jun 2016 13:46:39 +0000 (13:46 +0000)]
Allow DeadStoreElimination to track combinations of partial later wrties

DeadStoreElimination can currently remove a small store rendered unnecessary by
a later larger one, but could not remove a larger store rendered unnecessary by
a series of later smaller ones. This adds that capability.

It works by keeping a map, which is used as an effective interval map, for each
store later overwritten only partially, and filling in that interval map as
more such stores are discovered. No additional walking or aliasing queries are
used. In the map forms an interval covering the the entire earlier store, then
it is dead and can be removed. The map is used as an interval map by storing a
mapping between the ending offset and the beginning offset of each interval.

I discovered this problem when investigating a performance issue with code like
this on PowerPC:

  #include <complex>
  using namespace std;

  complex<float> bar(complex<float> C);
  complex<float> foo(complex<float> C) {
    return bar(C)*C;

which produces this:

  define void @_Z4testSt7complexIfE(%"struct.std::complex"* noalias nocapture sret %agg.result, i64 %c.coerce) {
    %ref.tmp = alloca i64, align 8
    %tmpcast = bitcast i64* %ref.tmp to %"struct.std::complex"*
    %c.sroa.0.0.extract.shift = lshr i64 %c.coerce, 32
    %c.sroa.0.0.extract.trunc = trunc i64 %c.sroa.0.0.extract.shift to i32
    %0 = bitcast i32 %c.sroa.0.0.extract.trunc to float
    %c.sroa.2.0.extract.trunc = trunc i64 %c.coerce to i32
    %1 = bitcast i32 %c.sroa.2.0.extract.trunc to float
    call void @_Z3barSt7complexIfE(%"struct.std::complex"* nonnull sret %tmpcast, i64 %c.coerce)
    %2 = bitcast %"struct.std::complex"* %agg.result to i64*
    %3 = load i64, i64* %ref.tmp, align 8
    store i64 %3, i64* %2, align 4 ; <--- ***** THIS SHOULD NOT BE HERE ****
    %_M_value.realp.i.i = getelementptr inbounds %"struct.std::complex", %"struct.std::complex"* %agg.result, i64 0, i32 0, i32 0
    %4 = lshr i64 %3, 32
    %5 = trunc i64 %4 to i32
    %6 = bitcast i32 %5 to float
    %_M_value.imagp.i.i = getelementptr inbounds %"struct.std::complex", %"struct.std::complex"* %agg.result, i64 0, i32 0, i32 1
    %7 = trunc i64 %3 to i32
    %8 = bitcast i32 %7 to float
    %mul_ad.i.i = fmul fast float %6, %1
    %mul_bc.i.i = fmul fast float %8, %0
    %mul_i.i.i = fadd fast float %mul_ad.i.i, %mul_bc.i.i
    %mul_ac.i.i = fmul fast float %6, %0
    %mul_bd.i.i = fmul fast float %8, %1
    %mul_r.i.i = fsub fast float %mul_ac.i.i, %mul_bd.i.i
    store float %mul_r.i.i, float* %_M_value.realp.i.i, align 4
    store float %mul_i.i.i, float* %_M_value.imagp.i.i, align 4
    ret void

the problem here is not just that the i64 store is unnecessary, but also that
it blocks further backend optimizations of the other uses of that i64 value in
the backend.

In the future, we might want to add a special case for handling smaller
accesses (e.g. using a bit vector) if the map mechanism turns out to be
noticeably inefficient. A sorted vector is also a possible replacement for the
map for small numbers of tracked intervals.

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

llvm-svn: 273559

6 years agoCodeGen: support linker options on Windows ARM
Saleem Abdulrasool [Thu, 23 Jun 2016 13:45:33 +0000 (13:45 +0000)]
CodeGen: support linker options on Windows ARM

We would incorrectly emit the directive sections due to the missing overridden
methods.  We now emit the expected "/DEFAULTLIB" rather than "-l" options for
requested linkage

llvm-svn: 273558

6 years ago[mips] Don't derive the default ABI from the CPU in the backend.
Daniel Sanders [Thu, 23 Jun 2016 12:42:53 +0000 (12:42 +0000)]
[mips] Don't derive the default ABI from the CPU in the backend.

The backend has no reason to behave like a driver and should generally do
as it's told (and error out if it can't) instead of trying to figure out
what the API user meant. The default ABI is still derived from the arch
component as a concession to backwards compatibility.

API-users that previously passed an explicit CPU and a triple that was
inconsistent with the CPU (e.g. mips-linux-gnu and mips64r2) may get a
different ABI to what they got before. However, it's expected that there
are no such users on the basis that CodeGen has been asserting that the
triple is consistent with the selected ABI for several releases. API-users
that were consistent or passed '' or 'generic' as the CPU will see no

Reviewers: sdardis, rafael

Subscribers: rafael, dsanders, sdardis, llvm-commits

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

llvm-svn: 273557

6 years ago[ARM] Use member initializers in ARMSubtarget. NFCI
Diana Picus [Thu, 23 Jun 2016 12:04:33 +0000 (12:04 +0000)]
[ARM] Use member initializers in ARMSubtarget. NFCI

Move most of the initializations in ARMSubtarget::initializeEnvironment to
member initializers.

Change suggested by Matthias Braun (see http://reviews.llvm.org/D21432).

llvm-svn: 273556

6 years ago[mips][ias] Integers are not registers.
Daniel Sanders [Thu, 23 Jun 2016 10:54:09 +0000 (10:54 +0000)]
[mips][ias] Integers are not registers.

When parseAnyRegister() encounters a symbol alias, it parses integers and adds
a corresponding expression to the operand list. This is clearly wrong since the
only operands that parseAnyRegister() should be accepting are registers.

It's not clear why this code was added and there are no test cases that cover
it. I think it might be leftover from when searchSymbolAlias() was more widely

Reviewers: sdardis

Subscribers: dsanders, sdardis, llvm-commits

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

llvm-svn: 273555

6 years ago[llc] Remove exit-on-error flag (PR27759)
Diana Picus [Thu, 23 Jun 2016 09:49:56 +0000 (09:49 +0000)]
[llc] Remove exit-on-error flag (PR27759)

This flag was introduced in r269655 with the new diagnostic handler for llc. Its
purpose was to keep the old behavior for some of the tests that didn't recover
well after an error. Those tests have been fixed, so now it's safe to remove the
flag entirely.

Fixes PR27759.

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

llvm-svn: 273554

6 years agoclang-format: [Proto] Use more compact format for text-formatted options
Daniel Jasper [Thu, 23 Jun 2016 09:40:19 +0000 (09:40 +0000)]
clang-format: [Proto] Use more compact format for text-formatted options

  enum Type {
    UNKNOWN = 0 [(some_options) = {
      a: aa,
      b: bb

  enum Type {
    UNKNOWN = 0 [(some_options) = {a: aa, b: bb}];

llvm-svn: 273553

6 years agoAttempt to fix MIPS buildbots after r273425.
Daniel Sanders [Thu, 23 Jun 2016 09:29:38 +0000 (09:29 +0000)]
Attempt to fix MIPS buildbots after r273425.

MIPS has a 'signext' attribute that was causing the check to fail.

llvm-svn: 273552

6 years ago[misched] Extend scheduler to handle unsupported features
Simon Dardis [Thu, 23 Jun 2016 09:22:11 +0000 (09:22 +0000)]
[misched] Extend scheduler to handle unsupported features

Currently isComplete = 1 requires that every instruction must
be described, declared unsupported or marked as having no
scheduling information for a processor.

For some backends such as MIPS, this requirement entails
long regex lists of instructions that are unsupported.

This patch teaches Tablegen to skip over instructions that
are associated with unsupported feature when checking if the
scheduling model is complete.

Patch by: Daniel Sanders

Contributions by: Simon Dardis

Reviewers: MatzeB

Differential Reviewer: http://reviews.llvm.org/D20522

llvm-svn: 273551

6 years ago[AMDGPU] Remove exit-on-error in test (PR27761)
Diana Picus [Thu, 23 Jun 2016 09:19:16 +0000 (09:19 +0000)]
[AMDGPU] Remove exit-on-error in test (PR27761)

The exit-on-error flag was necessary in order to avoid an assertion when
handling DYNAMIC_STACKALLOC nodes in SelectionDAGLegalize.

We can avoid the assertion by creating some dummy nodes. This enables us to
remove the exit-on-error flag on the first 2 run lines (SI), but on the third
run line (R600) we would run into another assertion when trying to reserve
indirect registers. This patch also replaces that assertion with an early exit
from the function.

Fixes PR27761.

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

llvm-svn: 273550

6 years ago[mips] Fix dext/dins definitions
Simon Dardis [Thu, 23 Jun 2016 09:06:20 +0000 (09:06 +0000)]
[mips] Fix dext/dins definitions

dext and dins, along with their 'm' and 'u' variants are defined in mips64r2,
not mips64.

Reviewers: dsanders, vkalintiris

Differential Review: http://reviews.llvm.org/D21608

llvm-svn: 273549

6 years agoRearrange condition handling so that semantic checks on a condition variable
Richard Smith [Thu, 23 Jun 2016 08:41:20 +0000 (08:41 +0000)]
Rearrange condition handling so that semantic checks on a condition variable
are performed before the other substatements of the construct are parsed,
rather than deferring them until the end. This allows better error recovery
from semantic errors in the condition, improves diagnostic order, and is a
prerequisite for C++17 constexpr if.

llvm-svn: 273548

6 years agoAdd MemoryRegionInfo to SB API
Howard Hellyer [Thu, 23 Jun 2016 08:35:37 +0000 (08:35 +0000)]
Add MemoryRegionInfo to SB API

This adds new SB API calls and classes to allow a user of the SB API to obtain a full list of memory regions accessible within the process. Adding this to the API makes it possible use the API for tasks like scanning memory for blocks allocated with a header and footer to track down memory leaks, otherwise just inspecting every address is impractical especially for 64 bit processes.

These changes only add the API itself and a base implementation of GetMemoryRegions() to lldb_private::Process::GetMemoryRegions.
I will submit separate patches to fill in lldb_private::Process::GetMemoryRegionInfoList and GetMemoryRegionInfo for individual platforms.

The original discussion about this is here:

Reviewers: clayborg

Subscribers: lldb-commits

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

llvm-svn: 273547

6 years agoTest commit to verify access, fix typo.
Howard Hellyer [Thu, 23 Jun 2016 08:31:22 +0000 (08:31 +0000)]
Test commit to verify access, fix typo.

llvm-svn: 273546

6 years ago[IfConversion] Bugfix: Don't use undef flag while adding use operands.
Jonas Paulsson [Thu, 23 Jun 2016 08:13:20 +0000 (08:13 +0000)]
[IfConversion] Bugfix: Don't use undef flag while adding use operands.

IfConversion used to always add the undef flag when adding a use operand
on a newly predicated instruction. This would be an operand for the register
being conditionally redefined. Due to the undef flag, the liveness of this
register prior to the predicated instruction would get lost.

This patch changes this so that such use operands are added only when the
register is live, without the undef flag.

Reviewed by Quentin Colombet.

llvm-svn: 273545

6 years ago[ARM] Do not test for CPUs, use SubtargetFeatures (Part 1). NFCI
Diana Picus [Thu, 23 Jun 2016 07:47:35 +0000 (07:47 +0000)]
[ARM] Do not test for CPUs, use SubtargetFeatures (Part 1). NFCI

This is a cleanup commit similar to r271555, but for ARM.

The end goal is to get rid of the isSwift / isCortexXY / isWhatever methods.

Since the ARM backend seems to have quite a lot of calls to these methods, I
intend to submit 5-6 subtarget features at a time, instead of one big lump.

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

llvm-svn: 273544

6 years ago[AVX512] Remove masked unpack intrinsics and autoupgrade to vectorshuffle and selects.
Craig Topper [Thu, 23 Jun 2016 07:37:33 +0000 (07:37 +0000)]
[AVX512] Remove masked unpack intrinsics and autoupgrade to vectorshuffle and selects.

llvm-svn: 273543

6 years ago[X86] Add assert to ensure only 128-bit vector types are used. 256 or 512-bit would...
Craig Topper [Thu, 23 Jun 2016 07:37:26 +0000 (07:37 +0000)]
[X86] Add assert to ensure only 128-bit vector types are used. 256 or 512-bit would require lane handling which is missing.

llvm-svn: 273542

6 years ago[modules] Good ol' JIT is gone.
Vassil Vassilev [Thu, 23 Jun 2016 07:33:03 +0000 (07:33 +0000)]
[modules] Good ol' JIT is gone.

llvm-svn: 273541

6 years agoAdd missing include. Should fix modules builds.
Vassil Vassilev [Thu, 23 Jun 2016 07:30:12 +0000 (07:30 +0000)]
Add missing include. Should fix modules builds.

llvm-svn: 273540

6 years ago[ELF] - Reorder expressions in parseVersionSymbols()'s loop. NFC.
George Rimar [Thu, 23 Jun 2016 07:26:05 +0000 (07:26 +0000)]
[ELF] - Reorder expressions in parseVersionSymbols()'s loop. NFC.

llvm-svn: 273539

6 years agoRevert r273427 "[ELF] - Simplify loop in parseVersionSymbols(). NFC."
George Rimar [Thu, 23 Jun 2016 07:23:07 +0000 (07:23 +0000)]
Revert r273427 "[ELF] - Simplify loop in parseVersionSymbols(). NFC."

llvm-svn: 273538

6 years agoAttempt to fix Windows buildbots.
Rui Ueyama [Thu, 23 Jun 2016 07:14:09 +0000 (07:14 +0000)]
Attempt to fix Windows buildbots.

llvm-svn: 273537

6 years agoImplement --trace-symbol=symbol option.
Rui Ueyama [Thu, 23 Jun 2016 07:00:17 +0000 (07:00 +0000)]
Implement --trace-symbol=symbol option.

Patch by Shridhar Joshi.

This option provides names of all the link time modules which define and
reference symbols requested by user. This helps to speed up application
development by detecting references causing undefined symbols.
It also helps in detecting symbols being resolved to wrong (unintended)
definitions in case of applications containing multiple definitions for
same symbols with different types, bindings.

Implements PR28226.

llvm-svn: 273536

6 years ago[LLDB][MIPS] Fix Emulation of Compact branch and ADDIU instructions
Sagar Thakur [Thu, 23 Jun 2016 06:40:37 +0000 (06:40 +0000)]
[LLDB][MIPS] Fix Emulation of Compact branch and ADDIU instructions

Patch by Nitesh Jain.

This patch contains 2 changes:

  - Corrected target address calculation of compact branch instructions to reflect changes in disassembler (http://reviews.llvm.org/D17540).
  - Added emulation for (missing) 'Addiu' instruction.

Reviewers :jaydeep, bhushan, clayborg
Differential: http://reviews.llvm.org/D21064

llvm-svn: 273535

6 years ago[LLVM][MIPS] Introduce 64 bit atomic check in CheckAtomic.cmake
Sagar Thakur [Thu, 23 Jun 2016 06:39:35 +0000 (06:39 +0000)]
[LLVM][MIPS] Introduce 64 bit atomic check in CheckAtomic.cmake

Patch by Nitesh Jain.

Summary: On some target like MIPS32 we need to explicitly link atomic library for 64 bit atomic operations. This module then can be used in LLDB (http://reviews.llvm.org/D20464) or Libcxx (http://reviews.llvm.org/D16613) for explicitly link to atomic library.

Reviewers: chandlerc, beanz
Differential: reviews.llvm.org/D20896
llvm-svn: 273534

6 years ago[AVX512] Replace masked unpack builtins with shufflevector and selects.
Craig Topper [Thu, 23 Jun 2016 06:36:42 +0000 (06:36 +0000)]
[AVX512] Replace masked unpack builtins with shufflevector and selects.

llvm-svn: 273533

6 years agoFix a bug that MIPS thunks can overwrite other section contents.
Rui Ueyama [Thu, 23 Jun 2016 04:33:42 +0000 (04:33 +0000)]
Fix a bug that MIPS thunks can overwrite other section contents.

Peter Smith found while trying to support thunk creation for ARM that
LLD sometimes creates broken thunks for MIPS. The cause of the bug is
that we assign file offsets to input sections too early. We need to
create all sections and then assign section offsets because appending
thunks changes file offsets for all following sections.

This patch separates the pass to assign file offsets from thunk
creation pass. This effectively reverts r265673.

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

llvm-svn: 273532

6 years agoRevert r273524, it may have been the cause of a linux testbot failure
Jason Molenda [Thu, 23 Jun 2016 04:24:16 +0000 (04:24 +0000)]
Revert r273524, it may have been the cause of a linux testbot failure
for TestNamespaceLookup.py; didn't see anything obviously wrong so I'll
need to look at this more closely before re-committing.  (passed OK on
macOS ;)

llvm-svn: 273531

6 years agoFix doubly included header
Matt Arsenault [Thu, 23 Jun 2016 02:34:51 +0000 (02:34 +0000)]
Fix doubly included header

llvm-svn: 273528

6 years ago[libFuzzer] Add standard license info and comment header to AFLDriverTest.cpp
Vitaly Buka [Thu, 23 Jun 2016 02:19:36 +0000 (02:19 +0000)]
[libFuzzer] Add standard license info and comment header to AFLDriverTest.cpp

Summary: Add license info and brief description of file to AFLDriverTest.cpp.

Reviewers: kcc, aizatsky

Subscribers: llvm-commits

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

llvm-svn: 273527

6 years agoUse C++ comments for large block comment.
Eric Christopher [Thu, 23 Jun 2016 01:33:38 +0000 (01:33 +0000)]
Use C++ comments for large block comment.

llvm-svn: 273526

6 years agoAMDGPU: readlane/writelane do not read exec
Matt Arsenault [Thu, 23 Jun 2016 01:26:16 +0000 (01:26 +0000)]
AMDGPU: readlane/writelane do not read exec

llvm-svn: 273525

6 years agoDo some minor renames of "Mac OS X" to "macOS".
Jason Molenda [Thu, 23 Jun 2016 01:18:16 +0000 (01:18 +0000)]
Do some minor renames of "Mac OS X" to "macOS".
There's uses of "macosx" that will be more tricky to
change, like in triples (e.g. "x86_64-apple-macosx10.11") -
for now I'm just updating source comments and strings printed
for humans.

llvm-svn: 273524

6 years agoFix unused variable warning by folding the temporary into the debug statement.
Eric Christopher [Thu, 23 Jun 2016 00:42:00 +0000 (00:42 +0000)]
Fix unused variable warning by folding the temporary into the debug statement.

llvm-svn: 273523

6 years agoUse ranges to concisely express iteration
David Majnemer [Thu, 23 Jun 2016 00:15:04 +0000 (00:15 +0000)]
Use ranges to concisely express iteration

No functional change is intended, this should just clean things up a

llvm-svn: 273522

6 years ago[SCCP] Don't assume all Constants are ConstantInt
David Majnemer [Thu, 23 Jun 2016 00:14:29 +0000 (00:14 +0000)]
[SCCP] Don't assume all Constants are ConstantInt

This fixes PR28269.

llvm-svn: 273521

6 years ago[ADT] Add a range variant of std::transform
David Majnemer [Thu, 23 Jun 2016 00:14:26 +0000 (00:14 +0000)]
[ADT] Add a range variant of std::transform

This will be used in a followup change in clang.

llvm-svn: 273520

6 years ago[IRObjectFile] Try to be defensive, add a break.
Davide Italiano [Thu, 23 Jun 2016 00:07:31 +0000 (00:07 +0000)]
[IRObjectFile] Try to be defensive, add a break.

Suggested by Sean Silva.

llvm-svn: 273519

6 years agoRevert r273456, "Preserve DebugInfo when replacing values in DAGCombiner" as it cause...
Peter Collingbourne [Thu, 23 Jun 2016 00:06:17 +0000 (00:06 +0000)]
Revert r273456, "Preserve DebugInfo when replacing values in DAGCombiner" as it caused pr28270.

llvm-svn: 273518

6 years ago[llvm-cov] Fix a buggy lit test
Vedant Kumar [Wed, 22 Jun 2016 23:58:03 +0000 (23:58 +0000)]
[llvm-cov] Fix a buggy lit test

There is no check prefix for "WHOLE-FILE": this particular line was
supposed to use the "ALL" prefix.

llvm-svn: 273517

6 years ago[codeview] Add EFLAGS to the list of CodeView register numbers
Reid Kleckner [Wed, 22 Jun 2016 23:50:19 +0000 (23:50 +0000)]
[codeview] Add EFLAGS to the list of CodeView register numbers

llvm-svn: 273516

6 years agoAMDGPU: Fix liveness when expanding m0 loop
Matt Arsenault [Wed, 22 Jun 2016 23:40:57 +0000 (23:40 +0000)]
AMDGPU: Fix liveness when expanding m0 loop

llvm-svn: 273514

6 years ago[RS4GC] Use StringRef; NFC
Sanjoy Das [Wed, 22 Jun 2016 23:32:46 +0000 (23:32 +0000)]
[RS4GC] Use StringRef; NFC

Spotted during random inspection.

llvm-svn: 273512

6 years agoChange that to include MCMachObjectWriter.h
Reid Kleckner [Wed, 22 Jun 2016 23:30:43 +0000 (23:30 +0000)]
Change that to include MCMachObjectWriter.h

llvm-svn: 273511

6 years agoAdd one more missing MCObjectWriter.h include
Reid Kleckner [Wed, 22 Jun 2016 23:28:12 +0000 (23:28 +0000)]
Add one more missing MCObjectWriter.h include

llvm-svn: 273510

6 years agoFix instance of -Wdelete-incomplete
Reid Kleckner [Wed, 22 Jun 2016 23:25:26 +0000 (23:25 +0000)]
Fix instance of -Wdelete-incomplete

llvm-svn: 273508

6 years agoPrune some includes from headers and sink some inline functions
Reid Kleckner [Wed, 22 Jun 2016 23:23:08 +0000 (23:23 +0000)]
Prune some includes from headers and sink some inline functions

MCSymbol.h shouldn't pull in MCAssembler.h, just MCFragment.h.
MCLinkerOptimizationHint.h shouldn't need MCMachObjectWriter.h.  The
rest is fixing the fallout.

llvm-svn: 273507

6 years ago[PM]: LoopAccessInfo simple refactoring
Xinliang David Li [Wed, 22 Jun 2016 23:20:59 +0000 (23:20 +0000)]
[PM]: LoopAccessInfo simple refactoring

To make definition of mov ctors easier.
Differential Revision: http://reviews.llvm.org/D21563

llvm-svn: 273506

6 years ago[CMake] Converting darwin_test_archs simple source to C
Chris Bieneman [Wed, 22 Jun 2016 23:02:49 +0000 (23:02 +0000)]
[CMake] Converting darwin_test_archs simple source to C

Using C instead of CXX here removes a configuration-time dependency on libcxx for the sanitizers. This should be NFC.

llvm-svn: 273505

6 years ago[pdb] Treat a stream size of ~0U as 0
Reid Kleckner [Wed, 22 Jun 2016 22:42:24 +0000 (22:42 +0000)]
[pdb] Treat a stream size of ~0U as 0

My PDBs always have this size for stream 11. Not sure why.

llvm-svn: 273504

6 years ago[MachO] Finish moving fat header swap functions to MachO.h
Chris Bieneman [Wed, 22 Jun 2016 22:19:08 +0000 (22:19 +0000)]
[MachO] Finish moving fat header swap functions to MachO.h

This is a follow-up to r273479. At the time I wrote r273479 I didn't connect the dots that the functions I was adding had to exist somewhere. Turns out, they do. This finishes moving the functions to MachO.h.

Existing MachO fat header tests like test/tools/llvm-readobj/Inputs/macho-universal-archive.x86_64.i386 execute this code.

llvm-svn: 273502