platform/upstream/llvm.git
10 years agoIR: Add Value::reverseUseList()
Duncan P. N. Exon Smith [Fri, 1 Aug 2014 23:28:49 +0000 (23:28 +0000)]
IR: Add Value::reverseUseList()

I'm going to use this to improve `verify-uselistorder`.  Part of PR5680.

llvm-svn: 214594

10 years agoPartiallyInlineLibCalls: Check sqrt result type before transforming it.
Peter Collingbourne [Fri, 1 Aug 2014 23:21:21 +0000 (23:21 +0000)]
PartiallyInlineLibCalls: Check sqrt result type before transforming it.

Some configure scripts declare this with the wrong prototype, which can lead
to an assertion failure.

llvm-svn: 214593

10 years agoverify-uselistorder: Move shuffleUseLists() out of lib/IR
Duncan P. N. Exon Smith [Fri, 1 Aug 2014 23:03:36 +0000 (23:03 +0000)]
verify-uselistorder: Move shuffleUseLists() out of lib/IR

`shuffleUseLists()` is only used in `verify-uselistorder`, so move it
there to avoid bloating other executables.  As a drive-by, update some
of the header docs.

This is part of PR5680.

llvm-svn: 214592

10 years agoCleanup this test some more.
Adrian Prantl [Fri, 1 Aug 2014 23:01:32 +0000 (23:01 +0000)]
Cleanup this test some more.

llvm-svn: 214591

10 years agoAdd the missing target triple to this testcase.
Adrian Prantl [Fri, 1 Aug 2014 23:01:30 +0000 (23:01 +0000)]
Add the missing target triple to this testcase.

llvm-svn: 214590

10 years agoFix test from r214577 for other timezones
Ben Langmuir [Fri, 1 Aug 2014 22:58:19 +0000 (22:58 +0000)]
Fix test from r214577 for other timezones

Unsurprisingly, changing a file modification time to a specific
date/time doesn't give the same epoch time everywhere. Just make the
file move into the past and look at only the first few digits of the
epoch time.

llvm-svn: 214589

10 years agoAttempt to increase the overall happiness of the MSCV-based buildbots.
Adrian Prantl [Fri, 1 Aug 2014 22:56:10 +0000 (22:56 +0000)]
Attempt to increase the overall happiness of the MSCV-based buildbots.

llvm-svn: 214588

10 years agoverify-uselistorder: Make the verification logic easier to reuse
Duncan P. N. Exon Smith [Fri, 1 Aug 2014 22:52:06 +0000 (22:52 +0000)]
verify-uselistorder: Make the verification logic easier to reuse

llvm-svn: 214587

10 years agoInstrProf: Update for LLVM API change
Justin Bogner [Fri, 1 Aug 2014 22:50:16 +0000 (22:50 +0000)]
InstrProf: Update for LLVM API change

We've added support for a multiple functions with the same name in
LLVM's profile data, so the lookup returning the function hash it
found doesn't make sense anymore. Update to pass in the hash we
expect.

This also adds a test that the version 1 format is still readable,
since the new API is expected to handle that.

llvm-svn: 214586

10 years agoInstrProf: Allow multiple functions with the same name
Justin Bogner [Fri, 1 Aug 2014 22:50:07 +0000 (22:50 +0000)]
InstrProf: Allow multiple functions with the same name

This updates the instrumentation based profiling format so that when
we have multiple functions with the same name (but different function
hashes) we keep all of them instead of rejecting the later ones.

There are a number of scenarios where this can come up where it's more
useful to keep multiple function profiles:

* Name collisions in unrelated libraries that are profiled together.
* Multiple "main" functions from multiple tools built against a common
  library.
* Combining profiles from different build configurations (ie, asserts
  and no-asserts)

The profile format now stores the number of counters between the hash
and the counts themselves, so that multiple sets of counts can be
stored. Since this is backwards incompatible, I've bumped the format
version and added some trivial logic to skip this when reading the old
format.

llvm-svn: 214585

10 years agoUseListOrder: Guarantee that shuffles change use-list order
Duncan P. N. Exon Smith [Fri, 1 Aug 2014 22:50:04 +0000 (22:50 +0000)]
UseListOrder: Guarantee that shuffles change use-list order

Change shuffleUseLists() always to change use-list order by rejecting
orders that have no changes.

This is part of PR5680.

llvm-svn: 214584

10 years agoFixed a problem in the Clang AST importer where
Sean Callanan [Fri, 1 Aug 2014 22:42:38 +0000 (22:42 +0000)]
Fixed a problem in the Clang AST importer where
we overrode debug information as the authoritative
source for type information, substituting types
from the Objective-C runtime.  The runtime should
never be the primary source.

<rdar://problem/16065049>

llvm-svn: 214583

10 years agoNotional simplification: defer emitting deferred inline methods until we finish
Richard Smith [Fri, 1 Aug 2014 22:42:16 +0000 (22:42 +0000)]
Notional simplification: defer emitting deferred inline methods until we finish
emitting everything, rather than potentially doing this reentrantly.

llvm-svn: 214582

10 years agoUseListOrder: Fix blockaddress use-list order
Duncan P. N. Exon Smith [Fri, 1 Aug 2014 22:27:19 +0000 (22:27 +0000)]
UseListOrder: Fix blockaddress use-list order

`parseBitcodeFile()` uses the generic `getLazyBitcodeFile()` function as
a helper.  Since `parseBitcodeFile()` isn't actually lazy -- it calls
`MaterializeAllPermanently()` -- bypass the unnecessary call to
`materializeForwardReferencedFunctions()` by extracting out a common
helper function.  This removes the last of the use-list churn caused by
blockaddresses.

This highlights that we can't reproduce use-list order of globals and
constants when parsing lazily -- but that's necessarily out of scope.
When we're parsing lazily, we never have all the functions in memory, so
the use-lists of globals (and constants that reference globals) are
always incomplete.

This is part of PR5680.

llvm-svn: 214581

10 years ago[X86] Simplify X87 stackifier pass.
Akira Hatanaka [Fri, 1 Aug 2014 22:19:41 +0000 (22:19 +0000)]
[X86] Simplify X87 stackifier pass.

Stop using ST registers for function returns and inline-asm instructions and use
FP registers instead. This allows removing a large amount of code in the
stackifier pass that was needed to track register liveness and handle copies
between ST and FP registers and function calls returning floating point values.

It also fixes a bug which manifests when an ST register defined by an
inline-asm instruction was live across another inline-asm instruction, as shown
in the following sequence of machine instructions:

1. INLINEASM <es:frndint> $0:[regdef], %ST0<imp-def,tied5>
2. INLINEASM <es:fldcw $0>
3. %FP0<def> = COPY %ST0

<rdar://problem/16952634>

llvm-svn: 214580

10 years agoActually fix problem with modules buildbot this time.
Richard Smith [Fri, 1 Aug 2014 22:17:28 +0000 (22:17 +0000)]
Actually fix problem with modules buildbot this time.

llvm-svn: 214579

10 years agollvm/test/CodeGen/Mips/cconv/arguments-varargs.ll: Add explicit -mtriple=(mips|mipsel...
NAKAMURA Takumi [Fri, 1 Aug 2014 22:15:38 +0000 (22:15 +0000)]
llvm/test/CodeGen/Mips/cconv/arguments-varargs.ll: Add explicit -mtriple=(mips|mipsel)-linux on 4 lines.

llvm-svn: 214578

10 years agoAdd -fbuild-session-file as an alternative to -fbuild-session-timestamp
Ben Langmuir [Fri, 1 Aug 2014 22:12:21 +0000 (22:12 +0000)]
Add -fbuild-session-file as an alternative to -fbuild-session-timestamp

Build systems tend to traffic in files and modification times, so having
them touch a file at the beginning of the build can be easier than
having them update the compile command they use every time they build.

llvm-svn: 214577

10 years agoDebug info: Infrastructure to support debug locations for fragmented
Adrian Prantl [Fri, 1 Aug 2014 22:11:58 +0000 (22:11 +0000)]
Debug info: Infrastructure to support debug locations for fragmented
variables (for example, by-value struct arguments passed in registers, or
large integer values split across several smaller registers).
On the IR level, this adds a new type of complex address operation OpPiece
to DIVariable that describes size and offset of a variable fragment.
On the DWARF emitter level, all pieces describing the same variable are
collected, sorted and emitted as DWARF expressions using the DW_OP_piece
and DW_OP_bit_piece operators.

http://reviews.llvm.org/D3373
rdar://problem/15928306

What this patch doesn't do / Future work:
- This patch only adds the backend machinery to make this work, patches
  that change SROA and SelectionDAG's type legalizer to actually create
  such debug info will follow. (http://reviews.llvm.org/D2680)
- Making the DIVariable complex expressions into an argument of dbg.value
  will reduce the memory footprint of the debug metadata.
- The sorting/uniquing of pieces should be moved into DebugLocEntry,
  to facilitate the merging of multi-piece entries.

llvm-svn: 214576

10 years agoDon't hand compute mydir, do it using "TestBase.compute_mydir(__file__)".
Greg Clayton [Fri, 1 Aug 2014 22:10:13 +0000 (22:10 +0000)]
Don't hand compute mydir, do it using "TestBase.compute_mydir(__file__)".

llvm-svn: 214575

10 years ago[SDAG] MorphNodeTo recursively deletes dead operands of the old
Chandler Carruth [Fri, 1 Aug 2014 22:09:43 +0000 (22:09 +0000)]
[SDAG] MorphNodeTo recursively deletes dead operands of the old
fromulation of the node, which isn't really the desired behavior from
within the combiner or legalizer, but is necessary within ISel. I've
added a hopefully helpful comment and fixed the only two places where
this took place.

Yet another step toward the combiner and legalizer not needing to use
update listeners with virtual calls to manage the worklists behind
legalization and combining.

llvm-svn: 214574

10 years ago[unwinder] Tell the assembler that functions are functions so that the linker knows...
Jonathan Roelofs [Fri, 1 Aug 2014 22:02:21 +0000 (22:02 +0000)]
[unwinder] Tell the assembler that functions are functions so that the linker knows how to link them.

This fixes an interworking problem when the unwinder/libcxxabi is built for
Thumb. When unw_getcontext is not marked as a function, 'bl' is used for the
branch instead of 'bx'.

llvm-svn: 214573

10 years agoRevert "R600: Move code for generating REGISTER_LOAD into R600ISelLowering.cpp"
Tom Stellard [Fri, 1 Aug 2014 21:55:50 +0000 (21:55 +0000)]
Revert "R600: Move code for generating REGISTER_LOAD into R600ISelLowering.cpp"

This reverts commit r214566.

I did not mean to commit this yet.

llvm-svn: 214572

10 years agoMS inline asm: Hide symbol to attempt to fix test failure on darwin
Reid Kleckner [Fri, 1 Aug 2014 21:54:37 +0000 (21:54 +0000)]
MS inline asm: Hide symbol to attempt to fix test failure on darwin

If the symbol comes from an external DSO, it apparently requires
indirection through a register.

llvm-svn: 214571

10 years agoBitcodeReader: Change mechanics of BlockAddress forward references, NFC
Duncan P. N. Exon Smith [Fri, 1 Aug 2014 21:51:52 +0000 (21:51 +0000)]
BitcodeReader: Change mechanics of BlockAddress forward references, NFC

Now that we can reliably handle forward references to `BlockAddress`
(r214563), change the mechanics to simplify predicting use-list order.

Previously, we created dummy `GlobalVariable`s to represent block
addresses.  After every function was materialized, we'd go through any
forward references to its blocks and RAUW them with a proper
`BlockAddress` constant.  This causes some (potentially a lot of)
unnecessary use-list churn, since any constant expression that it's a
part of will need to be rematerialized as well.

Instead, pre-construct a `BasicBlock` immediately -- without attaching
it to its (empty) `Function` -- and use that to construct a
`BlockAddress`.  This constant will not have to be regenerated.  When
the function body is parsed, hook this pre-constructed basic block up
in the right place using `BasicBlock::insertInto()`.

Both before and after this change, the IR is temporarily in an invalid
state that gets resolved when `materializeForwardReferencedFunctions()`
gets called.

This is a prep commit that's part of PR5680, but the only functionality
change is the reduction of churn in the constant pool.

llvm-svn: 214570

10 years agoR600/SI: Remove leftover debugging code
Tom Stellard [Fri, 1 Aug 2014 21:51:05 +0000 (21:51 +0000)]
R600/SI: Remove leftover debugging code

llvm-svn: 214569

10 years agorelational: Add islessequal(floatN) builtin
Jan Vesely [Fri, 1 Aug 2014 21:50:59 +0000 (21:50 +0000)]
relational: Add islessequal(floatN) builtin

v2: remove the initial undef

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 214568

10 years agorelational: Add isless(floatN) builtin
Jan Vesely [Fri, 1 Aug 2014 21:50:55 +0000 (21:50 +0000)]
relational: Add isless(floatN) builtin

v2: remove the initial undef

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 214567

10 years agoR600: Move code for generating REGISTER_LOAD into R600ISelLowering.cpp
Tom Stellard [Fri, 1 Aug 2014 21:50:47 +0000 (21:50 +0000)]
R600: Move code for generating REGISTER_LOAD into R600ISelLowering.cpp

SI doesn't use REGISTER_LOAD anymore, but it was still hitting this code
path for 8-bit and 16-bit private loads.

llvm-svn: 214566

10 years agodocs: Strongly recommend setting rpath when using a local GCC toolchain
Reid Kleckner [Fri, 1 Aug 2014 21:40:53 +0000 (21:40 +0000)]
docs: Strongly recommend setting rpath when using a local GCC toolchain

Users keep emailing us about the difficulties of getting LD_LIBRARY_PATH
into their environment, which should be completely unecessary. Try to
strengthen the rpath recommentation by putting in an example cmake
invocation.

Speaking of which, we might want to make CMake the recommended build
system in GettingStarted.html.

llvm-svn: 214565

10 years ago[Sanitizer] Introduce SanitizerMetadata class.
Alexey Samsonov [Fri, 1 Aug 2014 21:35:28 +0000 (21:35 +0000)]
[Sanitizer] Introduce SanitizerMetadata class.

It is responsible for generating metadata consumed by sanitizer instrumentation
passes in the backend. Move several methods from CodeGenModule to SanitizerMetadata.
For now the class is stateless, but soon it won't be the case.

Instead of creating globals providing source-level information to ASan, we will create
metadata nodes/strings which will be turned into actual global variables in the
backend (if needed).

No functionality change.

llvm-svn: 214564

10 years agoIR: Add BasicBlock::insertInto()
Duncan P. N. Exon Smith [Fri, 1 Aug 2014 21:22:04 +0000 (21:22 +0000)]
IR: Add BasicBlock::insertInto()

Although unlinked `BasicBlock`s can be created, there's currently no way
to insert them into `Function`s after the fact.  In particular,
`moveAfter()` and `moveBefore()` require that the basic block is already
linked.

Extract the logic for initially linking a `BasicBlock` out of the
constructor and into a member function that can be used for lazy
insertion.

  - Asserts that the basic block is currently unlinked.
  - Matches the logic of the constructor.
  - Changed the constructor to use it since the logic matches.

This is needed in a follow-up commit for PR5680.

llvm-svn: 214563

10 years agoLet's assume PowerPC has no SSE.
Joerg Sonnenberger [Fri, 1 Aug 2014 21:20:02 +0000 (21:20 +0000)]
Let's assume PowerPC has no SSE.

llvm-svn: 214562

10 years ago[dfsan] Correctly handle loads and stores of zero size.
Peter Collingbourne [Fri, 1 Aug 2014 21:18:18 +0000 (21:18 +0000)]
[dfsan] Correctly handle loads and stores of zero size.

llvm-svn: 214561

10 years agoAdd a non-const subtarget returning function to the target machine
Eric Christopher [Fri, 1 Aug 2014 21:18:01 +0000 (21:18 +0000)]
Add a non-const subtarget returning function to the target machine
so that we can use it to get the old-style JIT out of the subtarget.

This code should be removed when the old-style JIT is removed
(imminently).

llvm-svn: 214560

10 years agoBitcodeReader: Fix some BlockAddress forward reference corner cases
Duncan P. N. Exon Smith [Fri, 1 Aug 2014 21:11:34 +0000 (21:11 +0000)]
BitcodeReader: Fix some BlockAddress forward reference corner cases

`BlockAddress`es are interesting in that they can reference basic blocks
from *outside* the block's function.  Since basic blocks are not global
values, this presents particular challenges for lazy parsing.

One corner case was found in PR11677 and fixed in r147425.  In that
case, a global variable references a block address.  It's necessary to
load the relevant function to resolve the forward reference before doing
anything with the module.

By inspection, I found (and have fixed here) two other cases:

  - An instruction from one function references a block address from
    another function, and only the first function is lazily loaded.

    I fixed this the same way as PR11677: by eagerly loading the
    referenced function.

  - A function whose block address is taken is dematerialized, leaving
    invalid references to it.

    I fixed this by refusing to dematerialize functions whose block
    addresses are taken (if you have to load it, you can't unload it).

llvm-svn: 214559

10 years agoTry to fix configure+make after r214556
Duncan P. N. Exon Smith [Fri, 1 Aug 2014 21:06:59 +0000 (21:06 +0000)]
Try to fix configure+make after r214556

llvm-svn: 214558

10 years agoRewrite BitReaderTest, NFC
Duncan P. N. Exon Smith [Fri, 1 Aug 2014 21:01:04 +0000 (21:01 +0000)]
Rewrite BitReaderTest, NFC

Rewrite the single unit test in `BitReaderTest` so that it's easier to
add more tests.

  - Parse from an assembly string rather than using API.
  - Use more helper functions.
  - Use a separate context for the module on the other side.

Aside from relying on the assembly parser, there's no functionality
change intended.

llvm-svn: 214556

10 years agoRe-commit r214547 with tests fixed. Hopefully all the bots will be happy now.
Richard Smith [Fri, 1 Aug 2014 20:39:36 +0000 (20:39 +0000)]
Re-commit r214547 with tests fixed. Hopefully all the bots will be happy now.
Original message:

Fix iterator invalidation issues that are breaking my modules buildbot's
bootstrap.

llvm-svn: 214555

10 years agoMS inline asm: Tests for r214550
Reid Kleckner [Fri, 1 Aug 2014 20:23:29 +0000 (20:23 +0000)]
MS inline asm: Tests for r214550

These tests seem like an exception to the rule against assembly emitting
tests in clang.  I made an LLVM side change that can only be tested by
setting up the inline assembly machinery that is only implemented by
Clang.

llvm-svn: 214552

10 years agoMS inline asm: Add tests for LLVM r214468
Reid Kleckner [Fri, 1 Aug 2014 20:23:03 +0000 (20:23 +0000)]
MS inline asm: Add tests for LLVM r214468

This used to assert.

llvm-svn: 214551

10 years agoMS inline asm: Use memory constraints for functions instead of registers
Reid Kleckner [Fri, 1 Aug 2014 20:21:24 +0000 (20:21 +0000)]
MS inline asm: Use memory constraints for functions instead of registers

This is consistent with how we parse them in a standalone .s file, and
inline assembly shouldn't differ.

This fixes errors about requiring more registers than available in
cases like this:
  void f();
  void __declspec(naked) g() {
    __asm pusha
    __asm call f
    __asm popa
    __asm ret
  }

There are no registers available to pass the address of 'f' into the asm
blob.  The asm should now directly call 'f'.

Tests will land in Clang shortly.

llvm-svn: 214550

10 years agoRevert r214547 due to test breakage.
Richard Smith [Fri, 1 Aug 2014 20:09:39 +0000 (20:09 +0000)]
Revert r214547 due to test breakage.

llvm-svn: 214549

10 years agollvm-profdata: Replace redundant tests with more targeted ones
Justin Bogner [Fri, 1 Aug 2014 19:59:48 +0000 (19:59 +0000)]
llvm-profdata: Replace redundant tests with more targeted ones

llvm-svn: 214548

10 years agoFix iterator invalidation issues that are breaking my modules buildbot's bootstrap.
Richard Smith [Fri, 1 Aug 2014 19:59:14 +0000 (19:59 +0000)]
Fix iterator invalidation issues that are breaking my modules buildbot's bootstrap.

llvm-svn: 214547

10 years ago[SDAG] Begin simplifying the way in which the legalizer deletes nodes.
Chandler Carruth [Fri, 1 Aug 2014 19:49:59 +0000 (19:49 +0000)]
[SDAG] Begin simplifying the way in which the legalizer deletes nodes.

This lifts the (very few) places the legalizer would delete dead nodes
into the outer loop around the legalizer. This is significantly simpler
because it doesn't require the legalizer itself to manage the iterator
validity, and it doesn't require the legalizer to be a DAG update
listener in order to remove things from the legalized set. It also makes
the interface much less contrived for the case of the legalizer running
inside the last phase of DAG combining.

I'm working on centralizing the deletion of nodes during both legalizing
and combining as much as possible. My hope is to remove the need for DAG
update listeners from the combiner next, which would remove a costly
virtual dispatch chain on every deletion. This in turn should allow us
to more aggressively delete DAG nodes during combining which will in
turn allow us to combine more aggressively by exposing the actual nodes
which have single users to the combine phases.

llvm-svn: 214546

10 years ago[FastISel][AArch64] Fold offset into the memory operation.
Juergen Ributzka [Fri, 1 Aug 2014 19:40:16 +0000 (19:40 +0000)]
[FastISel][AArch64] Fold offset into the memory operation.

Fold simple offsets into the memory operation:
  add x0, x0, #8
  ldr x0, [x0]
-->
  ldr x0, [x0, #8]

Fixes <rdar://problem/17887945>.

llvm-svn: 214545

10 years agoAdd FreeBSD support to the address sanitizer's deep_stack_uaf.cc test case
Viktor Kutuzov [Fri, 1 Aug 2014 19:37:05 +0000 (19:37 +0000)]
Add FreeBSD support to the address sanitizer's deep_stack_uaf.cc test case
Differential Revision: http://reviews.llvm.org/D4668

llvm-svn: 214544

10 years agoFix the waitid sanitizer interceptor to work on FreeBSD in 32-bit mode
Viktor Kutuzov [Fri, 1 Aug 2014 19:33:14 +0000 (19:33 +0000)]
Fix the waitid sanitizer interceptor to work on FreeBSD in 32-bit mode
Differential Revision: http://reviews.llvm.org/D4670

llvm-svn: 214543

10 years agoInclude Archive.h
Rafael Espindola [Fri, 1 Aug 2014 19:28:15 +0000 (19:28 +0000)]
Include Archive.h

MSVC was complaining about Archive being an incomplete type.

llvm-svn: 214542

10 years agoFix building with in-tree libc++abi on FreeBSD
Viktor Kutuzov [Fri, 1 Aug 2014 19:23:15 +0000 (19:23 +0000)]
Fix building with in-tree libc++abi on FreeBSD
Differential Revision: http://reviews.llvm.org/D4743

llvm-svn: 214541

10 years agoMove virtual method out of line.
Rafael Espindola [Fri, 1 Aug 2014 18:49:24 +0000 (18:49 +0000)]
Move virtual method out of line.

Should fix the MSVC build.

llvm-svn: 214539

10 years agoAdd support for StackMap section for ELF/Linux systems
Philip Reames [Fri, 1 Aug 2014 18:47:09 +0000 (18:47 +0000)]
Add support for StackMap section for ELF/Linux systems

This patch adds code to emits the StackMap section on ELF systems. This section is required to support llvm.experimental.stackmap and llvm.experimental.patchpoint intrinsics.

Reviewers: ributzka, echristo

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

llvm-svn: 214538

10 years ago[FastISel][AArch64] Add branch weights.
Juergen Ributzka [Fri, 1 Aug 2014 18:39:24 +0000 (18:39 +0000)]
[FastISel][AArch64] Add branch weights.

Add branch weights to branch instructions, so that the following passes can
optimize based on it (i.e. basic block ordering).

Fixes <rdar://problem/17887137>.

llvm-svn: 214537

10 years agoConvert over to using pipes for the initial LLDB commands in the Driver.
Greg Clayton [Fri, 1 Aug 2014 18:32:07 +0000 (18:32 +0000)]
Convert over to using pipes for the initial LLDB commands in the Driver.

This will avoid having to use a temp file and adding temp file related calls to the public API.

llvm-svn: 214536

10 years agoUse object::Archive::create instead of new object::Archive.
Rafael Espindola [Fri, 1 Aug 2014 18:31:17 +0000 (18:31 +0000)]
Use object::Archive::create instead of new object::Archive.

Also fix the error handling. No testcaes, issue found by inspection.

Thanks to David Blaikie for the suggestion.

llvm-svn: 214535

10 years agoExplicitly report runtime stack realignment in StackMap section
Philip Reames [Fri, 1 Aug 2014 18:26:27 +0000 (18:26 +0000)]
Explicitly report runtime stack realignment in StackMap section

This change adds code to explicitly mark a function which requires runtime stack realignment as not having a fixed frame size in the StackMap section. As it happens, this is not actually a functional change. The size that would be reported without the check is also "-1", but as far as I can tell, that's an accident. The code change makes this explicit.

Note: There's a separate bug in handling of stackmaps and patchpoints in functions which need dynamic frame realignment. The current code assumes that offsets can be calculated from RBP, but realigned frames must use RSP. (There's a variable gap between RBP and the spill slots.) This change set does not address that issue.

Reviewers: atrick, ributzka

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

llvm-svn: 214534

10 years agoReplace comment about ownership with std::unique_ptr.
Rafael Espindola [Fri, 1 Aug 2014 18:09:32 +0000 (18:09 +0000)]
Replace comment about ownership with std::unique_ptr.

llvm-svn: 214533

10 years ago[ASan] Support the asan_loadN/asan_storeN functions in the DLL thunk library
Ehsan Akhgari [Fri, 1 Aug 2014 18:04:53 +0000 (18:04 +0000)]
[ASan] Support the asan_loadN/asan_storeN functions in the DLL thunk library

Summary:
This is required for linking DLLs with large functions exceeding
san-instrumentation-with-call-threshold.  One such function is
vp9_fdct16x16_sse2 in libvpx.

Reviewers: timurrrr

Subscribers: llvm-commits

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

llvm-svn: 214532

10 years ago[FastISel][ARM] Do not emit stores for undef arguments.
Juergen Ributzka [Fri, 1 Aug 2014 18:04:14 +0000 (18:04 +0000)]
[FastISel][ARM] Do not emit stores for undef arguments.

This is a followup patch for r214366, which added the same behavior to the
AArch64 and X86 FastISel code. This fix reproduces the already existing
behavior of SelectionDAG in FastISel.

llvm-svn: 214531

10 years agoUse range loop.
Rafael Espindola [Fri, 1 Aug 2014 18:04:14 +0000 (18:04 +0000)]
Use range loop.

llvm-svn: 214530

10 years agoUpdate build instructions for the clang-format VS plugin
Hans Wennborg [Fri, 1 Aug 2014 17:38:53 +0000 (17:38 +0000)]
Update build instructions for the clang-format VS plugin

llvm-svn: 214529

10 years agoAdd missing breaks to AArch64InstrInfo::isGPRCopy
Renato Golin [Fri, 1 Aug 2014 17:27:31 +0000 (17:27 +0000)]
Add missing breaks to AArch64InstrInfo::isGPRCopy

llvm-svn: 214528

10 years agoAdd decorator for FreeBSD test failure - malloc() breakpoint issue
Ed Maste [Fri, 1 Aug 2014 17:04:31 +0000 (17:04 +0000)]
Add decorator for FreeBSD test failure - malloc() breakpoint issue

llvm.org/pr20476

llvm-svn: 214527

10 years agoDropping some else-after-returns. No functional changes intended.
Aaron Ballman [Fri, 1 Aug 2014 17:02:34 +0000 (17:02 +0000)]
Dropping some else-after-returns. No functional changes intended.

llvm-svn: 214526

10 years agoR600: Cleanup test
Matt Arsenault [Fri, 1 Aug 2014 17:00:29 +0000 (17:00 +0000)]
R600: Cleanup test

Remove -CHECKs, use multiple prefixes, name values,
also test the @llvm.fabs version

llvm-svn: 214525

10 years agoMake getNamedOperandIdx readonly
Matt Arsenault [Fri, 1 Aug 2014 17:00:27 +0000 (17:00 +0000)]
Make getNamedOperandIdx readonly

llvm-svn: 214524

10 years agoR600/SI: Don't display GDS bit for read2
Matt Arsenault [Fri, 1 Aug 2014 17:00:26 +0000 (17:00 +0000)]
R600/SI: Don't display GDS bit for read2

This isn't displayed for any other instructions anymore,
and isn't ever used.

llvm-svn: 214523

10 years agoFix test execution: the cmake keyword is CACHE, not CACHED
Ed Maste [Fri, 1 Aug 2014 16:57:46 +0000 (16:57 +0000)]
Fix test execution: the cmake keyword is CACHE, not CACHED

llvm-svn: 214522

10 years ago[AArch64] Fix test from r214518 in an attempt to appease buildbots.
Chad Rosier [Fri, 1 Aug 2014 15:30:41 +0000 (15:30 +0000)]
[AArch64] Fix test from r214518 in an attempt to appease buildbots.

llvm-svn: 214521

10 years agoAdd IR Mangler for more stable mangling.
Eli Bendersky [Fri, 1 Aug 2014 15:01:10 +0000 (15:01 +0000)]
Add IR Mangler for more stable mangling.

llvm-svn: 214520

10 years agoRemove lto_codegen_set_attr.
Rafael Espindola [Fri, 1 Aug 2014 14:57:05 +0000 (14:57 +0000)]
Remove lto_codegen_set_attr.

It was never exported, so no functionality change.

llvm-svn: 214519

10 years ago[AArch64] Generate tbz/tbnz when comparing against zero.
Chad Rosier [Fri, 1 Aug 2014 14:48:56 +0000 (14:48 +0000)]
[AArch64] Generate tbz/tbnz when comparing against zero.

The tbz/tbnz checks the sign bit to convert

op w1, w1, w10
cmp w1, #0
b.lt .LBB0_0

to

op w1, w1, w10
tbnz w1, #31, .LBB0_0

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

llvm-svn: 214518

10 years ago[PowerPC] PR20280 - Slots for byval parameters are not immutable
Ulrich Weigand [Fri, 1 Aug 2014 14:35:58 +0000 (14:35 +0000)]
[PowerPC] PR20280 - Slots for byval parameters are not immutable

Found by inspection while looking at PR20280: code would mark slots
in the parameter save area where a byval parameter is passed as
"immutable".  This is not correct since code is allowed to modify
byval parameters in place in the parameter save area.

llvm-svn: 214517

10 years agoRemove some calls to std::move.
Rafael Espindola [Fri, 1 Aug 2014 14:31:55 +0000 (14:31 +0000)]
Remove some calls to std::move.

Instead of moving out the data in a ErrorOr<std::unique_ptr<Foo>>, get
a reference to it.

Thanks to David Blaikie for the suggestion.

llvm-svn: 214516

10 years ago[pr20127] Check for leading \1 in the Twine version of getNameWithPrefix.
Rafael Espindola [Fri, 1 Aug 2014 14:16:40 +0000 (14:16 +0000)]
[pr20127] Check for leading \1 in the Twine version of getNameWithPrefix.

No functionality change, but will simplify an upcoming patch that uses the
Twine version.

llvm-svn: 214515

10 years agoSimplify the code a bit with std::unique_ptr.
Rafael Espindola [Fri, 1 Aug 2014 14:11:14 +0000 (14:11 +0000)]
Simplify the code a bit with std::unique_ptr.

llvm-svn: 214514

10 years agoThe GNU-style aligned attribute has an optional expression, but the generated pretty...
Aaron Ballman [Fri, 1 Aug 2014 13:49:00 +0000 (13:49 +0000)]
The GNU-style aligned attribute has an optional expression, but the generated pretty printing logic was unaware of this. Fixed the pretty printing logic, and added a test to ensure it no longer asserts.

Added a FIXME to the code about eliding the parenthesis when pretty printing such a construct.

llvm-svn: 214513

10 years agoRevert r214497: [mips] Defer va_arg expansion to the backend.
Daniel Sanders [Fri, 1 Aug 2014 13:26:28 +0000 (13:26 +0000)]
Revert r214497: [mips] Defer va_arg expansion to the backend.

It appears that the backend does not handle all cases that were handled by clang.
In particular, it does not handle structs as used in
SingleSource/UnitTests/2003-05-07-VarArgs.

llvm-svn: 214512

10 years agoReplacing some more complex logic with a helper function call to ObjCMethod::getRetur...
Aaron Ballman [Fri, 1 Aug 2014 13:20:09 +0000 (13:20 +0000)]
Replacing some more complex logic with a helper function call to ObjCMethod::getReturnTypeSourceRange. No functional changes intended.

llvm-svn: 214511

10 years agoXcore target: Fix CXXStdlibIncludeArgs to check 'nostdinc++' flag too.
Robert Lytton [Fri, 1 Aug 2014 13:11:46 +0000 (13:11 +0000)]
Xcore target: Fix CXXStdlibIncludeArgs to check 'nostdinc++' flag too.

Summary:
There are no tests as it is dependant upon the environment variables
XCC_C_INCLUDE_PATH & XCC_CPLUS_INCLUDE_PATH  being set.

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

llvm-svn: 214510

10 years agollvm-objdump: implement printing for MachO __compact_unwind info.
Tim Northover [Fri, 1 Aug 2014 13:07:19 +0000 (13:07 +0000)]
llvm-objdump: implement printing for MachO __compact_unwind info.

llvm-svn: 214509

10 years agoclang-format: Add a space in ObjC protocols.
Daniel Jasper [Fri, 1 Aug 2014 13:03:05 +0000 (13:03 +0000)]
clang-format: Add a space in ObjC protocols.

Before:
  @interface Foo (HackStuff)<MyProtocol>

After:
  @interface Foo (HackStuff) <MyProtocol>

llvm-svn: 214508

10 years agoImproving diagnostic source ranges for the nonnull attribute. Now it highlights the...
Aaron Ballman [Fri, 1 Aug 2014 12:58:11 +0000 (12:58 +0000)]
Improving diagnostic source ranges for the nonnull attribute. Now it highlights the attribute and the faulty nonpointer type when possible.

llvm-svn: 214507

10 years agoFix a memory leak - dispose of the CXString after printing it in mangling.
Eli Bendersky [Fri, 1 Aug 2014 12:55:44 +0000 (12:55 +0000)]
Fix a memory leak - dispose of the CXString after printing it in mangling.

Thanks to kcc@ for noticing.

llvm-svn: 214506

10 years agoAllow only disassembling of M-class MSR masks that the assembler knows how to assembl...
James Molloy [Fri, 1 Aug 2014 12:42:11 +0000 (12:42 +0000)]
Allow only disassembling of M-class MSR masks that the assembler knows how to assemble back.

Note: The current code in DecodeMSRMask() rejects the unpredictable A/R MSR mask '0000' with Fail. The code in the patch follows this style and rejects unpredictable M-class MSR masks also with Fail (instead of SoftFail). If SoftFail is preferred in this case then additional changes to ARMInstPrinter (to print non-symbolic masks) and ARMAsmParser (to parse non-symbolic masks) will be needed.

Patch by Petr Pavlu!

llvm-svn: 214505

10 years agoInitializing the loop hint option token again.
Aaron Ballman [Fri, 1 Aug 2014 12:41:37 +0000 (12:41 +0000)]
Initializing the loop hint option token again.

llvm-svn: 214504

10 years agoImprove some const-correctness to remove a -Wcast-qual warning. No functional changes...
Aaron Ballman [Fri, 1 Aug 2014 12:34:58 +0000 (12:34 +0000)]
Improve some const-correctness to remove a -Wcast-qual warning. No functional changes intended.

llvm-svn: 214503

10 years agoInitializing the loop hint option token.
Aaron Ballman [Fri, 1 Aug 2014 12:20:20 +0000 (12:20 +0000)]
Initializing the loop hint option token.

llvm-svn: 214502

10 years agoUpdate the code with clang changes r214450 (FunctionProtoType::ExtProtoInfo update)
Sylvestre Ledru [Fri, 1 Aug 2014 12:19:15 +0000 (12:19 +0000)]
Update the code with clang changes r214450 (FunctionProtoType::ExtProtoInfo update)

llvm-svn: 214501

10 years ago[ARM] Make the assembler reject unpredictable pre/post-indexed ARM LDRB/LDRSB instruc...
Tilmann Scheller [Fri, 1 Aug 2014 12:08:04 +0000 (12:08 +0000)]
[ARM] Make the assembler reject unpredictable pre/post-indexed ARM LDRB/LDRSB instructions.

The ARM ARM prohibits LDRB/LDRSB instructions with writeback into the destination register. With this commit this constraint is now enforced and we stop assembling LDRH/LDRSH instructions with unpredictable behavior.

llvm-svn: 214500

10 years ago[ARM] Make the assembler reject unpredictable pre/post-indexed ARM LDRH/LDRSH instruc...
Tilmann Scheller [Fri, 1 Aug 2014 11:33:47 +0000 (11:33 +0000)]
[ARM] Make the assembler reject unpredictable pre/post-indexed ARM LDRH/LDRSH instructions.

The ARM ARM prohibits LDRH/LDRSH instructions with writeback into the source register. With this commit this constraint is now enforced and we stop assembling LDRH/LDRSH instructions with unpredictable behavior.

llvm-svn: 214499

10 years ago[ARM] Make the assembler reject unpredictable pre/post-indexed ARM LDR instructions.
Tilmann Scheller [Fri, 1 Aug 2014 11:08:51 +0000 (11:08 +0000)]
[ARM] Make the assembler reject unpredictable pre/post-indexed ARM LDR instructions.

The ARM ARM prohibits LDR instructions with writeback into the destination register. With this commit this constraint is now enforced and we stop assembling LDR instructions with unpredictable behavior.

llvm-svn: 214498

10 years ago[mips] Defer va_arg expansion to the backend.
Daniel Sanders [Fri, 1 Aug 2014 10:29:21 +0000 (10:29 +0000)]
[mips] Defer va_arg expansion to the backend.

Summary:
This patch causes clang to emit va_arg instructions to the backend instead of
expanding them into an implementation itself. The backend already implements
va_arg since this is necessary for NaCl so this patch is removing redundant
code.

Together with the llvm patch (D4556) that accounts for the effect of endianness
on the expansion of va_arg, this fixes PR19612.

Depends on D4556

Reviewers: sstankovic, dsanders

Reviewed By: dsanders

Subscribers: rnk, cfe-commits

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

llvm-svn: 214497

10 years agoSLPVectorizer: fix build problem in Release configuration
Erik Eckstein [Fri, 1 Aug 2014 09:47:38 +0000 (09:47 +0000)]
SLPVectorizer: fix build problem in Release configuration

llvm-svn: 214496

10 years ago[Mips] Replace assembler code by YAML to make the 'interpreter.test' test
Simon Atanasyan [Fri, 1 Aug 2014 09:47:21 +0000 (09:47 +0000)]
[Mips] Replace assembler code by YAML to make the 'interpreter.test' test
target independent.

llvm-svn: 214495

10 years agoSLPVectorizer: improved scheduling algorithm.
Erik Eckstein [Fri, 1 Aug 2014 09:20:42 +0000 (09:20 +0000)]
SLPVectorizer: improved scheduling algorithm.

llvm-svn: 214494

10 years ago[mips][PR19612] Fix va_arg for big-endian mode.
Daniel Sanders [Fri, 1 Aug 2014 09:17:39 +0000 (09:17 +0000)]
[mips][PR19612] Fix va_arg for big-endian mode.

Summary:
Big-endian mode was not correctly adjusting the offset for types smaller
than an ABI slot.

Fixes PR19612

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: sstankovic, llvm-commits

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

llvm-svn: 214493

10 years ago[Format] Remove blank line in Dependences.h
Johannes Doerfert [Fri, 1 Aug 2014 08:44:49 +0000 (08:44 +0000)]
[Format] Remove blank line in Dependences.h

llvm-svn: 214492

10 years ago[Fix] Annotate the IslAst with broken reductions (Missing files)
Johannes Doerfert [Fri, 1 Aug 2014 08:20:26 +0000 (08:20 +0000)]
[Fix] Annotate the IslAst with broken reductions (Missing files)

  + test cases of r214489.

llvm-svn: 214491