Ahmed Bougacha [Mon, 23 Mar 2015 17:48:07 +0000 (17:48 +0000)]
[CodeGen] Convert double -> __fp16 in one step.
Fix the CodeGen so that for types bigger than float, instead of
converting to fp16 via the sequence "InTy -> float -> fp16", we
perform conversions in just one step. This avoids the double
rounding which potentially changes results from a natural
IEEE-754 operation.
rdar://
17594379, rdar://
17468714
Differential Revision: http://reviews.llvm.org/D4602
Part of: http://reviews.llvm.org/D8367
llvm-svn: 232968
Chad Rosier [Mon, 23 Mar 2015 17:19:34 +0000 (17:19 +0000)]
[AArch64] Enable rematerialization of float 0 values.
Patch by Geoff Berry<gberry@codeaurora.org>.
llvm-svn: 232967
Stephane Sezer [Mon, 23 Mar 2015 17:05:41 +0000 (17:05 +0000)]
Do not assert on POSIXDYLD double-eAdd.
Summary:
This has been discovered while experimenting with the gecko linker on android.
In general, assert()'ing on "user input" is a bad idea.
Test Plan: Run unit tests.
Reviewers: clayborg, tfiala
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D8495
llvm-svn: 232966
Tom Stellard [Mon, 23 Mar 2015 17:01:37 +0000 (17:01 +0000)]
Implement half_sqrt builtin v2
This is a generic implementation which just calls sqrt. Targets should
override this if they want a faster implementation.
v2:
- Alphabetize SOURCES
llvm-svn: 232965
Tom Stellard [Mon, 23 Mar 2015 17:01:35 +0000 (17:01 +0000)]
Implement distance builtin v2
This implementation was ported from the AMD builtin library
and has been tested with piglit, OpenCV, and the ocl conformance tests.
v2:
- Remove unnecessary copyright.
llvm-svn: 232964
Tom Stellard [Mon, 23 Mar 2015 17:01:33 +0000 (17:01 +0000)]
Fix implementation of length builtin v2
v2:
- Move common code into a macro
- Use the same constant for all vector types.
llvm-svn: 232963
Bradley Smith [Mon, 23 Mar 2015 16:52:52 +0000 (16:52 +0000)]
Revert "[ARM] Add more pattern matching for f16 <-> f64 conversions"
This change is incorrect since it converts double rounding into single rounding,
which can produce different results. Instead this optimization will be done by
modifying Clang's codegen to not produce double rounding in the first place.
This reverts commit r232954.
llvm-svn: 232962
Eli Bendersky [Mon, 23 Mar 2015 16:26:23 +0000 (16:26 +0000)]
Simplify boolean expressions with true and false using clang-tidy
Patch by Richard (legalize@xmission.com)
Differential Revision: http://reviews.llvm.org/D8521
llvm-svn: 232961
Tom Stellard [Mon, 23 Mar 2015 16:20:24 +0000 (16:20 +0000)]
Add __clc_ prefix to functions in sincos_helpers.cl
This will help avoid naming conflicts with functions defined in
kernels linking with libclc.
llvm-svn: 232960
Tamas Berghammer [Mon, 23 Mar 2015 16:17:47 +0000 (16:17 +0000)]
Shorten executable name in WatchpointLLDBCommandTestCase
It is required because the name of the executable exceeded the maximum
allowed file name on android.
llvm-svn: 232959
James Molloy [Mon, 23 Mar 2015 16:15:16 +0000 (16:15 +0000)]
[ARM] Remove target-specific ITOFP/FPTOI nodes
Anton tried this 5 years ago but it was reverted due to extra VMOVs
being emitted. This can be easily fixed with a liberal application
of patterns - matching loads/stores and extractelts.
llvm-svn: 232958
Tom Stellard [Mon, 23 Mar 2015 16:06:01 +0000 (16:06 +0000)]
R600/SI: Fix crash in SIInstrInfo::areLoadsFromSameBasePtr()
This function assumed that SMRD instructions always have immediate
offsets, which is not always the case.
llvm-svn: 232957
NAKAMURA Takumi [Mon, 23 Mar 2015 16:05:50 +0000 (16:05 +0000)]
OpenMPClause.h: Fix typo in \param. [-Wdocumentation]
llvm-svn: 232956
Colin LeMahieu [Mon, 23 Mar 2015 16:01:03 +0000 (16:01 +0000)]
[Hexagon] Simplify boolean expression
Patch by Richard
http://reviews.llvm.org/D8523
llvm-svn: 232955
Bradley Smith [Mon, 23 Mar 2015 15:59:54 +0000 (15:59 +0000)]
[ARM] Add more pattern matching for f16 <-> f64 conversions
Specifically when the conversion is done in two steps, f16 -> f32 -> f64.
For example:
%1 = tail call float @llvm.convert.from.fp16.f32(i16 %0)
%conv = fpext float %1 to double
to:
vcvtb.f64.f16
llvm-svn: 232954
Benjamin Kramer [Mon, 23 Mar 2015 15:55:00 +0000 (15:55 +0000)]
Fix the CMake shared build.
The ELF backends now depend on lld::script::Sema, which is in libReaderWriter.
Link it explicitly.
llvm-svn: 232953
Tamas Berghammer [Mon, 23 Mar 2015 15:50:03 +0000 (15:50 +0000)]
Remove virtual and add override to all virtual functions in Process/gdb-remote.
llvm-svn: 232952
Ilia K [Mon, 23 Mar 2015 14:22:27 +0000 (14:22 +0000)]
Fix ObjCDataFormatterTestCase.test_nsdate_* tests (ver. 2)
This commit reverts r232946 because it caused an another error with absolute time.
llvm-svn: 232951
Ilia K [Mon, 23 Mar 2015 14:00:54 +0000 (14:00 +0000)]
Convert CRLF to LF in CODE_OWNERS.txt
llvm-svn: 232950
Benjamin Kramer [Mon, 23 Mar 2015 13:59:13 +0000 (13:59 +0000)]
[gcov] Move formatBranchInfo into an anonymous namespace.
NFC.
llvm-svn: 232949
Benjamin Kramer [Mon, 23 Mar 2015 12:49:15 +0000 (12:49 +0000)]
Make helpers static. clang-tools edition.
Also purge dead code found by it. NFC.
llvm-svn: 232948
Benjamin Kramer [Mon, 23 Mar 2015 12:47:15 +0000 (12:47 +0000)]
[tooling] Move ArgumentsAdjustingCompilations into an anonymous namespace.
NFC.
llvm-svn: 232947
Ilia K [Mon, 23 Mar 2015 12:44:54 +0000 (12:44 +0000)]
Fix ObjCDataFormatterTestCase.test_nsdate_* tests
The time/date strings (like "6pm April 10, 1985") are interpreted as a local time but CFDateGetAbsoluteTime() returns time in UTC. It caused a problem when local time was UTC+0100 or more (0200, 0300 etc.):
```
======================================================================
FAIL: test_nsdate_with_dsym_and_run_command (TestDataFormatterObjC.ObjCDataFormatterTestCase)
Test formatters for NSDate.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 462, in wrapper
return func(self, *args, **kwargs)
File "/Users/IliaK/p/llvm/tools/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py", line 157, in test_nsdate_with_dsym_and_run_command
self.appkit_tester_impl(self.buildDsym,self.nsdate_data_formatter_commands)
File "/Users/IliaK/p/llvm/tools/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py", line 34, in appkit_tester_impl
commands()
File "/Users/IliaK/p/llvm/tools/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py", line 475, in nsdate_data_formatter_commands
substrs = ['1985-04','2011-01'])
File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 2146, in expect
msg if msg else EXP_MSG(str, exe))
AssertionError: False is not True : '2011-01' returns expected result
Config=x86_64-clang
======================================================================
FAIL: test_nsdate_with_dwarf_and_run_command (TestDataFormatterObjC.ObjCDataFormatterTestCase)
Test formatters for NSDate.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 479, in wrapper
return func(self, *args, **kwargs)
File "/Users/IliaK/p/llvm/tools/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py", line 163, in test_nsdate_with_dwarf_and_run_command
self.appkit_tester_impl(self.buildDwarf,self.nsdate_data_formatter_commands)
File "/Users/IliaK/p/llvm/tools/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py", line 34, in appkit_tester_impl
commands()
File "/Users/IliaK/p/llvm/tools/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py", line 475, in nsdate_data_formatter_commands
substrs = ['1985-04','2011-01'])
File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 2146, in expect
msg if msg else EXP_MSG(str, exe))
AssertionError: False is not True : '2011-01' returns expected result
Config=x86_64-clang
```
llvm-svn: 232946
Benjamin Kramer [Mon, 23 Mar 2015 12:31:05 +0000 (12:31 +0000)]
Move private classes into anonymous namespaces
Also merge anonymous namespaces in Targets.cpp a bit. NFC.
llvm-svn: 232945
Benjamin Kramer [Mon, 23 Mar 2015 12:30:58 +0000 (12:30 +0000)]
Move private classes into anonymous namespaces
NFC.
llvm-svn: 232944
Petar Jovanovic [Mon, 23 Mar 2015 12:28:13 +0000 (12:28 +0000)]
Fix sign extension for MIPS64 in makeLibCall function
Fixing sign extension in makeLibCall for MIPS64. In MIPS64 architecture all
32 bit arguments (int, unsigned int, float 32 (soft float)) must be sign
extended. This fixes test "MultiSource/Applications/oggenc/".
Patch by Strahinja Petrovic.
Differential Revision: http://reviews.llvm.org/D7791
llvm-svn: 232943
Denis Protivensky [Mon, 23 Mar 2015 11:38:24 +0000 (11:38 +0000)]
[ARM] Fix entry point for Thumb code
Test cases for both entry functions in ARM and Thumb
code are added.
llvm-svn: 232942
Daniel Sanders [Mon, 23 Mar 2015 11:33:15 +0000 (11:33 +0000)]
[aarch64] Distinguish the 'Q' and 'm' inline assembly memory constraints.
Summary:
But still handle them the same way since I don't know how they differ on
this target.
Clang also has code for 'Ump', 'Utf', 'Usa', and 'Ush' but calls
llvm_unreachable() on this code path so they are not converted to a
constraint id at the moment.
No functional change intended.
Reviewers: t.p.northover
Subscribers: aemerson, llvm-commits
Differential Revision: http://reviews.llvm.org/D8177
llvm-svn: 232941
Scott Douglass [Mon, 23 Mar 2015 10:54:24 +0000 (10:54 +0000)]
handle armeb/thumb/thumbeb consistently in gnutools::Assemble::ConstructJob
Differential Revision: http://reviews.llvm.org/D8196
llvm-svn: 232940
Scott Douglass [Mon, 23 Mar 2015 10:46:28 +0000 (10:46 +0000)]
Convert cascading if-else-if to switch. NFC
Differential Revision: http://reviews.llvm.org/D8485
llvm-svn: 232939
Simon Atanasyan [Mon, 23 Mar 2015 10:33:46 +0000 (10:33 +0000)]
[ELF] Add missing override keyword
No functional changes.
llvm-svn: 232938
Alexander Potapenko [Mon, 23 Mar 2015 10:32:28 +0000 (10:32 +0000)]
[libsanitizer] Fix OpenFile() usage in TSan and DFSan.
This is a follow-up for r232936.
llvm-svn: 232937
Alexander Potapenko [Mon, 23 Mar 2015 10:10:46 +0000 (10:10 +0000)]
[ASan] Distinguish between read, write and read-write file access modes in OpenFile.
This is to fix mapping coverage files into memory on OSX.
llvm-svn: 232936
Hal Finkel [Mon, 23 Mar 2015 08:22:43 +0000 (08:22 +0000)]
[SDAG] Don't widen VSETCC during type legalization for split operands
Because the operands of a vector SETCC node can be of a different type from the
result (and often are), it can happen that even if we'd prefer to widen the
result type of the SETCC, the operands have been split instead. In this case,
the SETCC result also must be split. This mirrors what is done in
WidenVecRes_SELECT, and should be NFC elsewhere because if the operands are not
widened the following calls to GetWidenedVector will assert (which is what was
happening in the test case).
llvm-svn: 232935
Tobias Grosser [Mon, 23 Mar 2015 07:00:36 +0000 (07:00 +0000)]
Drop -polly-vectorizer-unroll-only option
This options was earlier used for experiments with the vectorizer, but to my
knowledge is not really used anymore. If anybody needs this, we can always
reintroduce this feature.
llvm-svn: 232934
Alexey Bataev [Mon, 23 Mar 2015 06:40:37 +0000 (06:40 +0000)]
[OPENMP] Fixed test for 'single' directive codegen.
llvm-svn: 232933
Alexey Bataev [Mon, 23 Mar 2015 06:18:07 +0000 (06:18 +0000)]
[OPENMP] Codegen for 'copyprivate' clause ('single' directive).
If there is at least one 'copyprivate' clause is associated with the single directive, the following code is generated:
```
i32 did_it = 0; \\ for 'copyprivate' clause
if(__kmpc_single(ident_t *, gtid)) {
SingleOpGen();
__kmpc_end_single(ident_t *, gtid);
did_it = 1; \\ for 'copyprivate' clause
}
<copyprivate_list>[0] = &var0;
...
<copyprivate_list>[n] = &varn;
call __kmpc_copyprivate(ident_t *, gtid, <copyprivate_list_size>,
<copyprivate_list>, <copy_func>, did_it);
...
void<copy_func>(void *LHSArg, void *RHSArg) {
Dst = (void * [n])(LHSArg);
Src = (void * [n])(RHSArg);
Dst[0] = Src[0];
... Dst[n] = Src[n];
}
```
All list items from all 'copyprivate' clauses are gathered into single <copyprivate list> (<copyprivate_list_size> is a size in bytes of this list) and <copy_func> is used to propagate values of private or threadprivate variables from the 'single' region to other implicit threads from outer 'parallel' region.
Differential Revision: http://reviews.llvm.org/D8410
llvm-svn: 232932
Lang Hames [Mon, 23 Mar 2015 06:02:49 +0000 (06:02 +0000)]
[Orc] Add missing -use-orcmcjit flag to a number of Orc regression tests.
llvm-svn: 232931
Daniel Jasper [Mon, 23 Mar 2015 05:52:28 +0000 (05:52 +0000)]
Revert "Add CodeGen support for adding cpu attributes on functions based on"
This breaks CodeGen for an internal target. I'll get repro instructions
to you.
llvm-svn: 232930
Craig Topper [Mon, 23 Mar 2015 04:17:11 +0000 (04:17 +0000)]
Fix typo 'AVX too' instead of 'AVX2'
llvm-svn: 232929
Richard Smith [Mon, 23 Mar 2015 03:25:59 +0000 (03:25 +0000)]
[modules] Remove redundant import of lexical decls when building a lookup table
for a DeclContext, and fix propagation of exception specifications along
redeclaration chains.
This reverts r232905, r232907, and r232907, which reverted r232793, r232853,
and r232853.
One additional change is present here to resolve issues with LLDB: distinguish
between whether lexical decls missing from the lookup table are local or are
provided by the external AST source, and still look in the external source if
that's where they came from.
llvm-svn: 232928
Craig Topper [Mon, 23 Mar 2015 00:15:06 +0000 (00:15 +0000)]
[X86] Add one stepping of Broadwell to the CPU name autodetection for march=native.
llvm-svn: 232927
Davide Italiano [Sun, 22 Mar 2015 23:43:58 +0000 (23:43 +0000)]
Use POSIX pid_t and not lldb::pid_t.
The latter is uint64_t beacuse lldb supports arbitrary pid/platforms
but in this case we're using it as return value for fork() which might
return -1 to the parent in case the syscall fails.
Differential Revision: http://reviews.llvm.org/D8491
llvm-svn: 232926
Richard Smith [Sun, 22 Mar 2015 23:18:46 +0000 (23:18 +0000)]
Add missing #include to fix libc++ Linux build.
llvm-svn: 232925
Benjamin Kramer [Sun, 22 Mar 2015 21:57:53 +0000 (21:57 +0000)]
[ASTMatchers] Factor wrapping matcher classes into a common base class.
The deduplication here is negligible, but it allows the compiler to
skip emission of many templated base class destructors. Shrinks
clang-query by 53k. No functionality change intended.
llvm-svn: 232924
David Majnemer [Sun, 22 Mar 2015 21:27:10 +0000 (21:27 +0000)]
Silence a GCC warning
llvm-svn: 232923
Benjamin Kramer [Sun, 22 Mar 2015 18:22:33 +0000 (18:22 +0000)]
FoldingSet: Make FoldingSetImpl's dtor protected and non-virtual
It's not intended to be polymorphically deleted. Make FoldingSet
and ContextualFoldingSet final to avoid noise from -Wnon-virtual-dtor.
No functional change intended.
llvm-svn: 232922
Benjamin Kramer [Sun, 22 Mar 2015 18:16:22 +0000 (18:16 +0000)]
[Analyzer] Don't inherit from FoldingSet.
That's not really necessary here. NFCI.
llvm-svn: 232921
Kuba Brecka [Sun, 22 Mar 2015 18:00:58 +0000 (18:00 +0000)]
Fix a flaky heap-overflow-large.cc test
Reviewed at http://reviews.llvm.org/D8515
llvm-svn: 232920
Simon Atanasyan [Sun, 22 Mar 2015 16:35:08 +0000 (16:35 +0000)]
[Mips] Pass type of relocation and addendum to the `calculateRelocation`
separately
This change reduce difference between the trunk and upcoming patch and
simplify the future code review.
No functional changes.
llvm-svn: 232919
Benjamin Kramer [Sun, 22 Mar 2015 16:05:46 +0000 (16:05 +0000)]
Update unit test for r232916.
llvm-svn: 232918
Duncan P. N. Exon Smith [Sun, 22 Mar 2015 15:58:21 +0000 (15:58 +0000)]
Prevent CHECK-NOTs from matching file paths
A build directory with a name like `build-Werror` would hit a false
positive on these `CHECK-NOT`s before, since the actual error line looks
like:
.../build-Werror/bin/llvm-as <stdin>:1:2: error: ...
Switch to using:
CHECK-NOT: error:
(note the trailing semi-colon) to avoid matching almost any file path.
llvm-svn: 232917
Benjamin Kramer [Sun, 22 Mar 2015 15:56:12 +0000 (15:56 +0000)]
[multilib] Turn virtual functor into functin_ref
And update code to use lambdas where possible, plus random cleanup. NFCI.
llvm-svn: 232916
Simon Atanasyan [Sun, 22 Mar 2015 15:41:16 +0000 (15:41 +0000)]
[Mips] Rename template argument ELFType => ELFT
No functional changes.
llvm-svn: 232915
Simon Atanasyan [Sun, 22 Mar 2015 15:41:10 +0000 (15:41 +0000)]
[Mips] Use allocator from the base class
No functional changes.
llvm-svn: 232914
Simon Pilgrim [Sun, 22 Mar 2015 13:38:36 +0000 (13:38 +0000)]
Fixed MSVC compile warning issue introduced in r232837
- was reporting 'warning C4715: 'getType32' : not all control paths return a value'
llvm-svn: 232913
Faisal Vali [Sun, 22 Mar 2015 13:35:56 +0000 (13:35 +0000)]
Add a dump function to Stmt that takes only an output stream. No functionality change.
This allows dumping to any given output stream but without requiring a SourceManager, similar to the interface provided by Decl.
It's useful when writing certain generic debug functions, external to the clang code base (for e.g.).
llvm-svn: 232912
Tobias Grosser [Sun, 22 Mar 2015 12:06:39 +0000 (12:06 +0000)]
Use schedule trees to perform post-scheduling transformations
Replacing the old band_tree based code with code that is based on the new
schedule tree [1] interface makes applying complex schedule transformations a lot
more straightforward. We now do not need to reason about the meaning of flat
schedules, but can use a more straightforward tree structure. We do not yet
exploit this a lot in the current code, but hopefully we will be able to do so
soon.
This change also allows us to drop some code, as isl now provides some higher
level interfaces to apply loop transformations such as tiling.
This change causes some small test case changes as isl uses a slightly different
way to perform loop tiling, but no significant functional changes are intended.
[1] http://impact.gforge.inria.fr/impact2014/papers/impact2014-verdoolaege.pdf
llvm-svn: 232911
Kuba Brecka [Sun, 22 Mar 2015 11:38:55 +0000 (11:38 +0000)]
Demangling for DlAddrSymbolizer
On OS X, dladdr() provides mangled names only, so we need need to demangle in
DlAddrSymbolizer::SymbolizePC.
Reviewed at http://reviews.llvm.org/D8291
llvm-svn: 232910
Benjamin Kramer [Sun, 22 Mar 2015 10:08:31 +0000 (10:08 +0000)]
Remove empty files left behind by r232907.
llvm-svn: 232909
Kuba Brecka [Sun, 22 Mar 2015 10:02:50 +0000 (10:02 +0000)]
Add AtosSymbolizer and DlAddrSymbolizer as fallbacks for OS X
This patch changes the symbolizer chain on OS X (which currently only uses 1
symbolizer at most) to use this behavior:
* By default, use LLVMSymbolizer -> DlAddrSymbolizer.
* If the llvm-symbolizer binary is not found, use AtosSymbolizer
-> DlAddrSymbolizer.
* If the user specifies ASAN_SYMBOLIZER_PATH=.../atos, then use AtosSymbolizer
-> DlAddrSymbolizer.
* If neither llvm-symbolizer or atos is found, or external symbolication is
disabled with ASAN_SYMBOLIZER_PATH="", use DlAddrSymbolizer.
Reviewed at http://reviews.llvm.org/D8285
llvm-svn: 232908
Vince Harron [Sun, 22 Mar 2015 08:47:07 +0000 (08:47 +0000)]
Reverting 232853 and 232870 because they depend on 232793,
which was reverted because it was causing LLDB test failures
llvm-svn: 232907
David Majnemer [Sun, 22 Mar 2015 08:39:22 +0000 (08:39 +0000)]
MS ABI: Implement driver-level support for thread-safe statics
Decide whether or not to use thread-safe statics depending on whether or
not we have an explicit request from the driver. If we don't have an
explicit request, infer which behavior to use depending on the
compatibility version we are targeting.
N.B. CodeGen support is still ongoing.
llvm-svn: 232906
Vince Harron [Sun, 22 Mar 2015 05:59:59 +0000 (05:59 +0000)]
Reverting r232793 until some new LLDB failures are discussed
llvm-svn: 232905
Vince Harron [Sun, 22 Mar 2015 05:47:00 +0000 (05:47 +0000)]
Reverted r232883 due to failing tests.
llvm-svn: 232904
Benjamin Kramer [Sat, 21 Mar 2015 22:04:26 +0000 (22:04 +0000)]
[SimplifyLibCalls] Fix negative shifts being produced by the memchr -> bitfield transform.
llvm-svn: 232903
Benjamin Kramer [Sat, 21 Mar 2015 21:09:33 +0000 (21:09 +0000)]
[SimplifyLibCalls] Turn memchr(const, C, const) into a bitfield check.
strchr("123!", C) != nullptr is a common pattern to check if C is one
of 1, 2, 3 or !. If the largest element of the string is smaller than
the target's register size we can easily create a bitfield and just
do a simple test for set membership.
int foo(char C) { return strchr("123!", C) != nullptr; } now becomes
cmpl $64, %edi ## range check
sbbb %al, %al
movabsq $0xE000200000001, %rcx
btq %rdi, %rcx ## bit test
sbbb %cl, %cl
andb %al, %cl ## and the two conditions
andb $1, %cl
movzbl %cl, %eax ## returning an int
ret
(imho the backend should expand this into a series of branches, but
that's a different story)
The code is currently limited to bit fields that fit in a register, so
usually 64 or 32 bits. Sadly, this misses anything using alpha chars
or {}. This could be fixed by just emitting a i128 bit field, but that
can generate really ugly code so we have to find a better way. To some
degree this is also recreating switch lowering logic, but we can't
simply emit a switch instruction and thus change the CFG within
instcombine.
llvm-svn: 232902
Matt Arsenault [Sat, 21 Mar 2015 19:15:46 +0000 (19:15 +0000)]
R600: Cleanup test with multiple check prefixes
llvm-svn: 232901
Nico Weber [Sat, 21 Mar 2015 17:56:44 +0000 (17:56 +0000)]
-Wdynamic-class-memaccess: Also warn about array types.
It looks like not warning on this was an oversight in the original
implementation of this warning.
llvm-svn: 232900
Nico Weber [Sat, 21 Mar 2015 17:37:46 +0000 (17:37 +0000)]
Dedent code for -Wdynamic-class-memaccess warning. No behavior change.
The diff looks intimidating, but this just moves the -Wdynamic-class-memaccess
code out a scope, protected by a
if (PointeeTy == QualType())
continue;
check so that it still only runs when it should.
llvm-svn: 232899
Benjamin Kramer [Sat, 21 Mar 2015 16:42:35 +0000 (16:42 +0000)]
StringRef: Just forward StringRef::find to libc's memchr.
Modern libc's have an SSE version of memchr which is a lot faster than our
hand-rolled version. In the past I was reluctant to use it because Darwin's
memchr used a naive ridiculously slow implementation, but that has been fixed
some versions ago.
Should have zero functional impact.
llvm-svn: 232898
Benjamin Kramer [Sat, 21 Mar 2015 15:37:32 +0000 (15:37 +0000)]
Revert accidental commit.
While this is a fun change, I didn't really test it :)
llvm-svn: 232897
Benjamin Kramer [Sat, 21 Mar 2015 15:36:21 +0000 (15:36 +0000)]
SimplifyLibCalls: Add basic optimization of memchr calls.
This is just memchr(x, y, 0) -> nullptr and constant folding.
llvm-svn: 232896
Benjamin Kramer [Sat, 21 Mar 2015 15:36:06 +0000 (15:36 +0000)]
ValueTracking: Forward getConstantStringInfo's TrimAtNul param into recursive invocation
Currently this is only used to tweak the backend's memcpy inlining
heuristics, testing that isn't very helpful. A real test case will
follow in the next commit, where this behavior would cause a real
miscompilation.
llvm-svn: 232895
Simon Pilgrim [Sat, 21 Mar 2015 14:05:12 +0000 (14:05 +0000)]
Tidied up vec_zero_cse.ll test. NFCI.
Added target triple and refactored the CHECKs to be per function.
llvm-svn: 232894
Alexander Musman [Sat, 21 Mar 2015 11:49:27 +0000 (11:49 +0000)]
Small test fix for r232890
llvm-svn: 232893
Ilia K [Sat, 21 Mar 2015 11:11:07 +0000 (11:11 +0000)]
Compare pointers directly instead of ::strcmp in SBXxx::EventIsXxxEvent()
llvm-svn: 232892
Ilia K [Sat, 21 Mar 2015 10:53:37 +0000 (10:53 +0000)]
Fix handling of CommandInterpreter's events in lldb-mi
Summary:
Previously lldb-mi contains a stub for that but it didn't work and all CommanInterpreter's events were ignored.
This commit adds a handling of CommandInterpreter's events in lldb-mi.
Steps:
# Fix CMICmnLLDBDebugger::InitSBListener
# Add SBCommandInterpreter::EventIsCommandInterpreterEvent
# Exit on lldb::SBCommandInterpreter::eBroadcastBitQuitCommandReceived
All tests pass on OS X.
In further we can remove "quit" hack in lldb-mi.
Test Plan:
# Create start_script file:
```
target create ~/p/hello
b main
r
quit
```
# Run lldb-mi --interpreter
# Execute start_script file by following command:
```
-interpreter-exec console "command source start_script"
```
Log:
```
$ bin/lldb-mi --interpreter
(gdb)
-interpreter-exec console "command source start_script"
Executing commands in '/Users/IliaK/p/llvm/build_ninja/start_script'.
(lldb) target create ~/p/hello
Current executable set to '~/p/hello' (x86_64).
(lldb) b main
Breakpoint 1: where = hello`main + 29 at hello.cpp:12, address = 0x0000000100000e2d
(lldb) r
Process 1582 launched: '/Users/IliaK/p/hello' (x86_64)
(lldb) quit
^done
(gdb)
=thread-created,id="1",group-id="i1"
=thread-selected,id="1"
(gdb)
=shlibs-added,shlib-info=[num="1",name="hello",dyld-addr="-",reason="dyld",path="/Users/IliaK/p/hello",loaded_addr="-",dsym-objpath="/Users/IliaK/p/hello.dSYM/Contents/Resources/DWARF/hello"]
...
=shlibs-added,shlib-info=[num="132",name="libDiagnosticMessagesClient.dylib",dyld-addr="0x7fff91705000",reason="dyld",path="/usr/lib/libDiagnosticMessagesClient.dylib",loaded_addr="0x7fff91705000"]
(gdb)
*stopped,reason="breakpoint-hit",disp="del",bkptno="1",frame={addr="0x100000e2d",func="main",args=[{name="argc",value="1"},{name="argv",value="0x00007fff5fbffc88"}],file="hello.cpp",fullname="/Users/IliaK/p/hello.cpp",line="12"},thread-id="1",stopped-threads="all"
(gdb)<press Enter>
MI: Program exited OK
```
Reviewers: abidh, clayborg
Reviewed By: abidh
Subscribers: jingham, lldb-commits, clayborg, abidh
Differential Revision: http://reviews.llvm.org/D8382
llvm-svn: 232891
Alexander Musman [Sat, 21 Mar 2015 10:12:56 +0000 (10:12 +0000)]
[OPENMP] CodeGen of the 'linear' clause for the 'omp simd' directive.
The linear variable is privatized (similar to 'private') and its
value on current iteration is calculated, similar to the loop
counter variables.
Differential revision: http://reviews.llvm.org/D8375
llvm-svn: 232890
David Majnemer [Sat, 21 Mar 2015 06:19:17 +0000 (06:19 +0000)]
MemoryDependenceAnalysis: Don't miscompile atomics
r216771 introduced a change to MemoryDependenceAnalysis that allowed it
to reason about acquire/release operations. However, this change does
not ensure that the acquire/release operations pair. Unfortunately,
this leads to miscompiles as we won't see an acquire load as properly
memory effecting. This largely reverts r216771.
This fixes PR22708.
llvm-svn: 232889
Eric Christopher [Sat, 21 Mar 2015 06:15:15 +0000 (06:15 +0000)]
Add CodeGen support for adding cpu attributes on functions based on
the target-cpu, if different from the triple's cpu, and
target-features as they're written that are passed down from the
driver.
Together with LLVM r232885 this should allow the LTO'ing of binaries
that contain modules compiled with different code generation options
on a subset of architectures with full backend support (x86, powerpc,
aarch64).
llvm-svn: 232888
Eric Fiselier [Sat, 21 Mar 2015 06:05:45 +0000 (06:05 +0000)]
Remove unneeded redeclaration of reference_wrapper.
llvm-svn: 232887
Tim Northover [Sat, 21 Mar 2015 04:37:08 +0000 (04:37 +0000)]
AArch64: simplify test case
llvm-svn: 232886
Eric Christopher [Sat, 21 Mar 2015 04:22:23 +0000 (04:22 +0000)]
Remove the target independent TargetMachine::getSubtarget and
TargetMachine::getSubtargetImpl routines.
This keeps the target independent code free of bare subtarget
calls while the remainder of the backends are migrated, or not
if they don't wish to support per-function subtargets as would
be needed for function multiversioning or LTO of disparate
cpu subarchitecture types, e.g.
clang -msse4.2 -c foo.c -emit-llvm -o foo.bc
clang -c bar.c -emit-llvm -o bar.bc
llvm-link foo.bc bar.bc -o baz.bc
llc baz.bc
and get appropriate code for what the command lines requested.
llvm-svn: 232885
Eric Christopher [Sat, 21 Mar 2015 04:04:50 +0000 (04:04 +0000)]
Remove the bare getSubtargetImpl call from the AArch64 port. As part
of this add a test that shows we can generate code for functions
that specifically enable a subtarget feature.
llvm-svn: 232884
Chaoren Lin [Sat, 21 Mar 2015 03:59:29 +0000 (03:59 +0000)]
Fix ComputeSupportExeDirectory for Linux (merge with Android).
Summary:
ComputeSupportExeDirectory relied on ComputeSharedLibraryDirectory which was
not always reliable. Using procfs seems to be the best way to deal with it on
Linux (since it's already done on Android, might as well merge it).
Reviewers: ovyalov
Reviewed By: ovyalov
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D8511
llvm-svn: 232883
Eric Christopher [Sat, 21 Mar 2015 03:36:02 +0000 (03:36 +0000)]
Remove the bare getSubtargetImpl call from the PPC port. As part
of this add a test that shows we can generate code with
for functions that differ by subtarget feature.
llvm-svn: 232882
Eric Christopher [Sat, 21 Mar 2015 03:32:45 +0000 (03:32 +0000)]
Forward the Function based getSubtarget call to the appropriate Impl
call.
llvm-svn: 232881
Eric Christopher [Sat, 21 Mar 2015 03:17:25 +0000 (03:17 +0000)]
Grab a subtarget off of an AMDGPUTargetMachine rather than a
bare target machine in preparation for the TargetMachine bare
getSubtarget/getSubtargetImpl calls going away.
llvm-svn: 232880
Eric Christopher [Sat, 21 Mar 2015 03:13:10 +0000 (03:13 +0000)]
Cache the Function dependent subtarget on the MachineFunction.
As preparation for removing the getSubtargetImpl() call from
TargetMachine go ahead and flip the switch on caching the function
dependent subtarget and remove the bare getSubtargetImpl call
from the X86 port. As part of this add a few tests that show we
can generate code and assemble on X86 based on features/cpu on
the Function.
llvm-svn: 232879
Eric Christopher [Sat, 21 Mar 2015 03:13:07 +0000 (03:13 +0000)]
Grab the cached subtarget off of the MachineFunction.
llvm-svn: 232878
Eric Christopher [Sat, 21 Mar 2015 03:13:05 +0000 (03:13 +0000)]
Grab a subtarget off of a MipsTargetMachine rather than a
bare target machine in preparation for the TargetMachine bare
getSubtarget/getSubtargetImpl calls going away.
llvm-svn: 232877
Eric Christopher [Sat, 21 Mar 2015 03:13:03 +0000 (03:13 +0000)]
Simplify the query for a subtarget in the NVPTX pass manager.
llvm-svn: 232876
Eric Christopher [Sat, 21 Mar 2015 03:13:01 +0000 (03:13 +0000)]
Change getISAEncoding to use the target triple to determine
thumb-ness similar to the rest of the Module level asm printing
infrastructure as debug info finalization happens after the function
may be missing.
llvm-svn: 232875
Eric Christopher [Sat, 21 Mar 2015 03:12:59 +0000 (03:12 +0000)]
Make the Hexagon ISelDAGToDAG pass set the subtarget dynamically
on each runOnMachineFunction invocation.
llvm-svn: 232874
Kostya Serebryany [Sat, 21 Mar 2015 01:29:36 +0000 (01:29 +0000)]
[sanitizer] experimental tracing for cmp instructions
llvm-svn: 232873
Ahmed Bougacha [Sat, 21 Mar 2015 01:23:15 +0000 (01:23 +0000)]
[CodeGen][IfCvt] Don't re-ifcvt blocks with unanalyzable terminators.
If we couldn't analyze its terminator (i.e., it's an indirectbr, or some
other weirdness), we can't safely re-if-convert a predicated block,
because we can't tell whether the predicated terminator can
fallthrough (it does).
Currently, we would completely ignore the fallthrough successor. In
the added testcase, this means we used to generate:
...
@ %entry:
cmp r5, #21
ittt ne
@ %cc1f:
cmpne r7, #42
@ %cc2t:
strne.w r5, [r8]
movne pc, r10
@ %cc1t:
...
Whereas the successor of %cc1f was originally %bb1.
With the fix, we get the correct:
...
@ %entry:
cmp r5, #21
itt eq
@ %cc1t:
streq.w r5, [r11]
moveq pc, r0
@ %cc1f:
cmp r7, #42
itt ne
@ %cc2t:
strne.w r5, [r8]
movne pc, r10
@ %bb1:
...
rdar://
20192768
Differential Revision: http://reviews.llvm.org/D8509
llvm-svn: 232872
Ahmed Bougacha [Sat, 21 Mar 2015 01:08:39 +0000 (01:08 +0000)]
[AArch64] Prefer UZP for concat_vector of illegal truncs.
Follow-up to r232459: prefer a UZP shuffle to the intermediate truncs.
llvm-svn: 232871
Richard Smith [Sat, 21 Mar 2015 00:58:54 +0000 (00:58 +0000)]
[modules] When either redecl chain merging or an update record causes us to
give an exception specification to a declaration that didn't have an exception
specification in any of our imported modules, emit an update record ourselves.
Without this, code importing the current module would not see an exception
specification that we could see and might have relied on.
llvm-svn: 232870
Filipe Cabecinhas [Fri, 20 Mar 2015 23:51:15 +0000 (23:51 +0000)]
Only add -fno-rtti if KernelOrKext or in C++ mode.
llvm-svn: 232869