7 years agoRedirect DataLayout from TargetMachine to Module in StackProtector
Mehdi Amini [Tue, 7 Jul 2015 23:38:49 +0000 (23:38 +0000)]
Redirect DataLayout from TargetMachine to Module in StackProtector

This change is part of a series of commits dedicated to have a single
DataLayout during compilation by using always the one owned by the

Reviewers: echristo

Subscribers: llvm-commits, rafael, yaron.keren

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

From: Mehdi Amini <mehdi.amini@apple.com>

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

7 years agoMIR Printer: Use a module slot tracker to print global address operands. NFC.
Alex Lorenz [Tue, 7 Jul 2015 23:27:53 +0000 (23:27 +0000)]
MIR Printer: Use a module slot tracker to print global address operands. NFC.

This commit adopts the 'ModuleSlotTracker' class, which was surfaced in r240842,
to print the global address operands. This change ensures that the slot tracker
won't have to be recreated every time a global address operand is printed,
making the MIR printing more efficient.

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

7 years ago[WinEH] Add localaddress intrinsic instead of using frameaddress
Reid Kleckner [Tue, 7 Jul 2015 23:23:03 +0000 (23:23 +0000)]
[WinEH] Add localaddress intrinsic instead of using frameaddress

Clang uses this for SEH finally. The new intrinsic will produce the
right value when stack realignment is required.

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

7 years agoAdd more nvcasts
Arnold Schwaighofer [Tue, 7 Jul 2015 23:13:18 +0000 (23:13 +0000)]
Add more nvcasts

Tim Northover has told me that they can occur when the compiler cleverly
constructs constants - as demonstrated in the test case.


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

7 years ago[WebAssembly] Set the scheduling preference.
Dan Gohman [Tue, 7 Jul 2015 22:38:06 +0000 (22:38 +0000)]
[WebAssembly] Set the scheduling preference.

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

7 years agoRename llvm.frameescape and llvm.framerecover to localescape and localrecover
Reid Kleckner [Tue, 7 Jul 2015 22:25:32 +0000 (22:25 +0000)]
Rename llvm.frameescape and llvm.framerecover to localescape and localrecover

Initially, these intrinsics seemed like part of a family of "frame"
related intrinsics, but now I think that's more confusing than helpful.
Initially, the LangRef specified that this would create a new kind of
allocation that would be allocated at a fixed offset from the frame
pointer (EBP/RBP). We ended up dropping that design, and leaving the
stack frame layout alone.

These intrinsics are really about sharing local stack allocations, not
frame pointers. I intend to go further and add an `llvm.localaddress()`
intrinsic that returns whatever register (EBP, ESI, ESP, RBX) is being
used to address locals, which should not be confused with the frame

Naming suggestions at this point are welcome, I'm happy to re-run sed.

Reviewers: majnemer, nicholas

Subscribers: llvm-commits

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

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

7 years ago[llvm-objdump] Print the call target next to the instruction
David Majnemer [Tue, 7 Jul 2015 22:06:59 +0000 (22:06 +0000)]
[llvm-objdump] Print the call target next to the instruction

GNU binutils provides this behavior.  objdump -r doesn't really help
when you aren't dealing with relocation object files.

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

7 years agofix typo; NFC
Sanjay Patel [Tue, 7 Jul 2015 21:31:54 +0000 (21:31 +0000)]
fix typo; NFC

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

7 years agoFix comment typo. NFC
Jonathan Roelofs [Tue, 7 Jul 2015 20:57:47 +0000 (20:57 +0000)]
Fix comment typo. NFC

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

7 years agoMIR Serialization: Serialize the 'dead' register machine operand flag.
Alex Lorenz [Tue, 7 Jul 2015 20:34:53 +0000 (20:34 +0000)]
MIR Serialization: Serialize the 'dead' register machine operand flag.

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

7 years agoMinor updates to gitignore so that symlinks are ignored in the projects dir.
Chris Bieneman [Tue, 7 Jul 2015 20:24:58 +0000 (20:24 +0000)]
Minor updates to gitignore so that symlinks are ignored in the projects dir.

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

7 years ago[CMake] Cleanup tools/CMakeLists.txt to take advantage of the auto-registration that...
Chris Bieneman [Tue, 7 Jul 2015 20:24:55 +0000 (20:24 +0000)]
[CMake] Cleanup tools/CMakeLists.txt to take advantage of the auto-registration that was already partially working.

The tools CMakeLists file already had implicit tool registration, but there were a few things off about it that needed to be altered to make it work. This change addresses all that. The changes in this patch are:

* factored out canonicalizing tool names from paths to CMake variables
* removed the LLVM_IMPLICIT_PROJECT_IGNORE mechanism in favor of LLVM_EXTERNAL_${nameUPPER}_BUILD which I renamed to LLVM_TOOL_${nameUPPER}_BUILD because it applies to internal and external tools
* removed ignore_llvm_tool_subdirectory() in favor of just setting LLVM_TOOL_${nameUPPER}_BUILD to Off
* Added create_llvm_tool_options() to resolve a bug in add_llvm_external_project() - the old LLVM_EXTERNAL_${nameUPPER}_BUILD would not work on a clean CMake directory because the option could be created after it was set in code.
* Removed all but the minimum required calls to add_llvm_external_project from tools/CMakeLists.txt

Reviewers: bogner, samsonov, chapuni, beanz

Subscribers: llvm-commits

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

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

7 years agoAdd CHECK lines to test case
Arnold Schwaighofer [Tue, 7 Jul 2015 19:26:31 +0000 (19:26 +0000)]
Add CHECK lines to test case

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

7 years agoRedirect DataLayout from TargetMachine to Module in SelectionDAG
Mehdi Amini [Tue, 7 Jul 2015 19:07:19 +0000 (19:07 +0000)]
Redirect DataLayout from TargetMachine to Module in SelectionDAG

SelectionDAG itself is not invoking directly the DataLayout in the
TargetMachine, but the "TargetLowering" class is still using it. I'll
address it in a following commit.

This change is part of a series of commits dedicated to have a single
DataLayout during compilation by using always the one owned by the

Reviewers: echristo

Subscribers: llvm-commits

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

From: Mehdi Amini <mehdi.amini@apple.com>

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

7 years agoDon't pass a null pointer to memcpy.
Rafael Espindola [Tue, 7 Jul 2015 19:00:02 +0000 (19:00 +0000)]
Don't pass a null pointer to memcpy.

Fixes pr23650.

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

7 years agoRevert "Revert r241570, it caused PR24053"
David Majnemer [Tue, 7 Jul 2015 18:49:41 +0000 (18:49 +0000)]
Revert "Revert r241570, it caused PR24053"

This reverts commit r241602.  We had a latent bug in SCCP where we would
make a basic block empty and then proceed to ask questions about it's

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

7 years agoRedirect DataLayout from TargetMachine to Module in GlobalMerge
Mehdi Amini [Tue, 7 Jul 2015 18:49:25 +0000 (18:49 +0000)]
Redirect DataLayout from TargetMachine to Module in GlobalMerge

This change is part of a series of commits dedicated to have a single
DataLayout during compilation by using always the one owned by the

Reviewers: echristo

Subscribers: llvm-commits

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

From: Mehdi Amini <mehdi.amini@apple.com>

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

7 years agoRedirect DataLayout from TargetMachine to Module in CodeGen Prepare
Mehdi Amini [Tue, 7 Jul 2015 18:45:17 +0000 (18:45 +0000)]
Redirect DataLayout from TargetMachine to Module in CodeGen Prepare

This change is part of a series of commits dedicated to have a single
DataLayout during compilation by using always the one owned by the

Reviewers: echristo

Subscribers: llvm-commits

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

From: Mehdi Amini <mehdi.amini@apple.com>

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

7 years agoRedirect DataLayout from TargetMachine to Module in FastISel
Mehdi Amini [Tue, 7 Jul 2015 18:39:02 +0000 (18:39 +0000)]
Redirect DataLayout from TargetMachine to Module in FastISel

This change is part of a series of commits dedicated to have a single
DataLayout during compilation by using always the one owned by the

Reviewers: echristo

Subscribers: llvm-commits

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

From: Mehdi Amini <mehdi.amini@apple.com>

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

7 years agoAdd a pattern for a nvcast from v2f64 -> v4f32
Arnold Schwaighofer [Tue, 7 Jul 2015 18:31:55 +0000 (18:31 +0000)]
Add a pattern for a nvcast from v2f64 -> v4f32

Since the NvCast is generated by the selection process the concerns about
endianess and bit reversal don't apply.


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

7 years agoRedirect DataLayout from TargetMachine to Module in MachineFunction
Mehdi Amini [Tue, 7 Jul 2015 18:20:57 +0000 (18:20 +0000)]
Redirect DataLayout from TargetMachine to Module in MachineFunction

This change is part of a series of commits dedicated to have a
single DataLayout during compilation by using always the one owned by the

Reviewers: echristo

Subscribers: llvm-commits

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

From: Mehdi Amini <mehdi.amini@apple.com>

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

7 years agoUse default member initializers to deduplicate code in X86MachineFunctionInfo, NFC
Reid Kleckner [Tue, 7 Jul 2015 18:12:06 +0000 (18:12 +0000)]
Use default member initializers to deduplicate code in X86MachineFunctionInfo, NFC

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

7 years agoFix the -DBUILD_SHARED_LIBS=ON build.
Rafael Espindola [Tue, 7 Jul 2015 17:48:00 +0000 (17:48 +0000)]

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

7 years agoMIR Parser: wrap 'MBBSlots' from the MI parsing functions in a struct. NFC.
Alex Lorenz [Tue, 7 Jul 2015 17:46:43 +0000 (17:46 +0000)]
MIR Parser: wrap 'MBBSlots' from the MI parsing functions in a struct. NFC.

This commit modifies the interface for the machine instruction parsing
functions by wrapping the parameter 'MBBSlots' in a new structure called
'PerFunctionMIParsingState'. This change is useful as in the future I will be
able to pass new parameters to the machine instruction parser just by modifying
the 'PerFunctionMIParsingState' structure instead of adding a new parameter to
each function.

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

7 years agoDelete UnknownAddress. It is a perfectly valid symbol value.
Rafael Espindola [Tue, 7 Jul 2015 17:12:59 +0000 (17:12 +0000)]
Delete UnknownAddress. It is a perfectly valid symbol value.

getSymbolValue now returns a value that in convenient for most callers:
* 0 for undefined
* symbol size for common symbols
* offset/address for symbols the rest

Code that needs something more specific can check getSymbolFlags.

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

7 years agoSimplify by passing in the section of the symbol. NFC.
Rafael Espindola [Tue, 7 Jul 2015 16:45:55 +0000 (16:45 +0000)]
Simplify by passing in the section of the symbol. NFC.

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

7 years agoRevert r241570, it caused PR24053
Nico Weber [Tue, 7 Jul 2015 16:42:50 +0000 (16:42 +0000)]
Revert r241570, it caused PR24053

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

7 years ago[Hexagon] Fix unused variable warnings in NDEBUG build caused by r241595
Krzysztof Parzyszek [Tue, 7 Jul 2015 16:02:11 +0000 (16:02 +0000)]
[Hexagon] Fix unused variable warnings in NDEBUG build caused by r241595

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

7 years agoFix bug in test-release.sh where the script would not exit if any
Dan Liew [Tue, 7 Jul 2015 15:50:33 +0000 (15:50 +0000)]
Fix bug in test-release.sh where the script would not exit if any
of the build stages that are sent through a pipe (e.g. tee) failed.

This potentially allowed builds and/or tests to fail without anyone
noticing. It appears that for the LLVM 3.6.[01] releases this actually
happened for the Ubuntu 14.04LTS binary releases. The essence of the
issue is that without ``set -o pipefail`` the following command in bash
has a zero exit code.

false | tee /dev/null ; exit $?

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

7 years ago[WinEH] Add a report_fatal_error for 32-bit stack realignment
Reid Kleckner [Tue, 7 Jul 2015 15:47:29 +0000 (15:47 +0000)]
[WinEH] Add a report_fatal_error for 32-bit stack realignment

This type of prologue isn't supported yet. Implementing it should be a
matter of copying the adjusted incoming EBP into ESI (the base pointer)
instead of EBP.  The original EBP can be saved and restored from other
memory afterwards.

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

7 years ago[Hexagon] Implement bit-tracking facility with specifics for Hexagon
Krzysztof Parzyszek [Tue, 7 Jul 2015 15:16:42 +0000 (15:16 +0000)]
[Hexagon] Implement bit-tracking facility with specifics for Hexagon

This includes code that is intended to be target-independent as well
as the Hexagon-specific details. This is just the framework without
any users.

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

7 years agoCommon symbols don't have a value.
Rafael Espindola [Tue, 7 Jul 2015 15:05:09 +0000 (15:05 +0000)]
Common symbols don't have a value.

At least not in the interface exposed by ObjectFile. This matches what ELF and
COFF implement.

Adjust existing code that was expecting them to have values. No overall
functionality change intended.

Another option would be to change the interface and the ELF and COFF
implementations to say that the value of a common symbol is its size.

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

7 years agouse range-based for loops; NFCI
Sanjay Patel [Tue, 7 Jul 2015 15:03:53 +0000 (15:03 +0000)]
use range-based for loops; NFCI

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

7 years agoFix test case to unbreak build.
Akira Hatanaka [Tue, 7 Jul 2015 14:45:12 +0000 (14:45 +0000)]
Fix test case to unbreak build.

This commit changes the target arch to fix the test case commited in r241566
that was failing on ninja-x64-msvc-RA-centos6. Also add checks to make sure
the callee's address is loaded to blx's operand.

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

7 years agoCommon symbols are not undefined, at least for ObjectFile.
Rafael Espindola [Tue, 7 Jul 2015 14:26:39 +0000 (14:26 +0000)]
Common symbols are not undefined, at least for ObjectFile.

They are implemented like that in some object formats, but for the interface
provided by lib/Object, SF_Undefined and SF_Common are different things.

This matches the ELF and COFF implementation and fixes llvm-nm for MachO.

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

7 years agoSimplify, NFC.
Rafael Espindola [Tue, 7 Jul 2015 13:58:32 +0000 (13:58 +0000)]
Simplify, NFC.

In these two contexts we really just want the raw n_value. No need to use
getSymbolValue which checks for special cases where, semantically, the symbol
has no value.

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

7 years ago[IR] Make getFirstNonPHI return null if the BB is empty
David Majnemer [Tue, 7 Jul 2015 09:15:29 +0000 (09:15 +0000)]
[IR] Make getFirstNonPHI return null if the BB is empty

getFirstNonPHI's documentation states that it returns null if there is
no non-PHI instruction.  However, it instead returns a pointer to the
end iterator.  The implementation of getFirstNonPHI claims that
dereferencing the iterator will result in an assertion failure but this
doesn't occur.  Instead, machinery like getFirstInsertionPt will attempt
to isa<> this invalid memory which results in unpredictable behavior.
Instead, make getFirst* return null if no such instruction exists.

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

7 years agoFix gcc warnings of different enum and non-enum types in ternaries
Denis Protivensky [Tue, 7 Jul 2015 07:48:48 +0000 (07:48 +0000)]
Fix gcc warnings of different enum and non-enum types in ternaries

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

7 years ago[ARM] Define a subtarget feature and use it to decide whether long calls should
Akira Hatanaka [Tue, 7 Jul 2015 06:54:42 +0000 (06:54 +0000)]
[ARM] Define a subtarget feature and use it to decide whether long calls should
be emitted.

This is needed to enable ARM long calls for LTO and enable and disable it on a
per-function basis.

Out-of-tree projects currently using EnableARMLongCalls to emit long calls
should start passing "+long-calls" to the feature string (see the changes made
to clang in r241565).


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

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

7 years agoFix \param in r241472. [-Wdocumentation]
NAKAMURA Takumi [Tue, 7 Jul 2015 04:09:55 +0000 (04:09 +0000)]
Fix \param in r241472. [-Wdocumentation]

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

7 years agoMIR Parser: Verify the implicit machine register operands.
Alex Lorenz [Tue, 7 Jul 2015 02:08:46 +0000 (02:08 +0000)]
MIR Parser: Verify the implicit machine register operands.

This commit verifies that the parsed machine instructions contain the implicit
register operands as specified by the MCInstrDesc. Variadic and call
instructions aren't verified.

Reviewers: Duncan P. N. Exon Smith

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

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

7 years ago[StackMap Liveness] Calling the base class' getAnalysisUsage method. NFCI.
Juergen Ributzka [Tue, 7 Jul 2015 02:05:18 +0000 (02:05 +0000)]
[StackMap Liveness] Calling the base class' getAnalysisUsage method. NFCI.

Calling into the base class' getAnalysisUsage method after we did our pass
specific modifications. This shouldn't really matter since this is the last
pass in the pipeline anyways.

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

7 years ago[StackMap Liveness] No need to cache the MachineFunction. NFC.
Juergen Ributzka [Tue, 7 Jul 2015 02:05:15 +0000 (02:05 +0000)]
[StackMap Liveness] No need to cache the MachineFunction. NFC.

Don't cache the MachineFunction in the pass and range'ify some loops.

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

7 years ago[Triple] Add a helper to switch between big/little endian variants
Benjamin Kramer [Mon, 6 Jul 2015 23:58:14 +0000 (23:58 +0000)]
[Triple] Add a helper to switch between big/little endian variants

This will be used from clang's driver.

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

7 years agoMake UnitTestMain/TestMain.cpp free from llvm/Config/config.h.
NAKAMURA Takumi [Mon, 6 Jul 2015 23:51:40 +0000 (23:51 +0000)]
Make UnitTestMain/TestMain.cpp free from llvm/Config/config.h.

llvm/Config/config.h is unavailable outside of build tree.

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

7 years ago[FaultMaps] Add statistic to count the # of implicit null checks.
Sanjoy Das [Mon, 6 Jul 2015 23:32:10 +0000 (23:32 +0000)]
[FaultMaps] Add statistic to count the # of implicit null checks.

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

7 years ago[WebAssembly] Create a CodeGen unittest directory.
Dan Gohman [Mon, 6 Jul 2015 23:14:57 +0000 (23:14 +0000)]
[WebAssembly] Create a CodeGen unittest directory.

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

7 years agoMIR Serialization: Serialize the implicit register flag.
Alex Lorenz [Mon, 6 Jul 2015 23:07:26 +0000 (23:07 +0000)]
MIR Serialization: Serialize the implicit register flag.

This commit serializes the implicit flag for the register machine operands. It
introduces two new keywords into the machine instruction syntax: 'implicit' and
'implicit-def'. The 'implicit' keyword is used for the implicit register
operands, and the 'implicit-def' keyword is used for the register operands that
have both the implicit and the define flags set.

Reviewers: Duncan P. N. Exon Smith

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

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

7 years agoRemove JumpInstrTableInfo.h as it is no longer used.
Eric Christopher [Mon, 6 Jul 2015 22:55:20 +0000 (22:55 +0000)]
Remove JumpInstrTableInfo.h as it is no longer used.

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

7 years ago[X86][AVX] Add support for shuffle decoding of vperm2f128/vperm2i128 with zero'd...
Simon Pilgrim [Mon, 6 Jul 2015 22:46:46 +0000 (22:46 +0000)]
[X86][AVX] Add support for shuffle decoding of vperm2f128/vperm2i128 with zero'd lanes

The vperm2f128/vperm2i128 shuffle mask decoding was not attempting to deal with shuffles that give zero lanes. This patch fixes this so that the assembly printer can provide shuffle comments.

As this decoder is also used in X86ISelLowering for shuffle combining, I've added an early-out to match existing behaviour. The hope is that we can add zero support in the future, this would allow other ops' decodes (e.g. insertps) to be combined as well.

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

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

7 years ago[x86] extend machine combiner reassociation optimization to SSE scalar adds
Sanjay Patel [Mon, 6 Jul 2015 22:35:29 +0000 (22:35 +0000)]
[x86] extend machine combiner reassociation optimization to SSE scalar adds

Extend the reassociation optimization of http://reviews.llvm.org/rL240361 (D10460)
to SSE scalar FP SP adds in addition to AVX scalar FP SP adds.

With the 'switch' in place, we can trivially add other opcodes and test cases in
future patches.

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

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

7 years ago[X86][SSE] Vectorized i64 uniform constant SRA shifts
Simon Pilgrim [Mon, 6 Jul 2015 22:35:19 +0000 (22:35 +0000)]
[X86][SSE] Vectorized i64 uniform constant SRA shifts

This patch adds vectorization support for uniform constant i64 arithmetic shift right operators.

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

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

7 years agoWebAssembly: add some TODO
JF Bastien [Mon, 6 Jul 2015 21:41:59 +0000 (21:41 +0000)]
WebAssembly: add some TODO

Reviewers: sunfish

Subscribers: llvm-commits, jfb

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

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

7 years agollvm-nm: treat weak undefined as undefined.
Rafael Espindola [Mon, 6 Jul 2015 21:36:23 +0000 (21:36 +0000)]
llvm-nm: treat weak undefined as undefined.

This matches the behavior of gnu ld.

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

7 years ago[WinEH] Add some test cases I forgot to add to previous commits
Reid Kleckner [Mon, 6 Jul 2015 21:13:53 +0000 (21:13 +0000)]
[WinEH] Add some test cases I forgot to add to previous commits

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

7 years ago[WinEH] Insert the EH code load before the block terminator
Reid Kleckner [Mon, 6 Jul 2015 21:13:43 +0000 (21:13 +0000)]
[WinEH] Insert the EH code load before the block terminator

The previous code put the load after the terminator, leading to invalid
IR and downstream crashes. This caused http://crbug.com/506446.

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

7 years ago[X86][SSE4A] Shuffle lowering using SSE4A EXTRQ/INSERTQ instructions
Simon Pilgrim [Mon, 6 Jul 2015 20:46:41 +0000 (20:46 +0000)]
[X86][SSE4A] Shuffle lowering using SSE4A EXTRQ/INSERTQ instructions

This patch adds support for v8i16 and v16i8 shuffle lowering using the immediate versions of the SSE4A EXTRQ and INSERTQ instructions. Although rather limited (they can only act on the lower 64-bits of the source vectors, leave the upper 64-bits of the result vector undefined and don't have VEX encoded variants), the instructions are still useful for the zero extension of any lane (EXTRQ) or inserting a lane into another vector (INSERTQ). Testing demonstrated that it wasn't typically worth it to use these instructions for v2i64 or v4i32 vector shuffles although they are capable of it.

As well as adding specific pattern matching for the shuffles, the patch uses EXTRQ for zero extension cases where SSE41 isn't available and its more efficient than the SSE2 'unpack' default approach. It also adds shuffle decode support for the EXTRQ / INSERTQ cases when the instructions are handling full byte-sized extractions / insertions.

From this foundation, future patches will be able to make use of the instructions for situations that use their ability to extract/insert at the bit level.

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

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

7 years ago[X86][SSE] Use the general SMAX/SMIN/UMAX/UMIN opcodes and remove the X86 implementation
Simon Pilgrim [Mon, 6 Jul 2015 20:30:47 +0000 (20:30 +0000)]
[X86][SSE] Use the general SMAX/SMIN/UMAX/UMIN opcodes and remove the X86 implementation

With the completion of D9746 there is now a common implementation of integer signed/unsigned min/max nodes, removing the need for the equivalent X86 specific implementations.

This patch removes the old X86ISD nodes, legalizes the relevant SSE2/SSE41/AVX2/AVX512 instructions for the ISD versions and converts the small amount of existing X86 code.

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

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

7 years ago[TwoAddressInstructionPass] Rename a variable to match the coding style.
Quentin Colombet [Mon, 6 Jul 2015 20:12:54 +0000 (20:12 +0000)]
[TwoAddressInstructionPass] Rename a variable to match the coding style.

Spot by Bruno.

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

7 years agoSwap operands instead of using !.
Rafael Espindola [Mon, 6 Jul 2015 19:24:40 +0000 (19:24 +0000)]
Swap operands instead of using !.

This avoids returning true for A == B.

Thanks to Benjamin Kramer for noticing it.

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

7 years agoWhen sorting by address, undefined symbols go first.
Rafael Espindola [Mon, 6 Jul 2015 19:21:04 +0000 (19:21 +0000)]
When sorting by address, undefined symbols go first.

This matches gnu nm.

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

7 years agoReduce code duplication. NFC.
Rafael Espindola [Mon, 6 Jul 2015 18:48:47 +0000 (18:48 +0000)]
Reduce code duplication. NFC.

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

7 years ago[llvm-extract] Drop comdats from declarations
Reid Kleckner [Mon, 6 Jul 2015 18:48:02 +0000 (18:48 +0000)]
[llvm-extract] Drop comdats from declarations

The verifier rejects comdats on declarations.

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

7 years agoFix printing of common symbols.
Rafael Espindola [Mon, 6 Jul 2015 18:18:44 +0000 (18:18 +0000)]
Fix printing of common symbols.

Printing the symbol size matches the behavior or both gnu nm and freebsd nm.

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

7 years agollc: Add a 'run-pass' option.
Alex Lorenz [Mon, 6 Jul 2015 17:44:26 +0000 (17:44 +0000)]
llc: Add a 'run-pass' option.

This commit adds a 'run-pass' option to llc, which instructs the compiler to run
one specific code generation pass only.

Llc already has the 'start-after' and the 'stop-after' options, and this new
option complements the other two by making it easier to write tests that want
to invoke a single pass only.

Reviewers: Duncan P. N. Exon Smith

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

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

7 years agoAMDGPU: Run SIInsertWaits as pre-emit pass
Matt Arsenault [Mon, 6 Jul 2015 17:02:20 +0000 (17:02 +0000)]
AMDGPU: Run SIInsertWaits as pre-emit pass

Running this after the scheduler enables scheduling
waits later so other ALU instructions can run while
this would be waiting.

When combined with enabling the post-RA scheduler, this
gives about a ~20% improvement on sgemm.

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

7 years agoChange the last few internal StringRef triples into Triple objects.
Daniel Sanders [Mon, 6 Jul 2015 16:56:07 +0000 (16:56 +0000)]
Change the last few internal StringRef triples into Triple objects.

This concludes the patch series to eliminate StringRef forms of GNU triples
from the internals of LLVM that began in r239036.

At this point, the StringRef-form of GNU Triples should only be used in the
public API (including IR serialization) and a couple objects that directly
interact with the API (most notably the Module class). The next step is to
replace these Triple objects with the TargetTuple object that will represent
our authoratative/unambiguous internal equivalent to GNU Triples.

Reviewers: rengolin

Subscribers: llvm-commits, jholewinski, ted, rengolin

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

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

7 years agoDIBuilder: Don't rauw null pointers with empty arrays in finalize().
Adrian Prantl [Mon, 6 Jul 2015 16:36:02 +0000 (16:36 +0000)]
DIBuilder: Don't rauw null pointers with empty arrays in finalize().
This makes the IR a little easier to read.

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

7 years agoWhere Triple has a suitable predicate, use it rather than the enum values. NFC.
Daniel Sanders [Mon, 6 Jul 2015 16:33:18 +0000 (16:33 +0000)]
Where Triple has a suitable predicate, use it rather than the enum values. NFC.

Reviewers: mcrosier

Subscribers: llvm-commits, rengolin

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

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

7 years agouse range-based for loops; NFCI
Sanjay Patel [Mon, 6 Jul 2015 16:27:35 +0000 (16:27 +0000)]
use range-based for loops; NFCI

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

7 years agoResubmit "Add new EliminateAvailableExternally module pass" (r239480)
Teresa Johnson [Mon, 6 Jul 2015 16:22:42 +0000 (16:22 +0000)]
Resubmit "Add new EliminateAvailableExternally module pass" (r239480)

This change includes a fix for https://code.google.com/p/chromium/issues/detail?id=499508#c3,
which required updating the visibility for symbols with eliminated definitions.

--Original Commit Message--

Add new EliminateAvailableExternally module pass, which is performed in
O2 compiles just before GlobalDCE, unless we are preparing for LTO.

This pass eliminates available externally globals (turning them into
declarations), regardless of whether they are dead/unreferenced, since
we are guaranteed to have a copy available elsewhere at link time.
This enables additional opportunities for GlobalDCE.

If we are preparing for LTO (e.g. a -flto -c compile), the pass is not
included as we want to preserve available externally functions for possible
link time inlining. The FE indicates whether we are doing an -flto compile
via the new PrepareForLTO flag on the PassManagerBuilder.

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

7 years agoUse an early exit in DIBuilder::finalize() to improve readability.
Adrian Prantl [Mon, 6 Jul 2015 16:22:12 +0000 (16:22 +0000)]
Use an early exit in DIBuilder::finalize() to improve readability.

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

7 years agoUse the correct DIArray types in DICompileUnit::replace*().
Adrian Prantl [Mon, 6 Jul 2015 16:22:07 +0000 (16:22 +0000)]
Use the correct DIArray types in DICompileUnit::replace*().

Thanks to Yaron Keren for noticing!

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

7 years agouse range-based for loops; NFCI
Sanjay Patel [Mon, 6 Jul 2015 16:19:14 +0000 (16:19 +0000)]
use range-based for loops; NFCI

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

7 years agoAMDGPU/SI: Add debugging subtarget feature for DS offsets
Matt Arsenault [Mon, 6 Jul 2015 16:01:58 +0000 (16:01 +0000)]
AMDGPU/SI: Add debugging subtarget feature for DS offsets

We don't have a good way to detect most situations where
DS offsets are usable on SI, so add an option to force using
them even if unsafe for debugging performance problems.

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

7 years ago[Sparc] Add more instruction aliases.
James Y Knight [Mon, 6 Jul 2015 16:01:07 +0000 (16:01 +0000)]
[Sparc] Add more instruction aliases.

These are mostly from the chart in the SparcV8 spec, section "A.3
Synthetic Instructions".

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

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

7 years ago[Sparc] Add support for flush instruction.
James Y Knight [Mon, 6 Jul 2015 16:01:04 +0000 (16:01 +0000)]
[Sparc] Add support for flush instruction.

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

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

7 years agoSimplify. NFC.
Rafael Espindola [Mon, 6 Jul 2015 15:53:43 +0000 (15:53 +0000)]
Simplify. NFC.

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

7 years agoSimplify. NFC.
Rafael Espindola [Mon, 6 Jul 2015 15:47:43 +0000 (15:47 +0000)]
Simplify. NFC.

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

7 years agoInline function into single use. NFC.
Rafael Espindola [Mon, 6 Jul 2015 15:36:50 +0000 (15:36 +0000)]
Inline function into single use. NFC.

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

7 years agoRemove getRelocationAddress.
Rafael Espindola [Mon, 6 Jul 2015 14:55:37 +0000 (14:55 +0000)]
Remove getRelocationAddress.

Originally added in r139314.

Back then it didn't actually get the address, it got whatever value the
relocation used: address or offset.

The values in different object formats are:

* MachO: Always an offset.
* COFF: Always an address, but when talking about the virtual address of
  sections it says: "for simplicity, compilers should set this to zero".
* ELF: An offset for .o files and and address for .so files. In the case of the
  .so, the relocation in not linked to any section (sh_info is 0). We can't
  really compute an offset.

Some API mappings would be:

* Use getAddress for everything. It would be quite cumbersome. To compute the
  address elf has to follow sh_info, which can be corrupted and therefore the
  method has to return an ErrorOr. The address of the section is also the same
  for every relocation in a section, so we shouldn't have to check the error
  and fetch the value for every relocation.

* Use a getValue and make it up to the user to know what it is getting.

* Use a getOffset and:
 * Assert for dynamic ELF objects. That is a very peculiar case and it is
   probably fair to ask any tool that wants to support it to use ELF.h. The
   only tool we have that reads those (llvm-readobj) already does that. The
   only other use case I can think of is a dynamic linker.
 * Check that COFF .obj files have sections with zero virtual address spaces. If
   it turns out that some assembler/compiler produces these, we can change
   COFFObjectFile::getRelocationOffset to subtract it. Given COFF format,
   this can be done without the need for ErrorOr.

The getRelocationAddress method was never implemented for COFF. It also
had exactly one use in a very peculiar case: a shortcut for adding the
section value to a pcrel reloc on MachO.

Given that, I don't expect that there is any use out there of the C API. If
that is not the case, let me know and I will add it back with the implementation
inlined and do a proper deprecation.

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

7 years agoFix a bug in the A57FPLoadBalancing register tracking/scavenger.
Chad Rosier [Mon, 6 Jul 2015 14:46:34 +0000 (14:46 +0000)]
Fix a bug in the A57FPLoadBalancing register tracking/scavenger.

The code in AArch64A57FPLoadBalancing::scavengeRegister() to handle dead defs
was not correctly handling aliased registers.  E.g. if the dead def was of D2,
then S2 was not being marked as unavailable, so it could potentially be used
across a live-range in which it would be clobbered.

Patch by Geoff Berry <gberry@codeaurora.org>!
Phabricator: http://reviews.llvm.org/D10900

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

7 years agoCheck that COFF .obj files have sections with zero virtual address spaces.
Rafael Espindola [Mon, 6 Jul 2015 14:26:07 +0000 (14:26 +0000)]
Check that COFF .obj files have sections with zero virtual address spaces.

When talking about the virtual address of sections the coff spec says:
  ... for simplicity, compilers should set this to zero. Otherwise, it is an
  arbitrary value that is subtracted from offsets during relocation.

We don't currently subtract it, so check that it is zero.

If some producer does create such files, we can change getRelocationOffset

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

7 years ago[X86][SSE] Added missing stack folding test for SQRTSD and SQRTSS instructions.
Simon Pilgrim [Mon, 6 Jul 2015 14:15:02 +0000 (14:15 +0000)]
[X86][SSE] Added missing stack folding test for SQRTSD and SQRTSS instructions.

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

7 years ago[X86][AVX512] Multiply Packed Unsigned Integers with Round and Scale
Asaf Badouh [Mon, 6 Jul 2015 14:03:40 +0000 (14:03 +0000)]
[X86][AVX512] Multiply Packed Unsigned Integers with Round and Scale


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

7 years ago[Mips] Add support for MCJIT for MIPS32r6
Petar Jovanovic [Mon, 6 Jul 2015 12:50:55 +0000 (12:50 +0000)]
[Mips] Add support for MCJIT for MIPS32r6

Add support for resolving MIPS32r6 relocations in MCJIT.

Patch by Vladimir Radosavljevic.

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

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

7 years agoFix handling of ELF::R_MIPS_32 on Mips64.
Rafael Espindola [Mon, 6 Jul 2015 12:18:44 +0000 (12:18 +0000)]
Fix handling of ELF::R_MIPS_32 on Mips64.

Thanks to Aboud, Amjad for reporting the regression and providing the testcase.

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

7 years ago[TableGen] Change a couple methods to return an ArrayRef instead of a const std:...
Craig Topper [Mon, 6 Jul 2015 06:23:01 +0000 (06:23 +0000)]
[TableGen] Change a couple methods to return an ArrayRef instead of a const std::vector reference. NFC

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

7 years agoMake this test a bit more interesting.
Rafael Espindola [Mon, 6 Jul 2015 02:45:01 +0000 (02:45 +0000)]
Make this test a bit more interesting.

Before every test was using a section with an address of zero.

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

7 years agoUntabify.
NAKAMURA Takumi [Mon, 6 Jul 2015 00:48:17 +0000 (00:48 +0000)]

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

7 years agochange CHECK to CHECK-LABEL for more precision
Sanjay Patel [Sun, 5 Jul 2015 23:19:16 +0000 (23:19 +0000)]
change CHECK to CHECK-LABEL for more precision

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

7 years agoremove unnecessary test specifications
Sanjay Patel [Sun, 5 Jul 2015 22:37:51 +0000 (22:37 +0000)]
remove unnecessary test specifications

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

7 years agominimize test case and remove unnecessary opt passes
Sanjay Patel [Sun, 5 Jul 2015 22:30:12 +0000 (22:30 +0000)]
minimize test case and remove unnecessary opt passes

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

7 years agoremove unnecessary temp variable; NFCI
Sanjay Patel [Sun, 5 Jul 2015 21:21:47 +0000 (21:21 +0000)]
remove unnecessary temp variable; NFCI

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

7 years agoVerifier: Forbid comdats on linker declarations.
Peter Collingbourne [Sun, 5 Jul 2015 20:52:40 +0000 (20:52 +0000)]
Verifier: Forbid comdats on linker declarations.

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

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

7 years agoIR: Do not consider available_externally linkage to be linker-weak.
Peter Collingbourne [Sun, 5 Jul 2015 20:52:35 +0000 (20:52 +0000)]
IR: Do not consider available_externally linkage to be linker-weak.

From the linker's perspective, an available_externally global is equivalent
to an external declaration (per isDeclarationForLinker()), so it is incorrect
to consider it to be a weak definition.

Also clean up some logic in the dead argument elimination pass and clarify
its comments to better explain how its behavior depends on linkage,
introduce GlobalValue::isStrongDefinitionForLinker() and start using
it throughout the optimizers and backend.

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

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

7 years agouse range-based for loops; NFCI
Sanjay Patel [Sun, 5 Jul 2015 20:15:21 +0000 (20:15 +0000)]
use range-based for loops; NFCI

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

7 years ago[TargetLowering] StringRefize asm constraint getters.
Benjamin Kramer [Sun, 5 Jul 2015 19:29:18 +0000 (19:29 +0000)]
[TargetLowering] StringRefize asm constraint getters.

There is some functional change here because it changes target code from
atoi(3) to StringRef::getAsInteger which has error checking. For valid
constraints there should be no difference.

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

7 years ago[X86][SSE3] Just use an explicit SSE3 target attribute - not a cpu type.
Simon Pilgrim [Sun, 5 Jul 2015 19:06:32 +0000 (19:06 +0000)]
[X86][SSE3] Just use an explicit SSE3 target attribute - not a cpu type.

Merged arch/target into a specific triple - we had i686 and x86_64 targets overriding each other....

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

7 years ago[X86][SSE2] Just use an explicit SSE2 target attribute - not a cpu type.
Simon Pilgrim [Sun, 5 Jul 2015 19:03:51 +0000 (19:03 +0000)]
[X86][SSE2] Just use an explicit SSE2 target attribute - not a cpu type.

corei7 is capable of a lot more than just SSE2....

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