Commit Graph

98988 Commits

Author SHA1 Message Date
NAKAMURA Takumi
ee8b3c30aa [CMake] Fix add_llvm_loadble_module.
Thanks to Edward-san, to let me know.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198165 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 16:15:31 +00:00
NAKAMURA Takumi
a1d32ccea8 [CMake] add_llvm_symbol_exports: Use unique name for each target.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198164 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 16:15:26 +00:00
NAKAMURA Takumi
d9c7484430 [CMake] add_llvm_symbol_exports: Use ${native_export_file} instead of equivalent constant "symbol.*', since it is defined.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198163 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 16:15:18 +00:00
Mark Seaborn
0809dc5b35 Fix indentation alignment of a declaration in MipsMCCodeEmitter.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198162 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 10:47:04 +00:00
Bill Wendling
c956500eb6 Store the global variable that's created so that it's reclaimed afterwards.
This plugs a memory leak in ARM's FastISel by storing the GV in Module so that
it's reclaimed.
PR17978

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198160 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 08:00:04 +00:00
Nico Weber
827176c80c Yet another attempt at getting cmake-clang-i686-mingw32 green.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198159 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 07:43:09 +00:00
Alp Toker
748618bee1 Make LLVM_MSC_PREREQ() compatible with all MSVC versions
The defined() preprocessor expansion wasn't working out on the lld builder.

Also update the documentation to cover another Visual Studio release versioning
convention.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198158 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 07:39:53 +00:00
Venkatraman Govindaraju
a71d72a059 [SparcV9] Use separate instruction patterns for 64 bit arithmetic instructions instead of reusing 32 bit instruction patterns.
This is done to avoid spilling the result of the 64-bit instructions to a 4-byte slot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198157 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 07:15:09 +00:00
Nico Weber
bfefc8d071 Windows build fixes, hopefully last part.
r198153 fixed the msvs bot problem, but broke a msysgit bot. This change
hopefully makes both variants happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198156 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 06:56:28 +00:00
Alp Toker
9c7316f760 Python compatibility fix for r198150
Remove the stat call error reporting for now.

It wasn't essential so silent fallback should be fine here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198155 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 06:51:10 +00:00
Alp Toker
d51aa99ebd Fix parens fail in r198142
Probable cause of the lld build failure on VS 2012.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198154 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 06:33:19 +00:00
Nico Weber
531c479697 Another windows build fix attempt.
Inspired by http://public.kitware.com/pipermail/cmake-developers/2012-March/003768.html


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198153 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 06:12:40 +00:00
Alp Toker
aa29cf421a Prospective Python 3 fix for r198150
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198152 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 05:51:07 +00:00
Nico Weber
343bda6487 More windows build fix attempts.
The windows ninja build is now green, but msvs is still unhappy. Maybe that's
because the .def file was passed when building LTO_static, so only pass
symbol lists for shared libraries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198151 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 05:39:01 +00:00
Alp Toker
9ad6e339c3 lit: Incremental test scheduling
Add option -i to prioritize test runs by source file modification time and
previous failure state.

This optimal scheduling reduces typical test-and-fix iteration times to a
matter of seconds by rapidly answering the questions:

  1) Did my recent change fix tests that were previously failing?
  2) Do the tests I just wrote / modified still work?

The current implementation requires write permissions to the source tree
because it uses mtimes to track failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198150 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 05:09:05 +00:00
Venkatraman Govindaraju
0c67825459 [SparcV9] For codegen generated library calls that return float, set inreg flag manually in LowerCall().
This makes the sparc backend to generate Sparc64 ABI compliant code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198149 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 04:27:21 +00:00
Nico Weber
006e786b35 The same we do every commit, Pinky: Try to fix the windows build (after r198136).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198148 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 04:05:23 +00:00
Craig Topper
9761b5a3e2 Make more of the x86 lowering helper functions static.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198146 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 01:48:38 +00:00
Venkatraman Govindaraju
5b9918957a [SparcV9]: Implement lowering of long double (fp128) arguments in Sparc64 ABI.
Also, pass fp128 arguments to varargs through integer registers if necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198145 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 01:20:36 +00:00
Craig Topper
036c045ac9 Switch from EVT to MVT in more of the x86 instruction lowering code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198144 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 01:10:06 +00:00
Nico Weber
3b6e25e332 Another windows build fix attempt after r198136.
The current quoting is stripped by cmake, try quoting more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198143 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 00:50:09 +00:00
Alp Toker
6f93d65e02 Enable deleted functions and explicit conversions in MSVC 2013
Also prospectively enable static_assert as the documentation suggests it's been
available since MSVC 2010. Let's see if the build servers agree.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198142 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 00:49:14 +00:00
Alp Toker
ee44e9559f Define LLVM_MSC_PREREQ() macro to simplify _MSC_VER checks
Includes documentation mapping MSC version numbers to the more familiar Visual
Studio releases.

Cleanup only to simplify upcoming C++11 / MSVC 2013 changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198141 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 00:49:05 +00:00
Nico Weber
a2ecd26be9 Try to fix windows build more after r198136.
The command that cmd.exe is complaining about is:
cmd.exe /c cd /D C:\bb-win7\cmake-clang-i686-mingw32\build\tools\lto && cmake -E echo EXPORTS > symbol.def && type C:/bb-win7/cmake-clang-i686-mingw32/llvm-project/llvm/tools/lto/lto.exports >> symbol.def

Maybe quoting the filename helps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198140 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 00:27:49 +00:00
Nico Weber
6d731f052b Use ${CMAKE_COMMAND} instead of cmake.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198139 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-29 00:11:20 +00:00
Nico Weber
3ab1aa82a2 Try to fix windows build after r198136.
`type` can't read from stdin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198138 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 23:50:01 +00:00
Nico Weber
7f5deb1e2e Try to fix linux build after r198136.
$ needs to be written $$ in makefiles, but not in cmakefiles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198137 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 23:39:49 +00:00
Nico Weber
b6fe25c476 EXPORTED_SYMBOL_FILE support for cmake
The cmake build didn't support EXPORTED_SYMBOL_FILE. Instead, it had a
Windows-only implementation in tools/lto/CMakeLists.txt, a linux-only
implementation in tools/gold/CMakeLists.txt, and a darwin-only implementation
in tools/clang/tools/libclang/CMakeLists.txt.

This attempts to consolidate these one-offs into a single place. Clients can now
just set LLVM_EXPORTED_SYMBOL_FILE and things (hopefully) Just Work, like in
the make build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198136 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 23:31:44 +00:00
Nico Weber
621bd8d76a Remove windows newlines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198135 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 23:26:51 +00:00
Saleem Abdulrasool
69c6fc4a7c CodeGen: silence a C++11 feature warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198133 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 22:47:55 +00:00
Saleem Abdulrasool
b7d621a6e0 ARM IAS: handle errors more appropriately
Directive parsers must return false if the target assembler is interested in
handling the directive.  The Error member function returns true always.  Using
the 'return Error()' pattern would incorrectly indicate to the general parser
that the target was not interested in the directive, when in reality it simply
encountered a badly formed directive or some other error.  This corrects the
behaviour to ensure that the parser behaves appropriately.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198132 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 22:47:53 +00:00
Andrew Trick
7d1a69d826 Uninitialized variable (in never taken path) after factoring.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198131 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 22:25:57 +00:00
Andrew Trick
6c9712fecb New machine model for cortex-a9. Schedule for resources and latency.
Schedule more conservatively to account for stalls on floating point
resources and latency. Use the AGU resource to model latency stalls
since it's shared between FP and LD/ST instructions. This might not be
completely accurate but should work well in practice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198125 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 21:57:05 +00:00
Andrew Trick
d3f8d6e0a0 Added debugging options: -misched-only-func/block
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198124 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 21:57:02 +00:00
Andrew Trick
9eac3a79d9 The Cortex-A9 machine model is incomplete. Mark it as such.
Many vector operations never had itineraries. Since the new machine
model was a mapping from existing itinerary classes, we don't have a
model for these. We still want to migrate A9 even though no one has
invested in a complete model, so mark it incomplete to avoid the
scheduler asserting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198123 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 21:57:00 +00:00
Andrew Trick
9e76e1d785 Add a PostMachineScheduler pass with generic implementation.
PostGenericScheduler uses either the new machine model or the hazard
checker for top-down scheduling. Most of the infrastructure for PreRA
machine scheduling is reused.

With a some tuning, this should allow MachineScheduler to be default
for all ARM targets, including cortex-A9, using the new machine
model. Likewise, with additional tuning, it should be able to replace
PostRAScheduler for all targets.

The PostMachineScheduler pass does not currently run the
AntiDepBreaker. There is less need for it on targets that are already
running preRA MachineScheduler. I want to prove it's necessary before
committing to the maintenance burden.

The PostMachineScheduler also currently removes kill flags and adds
them all back later. This is a bit ridiculous. I'd prefer passes to
directly use a liveness utility than rely on flags.

A test case that enables this scheduler will be included in a
subsequent checkin that updates the A9 model.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198122 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 21:56:57 +00:00
Andrew Trick
8e62b298e1 Move the PostRA scheduler's fixupKills function for reuse.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198121 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 21:56:55 +00:00
Andrew Trick
c5443a90d8 Stub out a PostMachineScheduler pass.
Placeholder and boilerplate for a PostRA MachineScheduler pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198120 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 21:56:51 +00:00
Andrew Trick
a38b0de893 Factor MI-Sched in preparation for post-ra scheduling support.
Factor the MachineFunctionPass into MachineSchedulerBase.

Split the DAG class into ScheduleDAGMI and SchedulerDAGMILive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198119 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 21:56:47 +00:00
Craig Topper
4fb3d630a9 Revert part of r198115 to see if it fixes a buildbot failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198118 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 18:44:58 +00:00
Craig Topper
63c436884c Use getSimpleValueType in a few spots where the type should be simple.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198117 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 18:35:48 +00:00
Craig Topper
93bc4bb603 Minor indentation fix to match other switch statements. Change llvm_unreachable text to match similar places.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198116 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 17:37:32 +00:00
Craig Topper
89aeb02b71 Mark some Type and EVT methods as LLVM_READONLY.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198115 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 16:17:26 +00:00
NAKAMURA Takumi
d8e67feaf2 llvm/test/CodeGen/X86/vselect.ll: Unbreak Windows x64 targets to add -mtriple=x86_64-unknown-unknown.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198114 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 13:04:29 +00:00
Andrea Di Biagio
6ec3395335 [X86] Teach the backend how to fold target specific dag node for packed
vector shift by immedate count (VSHLI/VSRLI/VSRAI) into a build_vector when
the vector in input to the shift is a build_vector of all constants or UNDEFs.

Target specific nodes for packed shifts by immediate count are in
general introduced by function 'getTargetVShiftByConstNode' (in
X86ISelLowering.cpp) when lowering shift operations, SSE/AVX immediate
shift intrinsics and (only in very few cases) SIGN_EXTEND_INREG dag
nodes.

This patch adds extra rules for simplifying vector shifts inside
function 'getTargetVShiftByConstNode'.

Added file test/CodeGen/X86/vec_shift5.ll to verify that packed
shifts by immediate are correctly folded into a build_vector when the
input vector to the shift dag node is a vector of constants or undefs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198113 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 11:11:52 +00:00
Saleem Abdulrasool
14b42a1c92 AsmParser: cleanup diagnostics for .rep/.rept
Avoid double diagnostics for invalid expressions for count.  Improve caret
location for negative count.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198099 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 06:39:29 +00:00
Saleem Abdulrasool
b5191e98e8 IAS: support .rep as an alias for .rept
The GNU assembler supports .rep as an alias for .rept.  This simply creates the
alias for it and introduces a test for both .rept and .rep.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198097 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 05:54:33 +00:00
Saleem Abdulrasool
b28743fd16 ARMAsmParser: fix typo in comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198095 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 03:07:12 +00:00
Chandler Carruth
92ffb676af Disable transforms that introduce calls to exp10*() on Linux due to
widespread glibc bugs.

The glibc implementation of exp10 has a very serious precision bug in
version 2.15 (and older versions). This is still very widely used (the
current Ubuntu LTS for example uses it) and so it isn't reasonable to
make transforms that produce these functions. This fixes many
miscompiles introduced when we started transforming pow(10.0, ...) into
exp10, and it may have fixed other latent miscompiles where exp10
provided sufficient precision but exp10f did not.

This is all really horrible. The primary bug has been fixed for over
a year and glibc 2.18 works correctly for the test cases I have, but it
will be 2017 before the LTS using 2.15 is no longer supported by Ubuntu
(and thus reasonable for folks to be relying on). =[ We're either going
to need to live without these optimizations, or find a way to switch
behavior more dynamically than using simply the fact that the OS is
"Linux".

To make matters worse, there appears to be significant testing and
fixing of numerous other bugs in the exp10 family of functions right now
in glibc. While those haven't been causing problems I've seen in the
wild, it gives me concerns that we may need to wait until an even later
release of glibc before we can reliably transform code into exp10.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198093 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 02:40:19 +00:00
Eric Christopher
3955d28887 Remove AsmPrinter::needsRelocationsForDwarfStringPool() since it's
just calling into MAI and is only abstracting for a single interface that
we actually need to check in multiple places.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198092 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-28 01:39:17 +00:00