NAKAMURA Takumi [Mon, 30 Dec 2013 09:26:10 +0000 (09:26 +0000)]
Revert r198199 (and r198202). It broke 3 DebugInfo tests for targeting i686-cygming.
r198196: Use a pointer to keep track of the skeleton unit for each normal unit and construct it up front.
r198199: Reapply r198196 with a fix to zero initialize the skeleton pointer.
r198202: Fix aranges and split dwarf by ensuring that the symbol and relocation back to the compile unit from the aranges section is to the skeleton unit and not the one in the dwo.
They could be reproducible with explicit target.
llvm/lib/MC/WinCOFFObjectWriter.cpp:224: bool {anonymous}::COFFSymbol::should_keep() const: Assertion `Section->Number != -1 && "Sections with relocations must be real!"' failed.
llvm-svn: 198208
Alexander Potapenko [Mon, 30 Dec 2013 09:22:06 +0000 (09:22 +0000)]
[libsanitizer] Remove the redundant spaces between '#' and 'define'.
These definitions weren't included in any #ifdef blocks, and the spaces were placed inconsistently.
llvm-svn: 198207
NAKAMURA Takumi [Mon, 30 Dec 2013 07:02:12 +0000 (07:02 +0000)]
[CMake] Generate ${BUILD_MODE}/llvm-lit for each ${CMAKE_CONFIGURATION_TYPES}.
llvm-lit can be invoked;
$ Release/bin/llvm-lit
instead of;
$ bin/llvm-lit --param buid_mode=Release
llvm-svn: 198206
NAKAMURA Takumi [Mon, 30 Dec 2013 06:48:30 +0000 (06:48 +0000)]
[CMake][VS][XCode] Restruct the output directory layout more comfortable, ${BINARY_DIR}/${BUILD_MODE}/(bin|lib)
We have been seeing nasty directory layout with CMake multiconfig, such as,
bin/Release/clang.exe
lib/clang/3.x/...
lib/Release/clang/3.x/.. (duplicated)
Move the layout similar to autoconf's;
Release/bin/clang.exe
Release/lib/clang/3.x/...
Checked on Visual Studio 10. Could you guys please confirm my change on XCode(and other multiconfig builders)?
Note: Don't set variables CMAKE_*_OUTPUT_DIRECTORY any more, or a certain builder, for eaxample, msbuild.exe, would be confused.
llvm-svn: 198205
NAKAMURA Takumi [Mon, 30 Dec 2013 06:18:08 +0000 (06:18 +0000)]
Make lit.site.cfg Py3-compatible. Copied from r188041.
llvm-svn: 198204
Yaron Keren [Mon, 30 Dec 2013 05:31:53 +0000 (05:31 +0000)]
Visual C++ does not support -ffunction-sections -fdata-sections.
llvm-svn: 198203
Eric Christopher [Mon, 30 Dec 2013 05:25:49 +0000 (05:25 +0000)]
Fix aranges and split dwarf by ensuring that the symbol and relocation
back to the compile unit from the aranges section is to the skeleton
unit and not the one in the dwo.
Do this by adding a method to grab a forwarded on local sym and local
section by querying the skeleton if one exists and using that. Add
a few tests to verify the relocations are back to the correct section.
llvm-svn: 198202
Bill Wendling [Mon, 30 Dec 2013 05:17:29 +0000 (05:17 +0000)]
Keep comment with 'Subtarget' ivar.
llvm-svn: 198201
Nico Weber [Mon, 30 Dec 2013 03:43:30 +0000 (03:43 +0000)]
Port r198088 (set NO_DEAD_STRIP for clang) from make to cmake.
Also stop setting passing -dead_strip explicitly for libclang and instead
rely on this now happening by default. (And make it happen by default for
add_clang_library, which doesn't use the library cmake functions from llvm.)
llvm-svn: 198200
Eric Christopher [Mon, 30 Dec 2013 03:40:32 +0000 (03:40 +0000)]
Reapply r198196 with a fix to zero initialize the skeleton pointer.
llvm-svn: 198199
Nico Weber [Mon, 30 Dec 2013 03:36:05 +0000 (03:36 +0000)]
Port r198087 and r198089 (strip dead code by default) from make to cmake.
llvm-svn: 198198
Eric Christopher [Mon, 30 Dec 2013 03:12:31 +0000 (03:12 +0000)]
Temporarily revert "Use a pointer to keep track of the skeleton unit for
each normal unit" as it seems to be causing problems in the asan tests.
llvm-svn: 198197
Eric Christopher [Mon, 30 Dec 2013 03:02:12 +0000 (03:02 +0000)]
Use a pointer to keep track of the skeleton unit for each normal unit
and construct it up front. Add address ranges at the end and a helper
routine so that we're not needlessly using an indirction in the case
of split dwarf.
Update testcases according to the new ordering of attributes on
the compile unit.
llvm-svn: 198196
Jiangning Liu [Mon, 30 Dec 2013 02:45:09 +0000 (02:45 +0000)]
For AArch64 Neon, simplify scalar dup by lane0 for fp.
llvm-svn: 198195
Jiangning Liu [Mon, 30 Dec 2013 02:44:35 +0000 (02:44 +0000)]
For AArch64 Neon, simplify scalar dup by lane0 for fp.
llvm-svn: 198194
Hao Liu [Mon, 30 Dec 2013 02:38:12 +0000 (02:38 +0000)]
[AArch64]Add code to spill/fill Q register tuples such as QPair/QTriple/QQuad.
llvm-svn: 198193
Hao Liu [Mon, 30 Dec 2013 02:12:46 +0000 (02:12 +0000)]
[AArch64]Can't select shift left 0 of type v1i64
llvm-svn: 198192
Alp Toker [Mon, 30 Dec 2013 02:06:29 +0000 (02:06 +0000)]
Fix and reword some typos
llvm-svn: 198191
Kevin Qin [Mon, 30 Dec 2013 02:05:13 +0000 (02:05 +0000)]
Fix a bug in DAGcombiner about zero-extend after setcc.
For AArch64 backend, if DAGCombiner see "sext(setcc)", it will
combine them together to a single setcc with extended value type.
Then if it see "zext(setcc)", it assumes setcc is Vxi1, and try to
create "(and (vsetcc), (1, 1, ...)". While setcc isn't Vxi1,
DAGcombiner will create wrong node and get wrong code emitted.
llvm-svn: 198190
Alp Toker [Mon, 30 Dec 2013 01:59:29 +0000 (01:59 +0000)]
Cleanup: Switch the preprocessor to err_pp_expected_after
This is approaching consistency but the PP and Parse categories they still have
slightly different wording:
def err_pp_expected_after : Error<"missing %1 after %0">;
def err_expected_after : Error<"expected %1 after %0">;
llvm-svn: 198189
Hao Liu [Mon, 30 Dec 2013 01:38:41 +0000 (01:38 +0000)]
[AArch64]Fix the problem that can't select mul of v1i64/v2i64 types.
E.g. Can't select such IR:
%tmp = mul <2 x i64> %a, %b
llvm-svn: 198188
Nico Weber [Mon, 30 Dec 2013 00:05:56 +0000 (00:05 +0000)]
Don't use PrintFunctionNames.exports on Windows.
llvm-svn: 198187
Nico Weber [Sun, 29 Dec 2013 23:15:01 +0000 (23:15 +0000)]
Fix typo in comment.
llvm-svn: 198186
Nico Weber [Sun, 29 Dec 2013 23:14:26 +0000 (23:14 +0000)]
[cmake] Set in LLVM_EXPORTED_SYMBOL_FILE PrintFunctionNames/CMakeLists.txt.
The corresponding Makefile sets it too. Also tweak add_clang_library to support
LLVM_EXPORTED_SYMBOL_FILE for modules.
llvm-svn: 198185
Bill Wendling [Sun, 29 Dec 2013 23:09:14 +0000 (23:09 +0000)]
Un-XFAILify some tests which are now passing.
llvm-svn: 198184
Nico Weber [Sun, 29 Dec 2013 23:06:49 +0000 (23:06 +0000)]
Set LLVM_EXPORTED_SYMBOL_FILE in CMakeLists whose corresponding Makefiles do so.
(unittests/ExecutionEngine/JIT/CMakeLists.txt is still missing for now, since
it handles export files in a strange way: It generates a .exports file from a
.def file instead of the other way round.)
llvm-svn: 198183
Nico Weber [Sun, 29 Dec 2013 23:04:48 +0000 (23:04 +0000)]
[cmake] In add_llvm_loadable_module, don't clobber existing LINK_FLAGS on OS X.
Also add leading spaces to the LINK_FLAGS setters, since that's what the cmake
folks recommend: http://www.cmake.org/pipermail/cmake/2012-October/052399.html
llvm-svn: 198182
Jean-Daniel Dupas [Sun, 29 Dec 2013 20:18:15 +0000 (20:18 +0000)]
Fix a couple of memory leaks.
llvm-svn: 198178
Jean-Daniel Dupas [Sun, 29 Dec 2013 20:17:26 +0000 (20:17 +0000)]
Stop leaking MCRegisterInfo.
llvm-svn: 198177
Nico Weber [Sun, 29 Dec 2013 19:31:48 +0000 (19:31 +0000)]
Use LLVM_EXPORTED_SYMBOL_FILE in libclang's cmake build.
Now the exports file should have an effect on non-darwin too.
llvm-svn: 198176
Aaron Ballman [Sun, 29 Dec 2013 18:59:54 +0000 (18:59 +0000)]
Fixing a compile error that recently started happening for me in MSVC 2013. CFGTerminator has an explicit conversion to bool operator that we can make use of instead of using == 0.
llvm-svn: 198175
Saleem Abdulrasool [Sun, 29 Dec 2013 18:53:16 +0000 (18:53 +0000)]
ARM IAS: fix after r198172
The DPR and SPR register lists are also register lists. Furthermore, the
registers need not be checked individually since the register type can be
checked via the list kind. Use that to simplify the logic and fix the incorrect
assertion.
llvm-svn: 198174
Saleem Abdulrasool [Sun, 29 Dec 2013 17:58:35 +0000 (17:58 +0000)]
ARM: provide VFP aliases for pre-V6 mnemonics
In order to provide compatibility with the GNU assembler, provide aliases for
pre-UAL mnemonics for floating point operations.
llvm-svn: 198172
Saleem Abdulrasool [Sun, 29 Dec 2013 17:58:31 +0000 (17:58 +0000)]
ARM: fix a few typos in comments
llvm-svn: 198171
Saleem Abdulrasool [Sun, 29 Dec 2013 17:58:27 +0000 (17:58 +0000)]
ARM: fix typo in VFP instruction definition
The vstm family of VFP instructions belong to the VFP store itinerary class, not
the VFP load itinerary class.
llvm-svn: 198170
NAKAMURA Takumi [Sun, 29 Dec 2013 16:50:15 +0000 (16:50 +0000)]
Fix mis-merging in AddLLVM.cmake, take #2. LINK.EXE's options had been broken. Sorry again.
llvm-svn: 198169
Aaron Watry [Sun, 29 Dec 2013 16:39:55 +0000 (16:39 +0000)]
Pass -fno-builtin flag to clang to silence warnings
Reviewed-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 198168
Aaron Watry [Sun, 29 Dec 2013 16:39:53 +0000 (16:39 +0000)]
Fix build with LLVM 3.5
Reviewed-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 198167
NAKAMURA Takumi [Sun, 29 Dec 2013 16:19:13 +0000 (16:19 +0000)]
Fix mis-merging in AddLLVM.cmake. Sorry.
llvm-svn: 198166
NAKAMURA Takumi [Sun, 29 Dec 2013 16:15:31 +0000 (16:15 +0000)]
[CMake] Fix add_llvm_loadble_module.
Thanks to Edward-san, to let me know.
llvm-svn: 198165
NAKAMURA Takumi [Sun, 29 Dec 2013 16:15:26 +0000 (16:15 +0000)]
[CMake] add_llvm_symbol_exports: Use unique name for each target.
llvm-svn: 198164
NAKAMURA Takumi [Sun, 29 Dec 2013 16:15:18 +0000 (16:15 +0000)]
[CMake] add_llvm_symbol_exports: Use ${native_export_file} instead of equivalent constant "symbol.*', since it is defined.
llvm-svn: 198163
Mark Seaborn [Sun, 29 Dec 2013 10:47:04 +0000 (10:47 +0000)]
Fix indentation alignment of a declaration in MipsMCCodeEmitter.cpp
llvm-svn: 198162
Bill Wendling [Sun, 29 Dec 2013 08:00:04 +0000 (08:00 +0000)]
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
llvm-svn: 198160
Nico Weber [Sun, 29 Dec 2013 07:43:09 +0000 (07:43 +0000)]
Yet another attempt at getting cmake-clang-i686-mingw32 green.
llvm-svn: 198159
Alp Toker [Sun, 29 Dec 2013 07:39:53 +0000 (07:39 +0000)]
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.
llvm-svn: 198158
Venkatraman Govindaraju [Sun, 29 Dec 2013 07:15:09 +0000 (07:15 +0000)]
[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.
llvm-svn: 198157
Nico Weber [Sun, 29 Dec 2013 06:56:28 +0000 (06:56 +0000)]
Windows build fixes, hopefully last part.
r198153 fixed the msvs bot problem, but broke a msysgit bot. This change
hopefully makes both variants happy.
llvm-svn: 198156
Alp Toker [Sun, 29 Dec 2013 06:51:10 +0000 (06:51 +0000)]
Python compatibility fix for r198150
Remove the stat call error reporting for now.
It wasn't essential so silent fallback should be fine here.
llvm-svn: 198155
Alp Toker [Sun, 29 Dec 2013 06:33:19 +0000 (06:33 +0000)]
Fix parens fail in r198142
Probable cause of the lld build failure on VS 2012.
llvm-svn: 198154
Nico Weber [Sun, 29 Dec 2013 06:12:40 +0000 (06:12 +0000)]
Another windows build fix attempt.
Inspired by http://public.kitware.com/pipermail/cmake-developers/2012-March/003768.html
llvm-svn: 198153
Alp Toker [Sun, 29 Dec 2013 05:51:07 +0000 (05:51 +0000)]
Prospective Python 3 fix for r198150
llvm-svn: 198152
Nico Weber [Sun, 29 Dec 2013 05:39:01 +0000 (05:39 +0000)]
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.
llvm-svn: 198151
Alp Toker [Sun, 29 Dec 2013 05:09:05 +0000 (05:09 +0000)]
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.
llvm-svn: 198150
Venkatraman Govindaraju [Sun, 29 Dec 2013 04:27:21 +0000 (04:27 +0000)]
[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.
llvm-svn: 198149
Nico Weber [Sun, 29 Dec 2013 04:05:23 +0000 (04:05 +0000)]
The same we do every commit, Pinky: Try to fix the windows build (after r198136).
llvm-svn: 198148
Craig Topper [Sun, 29 Dec 2013 01:48:38 +0000 (01:48 +0000)]
Make more of the x86 lowering helper functions static.
llvm-svn: 198146
Venkatraman Govindaraju [Sun, 29 Dec 2013 01:20:36 +0000 (01:20 +0000)]
[SparcV9]: Implement lowering of long double (fp128) arguments in Sparc64 ABI.
Also, pass fp128 arguments to varargs through integer registers if necessary.
llvm-svn: 198145
Craig Topper [Sun, 29 Dec 2013 01:10:06 +0000 (01:10 +0000)]
Switch from EVT to MVT in more of the x86 instruction lowering code.
llvm-svn: 198144
Nico Weber [Sun, 29 Dec 2013 00:50:09 +0000 (00:50 +0000)]
Another windows build fix attempt after r198136.
The current quoting is stripped by cmake, try quoting more.
llvm-svn: 198143
Alp Toker [Sun, 29 Dec 2013 00:49:14 +0000 (00:49 +0000)]
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.
llvm-svn: 198142
Alp Toker [Sun, 29 Dec 2013 00:49:05 +0000 (00:49 +0000)]
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.
llvm-svn: 198141
Nico Weber [Sun, 29 Dec 2013 00:27:49 +0000 (00:27 +0000)]
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.
llvm-svn: 198140
Nico Weber [Sun, 29 Dec 2013 00:11:20 +0000 (00:11 +0000)]
Use `${CMAKE_COMMAND}` instead of `cmake`.
llvm-svn: 198139
Nico Weber [Sat, 28 Dec 2013 23:50:01 +0000 (23:50 +0000)]
Try to fix windows build after r198136.
`type` can't read from stdin.
llvm-svn: 198138
Nico Weber [Sat, 28 Dec 2013 23:39:49 +0000 (23:39 +0000)]
Try to fix linux build after r198136.
$ needs to be written $$ in makefiles, but not in cmakefiles.
llvm-svn: 198137
Nico Weber [Sat, 28 Dec 2013 23:31:44 +0000 (23:31 +0000)]
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.
llvm-svn: 198136
Nico Weber [Sat, 28 Dec 2013 23:26:51 +0000 (23:26 +0000)]
Remove windows newlines.
llvm-svn: 198135
Saleem Abdulrasool [Sat, 28 Dec 2013 22:47:55 +0000 (22:47 +0000)]
CodeGen: silence a C++11 feature warning
llvm-svn: 198133
Saleem Abdulrasool [Sat, 28 Dec 2013 22:47:53 +0000 (22:47 +0000)]
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.
llvm-svn: 198132
Andrew Trick [Sat, 28 Dec 2013 22:25:57 +0000 (22:25 +0000)]
Uninitialized variable (in never taken path) after factoring.
llvm-svn: 198131
Alp Toker [Sat, 28 Dec 2013 21:59:11 +0000 (21:59 +0000)]
Briefly document diag-build.sh
It may be a quick and dirty script but it's still useful to have some
indication as to its purpose.
Text taken straight from Jordan's r158682 commit message.
llvm-svn: 198128
Alp Toker [Sat, 28 Dec 2013 21:59:02 +0000 (21:59 +0000)]
Rename isBuiltinCall() to getBuiltinCallee()
This better describes what the function does.
Cleanup only.
llvm-svn: 198127
Alp Toker [Sat, 28 Dec 2013 21:58:40 +0000 (21:58 +0000)]
Tidy up CGCXXABI creation
'create' functions conventionally return a pointer, not a reference.
Also use an OwningPtr to get replace the delete of a reference member.
No functional change.
llvm-svn: 198126
Andrew Trick [Sat, 28 Dec 2013 21:57:05 +0000 (21:57 +0000)]
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.
llvm-svn: 198125
Andrew Trick [Sat, 28 Dec 2013 21:57:02 +0000 (21:57 +0000)]
Added debugging options: -misched-only-func/block
llvm-svn: 198124
Andrew Trick [Sat, 28 Dec 2013 21:57:00 +0000 (21:57 +0000)]
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.
llvm-svn: 198123
Andrew Trick [Sat, 28 Dec 2013 21:56:57 +0000 (21:56 +0000)]
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.
llvm-svn: 198122
Andrew Trick [Sat, 28 Dec 2013 21:56:55 +0000 (21:56 +0000)]
Move the PostRA scheduler's fixupKills function for reuse.
llvm-svn: 198121
Andrew Trick [Sat, 28 Dec 2013 21:56:51 +0000 (21:56 +0000)]
Stub out a PostMachineScheduler pass.
Placeholder and boilerplate for a PostRA MachineScheduler pass.
llvm-svn: 198120
Andrew Trick [Sat, 28 Dec 2013 21:56:47 +0000 (21:56 +0000)]
Factor MI-Sched in preparation for post-ra scheduling support.
Factor the MachineFunctionPass into MachineSchedulerBase.
Split the DAG class into ScheduleDAGMI and SchedulerDAGMILive.
llvm-svn: 198119
Craig Topper [Sat, 28 Dec 2013 18:44:58 +0000 (18:44 +0000)]
Revert part of r198115 to see if it fixes a buildbot failure.
llvm-svn: 198118
Craig Topper [Sat, 28 Dec 2013 18:35:48 +0000 (18:35 +0000)]
Use getSimpleValueType in a few spots where the type should be simple.
llvm-svn: 198117
Craig Topper [Sat, 28 Dec 2013 17:37:32 +0000 (17:37 +0000)]
Minor indentation fix to match other switch statements. Change llvm_unreachable text to match similar places.
llvm-svn: 198116
Craig Topper [Sat, 28 Dec 2013 16:17:26 +0000 (16:17 +0000)]
Mark some Type and EVT methods as LLVM_READONLY.
llvm-svn: 198115
NAKAMURA Takumi [Sat, 28 Dec 2013 13:04:29 +0000 (13:04 +0000)]
llvm/test/CodeGen/X86/vselect.ll: Unbreak Windows x64 targets to add -mtriple=x86_64-unknown-unknown.
llvm-svn: 198114
Andrea Di Biagio [Sat, 28 Dec 2013 11:11:52 +0000 (11:11 +0000)]
[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.
llvm-svn: 198113
Rui Ueyama [Sat, 28 Dec 2013 10:09:21 +0000 (10:09 +0000)]
Simplify if ... return repetition.
llvm-svn: 198108
Enrico Granata [Sat, 28 Dec 2013 08:44:02 +0000 (08:44 +0000)]
Add a new way to bind a format to a type: by enum type
The "type format add" command gets a new flag --type (-t). If you pass -t <sometype>, upon fetching the value for an object of your type,
LLDB will display it as-if it was of enumeration type <sometype>
This is useful in cases of non-contiguous enums where there are empty gaps of unspecified values, and as such one cannot type their variables as the enum type,
but users would still like to see them as-if they were of the enum type (e.g. DWARF field types with their user-reserved ranges)
The SB API has also been improved to handle both types of formats, and a test case is added
llvm-svn: 198105
Rui Ueyama [Sat, 28 Dec 2013 08:40:37 +0000 (08:40 +0000)]
[PECOFF] Warn only when /export options are not compatible.
Currently LLD always print a warning message if the same symbol is specified
more than once for /export option. It's a bit annoying because specifying the
same symbol with compatible options is actually safe and considered as a
normal use case. This patch makes LLD to warn only when incompatible export
options are given.
llvm-svn: 198104
Rui Ueyama [Sat, 28 Dec 2013 08:40:23 +0000 (08:40 +0000)]
temporary commit
llvm-svn: 198103
Rui Ueyama [Sat, 28 Dec 2013 08:11:21 +0000 (08:11 +0000)]
[PECOFF] Use std::set to store export symbol descriptors.
Each export symbol descriptor has unique name attribute, so std::set is
better container than std::vector for it. No functionality change.
llvm-svn: 198102
Saleem Abdulrasool [Sat, 28 Dec 2013 06:39:29 +0000 (06:39 +0000)]
AsmParser: cleanup diagnostics for .rep/.rept
Avoid double diagnostics for invalid expressions for count. Improve caret
location for negative count.
llvm-svn: 198099
Saleem Abdulrasool [Sat, 28 Dec 2013 05:54:33 +0000 (05:54 +0000)]
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.
llvm-svn: 198097
Bob Wilson [Sat, 28 Dec 2013 05:26:14 +0000 (05:26 +0000)]
Propagate "-arch x86_64h" setting to the linker. <rdar://problem/
15711488>
This is a follow-up to r194907, which added a new -arch setting to make it
easier to specify AVX2 targets. The "-arch x86_64h" option needs to be passed
on to the linker, but it was getting canonicalized to x86_64 by the code
in getArchTypeForDarwinArchName.
llvm-svn: 198096
Saleem Abdulrasool [Sat, 28 Dec 2013 03:07:12 +0000 (03:07 +0000)]
ARMAsmParser: fix typo in comment
llvm-svn: 198095
Chandler Carruth [Sat, 28 Dec 2013 02:50:00 +0000 (02:50 +0000)]
Silence a dubious GCC warning about a set but unused global. Indeed, the
purpose of this global is to be set and not used. =]
llvm-svn: 198094
Chandler Carruth [Sat, 28 Dec 2013 02:40:19 +0000 (02:40 +0000)]
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.
llvm-svn: 198093
Eric Christopher [Sat, 28 Dec 2013 01:39:17 +0000 (01:39 +0000)]
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.
llvm-svn: 198092
Joey Gouly [Sat, 28 Dec 2013 00:46:57 +0000 (00:46 +0000)]
Fix a gcc-4.8 warning, about extraneous semicolons.
llvm-svn: 198091