121022 Commits

Author SHA1 Message Date
Matt Arsenault
7b04c26341 AMDGPU/SI: Make comments more precise.
True branch instructions do behave as expected with liveness.

Avoid the phrasing "branch decision is based on a value in an SGPR"
because this could be misleading. A VALU compare instruction's
result is still based on an SGPR, even though that condition
may be divergent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245131 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-15 00:12:30 +00:00
Sanjay Patel
3b0b6f081a make current codegen visible in the checks, so we can decide if it's right
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245120 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 23:03:01 +00:00
Nick Lewycky
b98e71a227 Fix a crash where a utility function wasn't aware of fcmp vectors and created a value with the wrong type. Fixes PR24458!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245119 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 22:46:49 +00:00
Bjarke Hammersholt Roune
0498bd2ae8 [SCEV] Apply NSW and NUW flags via poison value analysis for sub, mul and shl
Summary:
http://reviews.llvm.org/D11212 made Scalar Evolution able to propagate NSW and NUW flags from instructions to SCEVs for add instructions. This patch expands that to sub, mul and shl instructions.

This change makes LSR able to generate pointer induction variables for loops like these, where the index is 32 bit and the pointer is 64 bit:

  for (int i = 0; i < numIterations; ++i)
    sum += ptr[i - offset];

  for (int i = 0; i < numIterations; ++i)
    sum += ptr[i * stride];

  for (int i = 0; i < numIterations; ++i)
    sum += ptr[3 * (i << 7)];


Reviewers: atrick, sanjoy

Subscribers: sanjoy, majnemer, hfinkel, llvm-commits, meheff, jingyue, eliben

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245118 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 22:45:26 +00:00
Pat Gavlin
08f721d1de Add a target environment for CoreCLR.
Although targeting CoreCLR is similar to targeting MSVC, there are
certain important differences that the backend must be aware of
(e.g. differences in stack probes, EH, and library calls).

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245115 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 22:41:43 +00:00
Sanjay Patel
867507a773 make current codegen visible in the checks, so we can decide if it's right
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245108 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 22:10:59 +00:00
Ahmed Bougacha
e9da6d5d72 [AArch64] Fix FMLS scalar-indexed-from-2s-after-neg patterns.
We canonicalize V64 vectors to V128 through insert_subvector: the other
FMLA/FMLS/FMUL/FMULX patterns match that already, but this one doesn't,
so we'd fail to match fmls and generate fneg+fmla instead.
The vector equivalents are already tested and functional.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245107 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 22:06:05 +00:00
Evgeniy Stepanov
fa995560c2 [msan] Fix handling of musttail calls.
MSan instrumentation for return values of musttail calls is not
allowed by the IR constraints, and not needed at the same time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245106 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 22:03:50 +00:00
Alexei Starovoitov
14265996c5 [bpf] add documentation and instruction set description
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245105 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 22:00:45 +00:00
Alex Lorenz
b445d0c988 MIR Serialization: Serialize the '.cfi_same_value' CFI directive.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245103 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 21:55:58 +00:00
Alex Lorenz
643f4bcad9 MIR Serialization: Serialize the external symbol call entry pseudo source
values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245098 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 21:14:50 +00:00
Alex Lorenz
78f9b57b68 MIR Serialization: Serialize the global value call entry pseudo source values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245097 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 21:08:30 +00:00
Michael Kruse
87e0087082 [RegionInfo] Remove unused and broken function splitBlock
Summary:
It always makes NewBB the entry of the region instead of OldBB. This breaks if there are edges from inside the region to OldBB. OldBB is moved out of the region and hence there are exiting edges to OldBB and the region's exit block, contradicting the single-exit condition for regions.

The only use from Polly is going to be removed, hence I propose to remove the function completely.

Reviewers: grosser

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245092 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 20:20:00 +00:00
Tom Stellard
4561759558 AMDGPU/SI: Add missing spill class
The compiler was failing to spill for some shaders.

Patch By: Axel Davy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245087 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 19:46:05 +00:00
Renato Golin
5562df708a Revert "[ARM] Fix MachO CPU Subtype selection"
This reverts commit r245081, as it breaks many builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245086 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 19:35:47 +00:00
Alex Lorenz
6ad9b2163c MIR Serialization: Serialize the 'internal' register operand flag.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245085 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 19:07:07 +00:00
Alex Lorenz
46d5ea66a3 MIR Serialization: Serialize the bundled machine instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245082 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 18:57:24 +00:00
Vedant Kumar
7f3292c85e [ARM] Fix MachO CPU Subtype selection
This patch makes the Darwin ARM backend take advantage of TargetParser.  It
also teaches TargetParser about ARMV7K for the first time. This makes target
triple parsing more consistent across llvm.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245081 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 18:36:47 +00:00
Sanjay Patel
09ec2d3ce3 [x86] fix allowsMisalignedMemoryAccess() implementation
This patch fixes the x86 implementation of allowsMisalignedMemoryAccess() to correctly
return the 'Fast' output parameter for 32-byte accesses. To test that, an existing load
merging optimization is changed to use the TLI hook. This exposes a shortcoming in the
current logic and results in the regression test update. Changing other direct users of
the isUnalignedMem32Slow() x86 CPU attribute would be a follow-on patch.

Without the fix in allowsMisalignedMemoryAccesses(), we will infinite loop when targeting
SandyBridge because LowerINSERT_SUBVECTOR() creates 32-byte loads from two 16-byte loads
while PerformLOADCombine() splits them back into 16-byte loads.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245075 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 17:53:40 +00:00
Vedant Kumar
fa57ebccb8 [test] Testing write access to llvm
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245074 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 17:42:50 +00:00
Justin Bogner
afc9925923 [sancov] Fix an unused variable warning introduced in r245067
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245072 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 17:03:45 +00:00
Kit Barton
e4ca1fb9f8 Reverting patch r244235.
This patch will be redone in a different way. See
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20150810/292978.html
for more details.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245071 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 16:54:32 +00:00
Reid Kleckner
185d96c36b [cmake] Start adding support for LLVM_USE_SANITIZER=Address on Windows
Pass "-fsanitize=address" to the compiler and "-debug" to the linker.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245070 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 16:48:34 +00:00
Reid Kleckner
458a50de93 [sancov] Leave llvm.localescape in the entry block
Summary: Similar to the change we applied to ASan. The same test case works.

Reviewers: samsonov

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245067 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 16:45:42 +00:00
Chad Rosier
4ff88e3088 Cleanup test whitespace or lack thereof. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245065 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 16:34:15 +00:00
Chris Bieneman
0a8f7a16c0 [CMake] Fix PR14200, llvm-config output misses -fno-rtti
This change adds RTTI and Exception flags to llvm-config's cxxflags. This solution is a minimal patch to solve the issue, and is recommended for the 3.7 release branch. Tom Stellard's outstanding work is the longer term solution.

Patch By: David Wiberg

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245064 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 16:20:31 +00:00
Rafael Espindola
ea619d042f Revert "Centralize the information about which object format we are using."
This reverts commit r245047.

It was failing on the darwin bots. The problem was that when running

./bin/llc -march=msp430

llc gets to

  if (TheTriple.getTriple().empty())
    TheTriple.setTriple(sys::getDefaultTargetTriple());

Which means that we go with an arch of msp430 but a triple of
x86_64-apple-darwin14.4.0 which fails badly.

That code has to be updated to select a triple based on the value of
march, but that is not a trivial fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245062 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 15:48:41 +00:00
Davide Italiano
729c24b2e9 Convert tests under MC/ELF from macho-dump to llvm-readobj.
Yet another step towards deprecating macho-dump.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245059 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 15:16:37 +00:00
Sanjay Patel
22ac7abe6c don't repeaat function names in comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245058 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 15:11:42 +00:00
Rafael Espindola
b0a171f7a0 Centralize the information about which object format we are using.
Other than some places that were handling unknown as ELF, this should
have no change. The test updates are because we were detecting
arm-coff or x86_64-win64-coff as ELF targets before.

It is not clear if the enum should live on the Triple. At least now it lives
in a single location and should be easier to move somewhere else.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245047 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 13:31:17 +00:00
James Molloy
26e1739079 Separate out BDCE's analysis into a separate DemandedBits analysis.
This allows other areas of the compiler to use BDCE's bit-tracking.
NFCI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245039 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 11:09:09 +00:00
Simon Pilgrim
43a339e3bb Renamed min tests (typo)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245038 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 11:03:31 +00:00
James Molloy
f8e7c14a0b [AArch64] FMINNAN/FMAXNAN on f16 is not legal.
Spotted by Ahmed - in r244594 I inadvertently marked f16 min/max as legal.

I've reverted it here, and marked min/max on scalar f16's as promote. I've also added a testcase. The test just checks that the compiler doesn't fall over - it doesn't create fmin nodes for f16 yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245035 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 09:08:50 +00:00
Chandler Carruth
0d2d02d317 [PM/AA] Remove two no-op overridden functions that just delegated to the
base class anyways.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245034 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 08:39:32 +00:00
Adam Nemet
8452a3f46e [LVer] Remove unused Pass parameter from versionLoop, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245032 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 06:30:26 +00:00
Lang Hames
de445db1c4 [RuntimeDyld] Make sure code-sections aren't under-aligned.
Code-section alignment should be at least as high as the minimum
stub alignment. If the section alignment is lower it can cause
padding to be emitted resulting in alignment errors if the section
is mapped to a higher alignment on the target.

E.g. If a text section with a 4-byte alignment gets 4-bytes of
padding to guarantee 8-byte alignment for stubs but is re-mapped to
an 8-byte alignment on the target, the 4-bytes of padding will push
the stubs to 4-byte alignment causing a crash.

No test case: There is currently no way to control host section
alignment in llvm-rtdyld. This could be made testable by adding
a custom memory manager. I'll look at that in a follow-up patch.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245031 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 06:26:42 +00:00
David Majnemer
2dacece9e2 [IR] Add token types
This introduces the basic functionality to support "token types".
The motivation stems from the need to perform operations on a Value
whose provenance cannot be obscured.

There are several applications for such a type but my immediate
motivation stems from WinEH.  Our personality routine enforces a
single-entry - single-exit regime for cleanups.  After several rounds of
optimizations, we may be left with a terminator whose "cleanup-entry
block" is not entirely clear because control flow has merged two
cleanups together.  We have experimented with using labels as operands
inside of instructions which are not terminators to indicate where we
came from but found that LLVM does not expect such exotic uses of
BasicBlocks.

Instead, we can use this new type to clearly associate the "entry point"
and "exit point" of our cleanup.  This is done by having the cleanuppad
yield a Token and consuming it at the cleanupret.
The token type makes it impossible to obscure or otherwise hide the
Value, making it trivial to track the relationship between the two
points.

What is the burden to the optimizer?  Well, it turns out we have already
paid down this cost by accepting that there are certain calls that we
are not permitted to duplicate, optimizations have to watch out for
such instructions anyway.  There are additional places in the optimizer
that we will probably have to update but early examination has given me
the impression that this will not be heroic.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245029 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 05:09:07 +00:00
Karthik Bhat
20c7897930 Add support for cross block dse.
This patch enables dead stroe elimination across basicblocks.

Example:
define void @test_02(i32 %N) {
  %1 = alloca i32
  store i32 %N, i32* %1
  store i32 10, i32* @x
  %2 = load i32, i32* %1
  %3 = icmp ne i32 %2, 0
  br i1 %3, label %4, label %5

; <label>:4
  store i32 5, i32* @x
  br label %7

; <label>:5
  %6 = load i32, i32* @x
  store i32 %6, i32* @y
  br label %7

; <label>:7
  store i32 15, i32* @x
  ret void
}
In the above example dead store "store i32 5, i32* @x" is now eliminated.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245025 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 04:17:23 +00:00
Chandler Carruth
41bdb7ca96 [PM/AA] Run clang-format over the ObjCARC Alias Analysis code to
normalize its formatting before I make more substantial changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245024 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 03:57:00 +00:00
Chandler Carruth
416c002bf3 [PM/AA] Don't bother forward declaring Function and Value, just include
their headers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245023 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 03:55:36 +00:00
Saleem Abdulrasool
9465c3170c PowerPC: remove dead initialization (NFC)
Identified by the clang static analyzer.  No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245022 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 03:48:35 +00:00
Chandler Carruth
0d68ddf6ce [PM/AA] Extract the interface for GlobalsModRef into a header along with
its creation function.

This required shifting a bunch of method definitions to be out-of-line
so that we could leave most of the implementation guts in the .cpp file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245021 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 03:48:20 +00:00
Chandler Carruth
40e8a59ff9 [PM/AA] Hoist the interface to TBAA into a dedicated header along with
its creation function. Update the relevant includes accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245019 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 03:33:48 +00:00
Chandler Carruth
51d9f587b7 [PM/AA] Run clang-format over TBAA code to normalize the formatting
before making substantial changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245017 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 03:26:15 +00:00
Chandler Carruth
63147bd117 [PM/AA] Remove a stray #include that snuck in via copy/paste when
creating this header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245016 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 03:16:11 +00:00
Chandler Carruth
0293ed6a06 [PM/AA] Clean up the SCEV-AA comment formatting and typos.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245015 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 03:14:50 +00:00
Chandler Carruth
72644dfdcd [PM/AA] Run clang-format over the SCEV-AA code to normalize the
formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245014 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 03:12:16 +00:00
Chandler Carruth
217849dc42 [PM/AA] Hoist the SCEV-AA interface to its own header and pull the
creation function into that header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245013 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 03:11:16 +00:00
Chandler Carruth
01910b8f31 [PM/AA] Hoist ScopedNoAliasAA's interface into a header and move the
creation function there.

Same basic refactoring as the other alias analyses. Nothing special
required this time around.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245012 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 02:55:50 +00:00
Chandler Carruth
e115abc777 [PM/AA] Hoist the value handle definition for CFLAA into the header to
satisfy libc++'s std::forward_list which requires the value type to be
complete.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245011 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-14 02:50:34 +00:00