Mehdi Amini [Tue, 22 Mar 2016 07:35:51 +0000 (07:35 +0000)]
Fix unittests: resize() -> reserve()
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 264029
Mehdi Amini [Tue, 22 Mar 2016 07:31:35 +0000 (07:31 +0000)]
DenseMap resize() is now named reserved(), adapt the call sites
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 264028
Jonas Hahnfeld [Tue, 22 Mar 2016 07:22:49 +0000 (07:22 +0000)]
[OMPT] Create infrastructure and add first tests for OMPT
Some basic checks next to the implementation should futher lower the
possibility to introduce regressions. (Note that this would have catched
the ordering issue fixed in rL258866 and pointed to rL263940.)
The tests are implementation dependent in one point because they assume that
thread ids are assigned in ascending order. This is not defined by the standard
but currently ensured in libomp. We have to think about another way of ordering
the threads should this ever be subject to change...
Note that this isn't aiming at replacing the implementation independent
test-suite at https://github.com/OpenMPToolsInterface/ompt-test-suite!
Differential Revision: http://reviews.llvm.org/D16715
llvm-svn: 264027
Mehdi Amini [Tue, 22 Mar 2016 07:20:00 +0000 (07:20 +0000)]
Rename DenseMap::resize() into DenseMap::reserve() (NFC)
This is more coherent with usual containers.
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 264026
Akira Hatanaka [Tue, 22 Mar 2016 05:00:21 +0000 (05:00 +0000)]
[Objective-c] Do not set IsExact to true when the receiver is a class.
IsExact shouldn't be set to true in WeakObjectProfileTy::getBaseInfo
when the receiver is a class because having a class as the receiver
doesn't guarantee that the Base is exact.
This is a follow-up to r263818.
rdar://problem/
25208167
llvm-svn: 264025
Junmo Park [Tue, 22 Mar 2016 04:37:32 +0000 (04:37 +0000)]
Minor code cleanup. NFC.
llvm-svn: 264024
Pete Cooper [Tue, 22 Mar 2016 04:00:41 +0000 (04:00 +0000)]
Revert "Use owning pointers instead of raw pointers for Atom's to fix leaks."
This reverts commit r264022.
This breaks the Window's bots which don't like that i'm calling ~Atom when
the this pointer is a sublcass of Atom.
Reverting for now until I try find a better fix. I tried using std::unique_ptr with
a custom deleter as a quick fix, but it didn't work well in the YAML parser.
llvm-svn: 264023
Pete Cooper [Tue, 22 Mar 2016 03:44:32 +0000 (03:44 +0000)]
Use owning pointers instead of raw pointers for Atom's to fix leaks.
Currently each File contains an BumpPtrAllocator in which Atom's are
allocated. Some Atom's contain data structures like std::vector which
leak as we don't run ~Atom when they are BumpPtrAllocate'd.
Now each File actually owns its Atom's using an OwningAtomPtr. This
is analygous to std::unique_ptr and may be replaced by it if possible.
An Atom can therefore only be owned by a single File, so the Resolver now
moves them from one File to another. The MachOLinkingContext owns the File's
and so clears all the Atom's in ~MachOLinkingContext, then delete's all the
File's. This makes sure all Atom's have been destructed before any of the
BumpPtrAllocator's in which they run have gone away.
Should hopefully fix the remaining leaks. Will keep an eye on the bots to
make sure.
llvm-svn: 264022
Chris Bieneman [Tue, 22 Mar 2016 02:55:40 +0000 (02:55 +0000)]
[Perf-training] Fixing an issue with multi-threading PGO generation
When LIT parallelizes the profraw file generation we need to generate unique temp filenames then clean them up after the driver executes.
llvm-svn: 264021
Mike Spertus [Tue, 22 Mar 2016 02:29:22 +0000 (02:29 +0000)]
Visual Studio Native Visualizations for constructors and methods
With this change, the class
struct A {
A(int _i);
~A();
int foo(double d);
double bar(A *a) { return 1.3; }
};
appears in the VS2015 Locals Window as
D 0x02dbb378 struct A
|- DeclKind CXXRecord
|- Members
|- [0] implicit struct A
|- [1] Constructor {A(int _i)}
|- [2] Destructor {~A()}
|- [3] Method {int foo(double d)}
|- [4] Method {double bar(struct A *)}
|- [Raw View] /* Other stuff */
Note that these changes only benefit VS2015 as
VS2013 does not have views and only displays the
struct name "A", but the change does no apparent
harm in VS2013, so is still a win.
llvm-svn: 264020
Sanjoy Das [Tue, 22 Mar 2016 02:11:57 +0000 (02:11 +0000)]
Appease the windows buildbots
The guess is that the stdout/stderr ordering may differ between windows
/ unix.
llvm-svn: 264019
Arpith Chacko Jacob [Tue, 22 Mar 2016 01:48:56 +0000 (01:48 +0000)]
[OpenMP] Base support for target directive codegen on NVPTX device.
Summary:
This patch adds base support for codegen of the target directive on the NVPTX device.
Reviewers: ABataev
Differential Revision: http://reviews.llvm.org/D17877
Reworked test case after buildbot failure on windows.
Updated patch to integrate r263837 and test case nvptx_target_firstprivate_codegen.cpp.
llvm-svn: 264018
Reid Kleckner [Tue, 22 Mar 2016 01:14:36 +0000 (01:14 +0000)]
Move -fms-compatibility-version=19 into target cflags
This reduces cflags duplication and allows us to build
sanitizer_common/tests with clang and the VS 2015 STL.
llvm-svn: 264017
Reid Kleckner [Tue, 22 Mar 2016 01:04:33 +0000 (01:04 +0000)]
[asan] Relax strdup test check lines
On the buildbot, strdup appears as frame 1 instead of frame 0. Either is
an acceptable user experience.
llvm-svn: 264016
Sanjoy Das [Tue, 22 Mar 2016 00:59:13 +0000 (00:59 +0000)]
Add "first class" lowering for deopt operand bundles
Summary:
After this change, deopt operand bundles can be lowered directly by
SelectionDAG into STATEPOINT instructions (which are then lowered to a
call or sequence of nop, with an associated __llvm_stackmaps entry0.
This obviates the need to round-trip deoptimization state through
gc.statepoint via RewriteStatepointsForGC.
Reviewers: reames, atrick, majnemer, JosephTremoulet, pgavlin
Subscribers: sanjoy, mcrosier, majnemer, llvm-commits
Differential Revision: http://reviews.llvm.org/D18257
llvm-svn: 264015
Reid Kleckner [Tue, 22 Mar 2016 00:53:04 +0000 (00:53 +0000)]
Wrap 81 character line to satisfy linter
llvm-svn: 264014
Reid Kleckner [Tue, 22 Mar 2016 00:52:47 +0000 (00:52 +0000)]
[asan] Intercept strdup on Windows
Some unit tests were failing because we didn't intercept strdup. It
turns out it works just fine on 2013 and 2015 with a small patch to the
interception logic.
llvm-svn: 264013
Siva Chandra [Tue, 22 Mar 2016 00:35:31 +0000 (00:35 +0000)]
[JITLoaderGDB] Pack the jit entry struct according to the target arch.
Reviewers: clayborg
Subscribers: tberghammer, dsrbecky, lldb-commits
Differential Revision: http://reviews.llvm.org/D18334
llvm-svn: 264012
Reid Kleckner [Tue, 22 Mar 2016 00:34:53 +0000 (00:34 +0000)]
[asan] Also apply r264006 to asan_win_dynamic_runtime_thunk.cc
llvm-svn: 264011
Reid Kleckner [Tue, 22 Mar 2016 00:11:51 +0000 (00:11 +0000)]
Fix coverage-related asan tests for VS 2015
printf is an inline function in VS 2015, giving these tests an
unexpected extra point of coverage. This change works around that by
avoiding printf.
llvm-svn: 264010
Justin Lebar [Tue, 22 Mar 2016 00:09:28 +0000 (00:09 +0000)]
[CUDA] Implement atomicInc and atomicDec builtins
These functions cannot be implemented as atomicrmw or cmpxchg
instructions, so they are implemented as a call to the NVVM intrinsics
@llvm.nvvm.atomic.load.inc.32.p0i32 and
@llvm.nvvm.atomic.load.dec.32.p0i32.
Patch by Jason Henline.
Reviewers: jlebar
Differential Revision: http://reviews.llvm.org/D18322
llvm-svn: 264009
Justin Lebar [Tue, 22 Mar 2016 00:09:25 +0000 (00:09 +0000)]
[sema] [CUDA] Use std algorithms in EraseUnwantedCUDAMatchesImpl.
Summary: NFC
Reviewers: tra
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D18327
llvm-svn: 264008
NAKAMURA Takumi [Mon, 21 Mar 2016 23:51:50 +0000 (23:51 +0000)]
Revert r263974, "clang-cl: With -fmsc-version=1900, use MSVS2015 diag formatting."
It seems the test wouldn't expect if default target is *-win32.
llvm-svn: 264007
Reid Kleckner [Mon, 21 Mar 2016 23:51:21 +0000 (23:51 +0000)]
[asan] Set the unhandled exception filter slightly later during startup
VS 2015 moved the priority of their exception filter initializer from
XIY to XCAA. We now set ours to XCAB, which makes it run after both CRT
versions but before user constructors, as it should.
Fixes null_deref.cc and a variety of related tests with VS 2015. Only 4
failures remain.
llvm-svn: 264006
Reid Kleckner [Mon, 21 Mar 2016 23:51:17 +0000 (23:51 +0000)]
[asan] Add new _*_base interceptors for VS 2015
There are some places in the CRT (such as mbctype) that directly call
_malloc_base. If you are incrementally linking a binary with ASan from
before this change, this change appears to result in a linker error.
Retrying the link succeeds for some reason.
llvm-svn: 264005
Pete Cooper [Mon, 21 Mar 2016 23:17:47 +0000 (23:17 +0000)]
Move ownership of Pass File's to the MachoLinkingContext.
In trying to fix the leaks in the MachO lld codebase, we need to have
a better model for file and atom ownership. Having the context own
everything seems like the simplest model, so change all the passes to
allocate File's on the context instead of owning files as a member.
llvm-svn: 264004
Mike Aizatsky [Mon, 21 Mar 2016 23:08:16 +0000 (23:08 +0000)]
[sancov] do not instrument nodes that are full pre-dominators
Summary:
Without tree pruning clang has 2,667,552 points.
Wiht only dominators pruning: 1,515,586.
With both dominators & predominators pruning: 1,340,534.
Resubmit of r262103.
Differential Revision: http://reviews.llvm.org/D18341
llvm-svn: 264003
Justin Lebar [Mon, 21 Mar 2016 23:05:15 +0000 (23:05 +0000)]
[CUDA] Add documentation explaining how to detect clang vs nvcc.
llvm-svn: 264002
John Thompson [Mon, 21 Mar 2016 23:05:14 +0000 (23:05 +0000)]
Fixed some cases in the modularize assistant mode where header file names didn't translate to valid module names.
llvm-svn: 264001
Nicolai Haehnle [Mon, 21 Mar 2016 22:54:02 +0000 (22:54 +0000)]
AMDGPU: Fix dangling references introduced by r263982
Fixes Valgrind errors on the test cases that were reported as failing
by buildbots.
llvm-svn: 264000
Davide Italiano [Mon, 21 Mar 2016 22:44:24 +0000 (22:44 +0000)]
[ELF] Simplify code a bit. No functional change.
llvm-svn: 263999
Evgeniy Stepanov [Mon, 21 Mar 2016 22:42:15 +0000 (22:42 +0000)]
[asan] Add strrchr to asan_win_dll_thunk.
"dll_host.cc" test says there is a mismatch.
llvm-svn: 263998
Chris Bieneman [Mon, 21 Mar 2016 22:37:14 +0000 (22:37 +0000)]
[Perf-training] Adding support for tests to skip the clang driver
This patch adds a new set of substitutions to the lit run lines for order files and PGO generation which run the clang driver to get the cc1 command, then execute the cc1 command directly. This allows the scripts to bypass profiling the clang driver over and over again.
The approach in this patch was discussed via IRC with Sean Silvas.
Special thanks to Daniel Dunbar whose out-of-tree code I liberally plagiarized.
llvm-svn: 263997
Richard Smith [Mon, 21 Mar 2016 22:33:02 +0000 (22:33 +0000)]
[modules] Store mangling numbers in a deterministic order so they don't cause the resulting .pcm files to be nondeterministic.
llvm-svn: 263996
Sean Callanan [Mon, 21 Mar 2016 22:23:38 +0000 (22:23 +0000)]
Collect IRExecutionUnits as part of persistent expression state.
IRExecutionUnits contain code and data that persistent declarations can
depend on. In order to keep them alive and provide for lookup of these
symbols, we now allow any PersistentExpressionState to keep a list of
execution units. Then, when doing symbol lookup on behalf of an
expression, any IRExecutionUnit can consult the persistent expression
states on a particular Target to find the appropriate symbol.
<rdar://problem/
22864976>
llvm-svn: 263995
Simon Pilgrim [Mon, 21 Mar 2016 22:15:50 +0000 (22:15 +0000)]
[InstCombine] Ensure all undef operands are handled before binary instruction constant folding
As noted in PR18355, this patch makes it clear that all cases with undef operands have been handled before further constant folding is attempted.
Differential Revision: http://reviews.llvm.org/D18305
llvm-svn: 263994
Duncan P. N. Exon Smith [Mon, 21 Mar 2016 22:13:44 +0000 (22:13 +0000)]
Fix -Wdocumentation warnings from r263853
Thanks to chapuni for catching this.
llvm-svn: 263993
Evgeniy Stepanov [Mon, 21 Mar 2016 21:36:17 +0000 (21:36 +0000)]
[sanitizer] Add strchr* to the common interceptors
Adds strchr, strchrnul, and strrchr to the common interceptors, under a new
common flag intercept_strchr.
Removes the now-duplicate strchr interceptor from asan and all 3
interceptors from tsan. Previously, asan did not intercept strchrnul, but
does now; previously, msan did not intercept strchr, strchrnul, or strrchr,
but does now.
http://reviews.llvm.org/D18329
Patch by Derek Bruening!
llvm-svn: 263992
George Burgess IV [Mon, 21 Mar 2016 21:25:39 +0000 (21:25 +0000)]
[MemorySSA] Consider def-only BBs for live-in calculations.
If we have a BB with only MemoryDefs, live-in calculations will ignore
it. This means we get results like this:
define void @foo(i8* %p) {
; 1 = MemoryDef(liveOnEntry)
store i8 0, i8* %p
br i1 undef, label %if.then, label %if.end
if.then:
; 2 = MemoryDef(1)
store i8 1, i8* %p
br label %if.end
if.end:
; 3 = MemoryDef(1)
store i8 2, i8* %p
ret void
}
...When there should be a MemoryPhi in the `if.end` BB.
This patch fixes that behavior.
llvm-svn: 263991
Krzysztof Parzyszek [Mon, 21 Mar 2016 21:25:01 +0000 (21:25 +0000)]
Remove leftover options from multiline.ll
I added -march=hexagon to force using Hexagon target when testing
locally, and I forgot to take it out.
llvm-svn: 263990
Richard Smith [Mon, 21 Mar 2016 21:16:01 +0000 (21:16 +0000)]
[modules] Renumber DECL_UPDATES from 30 to 50, so it no longer collides with
TYPE_TEMPLATE_SPECIALIZATION. This was fine in practice because both record
kinds are only ever found by offset, but made the llvm-bcanalyzer -dump output
very confusing.
llvm-svn: 263989
Rafael Espindola [Mon, 21 Mar 2016 21:09:38 +0000 (21:09 +0000)]
Add a testcase that would have found the bug in r263971.
llvm-svn: 263988
Rafael Espindola [Mon, 21 Mar 2016 20:59:15 +0000 (20:59 +0000)]
Revert "[llvm-objdump] Printing relocations in executable and shared object files. This partially reverts r215844 by removing test objdump-reloc-shared.test which stated GNU objdump doesn't print relocations, it does."
This reverts commit r263971.
It produces the wrong results for .rela.dyn. I will add a test.
llvm-svn: 263987
Krzysztof Parzyszek [Mon, 21 Mar 2016 20:55:59 +0000 (20:55 +0000)]
Unxfail test/DebugInfo/Generic/multiline.ll on Hexagon
llvm-svn: 263986
Mike Aizatsky [Mon, 21 Mar 2016 20:53:20 +0000 (20:53 +0000)]
[sanitizier] initializing common flags.
Summary: Without SetDefaults() CommonFlags contain garbage.
Differential Revision: http://reviews.llvm.org/D18326
llvm-svn: 263985
Pete Cooper [Mon, 21 Mar 2016 20:50:03 +0000 (20:50 +0000)]
Revert "Convert some ObjC msgSends to runtime calls."
This reverts commit r263607.
This change caused more objc_retain/objc_release calls in the IR but those
are then incorrectly optimized by the ARC optimizer. Work is going to have
to be done to ensure the ARC optimizer doesn't optimize user written RR, but
that should land before this change.
This change will also need to be updated to take account for any changes required
to ensure that user written calls to RR are distinct from those inserted by ARC.
llvm-svn: 263984
Nicolai Haehnle [Mon, 21 Mar 2016 20:39:24 +0000 (20:39 +0000)]
AMDGPU: Coding style fixes
I meant to add these before committing r263982 as per the review,
but I forgot to squash.
llvm-svn: 263983
Nicolai Haehnle [Mon, 21 Mar 2016 20:28:33 +0000 (20:28 +0000)]
AMDGPU: Add SIWholeQuadMode pass
Summary:
Whole quad mode is already enabled for pixel shaders that compute
derivatives, but it must be suspended for instructions that cause a
shader to have side effects (i.e. stores and atomics).
This pass addresses the issue by storing the real (initial) live mask
in a register, masking EXEC before instructions that require exact
execution and (re-)enabling WQM where required.
This pass is run before register coalescing so that we can use
machine SSA for analysis.
The changes in this patch expose a problem with the second machine
scheduling pass: target independent instructions like COPY implicitly
use EXEC when they operate on VGPRs, but this fact is not encoded in
the MIR. This can lead to miscompilation because instructions are
moved past changes to EXEC.
This patch fixes the problem by adding use-implicit operands to
target independent instructions. Some general codegen passes are
relaxed to work with such implicit use operands.
Reviewers: arsenm, tstellarAMD, mareko
Subscribers: MatzeB, arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D18162
llvm-svn: 263982
Krzysztof Parzyszek [Mon, 21 Mar 2016 20:27:17 +0000 (20:27 +0000)]
[Hexagon] Add handling fixups and instruction relaxation
llvm-svn: 263981
Krzysztof Parzyszek [Mon, 21 Mar 2016 20:13:33 +0000 (20:13 +0000)]
[Hexagon] Properly encode registers in duplex instructions
llvm-svn: 263980
Reid Kleckner [Mon, 21 Mar 2016 20:08:59 +0000 (20:08 +0000)]
[asan] Disable thread-safe static initilization with VS 2015
ASan interceptors contain local statics which run before the CRT is
initialized. Thread-safe statics appear to rely on CRT-internal state,
and will crash without this flag.
llvm-svn: 263979
Krzysztof Parzyszek [Mon, 21 Mar 2016 19:57:08 +0000 (19:57 +0000)]
[Hexagon] Fix reserving emergency spill slots for register scavenger
- R10 and R11 are not reserved registers.
- Check for reserved registers when finding unused caller-saved registers.
llvm-svn: 263977
Dan Gohman [Mon, 21 Mar 2016 19:54:41 +0000 (19:54 +0000)]
[WebAssembly] Implement the eqz instructions.
llvm-svn: 263976
Chad Rosier [Mon, 21 Mar 2016 19:47:44 +0000 (19:47 +0000)]
[SLP] Remove unnecessary member variables by using container APIs.
This changes the debug output, but still retains its usefulness.
Differential Revision: http://reviews.llvm.org/D18324
llvm-svn: 263975
Nico Weber [Mon, 21 Mar 2016 19:44:18 +0000 (19:44 +0000)]
clang-cl: With -fmsc-version=1900, use MSVS2015 diag formatting.
llvm-svn: 263974
Reid Kleckner [Mon, 21 Mar 2016 19:37:30 +0000 (19:37 +0000)]
[asan] Pass -fms-compatibility-version=19 with VS 2015
This resolves errors about char16_t and char32_t when compiling 2015 STL
headers with clang.
llvm-svn: 263973
Jim Ingham [Mon, 21 Mar 2016 19:21:13 +0000 (19:21 +0000)]
Compilation can end up calling functions (e.g. to resolve indirect functions) so I added
a way for compilation to take a "thread to use for compilation". If it isn't set then the
compilation will use the currently selected thread. This should help keep function execution
to the one thread intended.
llvm-svn: 263972
Colin LeMahieu [Mon, 21 Mar 2016 19:14:50 +0000 (19:14 +0000)]
[llvm-objdump] Printing relocations in executable and shared object files. This partially reverts r215844 by removing test objdump-reloc-shared.test which stated GNU objdump doesn't print relocations, it does.
In executable and shared object ELF files, relocations in the file contain the final virtual address rather than section offset so this is adjusted to display section offset.
Differential revision: http://reviews.llvm.org/D15965
llvm-svn: 263971
Richard Smith [Mon, 21 Mar 2016 19:06:06 +0000 (19:06 +0000)]
[modules] Don't invent a module cache path unless implicit module builds are enabled.
llvm-svn: 263970
Tom Stellard [Mon, 21 Mar 2016 18:56:58 +0000 (18:56 +0000)]
AMDGPU/SI: Fix threshold calculation for branching when exec is zero
Summary:
When control flow is implemented using the exec mask, the compiler will
insert branch instructions to skip over the masked section when exec is
zero if the section contains more than a certain number of instructions.
The previous code would only count instructions in successor blocks,
and this patch modifies the code to start counting instructions in all
blocks between the start and end of the branch.
Reviewers: nhaehnle, arsenm
Subscribers: arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D18282
llvm-svn: 263969
Eugene Zelenko [Mon, 21 Mar 2016 18:32:35 +0000 (18:32 +0000)]
Fix Clang-tidy modernize-deprecated-headers warnings; other minor fixes.
Differential revision: http://reviews.llvm.org/D18232
llvm-svn: 263968
Jonathan Peyton [Mon, 21 Mar 2016 18:32:26 +0000 (18:32 +0000)]
[STATS] Add OMP_critical and OMP_critical_wait timers
OMP_critical - time spent in critical section
OMP_critical_wait - time spent waiting to enter a critical section
llvm-svn: 263967
Reid Kleckner [Mon, 21 Mar 2016 18:23:07 +0000 (18:23 +0000)]
[asan] Update hotpatch code for VS 2015 memset implementation
In VS 2015, the memset fill parameter is zero extended from one byte
instead of being copied wholesale.
The issue reproduces with existing tests if you use VS2015.
llvm-svn: 263966
Chad Rosier [Mon, 21 Mar 2016 18:04:10 +0000 (18:04 +0000)]
[AArch64] Add a helpful assert. NFC.
llvm-svn: 263965
Matt Arsenault [Mon, 21 Mar 2016 18:02:18 +0000 (18:02 +0000)]
AMDGPU: Remove SignBitIsZero for mubuf scratch offsets
These instructions do not have the same negative base
address problem that DS instructions do on SI.
llvm-svn: 263964
Samuel Benzaquen [Mon, 21 Mar 2016 18:00:43 +0000 (18:00 +0000)]
[clang-tidy] Fix check broken in rL263822.
Add names missing from rL263822 and add tests to prevent future omissions.
llvm-svn: 263963
Peter Collingbourne [Mon, 21 Mar 2016 18:00:02 +0000 (18:00 +0000)]
ARM: Better codegen for 64-bit compares.
This introduces a custom lowering for ISD::SETCCE (introduced in r253572)
that allows us to emit a short code sequence for 64-bit compares.
Before:
push {r7, lr}
cmp r0, r2
mov.w r0, #0
mov.w r12, #0
it hs
movhs r0, #1
cmp r1, r3
it ge
movge.w r12, #1
it eq
moveq r12, r0
cmp.w r12, #0
bne .LBB1_2
@ BB#1: @ %bb1
bl f
pop {r7, pc}
.LBB1_2: @ %bb2
bl g
pop {r7, pc}
After:
push {r7, lr}
subs r0, r0, r2
sbcs.w r0, r1, r3
bge .LBB1_2
@ BB#1: @ %bb1
bl f
pop {r7, pc}
.LBB1_2: @ %bb2
bl g
pop {r7, pc}
Saves around 80KB in Chromium's libchrome.so.
Some notes on this patch:
- I don't much like the ARMISD::BRCOND and ARMISD::CMOV combines I
introduced (nothing else needs them). However, they are necessary in
order to avoid poor codegen, and they seem similar to existing combines
in other backends (e.g. X86 combines (brcond (cmp (setcc Compare))) to
(brcond Compare)).
- No support for Thumb-1. This is in principle possible, but we'd need
to implement ARMISD::SUBE for Thumb-1.
Differential Revision: http://reviews.llvm.org/D15256
llvm-svn: 263962
Daniel Jasper [Mon, 21 Mar 2016 17:57:31 +0000 (17:57 +0000)]
clang-format: [JS] no space in union and intersection types.
The operators | and & in types, as opposed to the bitwise operators,
should not have whitespace around them (e.g. `Foo<Bar|Baz>`).
Patch by Martin Probst. Thank you.
llvm-svn: 263961
Manman Ren [Mon, 21 Mar 2016 17:30:55 +0000 (17:30 +0000)]
Add replacement = "xxx" to AvailabilityAttr.
This commit adds a named argument to AvailabilityAttr, while r263652 adds an
optional string argument to __attribute__((deprecated)).
This was commited in r263687 and reverted in 263752 due to misaligned
access.
rdar://
20588929
llvm-svn: 263958
Renato Golin [Mon, 21 Mar 2016 17:29:51 +0000 (17:29 +0000)]
[ARM] Clang tests for ARM Cortex-A32 support
Patch by Sam Parker.
llvm-svn: 263957
Renato Golin [Mon, 21 Mar 2016 17:29:01 +0000 (17:29 +0000)]
[ARM] Add Cortex-A32 support
Adding Cortex-A32 as an available target in the ARM backend.
Patch by Sam Parker.
llvm-svn: 263956
Manman Ren [Mon, 21 Mar 2016 17:26:40 +0000 (17:26 +0000)]
NFC: wrap Availability-related data in its own struct in AttributeList.
This makes it easy to add more data into Availability.
llvm-svn: 263955
Jonathan Peyton [Mon, 21 Mar 2016 17:26:23 +0000 (17:26 +0000)]
[STATS] separate noTotal bit flag from onlyInMaster and noUnits
This change logically separates the stats_flags_e::noTotal bit flag from the
stats_flags_e::onlyInMaster and stats_flags_e::noUnits bit flags. If no
TOTAL_foo output is wanted for a particular statistic, the flag must be
explicitly included in that statistic's flags.
Differential Revision: http://reviews.llvm.org/D18198
llvm-svn: 263954
Nico Weber [Mon, 21 Mar 2016 17:19:31 +0000 (17:19 +0000)]
clang-cl: Move /FC from "Unsupported" to "Ignored" list.
/FC affects if diagnostics print with full paths and if __FILE__ expands with a
full path. clang-cl does both of these two by default.
llvm-svn: 263953
Hemant Kulkarni [Mon, 21 Mar 2016 17:18:23 +0000 (17:18 +0000)]
[llvm-readobj] Impl GNU style symbols printing
Implements "readelf -sW and readelf -DsW"
Differential Revision: http://reviews.llvm.org/D18224
llvm-svn: 263952
Lang Hames [Mon, 21 Mar 2016 16:56:25 +0000 (16:56 +0000)]
[Orc] Switch RPC Procedure to take a function type, rather than an arg list.
No functional change, just a little more readable.
llvm-svn: 263951
Matt Arsenault [Mon, 21 Mar 2016 16:49:16 +0000 (16:49 +0000)]
APFloat: Add frexp
llvm-svn: 263950
Matt Arsenault [Mon, 21 Mar 2016 16:11:05 +0000 (16:11 +0000)]
AMDGPU: Add frexp_mant intrinsic
llvm-svn: 263948
Reid Kleckner [Mon, 21 Mar 2016 16:08:49 +0000 (16:08 +0000)]
clang-cl: support __cdecl-on-struct anachronism
Summary:
The Microsoft compiler emits
warning C4229: anachronism used : modifiers on data are ignored
for
struct {} __cdecl s;
but ICU's gendict can generate such (and does when building
LibreOffice), so accepting this in clang-cl too would be useful.
Reviewers: rnk
Patch by Stephan Bergmann
Differential Revision: http://reviews.llvm.org/D16628
llvm-svn: 263947
Kuba Brecka [Mon, 21 Mar 2016 16:05:42 +0000 (16:05 +0000)]
[tsan] Adding a test case for r263939 ("Add some NULL pointer checks into the debugging API")
llvm-svn: 263946
Matt Arsenault [Mon, 21 Mar 2016 15:00:35 +0000 (15:00 +0000)]
Implement constant folding for bitreverse
llvm-svn: 263945
Rafael Espindola [Mon, 21 Mar 2016 14:57:20 +0000 (14:57 +0000)]
Revert "[ELF] SHF_MERGE section with 0 entsize is not fatal"
This reverts commit r263664.
The reason we were getting broken files was lld -r, and that has been
fixed.
llvm-svn: 263944
Daniel Jasper [Mon, 21 Mar 2016 14:11:27 +0000 (14:11 +0000)]
clang-format: Make include sorting's main include detection configurable.
This patch adds a regular expression to configure suffixes of an
included file to check whether it is the "main" include of the current
file. Previously, clang-format has allowed arbitrary suffixes on the
formatted file, which is still the case when no IncludeMainRegex is
specified.
llvm-svn: 263943
Chad Rosier [Mon, 21 Mar 2016 13:43:58 +0000 (13:43 +0000)]
[AArch64] Fix a -Wdocumentation warning. NFC.
llvm-svn: 263942
Silviu Baranga [Mon, 21 Mar 2016 12:44:29 +0000 (12:44 +0000)]
[IndVars] Fix PR26974: make sure replaceCongruentIVs doesn't break LCSSA
Summary:
replaceCongruentIVs can break LCSSA when trying to replace IV increments
since it tries to replace all uses of a phi node with another phi node
while both of the phi nodes are not necessarily in the processed loop.
This will cause an assert in IndVars.
To fix this, we add a check to make sure that the replacement maintains
LCSSA.
Reviewers: sanjoy
Subscribers: mzolotukhin, llvm-commits
Differential Revision: http://reviews.llvm.org/D18266
llvm-svn: 263941
Jonas Hahnfeld [Mon, 21 Mar 2016 12:37:52 +0000 (12:37 +0000)]
[OMPT] Fix wrong parent_task_id in serialized parallel_begin with GCC
Without this patch a simple '#pragma omp parallel num_threads(1)' leads to
ompt_event_parallel_begin: parent_task_id=3, [...], parallel_id=2, [...]
ompt_event_parallel_end: parallel_id=2, task_id=4, [...]
Differential Revision: http://reviews.llvm.org/D16714
llvm-svn: 263940
Kuba Brecka [Mon, 21 Mar 2016 12:12:44 +0000 (12:12 +0000)]
[tsan] Add some NULL pointer checks into the debugging API
`__tsan_get_report_thread` and others can crash if a stack trace is missing, let's add the missing checks.
Differential Revision: http://reviews.llvm.org/D18306
llvm-svn: 263939
NAKAMURA Takumi [Mon, 21 Mar 2016 11:44:05 +0000 (11:44 +0000)]
Remove debug output. Sorry for the noise.
llvm-svn: 263936
Silviu Baranga [Mon, 21 Mar 2016 11:43:46 +0000 (11:43 +0000)]
[DAGCombine] Catch the case where extract_vector_elt can cause an any_ext while processing AND SDNodes
Summary:
extract_vector_elt can cause an implicit any_ext if the types don't
match. When processing the following pattern:
(and (extract_vector_elt (load ([non_ext|any_ext|zero_ext] V))), c)
DAGCombine was ignoring the possible extend, and sometimes removing
the AND even though it was required to maintain some of the bits
in the result to 0, resulting in a miscompile.
This change fixes the issue by limiting the transformation only to
cases where the extract_vector_elt doesn't perform the implicit
extend.
Reviewers: t.p.northover, jmolloy
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D18247
llvm-svn: 263935
NAKAMURA Takumi [Mon, 21 Mar 2016 11:40:15 +0000 (11:40 +0000)]
clang/test/CodeGenCXX/cxx1z-lambda-star-this.cpp: Satisfy -Asserts.
llvm-svn: 263934
George Rimar [Mon, 21 Mar 2016 11:23:53 +0000 (11:23 +0000)]
Eliminated trailing whitespaces from test. NFC.
llvm-svn: 263933
Elena Demikhovsky [Mon, 21 Mar 2016 11:06:20 +0000 (11:06 +0000)]
Fixed -mcpu flag
"core-avx" does not exist; I changed to "nehalem"
llvm-svn: 263932
NAKAMURA Takumi [Mon, 21 Mar 2016 11:03:39 +0000 (11:03 +0000)]
clang/test/Frontend/plugin-annotate-functions.c requires the target examples/AnnotateFunctions.
llvm-svn: 263931
Faisal Vali [Mon, 21 Mar 2016 10:37:42 +0000 (10:37 +0000)]
Reorder data members to be consistent with member initializers, to silence warnings.
llvm-svn: 263922
Faisal Vali [Mon, 21 Mar 2016 09:25:37 +0000 (09:25 +0000)]
[Cxx1z] Implement Lambda Capture of *this by Value as [=,*this] (P0018R3)
Implement lambda capture of *this by copy.
For e.g.:
struct A {
int d = 10;
auto foo() { return [*this] (auto a) mutable { d+=a; return d; }; }
};
auto L = A{}.foo(); // A{}'s lifetime is gone.
// Below is still ok, because *this was captured by value.
assert(L(10) == 20);
assert(L(100) == 120);
If the capture was implicit, or [this] (i.e. *this was captured by reference), this code would be otherwise undefined.
Implementation Strategy:
- amend the parser to accept *this in the lambda introducer
- add a new king of capture LCK_StarThis
- teach Sema::CheckCXXThisCapture to handle by copy captures of the
enclosing object (i.e. *this)
- when CheckCXXThisCapture does capture by copy, the corresponding
initializer expression for the closure's data member
direct-initializes it thus making a copy of '*this'.
- in codegen, when assigning to CXXThisValue, if *this was captured by
copy, make sure it points to the corresponding field member, and
not, unlike when captured by reference, what the field member points
to.
- mark feature as implemented in svn
Much gratitude to Richard Smith for his carefully illuminating reviews!
llvm-svn: 263921
Nico Weber [Mon, 21 Mar 2016 02:48:05 +0000 (02:48 +0000)]
clang-cl: Add a comment about /Oy- (see r245913).
llvm-svn: 263920
David Majnemer [Sun, 20 Mar 2016 23:10:12 +0000 (23:10 +0000)]
[COFF] Don't call memcpy with a NULL argument
Some declarations of memcpy (like glibc's for example) are attributed
with notnull which makes it UB for NULL to get passed in, even if the
memcpy count is zero.
To account for this, guard the memcpy with an appropriate precondition.
This should fix the last UBSan bug, exposed by the test suite, in the
COFF linker.
llvm-svn: 263919
David Majnemer [Sun, 20 Mar 2016 22:56:31 +0000 (22:56 +0000)]
[COFF] Remove undefined behavior from ObjectFile::createWeakExternal
LLD type-punned an integral type and a pointer type using a pointer
field. This is problematic because the pointer type has alignment
greater than some of the integral values.
This would be less problematic if a union was used but it turns out the
integral values are only present for a short, transient, amount of time.
Let's remove this undefined behavior by skipping the punning altogether
by storing the state in a separate memory location: a vector which
informs us which symbols to process for weak externs.
llvm-svn: 263918
Simon Pilgrim [Sun, 20 Mar 2016 21:46:58 +0000 (21:46 +0000)]
[X86][SSE] Add vector integer division by constant tests
Expanded tests and split into sdiv/srem and udiv/urem cases for 128 and 256 bit vectors.
llvm-svn: 263917
Jingyue Wu [Sun, 20 Mar 2016 20:59:20 +0000 (20:59 +0000)]
[NVPTX] Adds a new address space inference pass.
Summary:
The old address space inference pass (NVPTXFavorNonGenericAddrSpaces) is unable
to convert the address space of a pointer induction variable. This patch adds a
new pass called NVPTXInferAddressSpaces that overcomes that limitation using a
fixed-point data-flow analysis (see the file header comments for details).
The new pass is experimental and not enabled by default. Users can turn
it on by setting the -nvptx-use-infer-addrspace flag of llc.
Reviewers: jholewinski, tra, jlebar
Subscribers: jholewinski, llvm-commits
Differential Revision: http://reviews.llvm.org/D17965
llvm-svn: 263916