oota-llvm.git
9 years agosplit delinearization pass in 3 steps
Sebastian Pop [Wed, 7 May 2014 18:01:20 +0000 (18:01 +0000)]
split delinearization pass in 3 steps

To compute the dimensions of the array in a unique way, we split the
delinearization analysis in three steps:

- find parametric terms in all memory access functions
- compute the array dimensions from the set of terms
- compute the delinearized access functions for each dimension

The first step is executed on all the memory access functions such that we
gather all the patterns in which an array is accessed. The second step reduces
all this information in a unique description of the sizes of the array. The
third step is delinearizing each memory access function following the common
description of the shape of the array computed in step 2.

This rewrite of the delinearization pass also solves a problem we had with the
previous implementation: because the previous algorithm was by induction on the
structure of the SCEV, it would not correctly recognize the shape of the array
when the memory access was not following the nesting of the loops: for example,
see polly/test/ScopInfo/multidim_only_ivs_3d_reverse.ll

; void foo(long n, long m, long o, double A[n][m][o]) {
;
;   for (long i = 0; i < n; i++)
;     for (long j = 0; j < m; j++)
;       for (long k = 0; k < o; k++)
;         A[i][k][j] = 1.0;

Starting with this patch we no longer delinearize access functions that do not
contain parameters, for example in test/Analysis/DependenceAnalysis/GCD.ll

;;  for (long int i = 0; i < 100; i++)
;;    for (long int j = 0; j < 100; j++) {
;;      A[2*i - 4*j] = i;
;;      *B++ = A[6*i + 8*j];

these accesses will not be delinearized as the upper bound of the loops are
constants, and their access functions do not contain SCEVUnknown parameters.

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

9 years ago[x86] Make the 'x86-64' cpu, what I see as and many use as the generic
Chandler Carruth [Wed, 7 May 2014 17:37:03 +0000 (17:37 +0000)]
[x86] Make the 'x86-64' cpu, what I see as and many use as the generic
default architecture for reasonable modern x86 processors, actually be
modern. This processor model should essentially be "tuned" for modern
x86 chips as much as possible without undue penalties on any specific
architecture. Previously we weren't even using the nice scheduling
models. There are a few other tweaks needed here, but this change at
least I have benchmarked across a decent swatch of chips (intel's
clovertown, westmere, and sandybridge; amd's istanbul) and seen no
significant regressions.

If anyone has suggested ways to test this, just let me know. Somewhat
alarmingly, no existing tests failed.

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

9 years agoTidy up whitespace with clang-format prior to making significant
Chandler Carruth [Wed, 7 May 2014 17:36:59 +0000 (17:36 +0000)]
Tidy up whitespace with clang-format prior to making significant
changes.

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

9 years ago[yaml2obj] Support ELF x86 relocations.
Simon Atanasyan [Wed, 7 May 2014 17:06:38 +0000 (17:06 +0000)]
[yaml2obj] Support ELF x86 relocations.

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

9 years agoStyle update: don't duplicate the function name.
Rafael Espindola [Wed, 7 May 2014 17:04:45 +0000 (17:04 +0000)]
Style update: don't duplicate the function name.

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

9 years ago[CMake] Add build rules for llvm-PerfectShuffle utility
Alexey Samsonov [Wed, 7 May 2014 16:54:00 +0000 (16:54 +0000)]
[CMake] Add build rules for llvm-PerfectShuffle utility

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

9 years agoStyle update: don't duplicate the function name.
Rafael Espindola [Wed, 7 May 2014 16:43:23 +0000 (16:43 +0000)]
Style update: don't duplicate the function name.

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

9 years ago[ARM64][fast-isel] Disable target specific optimizations at -O0. Functionally,
Chad Rosier [Wed, 7 May 2014 16:41:55 +0000 (16:41 +0000)]
[ARM64][fast-isel] Disable target specific optimizations at -O0.  Functionally,
this patch disables the dead register elimination pass and the load/store pair
optimization pass at -O0.  The ILP optimizations don't require the optimization
level to be checked because the call to addILPOpts is predicated with the
necessary check.  The AdvSIMDScalar pass is disabled by default at all
optimization levels.  This patch leaves that pass disabled by default.

Also, move command-line options into ARM64TargetMachine.cpp and add a few
additional flags to aid in debugging.  This fixes an issue with the
-debug-pass=Structure flag where passes were printed, but not actually run
(i.e., AdvSIMDScalar pass).

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

9 years ago[mips] Add highly experimental support for MIPS-I, MIPS-II, MIPS-III, and MIPS-V
Daniel Sanders [Wed, 7 May 2014 16:25:22 +0000 (16:25 +0000)]
[mips] Add highly experimental support for MIPS-I, MIPS-II, MIPS-III, and MIPS-V

Summary:
These processors will only be available for the integrated assembler at
first (CodeGen will emit a fatal error saying they are not implemented).

The intention is to work through the existing instructions and correctly
annotate the ISA they were added in so that we have a sufficiently good
base to start MIPS64r6 development. MIPS64r6 removes/re-encodes certain
instructions and I believe it is best to define ISA's using set-union's
as far as possible rather than using set-subtraction.

Reviewers: vmedic

Subscribers: emaste, llvm-commits

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

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

9 years agollvm-cov: Explicitly namespace llvm::make_unique to keep MSVC happy
Justin Bogner [Wed, 7 May 2014 16:01:27 +0000 (16:01 +0000)]
llvm-cov: Explicitly namespace llvm::make_unique to keep MSVC happy

This is a followup to r208171, where a call to make_unique was
disambiguated for MSVC. Disambiguate two more calls, and remove the
comment about it since this is what we do everywhere.

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

9 years agoUse range loop.
Rafael Espindola [Wed, 7 May 2014 14:53:32 +0000 (14:53 +0000)]
Use range loop.

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

9 years ago[InstCombine] Add optimization of redundant insertvalue instructions.
Michael Zolotukhin [Wed, 7 May 2014 14:30:18 +0000 (14:30 +0000)]
[InstCombine] Add optimization of redundant insertvalue instructions.

rdar://problem/11861387

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

9 years ago[mips] Add FGR_32/FGR_64/GPR_64 adjectives and use then instead of FGRPredicates...
Daniel Sanders [Wed, 7 May 2014 14:25:43 +0000 (14:25 +0000)]
[mips] Add FGR_32/FGR_64/GPR_64 adjectives and use then instead of FGRPredicates/GPRPredicates

Summary:
No functional change (confirmed by diffing tablegen-erated files).

Depends on D3642

Reviewers: vmedic, dsanders

Reviewed By: dsanders

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

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

9 years ago[mips] Add INSN_<name> adverbs and start using them instead of AdditionalPredicates...
Daniel Sanders [Wed, 7 May 2014 14:11:46 +0000 (14:11 +0000)]
[mips] Add INSN_<name> adverbs and start using them instead of AdditionalPredicates overrides

Summary:
No functional change

Depends on D3641

Reviewers: vmedic

Reviewed By: vmedic

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

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

9 years ago[msan] Fix -fsanitize=memory -fno-integrated-as.
Evgeniy Stepanov [Wed, 7 May 2014 14:10:51 +0000 (14:10 +0000)]
[msan] Fix -fsanitize=memory -fno-integrated-as.

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

9 years agoAArch64/ARM64: optimise vector selects & enable test
Tim Northover [Wed, 7 May 2014 14:10:27 +0000 (14:10 +0000)]
AArch64/ARM64: optimise vector selects & enable test

When performing a scalar comparison that feeds into a vector select,
it's actually better to do the comparison on the vector side: the
scalar route would be "CMP -> CSEL -> DUP", the vector is "CM -> DUP"
since the vector comparisons are all mask based.

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

9 years ago[mips] Add ISA_<name> adverbs and start using them instead of AdditionalPredicates...
Daniel Sanders [Wed, 7 May 2014 13:57:22 +0000 (13:57 +0000)]
[mips] Add ISA_<name> adverbs and start using them instead of AdditionalPredicates overrides

Summary:
One small functional change. The recently added PAUSE instruction now has
the HasStdEnc predicate which was accidentally removed by a Requires<>.

Depends on D3640

Reviewers: vmedic

Reviewed By: vmedic

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

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

9 years agoRemove the UseCFI option from createAsmStreamer.
Rafael Espindola [Wed, 7 May 2014 13:00:43 +0000 (13:00 +0000)]
Remove the UseCFI option from createAsmStreamer.

We were already always passing true, this just removes the option.

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

9 years agoDebugInfo: Use enum instead of unsigned
Ed Maste [Wed, 7 May 2014 12:49:08 +0000 (12:49 +0000)]
DebugInfo: Use enum instead of unsigned

This makes debuging DebugInfo generation with LLDB a little more pleasant.

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

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

9 years ago[mips] Continue splitting Instruction.Predicates into smaller lists and re-join them...
Daniel Sanders [Wed, 7 May 2014 12:48:37 +0000 (12:48 +0000)]
[mips] Continue splitting Instruction.Predicates into smaller lists and re-join them with !listconcat

Summary:
Move IsGP64bit into GPRPredicates, and IsFP64bit/NotFP64bit into FGRPredicates

No functional change (confirmed by diffing tablegen-erated files).

Depends on D3639

Reviewers: vmedic

Reviewed By: vmedic

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

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

9 years ago[ARM64-BE] Fix fast-isel, and add appropriate RUN lines to appropriate tests.
James Molloy [Wed, 7 May 2014 12:33:55 +0000 (12:33 +0000)]
[ARM64-BE] Fix fast-isel, and add appropriate RUN lines to appropriate tests.

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

9 years ago[ARM64-BE] Fix variable-argument saving.
James Molloy [Wed, 7 May 2014 12:33:48 +0000 (12:33 +0000)]
[ARM64-BE] Fix variable-argument saving.

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

9 years ago[ARM64-BE] Implement the lane-twiddling logic at AAPCS boundaries for big endian.
James Molloy [Wed, 7 May 2014 12:33:41 +0000 (12:33 +0000)]
[ARM64-BE] Implement the lane-twiddling logic at AAPCS boundaries for big endian.

The AAPCS states that values passed in registers must have a value as though
they had been loaded with "LDR". LDR is equivalent to "LD1.64 vX.1D" - that is,
loading scalars to vector registers and loading 1-element vectors is equivalent.

The logic implemented here is to ensure that at all call boundaries and during
formal argument lowering all vectors are treated as their bitwidth-based floating
point scalar counterpart, which is always one of f64 or f128 (v2i32 -> f64,
v4i32 -> f128 etc). A BITCAST is inserted so that the appropriate REV will be
generated during code generation.

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

9 years ago[mips] Move IsFP64bit/NotFP64bit to the front of the AdditionalPredicates list
Daniel Sanders [Wed, 7 May 2014 12:27:46 +0000 (12:27 +0000)]
[mips] Move IsFP64bit/NotFP64bit to the front of the AdditionalPredicates list

Summary:
This makes it easier to prove a more complicated change in the next commit
is non-functional.

Reviewers: vmedic

Reviewed By: vmedic

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

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

9 years ago[ARM64-BE] Implement the crazy bitcast handling for big endian vectors.
James Molloy [Wed, 7 May 2014 11:28:53 +0000 (11:28 +0000)]
[ARM64-BE] Implement the crazy bitcast handling for big endian vectors.

Because we've canonicalised on using LD1/ST1, every time we do a bitcast
between vector types we must do an equivalent lane reversal.

Consider a simple memory load followed by a bitconvert then a store.
  v0 = load v2i32
  v1 = BITCAST v2i32 v0 to v4i16
       store v4i16 v2

In big endian mode every memory access has an implicit byte swap. LDR and
STR do a 64-bit byte swap, whereas LD1/ST1 do a byte swap per lane - that
is, they treat the vector as a sequence of elements to be byte-swapped.
The two pairs of instructions are fundamentally incompatible. We've decided
to use LD1/ST1 only to simplify compiler implementation.

LD1/ST1 perform the equivalent of a sequence of LDR/STR + REV. This makes
the original code sequence:  v0 = load v2i32

  v1 = REV v2i32                  (implicit)
  v2 = BITCAST v2i32 v1 to v4i16
  v3 = REV v4i16 v2               (implicit)
       store v4i16 v3

But this is now broken - the value stored is different to the value loaded
due to lane reordering. To fix this, on every BITCAST we must perform two
other REVs:

  v0 = load v2i32
  v1 = REV v2i32                  (implicit)
  v2 = REV v2i32
  v3 = BITCAST v2i32 v2 to v4i16
  v4 = REV v4i16
  v5 = REV v4i16 v4               (implicit)
       store v4i16 v5

This means an extra two instructions, but actually in most cases the two REV
instructions can be combined into one. For example:
  (REV64_2s (REV64_4h X)) === (REV32_4h X)

There is also no 128-bit REV instruction. This must be synthesized with an
EXT instruction.

Most bitconverts require some sort of conversion. The only exceptions are:
  a) Identity conversions -  vNfX <-> vNiX
  b) Single-lane-to-scalar - v1fX <-> fX or v1iX <-> iX

Even though there are hundreds of changed lines, I have a fairly high confidence
that they are somewhat correct. The changes to add two REV instructions per
bitcast were pretty mechanical, and once I'd done that I threw the resulting
.td at a script I wrote which combined the two REVs together (and added
an EXT instruction, for f128) based on an instruction description I gave it.

This was much less prone to error than doing it all manually, plus my brain
would not just have melted but would have vapourised.

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

9 years ago[ARM64-BE] Predicate VLDR/VSTR for vectors as little-endian only. We must use LD1...
James Molloy [Wed, 7 May 2014 11:28:45 +0000 (11:28 +0000)]
[ARM64-BE] Predicate VLDR/VSTR for vectors as little-endian only. We must use LD1/ST1 on big-endian.

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

9 years ago[ARM64-BE] Make big endian (scalar) argument passing work correctly.
James Molloy [Wed, 7 May 2014 11:28:36 +0000 (11:28 +0000)]
[ARM64-BE] Make big endian (scalar) argument passing work correctly.

This completes the port of r204814 (cpirker "AArch64_BE function argument
passing for ARM ABI") from AArch64 to ARM64, and fixes a bunch of issues
found during later development along the way. The biggest of these was
that the alignment fixup logic wasn't replicated into all the places it
should have been.

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

9 years agoMergeFunctions Pass, introduced total ordering among values.
Stepan Dyatkovskiy [Wed, 7 May 2014 11:11:39 +0000 (11:11 +0000)]
MergeFunctions Pass, introduced total ordering among values.

This is a third patch of patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).

This patch description:
Being comparing functions we need to compare values we meet at left and
right sides.
Its easy to sort things out for external values. It just should be
the same value at left and right.
But for local values (those were introduced inside function body)
we have to ensure they were introduced at exactly the same place,
and plays the same role.

In short, patch introduces values serial numbering and comparison routine.
The last one compares two values by their serial numbers.

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

9 years agoAArch64/ARM64: run test on ARM64 too.
Tim Northover [Wed, 7 May 2014 10:47:04 +0000 (10:47 +0000)]
AArch64/ARM64: run test on ARM64 too.

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

9 years agoAArch64/ARM64: put annotation in test
Tim Northover [Wed, 7 May 2014 10:47:00 +0000 (10:47 +0000)]
AArch64/ARM64: put annotation in test

It makes finding already covered tests much easier with "grep -L
arm64".

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

9 years agoAArch64/ARM64: disable test directory if ARM64 not present
Tim Northover [Wed, 7 May 2014 10:42:06 +0000 (10:42 +0000)]
AArch64/ARM64: disable test directory if ARM64 not present

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

9 years ago[mips] Split Instruction.Predicates into smaller lists and re-join them with !listconcat
Daniel Sanders [Wed, 7 May 2014 10:27:09 +0000 (10:27 +0000)]
[mips] Split Instruction.Predicates into smaller lists and re-join them with !listconcat

Summary:
The overall idea is to chop the Predicates list into subsets that are
usually overridden independently. This allows subclasses to partially
override the predicates of their superclasses without having to re-add all
the existing predicates.

This patch starts the process by moving HasStdEnc into a new
EncodingPredicates list and almost everything else into
AdditionalPredicates.

It has revealed a couple likely bugs where 'let Predicates' has removed
the HasStdEnc predicate.

No functional change (confirmed by diffing tablegen-erated files).

Depends on D3549, D3506

Reviewers: vmedic

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

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

9 years ago[tablegen] Add !listconcat operator with the similar semantics as !strconcat
Daniel Sanders [Wed, 7 May 2014 10:13:19 +0000 (10:13 +0000)]
[tablegen] Add !listconcat operator with the similar semantics as !strconcat

Summary:
It concatenates two or more lists. In addition to the !strconcat semantics
the lists must have the same element type.

My overall aim is to make it easy to append to Instruction.Predicates
rather than override it. This can be done by concatenating lists passed as
arguments, or by concatenating lists passed in additional fields.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: hfinkel, llvm-commits

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

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

9 years ago[mips] Move HasStdEnc to the front of the predicates lists.
Daniel Sanders [Wed, 7 May 2014 09:58:05 +0000 (09:58 +0000)]
[mips] Move HasStdEnc to the front of the predicates lists.

Summary:
This will make it easier to prove that a more complicated change in the
following commit is non-functional.

No functional change.

Depends on D3506

Reviewers: vmedic

Reviewed By: vmedic

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

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

9 years ago[BUG][REFACTOR]
Zinovy Nis [Wed, 7 May 2014 09:51:22 +0000 (09:51 +0000)]
[BUG][REFACTOR]
1) Fix for printing debug locations for absolute paths.
2) Location printing is moved into public method DebugLoc::print() to avoid re-inventing the wheel.

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

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

9 years agoSecond patch of patch series that improves MergeFunctions performance time from O...
Stepan Dyatkovskiy [Wed, 7 May 2014 09:05:10 +0000 (09:05 +0000)]
Second patch of patch series that improves MergeFunctions performance time from O(N*N) to
O(N*log(N)). The idea is to introduce total ordering among functions set.
It allows to build binary tree and perform function look-up procedure in O(log(N)) time.

This patch description:
Introduced total ordering among constants implemented in cmpConstants method.
Method performs lexicographical comparison between constants represented as
hypothetical numbers of next format:
<bitcastability-trait><raw-bit-contents>

Please, read cmpConstants declaration comments for more details.

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

9 years agoWork-around MSVS build breakage due to r208148
Timur Iskhodzhanov [Wed, 7 May 2014 08:52:13 +0000 (08:52 +0000)]
Work-around MSVS build breakage due to r208148

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

9 years ago[asan] Add a flag to control asm instrumentation.
Evgeniy Stepanov [Wed, 7 May 2014 07:54:11 +0000 (07:54 +0000)]
[asan] Add a flag to control asm instrumentation.

With this change, asm instrumentation is disabled by default.

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

9 years agoAllow using normal .eh_frame based unwinding on ARM. Use the same
Joerg Sonnenberger [Wed, 7 May 2014 07:49:34 +0000 (07:49 +0000)]
Allow using normal .eh_frame based unwinding on ARM. Use the same
encodings as x86. Use this exception model for NetBSD.

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

9 years agoPR19562: DebugInfo temporary MDNode leak: Don't include a temporary node to replace...
David Blaikie [Wed, 7 May 2014 06:08:28 +0000 (06:08 +0000)]
PR19562: DebugInfo temporary MDNode leak: Don't include a temporary node to replace with a variable list for methods, since they're always declarations and thus never include variables

This field is used for a list of variables to ensure they are not lost
during optimization (they're only included when optimizations are
enabled).

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

9 years ago[C++11] Add NArySCEV->Operands iterator range
Tobias Grosser [Wed, 7 May 2014 06:07:47 +0000 (06:07 +0000)]
[C++11] Add NArySCEV->Operands iterator range

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

9 years ago[obj2yaml] Recognize input file format using llvm::object::ObjectFile
Simon Atanasyan [Wed, 7 May 2014 05:18:51 +0000 (05:18 +0000)]
[obj2yaml] Recognize input file format using llvm::object::ObjectFile
interface methods isCOFF().

The '-coff' command line option has been removed. It was not used in any
test cases.

The patch reviewed by Michael Spencer.

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

9 years agoARM: mark additional instructions as MachineFrameSetup
Saleem Abdulrasool [Wed, 7 May 2014 03:03:31 +0000 (03:03 +0000)]
ARM: mark additional instructions as MachineFrameSetup

Mark up additional instructions which are part of the function prologue as
MachineFrameSetup.  These instructions are part of the function prologue,
emitted by the PEI pass to setup the stack for use in the activating frame.

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

9 years agoARM: fix WoA PEI instruction selection
Saleem Abdulrasool [Wed, 7 May 2014 03:03:27 +0000 (03:03 +0000)]
ARM: fix WoA PEI instruction selection

The ARM::BLX instruction is an ARM mode instruction.  The Windows on ARM target
is limited to Thumb instructions.  Correctly use the thumb mode tBLXr
instruction.  This would manifest as an errant write into the object file as the
instruction is 4-bytes in length rather than 2.  The result would be a corrupted
object file that would eventually result in an executable that would crash at
runtime.

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

9 years agollvm-cov: Document --no-output in the command guide
Justin Bogner [Wed, 7 May 2014 02:33:58 +0000 (02:33 +0000)]
llvm-cov: Document --no-output in the command guide

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

9 years agollvm-cov: Handle missing source files as GCOV does
Justin Bogner [Wed, 7 May 2014 02:11:23 +0000 (02:11 +0000)]
llvm-cov: Handle missing source files as GCOV does

If the source files referenced by a gcno file are missing, gcov
outputs a coverage file where every line is simply /*EOF*/.  This also
occurs for lines in the coverage that are past the end of a file that
is found.

This change mimics gcov.

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

9 years agollvm-cov: Implement --no-output
Justin Bogner [Wed, 7 May 2014 02:11:18 +0000 (02:11 +0000)]
llvm-cov: Implement --no-output

In gcov, there's a -n/--no-output option, which disables the writing
of any .gcov files, so that it emits only the summary info on stdout.
This implements the same behaviour in llvm-cov.

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

9 years ago[Support/MemoryBuffer] Remove the assertion that the file size did not shrink.
Argyrios Kyrtzidis [Tue, 6 May 2014 23:30:56 +0000 (23:30 +0000)]
[Support/MemoryBuffer] Remove the assertion that the file size did not shrink.

This can happen in practice with the user changing files and we can recover from it.

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

9 years agoFix ASan init function detection after clang r208128.
Nico Weber [Tue, 6 May 2014 23:17:26 +0000 (23:17 +0000)]
Fix ASan init function detection after clang r208128.

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

9 years agoSpecial case aliases in GlobalValue::getSection.
Rafael Espindola [Tue, 6 May 2014 22:44:30 +0000 (22:44 +0000)]
Special case aliases in GlobalValue::getSection.

This is similar to the getAlignment patch, but is done just for
completeness. It looks like we never call getSection on an alias. All the
tests still pass if the if is replaced with an assert.

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

9 years agoUpdate an embarassing out-of-date comment.
Andrew Trick [Tue, 6 May 2014 22:18:43 +0000 (22:18 +0000)]
Update an embarassing out-of-date comment.

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

9 years agoUse a range based for loop for the SubtargetFeatures print function.
Eric Christopher [Tue, 6 May 2014 21:20:29 +0000 (21:20 +0000)]
Use a range based for loop for the SubtargetFeatures print function.

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

9 years agoRevert "Try simplifying LexicalScopes ownership again."
David Blaikie [Tue, 6 May 2014 21:07:17 +0000 (21:07 +0000)]
Revert "Try simplifying LexicalScopes ownership again."

Speculatively reverting due to a suspicious failure on a Windows
buildbot.

This reverts commit 10c37a012ea11596d44cd9059fe09c959caf30c8.

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

9 years agoFix odd formatting that snuck into last patch.
Eric Christopher [Tue, 6 May 2014 21:04:27 +0000 (21:04 +0000)]
Fix odd formatting that snuck into last patch.

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

9 years agoIf a function needs a frame pointer, but r11 (aka fp) has not been used,
Joerg Sonnenberger [Tue, 6 May 2014 20:43:01 +0000 (20:43 +0000)]
If a function needs a frame pointer, but r11 (aka fp) has not been used,
remove it from the list of unspilled registers. Otherwise the following
attempt to keep the stack aligned by picking an extra GPR register to
spill will not work as it picks up r11.

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

9 years agoArrayRef-ize the Feature and Processor tables for SubtargetFeatures.
Eric Christopher [Tue, 6 May 2014 20:23:04 +0000 (20:23 +0000)]
ArrayRef-ize the Feature and Processor tables for SubtargetFeatures.
This removes arguments passed everywhere and allows the use of
standard iteration over lists.
Should be no functional change.

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

9 years agoCopy the full TailCallKind in CallInst::clone_impl
Reid Kleckner [Tue, 6 May 2014 20:08:20 +0000 (20:08 +0000)]
Copy the full TailCallKind in CallInst::clone_impl

Split from the musttail inliner change.  This will be covered by an opt
test when the inliner change lands.

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

9 years agoDo not make -pass-remarks additive.
Diego Novillo [Tue, 6 May 2014 19:14:00 +0000 (19:14 +0000)]
Do not make -pass-remarks additive.

Summary:
When I initially introduced -pass-remarks, I thought it would be a
neat idea to make it additive. So, if one used it as:

$ llc -pass-remarks=inliner --pass-remarks=loop.*

the compiler would build the regular expression '(inliner)|(loop.*)'.

The more I think about it, the more I regret it. This is not how
other flags work. The standard semantics are right-to-left overrides.

This is how clang interprets -Rpass. And I think the two should be
compatible in this respect.

Reviewers: qcolombet

Subscribers: llvm-commits

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

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

9 years agoTTI: Estimate @llvm.fmuladd cost as fmul + fadd when FMA's aren't legal on the target.
Benjamin Kramer [Tue, 6 May 2014 18:36:23 +0000 (18:36 +0000)]
TTI: Estimate @llvm.fmuladd cost as fmul + fadd when FMA's aren't legal on the target.

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

9 years ago[X86] Improve the lowering of BITCAST dag nodes from type f64 to type v2i32 (and...
Andrea Di Biagio [Tue, 6 May 2014 17:09:03 +0000 (17:09 +0000)]
[X86] Improve the lowering of BITCAST dag nodes from type f64 to type v2i32 (and vice versa).

Before this patch, the backend always emitted a store+load sequence to
bitconvert from f64 to i64 the input operand of a ISD::BITCAST dag node that
performed a bitconvert from type MVT::f64 to type MVT::v2i32. The resulting
i64 node was then used to build a v2i32 vector.

With this patch, the backend now produces a cheaper SCALAR_TO_VECTOR from
MVT::f64 to MVT::v2f64. That SCALAR_TO_VECTOR is then followed by a "free"
bitcast to type MVT::v4i32. The elements of the resulting
v4i32 are then extracted to build a v2i32 vector (which is illegal and
therefore promoted to MVT::v2i64).

This is in general cheaper than emitting a stack store+load sequence
to bitconvert the operand from type f64 to type i64.

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

9 years agoImplememting named register intrinsics
Renato Golin [Tue, 6 May 2014 16:51:25 +0000 (16:51 +0000)]
Implememting named register intrinsics

This patch implements the infrastructure to use named register constructs in
programs that need access to specific registers (bare metal, kernels, etc).

So far, only the stack pointer is supported as a technology preview, but as it
is, the intrinsic can already support all non-allocatable registers from any
architecture.

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

9 years agoSpecial case aliases in GlobalValue::getAlignment.
Rafael Espindola [Tue, 6 May 2014 16:48:58 +0000 (16:48 +0000)]
Special case aliases in GlobalValue::getAlignment.

An alias has the address of what it points to, so it also has the same
alignment.

This allows a few optimizations to see past aliases for free.

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

9 years agoHave the SubtargetFeature help routine just not return a number and
Eric Christopher [Tue, 6 May 2014 16:29:50 +0000 (16:29 +0000)]
Have the SubtargetFeature help routine just not return a number and
fall back to the normal path without a cpu. While doing this fix
llc to just exit when we don't have a module to process instead of
asserting.

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

9 years agoAdd some details to the llvm-cov documentation. <rdar://problem/15819496>
Bob Wilson [Tue, 6 May 2014 15:58:06 +0000 (15:58 +0000)]
Add some details to the llvm-cov documentation. <rdar://problem/15819496>

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

9 years agoBe more strict about not allowing setSection on aliases.
Rafael Espindola [Tue, 6 May 2014 14:59:14 +0000 (14:59 +0000)]
Be more strict about not allowing setSection on aliases.

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

9 years agoBe more strict about not calling setAlignment on global aliases.
Rafael Espindola [Tue, 6 May 2014 14:51:36 +0000 (14:51 +0000)]
Be more strict about not calling setAlignment on global aliases.

The fact that GlobalAlias::setAlignment exists at all is a side effect of
how the classes are organized, it should never be used.

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

9 years agoAArch64/ARM64: implement diagnosis of unpredictable loads & stores
Tim Northover [Tue, 6 May 2014 14:15:14 +0000 (14:15 +0000)]
AArch64/ARM64: implement diagnosis of unpredictable loads & stores

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

9 years agoAArch64/ARM64: add two more MC tests to ARM64 set.
Tim Northover [Tue, 6 May 2014 12:50:58 +0000 (12:50 +0000)]
AArch64/ARM64: add two more MC tests to ARM64 set.

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

9 years agoAArch64/ARM64: enable MC-level diagnostic tests for NEON insts.
Tim Northover [Tue, 6 May 2014 12:50:55 +0000 (12:50 +0000)]
AArch64/ARM64: enable MC-level diagnostic tests for NEON insts.

Obviously we can't expect the two backends to produce identical diagnostics,
since what's possible depends quite a bit on how the .td files are structured.
I think the ARM64 diagnostics are basically of the same quality in all the
changed cases, so I've split the CHECK lines.

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

9 years agoAArch64/ARM64: make NEON vector list parsing a bit more robust
Tim Northover [Tue, 6 May 2014 12:50:51 +0000 (12:50 +0000)]
AArch64/ARM64: make NEON vector list parsing a bit more robust

It doesn't change the results, but it seems silly not to diagnose obvious
problems early on.

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

9 years agoAArch64/ARM64: add more specific diagnostic for floating imm 0.0.
Tim Northover [Tue, 6 May 2014 12:50:47 +0000 (12:50 +0000)]
AArch64/ARM64: add more specific diagnostic for floating imm 0.0.

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

9 years agoAArch64/ARM64: add more specific diagnostic for invalid vector lanes
Tim Northover [Tue, 6 May 2014 12:50:44 +0000 (12:50 +0000)]
AArch64/ARM64: add more specific diagnostic for invalid vector lanes

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

9 years agoAArch64/ARM64: produce more informative diagnostic assembling some immediates
Tim Northover [Tue, 6 May 2014 11:18:53 +0000 (11:18 +0000)]
AArch64/ARM64: produce more informative diagnostic assembling some immediates

No tests here, they'll be added when the entire neon-diagnostics.s test from
AArch64 is enabled.

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

9 years agoARM: For thumb fixups store halfwords high first and low second
Christian Pirker [Tue, 6 May 2014 10:05:11 +0000 (10:05 +0000)]
ARM: For thumb fixups store halfwords high first and low second

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

9 years ago[ARM64] Enable alignment control option in front-end for ARM64.
Kevin Qin [Tue, 6 May 2014 09:48:52 +0000 (09:48 +0000)]
[ARM64] Enable alignment control option in front-end for ARM64.

This is the modification in llvm part.

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

9 years agoDisable -Wcomment when building with GCC.
Evgeniy Stepanov [Tue, 6 May 2014 09:46:06 +0000 (09:46 +0000)]
Disable -Wcomment when building with GCC.

GCC version of -Wcomment is not compatible with ascii art graph diagrams.

Reverts r207629.

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

9 years agoUpdate programmers manual to cover llvm::function_ref, and add a note to the
Richard Smith [Tue, 6 May 2014 07:45:39 +0000 (07:45 +0000)]
Update programmers manual to cover llvm::function_ref, and add a note to the
coding standard suggesting using it instead of the (unavailable) std::function.

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

9 years agoUse X86 memory operand enums instead of hardcoding.
Craig Topper [Tue, 6 May 2014 07:04:32 +0000 (07:04 +0000)]
Use X86 memory operand enums instead of hardcoding.

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

9 years agoFix some obvious Doxygen comment bugs.
Owen Anderson [Tue, 6 May 2014 05:05:59 +0000 (05:05 +0000)]
Fix some obvious Doxygen comment bugs.

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

9 years agoUpdate comment from a recent commit.
David Blaikie [Tue, 6 May 2014 03:53:10 +0000 (03:53 +0000)]
Update comment from a recent commit.

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

9 years ago[Build] Add rule to generate fully-expanded .td file
Adam Nemet [Tue, 6 May 2014 03:49:45 +0000 (03:49 +0000)]
[Build] Add rule to generate fully-expanded .td file

I found it useful in the past and now again to have a version of the .td file
where all the records are expanded.  This adds a makefile rule to generate
this on demand.

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

9 years agoPR19598: Provide the ability to RAUW a declaration with itself, creating a non-tempor...
David Blaikie [Tue, 6 May 2014 03:41:57 +0000 (03:41 +0000)]
PR19598: Provide the ability to RAUW a declaration with itself, creating a non-temporary copy and using that to RAUW.

Also, provide the ability to create temporary and non-temporary
declarations, as not all declarations may be replaced by definitions
later on.

This provides the necessary infrastructure for Clang to fix PR19598,
leaking temporary MDNodes in Clang's debug info generation.

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

9 years agoRevert "Walk back commits for unused function parameters - they're still being"
Eric Christopher [Tue, 6 May 2014 02:37:26 +0000 (02:37 +0000)]
Revert "Walk back commits for unused function parameters - they're still being"

this reapplies 208012 and 208002.

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

9 years agoblockfreq: Move include to .cpp
Duncan P. N. Exon Smith [Tue, 6 May 2014 01:57:42 +0000 (01:57 +0000)]
blockfreq: Move include to .cpp

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

9 years agoRevert accidentally-committed files.
Richard Smith [Tue, 6 May 2014 01:46:26 +0000 (01:46 +0000)]
Revert accidentally-committed files.

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

9 years agoRe-commit r208025, reverted in r208030, with a fix for a conformance issue
Richard Smith [Tue, 6 May 2014 01:44:26 +0000 (01:44 +0000)]
Re-commit r208025, reverted in r208030, with a fix for a conformance issue
which GCC detects and Clang does not!

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

9 years agoRevert r208025, which made buildbots unhappy for unknown reasons.
Richard Smith [Tue, 6 May 2014 01:26:00 +0000 (01:26 +0000)]
Revert r208025, which made buildbots unhappy for unknown reasons.

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

9 years agoFix i128 div/mod on mingw64
Reid Kleckner [Tue, 6 May 2014 01:20:42 +0000 (01:20 +0000)]
Fix i128 div/mod on mingw64

The Win64 docs are very clear that anything larger than 8 bytes is
passed by reference, and GCC MinGW64 honors that for __modti3 and
friends.

Patch by Jameson Nash!

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

9 years ago[Support/MemoryBuffer] Rename IsVolatile -> IsVolatileSize and add a comment about...
Argyrios Kyrtzidis [Tue, 6 May 2014 01:03:52 +0000 (01:03 +0000)]
[Support/MemoryBuffer] Rename IsVolatile -> IsVolatileSize and add a comment about the use case for the new parameter.

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

9 years agoAdd llvm::function_ref (and a couple of uses of it), representing a type-erased refer...
Richard Smith [Tue, 6 May 2014 01:01:29 +0000 (01:01 +0000)]
Add llvm::function_ref (and a couple of uses of it), representing a type-erased reference to a callable object.

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

9 years agoInclude intrin.h before windows.h as a workaround for the x64 self-host
Reid Kleckner [Tue, 6 May 2014 00:57:33 +0000 (00:57 +0000)]
Include intrin.h before windows.h as a workaround for the x64 self-host

On x64, windows.h doesn't include intrin.h for intrinsics.  It just
declares them in the global namespace and uses them, expecting the
compiler to lower it as a builtin.  We basically need to do this in
clang, eventually.

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

9 years ago[Support/MemoryBuffer] Move the IsVolatile check inside shouldUseMmap() and make...
Argyrios Kyrtzidis [Tue, 6 May 2014 00:51:45 +0000 (00:51 +0000)]
[Support/MemoryBuffer] Move the IsVolatile check inside shouldUseMmap() and make sure to zero-initialize the rest
of the buffer if we unexpectedly reach end-of-file while reading.

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

9 years agoDetabify.
Nick Lewycky [Tue, 6 May 2014 00:46:20 +0000 (00:46 +0000)]
Detabify.

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

9 years agoImprove 'tail' call marking in TRE. A bootstrap of clang goes from 375k calls marked...
Nick Lewycky [Mon, 5 May 2014 23:59:03 +0000 (23:59 +0000)]
Improve 'tail' call marking in TRE. A bootstrap of clang goes from 375k calls marked tail in the IR to 470k, however this improvement does not carry into an improvement of the call/jmp ratio on x86. The most common pattern is a tail call + br to a block with nothing but a 'ret'.

The number of tail call to loop conversions remains the same (1618 by my count).

The new algorithm does a local scan over the use-def chains to identify local "alloca-derived" values, as well as points where the alloca could escape. Then, a visit over the CFG marks blocks as being before or after the allocas have escaped, and annotates the calls accordingly.

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

9 years agoWalk back commits for unused function parameters - they're still being
Eric Christopher [Mon, 5 May 2014 23:26:59 +0000 (23:26 +0000)]
Walk back commits for unused function parameters - they're still being
used via dragonegg for now.

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

9 years agoReapply: Add slp vectorization to LTO passes. The bug it exposed has been fixed by...
Yi Jiang [Mon, 5 May 2014 23:14:46 +0000 (23:14 +0000)]
Reapply: Add slp vectorization to LTO passes. The bug it exposed has been fixed by r207983. <radar://16641956>

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

9 years agoRemove a now unnecessary function since all calls have one version
Eric Christopher [Mon, 5 May 2014 22:36:07 +0000 (22:36 +0000)]
Remove a now unnecessary function since all calls have one version
and inline it into its caller.

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

9 years agoRemove a call to std::exit in a library. Make "Help" return
Eric Christopher [Mon, 5 May 2014 22:01:47 +0000 (22:01 +0000)]
Remove a call to std::exit in a library. Make "Help" return
a 0 as a default answer.

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

9 years ago[Support/MemoryBuffer] Introduce a boolean parameter (false by default) 'IsVolatile...
Argyrios Kyrtzidis [Mon, 5 May 2014 21:55:51 +0000 (21:55 +0000)]
[Support/MemoryBuffer] Introduce a boolean parameter (false by default) 'IsVolatile' for the open file functions.

This provides a hint that the file may be changing often so mmap is avoided.

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

9 years agoFix typo.
Eric Christopher [Mon, 5 May 2014 21:50:57 +0000 (21:50 +0000)]
Fix typo.

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