OSDN Git Service
Krzysztof Parzyszek [Thu, 6 Oct 2016 13:05:46 +0000 (13:05 +0000)]
[RDF] Replace some expensive copies with references in range-based loops
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283446
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Thu, 6 Oct 2016 13:05:13 +0000 (13:05 +0000)]
[RDF] Replace potentially unclear autos with real types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283445
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Thu, 6 Oct 2016 11:58:52 +0000 (11:58 +0000)]
[llvm-opt-report] Record VF, etc. correctly for multiple opts on one line
When there are multiple optimizations on one line, record the vectorization
factors, etc. correctly (instead of incorrectly substituting default values).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283443
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Thu, 6 Oct 2016 11:24:29 +0000 (11:24 +0000)]
Revert "[ARM] Use __rt_div functions for divrem on Windows"
This reverts commit r283383 because it broke some of the bots:
undefined reference to ` __aeabi_uldivmod'
It affected (at least) clang-cmake-armv7-a15-selfhost,
clang-cmake-armv7-a15-selfhost and clang-native-arm-lnt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283442
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Thu, 6 Oct 2016 11:11:11 +0000 (11:11 +0000)]
[llvm-opt-report] Print line numbers starting from 1
Line numbers should start from 1, not 2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283440
91177308-0d34-0410-b5e6-
96231b3b80d8
Henric Karlsson [Thu, 6 Oct 2016 10:58:41 +0000 (10:58 +0000)]
Test commit access (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283439
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 6 Oct 2016 10:13:23 +0000 (10:13 +0000)]
AMDGPU: Partially fix reported code size for some instructions
These ones need to have the size on the pseudo instruction set for
getInstSizeInBytes to work correctly. These also have a statically
known size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283437
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Thu, 6 Oct 2016 10:04:00 +0000 (10:04 +0000)]
Add test-cases which demontrate pr30561
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283436
91177308-0d34-0410-b5e6-
96231b3b80d8
Bjorn Pettersson [Thu, 6 Oct 2016 09:56:21 +0000 (09:56 +0000)]
[ValueTracking] Teach computeKnownBits and ComputeNumSignBits to look through ExtractElement.
Summary:
The computeKnownBits and ComputeNumSignBits functions in ValueTracking can now do a simple look-through of ExtractElement.
Reviewers: majnemer, spatel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D24955
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283434
91177308-0d34-0410-b5e6-
96231b3b80d8
Sagar Thakur [Thu, 6 Oct 2016 09:52:06 +0000 (09:52 +0000)]
[EfficiencySanitizer] Adds shadow memory parameters for 40-bit virtual memory address.
Adding 40-bit shadow memory parameters because MIPS64 uses 40-bit virtual memory addresses.
Reviewed by rengolin.
Differential: https://reviews.llvm.org/D23801
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283433
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Thu, 6 Oct 2016 09:32:16 +0000 (09:32 +0000)]
fix build on cygwin
Cygwin has dlfcn.h, but no Dl_info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283427
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Thu, 6 Oct 2016 07:56:00 +0000 (07:56 +0000)]
[ARM] Constant pool promotion - fix alignment calculation
Global variables are GlobalValues, so they have explicit alignment. Querying
DataLayout for the alignment was incorrect.
Testcase added.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283423
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Thu, 6 Oct 2016 07:44:05 +0000 (07:44 +0000)]
[ARM] Improve testcase for r283323
We can work around a shortcoming of FileCheck by using {{\[}} to match a square
bracket before a [[ sequence.
Thanks to Eli Friedman for the heads up!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283422
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Thu, 6 Oct 2016 05:17:26 +0000 (05:17 +0000)]
[Triple] Add triple for Fuchsia
Fuchsia is a new operating system.
Differential Revision: https://reviews.llvm.org/D25116
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283419
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Thu, 6 Oct 2016 05:14:00 +0000 (05:14 +0000)]
[libFuzzer] be more careful with memory usage, print peak rss in status lines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283418
91177308-0d34-0410-b5e6-
96231b3b80d8
Konstantin Zhuravlyov [Thu, 6 Oct 2016 02:20:46 +0000 (02:20 +0000)]
[AMDGPU] Promote uniform i16 bitreverse intrinsic to i32
Differential Revision: https://reviews.llvm.org/D25121
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283415
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 5 Oct 2016 23:31:01 +0000 (23:31 +0000)]
[libFuzzer] when re-running for lsan, don't look at the coverage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283411
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 5 Oct 2016 23:20:32 +0000 (23:20 +0000)]
[DAG] add tests to show missing checks for SDNode FMF
The AVX attribute is added to remove noise caused by SSE's destructive insts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283410
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 5 Oct 2016 22:56:21 +0000 (22:56 +0000)]
[libFuzzer] refactoring to make -shrink=1 work for value profile, added a test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283409
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Wed, 5 Oct 2016 22:48:13 +0000 (22:48 +0000)]
Fix tests for Windows
We need to match file names with both forward and backward slashes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283407
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Wed, 5 Oct 2016 22:40:54 +0000 (22:40 +0000)]
Add missing #include from r283039. Found by modules build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283405
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 5 Oct 2016 22:36:07 +0000 (22:36 +0000)]
[codeview] Truncate records to maximum record size near 64KB
If we don't truncate, LLVM asserts when the label difference doesn't fit
in a 16 bit field. This patch truncates two kinds of data: trailing null
terminated names in symbol records, and inline line tables. The inline
line table test that I have is too large (many MB), so I'm not checking
it in.
Hopefully fixes PR28264.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283403
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Wed, 5 Oct 2016 22:25:33 +0000 (22:25 +0000)]
[llvm-opt-report] Distinguish inlined contexts when optimizations differ
How code is optimized sometimes, perhaps often, depends on the context into
which it was inlined. This change allows llvm-opt-report to track the
differences between the optimizations performed, or not, in different contexts,
and when these differ, display those differences.
For example, this code:
$ cat /tmp/q.cpp
void bar();
void foo(int n) {
for (int i = 0; i < n; ++i)
bar();
}
void quack() {
foo(4);
}
void quack2() {
foo(4);
}
will now produce this report:
< /home/hfinkel/src/llvm/test/tools/llvm-opt-report/Inputs/q.cpp
2 | void bar();
3 | void foo(int n) {
[[
> foo(int):
4 | for (int i = 0; i < n; ++i)
> quack(), quack2():
4 U4 | for (int i = 0; i < n; ++i)
]]
5 | bar();
6 | }
7 |
8 | void quack() {
9 I | foo(4);
10 | }
11 |
12 | void quack2() {
13 I | foo(4);
14 | }
15 |
Note that the tool has demangled the function names, and grouped the reports
associated with line 4. This shows that the loop on line 4 was unrolled by a
factor of 4 when inlined into the functions quack() and quack2(), but not in
the function foo(int) itself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283402
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Wed, 5 Oct 2016 22:15:37 +0000 (22:15 +0000)]
Verifier: Reject any unknown named MD nodes in the llvm.dbg namespace.
This came out of a discussion in https://reviews.llvm.org/D25285.
There used to be various other llvm.dbg.* nodes, but we don't support
upgrading them and we want to reserve the namespace for future uses.
This also removes an entirely obsolete and bitrotted testcase for PR7662.
Reapplies 283390 with a forgotten testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283400
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Wed, 5 Oct 2016 22:15:34 +0000 (22:15 +0000)]
Revert "Verifier: Reject any unknown named MD nodes in the llvm.dbg namespace."
Forgot to add a testcase in r283390.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283399
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Wed, 5 Oct 2016 22:10:35 +0000 (22:10 +0000)]
Add an llvm-opt-report tool to generate basic source-annotated optimization summaries
LLVM now has the ability to record information from optimization remarks in a
machine-consumable YAML file for later analysis. This can be enabled in opt
(see r282539), and D25225 adds a Clang flag to do the same. This patch adds
llvm-opt-report, a tool to generate basic optimization "listing" files
(annotated sources with information about what optimizations were performed)
from one of these YAML inputs.
D19678 proposed to add this capability directly to Clang, but this more-general
YAML-based infrastructure was the direction we decided upon in that review
thread.
For this optimization report, I focused on making the output as succinct as
possible while providing information on inlining and loop transformations. The
goal here is that the source code should still be easily readable in the
report. My primary inspiration here is the reports generated by Cray's tools
(http://docs.cray.com/books/S-2496-4101/html-S-2496-4101/z1112823641oswald.html).
These reports are highly regarded within the HPC community. Intel's compiler,
for example, also has an optimization-report capability
(https://software.intel.com/sites/default/files/managed/55/b1/new-compiler-optimization-reports.pdf).
$ cat /tmp/v.c
void bar();
void foo() { bar(); }
void Test(int *res, int *c, int *d, int *p, int n) {
int i;
#pragma clang loop vectorize(assume_safety)
for (i = 0; i < 1600; i++) {
res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];
}
for (i = 0; i < 16; i++) {
res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];
}
foo();
foo(); bar(); foo();
}
D25225 adds -fsave-optimization-record (and
-fsave-optimization-record=filename), and this would be used as follows:
$ clang -O3 -o /tmp/v.o -c /tmp/v.c -fsave-optimization-record
$ llvm-opt-report /tmp/v.yaml > /tmp/v.lst
$ cat /tmp/v.lst
< /tmp/v.c
2 | void bar();
3 | void foo() { bar(); }
4 |
5 | void Test(int *res, int *c, int *d, int *p, int n) {
6 | int i;
7 |
8 | #pragma clang loop vectorize(assume_safety)
9 V4,2 | for (i = 0; i < 1600; i++) {
10 | res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];
11 | }
12 |
13 U16 | for (i = 0; i < 16; i++) {
14 | res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];
15 | }
16 |
17 I | foo();
18 |
19 | foo(); bar(); foo();
I | ^
I | ^
20 | }
Each source line gets a prefix giving the line number, and a few columns for
important optimizations: inlining, loop unrolling and loop vectorization. An
'I' is printed next to a line where a function was inlined, a 'U' next to an
unrolled loop, and 'V' next to a vectorized loop. These are printed on the
relevant code line when that seems unambiguous, or on subsequent lines when
multiple potential options exist (messages, both positive and negative, from
the same optimization with different column numbers are taken to indicate
potential ambiguity). When on subsequent lines, a '^' is output in the relevant
column.
Annotated source for all relevant input files are put into the listing file
(each starting with '<' and then the file name).
You can disable having the unrolling/vectorization factors appear by using the
-s flag.
Differential Revision: https://reviews.llvm.org/D25262
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283398
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 5 Oct 2016 21:46:56 +0000 (21:46 +0000)]
Remove extra semicolon
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283395
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 5 Oct 2016 21:44:46 +0000 (21:44 +0000)]
Fix the build with MSVC 2013, still cannot default move ctors yet
Ten days.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283394
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 5 Oct 2016 21:43:50 +0000 (21:43 +0000)]
[DAG] change test to use 'unsafe' function attribute instead of global setting
But we have node-level FMF, so the next step is to fix this at the instruction/node-level.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283393
91177308-0d34-0410-b5e6-
96231b3b80d8
David Callahan [Wed, 5 Oct 2016 21:36:16 +0000 (21:36 +0000)]
Modify df_iterator to support post-order actions
Summary: This makes a change to the state used to maintain visited information for depth first iterator. We know assume a method "completed(...)" which is called after all children of a node have been visited. In all existing cases, this method does nothing so this patch has no functional changes. It will however allow a client to distinguish back from cross edges in a DFS tree.
Reviewers: nadav, mehdi_amini, dberlin
Subscribers: MatzeB, mzolotukhin, twoh, freik, llvm-commits
Differential Revision: https://reviews.llvm.org/D25191
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283391
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Wed, 5 Oct 2016 21:31:19 +0000 (21:31 +0000)]
Verifier: Reject any unknown named MD nodes in the llvm.dbg namespace.
This came out of a discussion in https://reviews.llvm.org/D25285.
There used to be various other llvm.dbg.* nodes, but we don't support
upgrading them and we want to reserve the namespace for future uses.
This also removes an entirely obsolete and bitrotted testcase for PR7662.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283390
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 5 Oct 2016 21:24:08 +0000 (21:24 +0000)]
[WebAssembly] Add binary-encoding opcode values to instruction descriptions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283389
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 5 Oct 2016 21:21:33 +0000 (21:21 +0000)]
[codeview] Translate bitpiece metadata to DEFRANGE_SUBFIELD* records
This allows LLVM to describe locations of aggregate variables that have
been split by SROA.
Fixes PR29141
Reviewers: amccarth, majnemer
Differential Revision: https://reviews.llvm.org/D25253
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283388
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Wed, 5 Oct 2016 21:20:00 +0000 (21:20 +0000)]
[Object] Fix a crash in Archive::child_iterator's default constructor.
To be default constructible, Archive::child_iterator needs to be able to
construct an Archive::Child with a null parent, however Archive::Child's
constructor always dereferenced its Parent argument to compute the remaining
archive size. This commit fixes Archive::Child's constructor to only do the
size calculation when the parent is non-null.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283387
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Wed, 5 Oct 2016 21:08:02 +0000 (21:08 +0000)]
[ARM] Use __rt_div functions for divrem on Windows
This avoids falling back to calling out to the GCC rem functions
(__moddi3, __umoddi3) when targeting Windows.
The __rt_div functions have flipped the two arguments compared
to the __aeabi_divmod functions. To match MSVC, we emit a
check for division by zero before actually calling the library
function (even if the library function itself also might do
the same check).
Not all calls to __rt_div functions for division are currently
merged with calls to the same function with the same parameters
for the remainder. This is more wasteful than a div + mls as before,
but avoids calls to __moddi3.
Differential Revision: https://reviews.llvm.org/D24076
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283383
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Wed, 5 Oct 2016 20:54:17 +0000 (20:54 +0000)]
[Sparc] Implement UMUL_LOHI and SMUL_LOHI instead of MULHS/MULHU/MUL.
This is what the instruction-set actually provides, and the default
expansions of the others into the lohi opcodes are good.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283381
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Wed, 5 Oct 2016 20:36:39 +0000 (20:36 +0000)]
[ADT] Add missing const_iterator DenseSet::find() const
Summary: Probably overlooked.
Reviewers: eugenis, dblaikie
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D24689
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283377
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Wed, 5 Oct 2016 20:34:13 +0000 (20:34 +0000)]
[asan] Reapply: Switch to using dynamic shadow offset on iOS
The VM layout is not stable between iOS version releases, so switch to dynamic shadow offset.
This is the LLVM counterpart of https://reviews.llvm.org/D25218
Differential Revision: https://reviews.llvm.org/D25219
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283376
91177308-0d34-0410-b5e6-
96231b3b80d8
Yunzhong Gao [Wed, 5 Oct 2016 20:26:29 +0000 (20:26 +0000)]
Improve the debug-info test created in r274263.
This patch is related to r274263 or Phabricator/D21818.
This patch aims to improve the test case added in the previous commit to verify
specifically that the stack protector pass is adding the debug line info as
intended. Before, the test only verified that the verifier pass does not crash.
The current approach is to generate the assembly output and then look for the
.loc directive.
Differential Revision: https://reviews.llvm.org/D25290
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283374
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Wed, 5 Oct 2016 20:23:46 +0000 (20:23 +0000)]
[LV] Pass profitability analysis in vectorizer constructor (NFC)
The vectorizer already holds a pointer to one cost model artifact in a member
variable (i.e., MinBWs). As we add more, it will be easier to communicate these
artifacts to the vectorizer if we simply pass a pointer to the cost model
instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283373
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 5 Oct 2016 20:08:09 +0000 (20:08 +0000)]
[RDF] Fix live def propagation through basic block
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283371
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Wed, 5 Oct 2016 20:02:51 +0000 (20:02 +0000)]
AMDGPU: Do not re-use tmpreg in spill/restore lowering
The register scavenging code does not support multiple definitions of
the same vreg.
Differential Revision: https://reviews.llvm.org/D25220
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283369
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Wed, 5 Oct 2016 19:53:20 +0000 (19:53 +0000)]
[LV] Pass legality analysis in vectorizer constructor (NFC)
The vectorizer already holds a pointer to the legality analysis in a member
variable, so it makes sense that we would pass it in the constructor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283368
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 5 Oct 2016 19:25:20 +0000 (19:25 +0000)]
FastISel: Remove unused/un-overridden entry points. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283366
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Wed, 5 Oct 2016 19:19:49 +0000 (19:19 +0000)]
[LV] Remove obsolete comment (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283365
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Wed, 5 Oct 2016 19:11:54 +0000 (19:11 +0000)]
[LV] Use getScalarizationOverhead in memory instruction costs (NFC)
This patch refactors the cost estimation of scalarized loads and stores to
reuse getScalarizationOverhead for the cost of the extractelement and
insertelement instructions we might create. The existing code accounted for
this cost, but it was functionally equivalent to the helper function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283364
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 5 Oct 2016 18:51:12 +0000 (18:51 +0000)]
fix documentation comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283361
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 5 Oct 2016 18:46:21 +0000 (18:46 +0000)]
Allow the caller to pass in the hash.
If the caller already has the hash we don't have to compute it. This
will be used in lld.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283359
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 5 Oct 2016 18:36:02 +0000 (18:36 +0000)]
Improve DEBUG_VALUE assembly comments for spilled bitpieces
Previously we would give up when we saw the bitpiece DWARF expression
and print "[complex expression]" when actually we handled bitpiece
expressions outside the loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283355
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Wed, 5 Oct 2016 18:30:36 +0000 (18:30 +0000)]
[LV] Add helper function for predicated block probability (NFC)
The cost model has to estimate the probability of executing predicated blocks.
However, we currently always assume predicated blocks have a 50% chance of
executing (this value is hardcoded in several places throughout the code).
Since we always use the same value, this patch adds a helper function for
getting this uniform probability. The function simplifies some comments and
makes our assumptions more clear. In the future, we may want to extend this
with actual block probability information if it's available.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283354
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Wed, 5 Oct 2016 18:26:19 +0000 (18:26 +0000)]
[mips][ias] fix li macro when values are negated with ~
The integrated assembler evaluates the expressions such as ~0x80000000 to
0xffffffff7fffffff early in the parsing process. This patch adds compatibility
with gas so that li loads the expected value (0x7fffffff) in those cases. This
only occurs iff all the upper 32bits are set and maintains existing checks by
not truncating the result down to 32 bits if any of the the upper bits are not
set.
Reviewers: dsanders, zoran.jovanovic
Differential Review: https://reviews.llvm.org/D23399
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283353
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Wed, 5 Oct 2016 17:52:34 +0000 (17:52 +0000)]
[LV] Add isScalarWithPredication helper function (NFC)
This patch adds a single helper function for checking if an instruction will be
scalarized with predication. Such instructions include conditional stores and
instructions that may divide by zero. Existing checks have been updated to use
the new function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283350
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Wed, 5 Oct 2016 17:42:02 +0000 (17:42 +0000)]
Revert "[asan] LLVM: Switch to using dynamic shadow offset on iOS"
This reverts commit
abe77a118615cd90b0d7f127e4797096afa2b394.
Revert as these changes broke a Chromium buildbot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283348
91177308-0d34-0410-b5e6-
96231b3b80d8
Bjorn Pettersson [Wed, 5 Oct 2016 17:40:27 +0000 (17:40 +0000)]
[DAG] Teach computeKnownBits and ComputeNumSignBits in SelectionDAG to look through EXTRACT_VECTOR_ELT.
Summary: Both computeKnownBits and ComputeNumSignBits can now do a simple
look-through of EXTRACT_VECTOR_ELT. It will compute the result based
on the known bits (or known sign bits) for the vector that the element
is extracted from.
Reviewers: bogner, tstellarAMD, mkuper
Subscribers: wdng, RKSimon, jyknight, llvm-commits, nhaehnle
Differential Revision: https://reviews.llvm.org/D25007
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283347
91177308-0d34-0410-b5e6-
96231b3b80d8
Bjorn Pettersson [Wed, 5 Oct 2016 17:22:11 +0000 (17:22 +0000)]
Test commit permission. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283346
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 5 Oct 2016 17:04:36 +0000 (17:04 +0000)]
Fix build due to comparison of std::pairs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283342
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 5 Oct 2016 16:54:09 +0000 (16:54 +0000)]
Add llvm::enumerate() range adapter.
This allows you to enumerate over a range using a range-based
for while the return type contains the index of the enumeration.
Differential revision: https://reviews.llvm.org/D25124
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283337
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 5 Oct 2016 16:33:03 +0000 (16:33 +0000)]
Don't pass null to memcpy. Should fix the asan bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283336
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Wed, 5 Oct 2016 16:11:01 +0000 (16:11 +0000)]
Recommit: "[mips] Add rsqrt, recip for MIPS"
Add rsqrt.[ds], recip.[ds] for MIPS. Correct the microMIPS definitions for
architecture support and register usage.
Reviewers: vkalintiris, zoran.jovanoic
Differential Review: https://reviews.llvm.org/D24499
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283334
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 5 Oct 2016 15:39:27 +0000 (15:39 +0000)]
Revert r282920 "X86: Allow conditional tail calls in Win64 "leaf" functions (PR26302)"
This is suspected to cause a miscompile in Chromium. Reverting while
investigating.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283329
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Wed, 5 Oct 2016 15:28:33 +0000 (15:28 +0000)]
Revert "[mips] Add rsqrt, recip for MIPS"
This reverts commit r282485 which contain two patches instead of
one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283327
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Katzman [Wed, 5 Oct 2016 15:23:35 +0000 (15:23 +0000)]
[X86] Don't randomly encode %rip where illegal
Differential Revision: https://reviews.llvm.org/D25112
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283326
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Wed, 5 Oct 2016 14:52:13 +0000 (14:52 +0000)]
[Thumb] Don't try and emit LDRH/LDRB from the constant pool
This is not a valid encoding - these instructions cannot do PC-relative addressing.
The underlying problem here is of whitelist in ARMISelDAGToDAG that unwraps ARMISD::Wrappers during addressing-mode selection. This didn't realise TargetConstantPool was actually possible, so didn't handle it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283323
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Katzman [Wed, 5 Oct 2016 14:46:14 +0000 (14:46 +0000)]
[X86] Fix some tests that didn't assert anything
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283322
91177308-0d34-0410-b5e6-
96231b3b80d8
Oren Ben Simhon [Wed, 5 Oct 2016 14:12:41 +0000 (14:12 +0000)]
Test commit permission
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283319
91177308-0d34-0410-b5e6-
96231b3b80d8
Oren Ben Simhon [Wed, 5 Oct 2016 13:48:33 +0000 (13:48 +0000)]
Test commit permission
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283318
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Wed, 5 Oct 2016 13:38:29 +0000 (13:38 +0000)]
[AVR] Don't select 'MOVW' instructions when they are not supported
We have a subtarget feature which we were ignoring, which was causing us
to generate unsupported instructions for some older chips.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283317
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Wed, 5 Oct 2016 13:27:30 +0000 (13:27 +0000)]
[AVR] Add AVRRegisterInfo::splitReg function
No tests are included just yet - this is used from the pseudo
instruction expander pass, which hasn't been pulled in-tree yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283316
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 5 Oct 2016 13:15:06 +0000 (13:15 +0000)]
Fix machine operand traversal in ScheduleDAGInstrs::fixupKills
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283315
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Wed, 5 Oct 2016 12:32:24 +0000 (12:32 +0000)]
[AVR] Update return type of dynamic alloca pass
It was recently changed from 'const char*' to StringRef
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283312
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Wed, 5 Oct 2016 11:48:56 +0000 (11:48 +0000)]
[AVR] Add the AVR frame lowering code
Summary: This allows AVR to lower frames into assembly code.
Reviewers: arsenm, kparzysz
Subscribers: japaric, wdng, beanz, mgorny
Differential Revision: https://reviews.llvm.org/D25032
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283311
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Wed, 5 Oct 2016 10:28:45 +0000 (10:28 +0000)]
[AVR] Split all of the AVR device definitions into a separate file
We have ~500 lines of subtarget feature definitions, they don't belong
in our main TableGen file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283310
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Wed, 5 Oct 2016 10:23:38 +0000 (10:23 +0000)]
[AVR] Enable the instruction printer in the target definition
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283309
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Wed, 5 Oct 2016 10:20:33 +0000 (10:20 +0000)]
[AVR] Add definitions for the ATTiny102 and ATtiny104 chips
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283308
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 5 Oct 2016 05:59:29 +0000 (05:59 +0000)]
Re-commit "Use StringRef in Support/Darf APIs (NFC)"
This reverts commit r283285 and re-commit r283275 with
a fix for format("%s", Str); where Str is a StringRef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283298
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Wed, 5 Oct 2016 05:30:19 +0000 (05:30 +0000)]
[AVR] Add the machine code backend
Summary:
This adds the AVR machine code backend (`AVRAsmBackend.cpp`). This will
allow us to generate machine code from assembled AVR instructions.
Reviewers: arsenm, kparzysz
Subscribers: modocache, japaric, wdng, beanz, mgorny
Differential Revision: https://reviews.llvm.org/D25029
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283297
91177308-0d34-0410-b5e6-
96231b3b80d8
Dean Michael Berris [Wed, 5 Oct 2016 05:20:08 +0000 (05:20 +0000)]
[Support][CommandLine] Add cl::getRegisteredSubcommands()
This should allow users of the library to get a range to iterate through
all the subcommands that are registered to the global parser. This
allows users to define subcommands in libraries that self-register to
have dispatch done at a different stage (like main). It allows for
writing code like the following:
for (auto *S : cl::getRegisteredSubcommands()) {
if (*S) {
// Dispatch on S->getName().
}
}
This change also contains tests that show this usage pattern.
Reviewers: zturner, dblaikie, echristo
Subscribers: llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D24489
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283296
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 5 Oct 2016 01:41:11 +0000 (01:41 +0000)]
Blind attempt to fix windows build after r283290 - Use StringRef in StringSaver API (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283294
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 5 Oct 2016 01:41:06 +0000 (01:41 +0000)]
Use StringRef in ARMConstantPool APIs (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283293
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Wed, 5 Oct 2016 01:39:29 +0000 (01:39 +0000)]
Revert "Codegen: Tail-duplicate during placement."
This reverts commit
062ace9764953e9769142c1099281a345f9b6bdc.
Issue with loop info and block removal revealed by polly.
I have a fix for this issue already in another patch, I'll re-roll this
together with that fix, and a test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283292
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 5 Oct 2016 01:37:29 +0000 (01:37 +0000)]
Use StringRef in FastISel API (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283291
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 5 Oct 2016 01:32:41 +0000 (01:32 +0000)]
Use StringRef in StringSaver API (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283290
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 5 Oct 2016 01:15:04 +0000 (01:15 +0000)]
Use StringRef in ARCRuntimeEntryPoints APIs (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283288
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 5 Oct 2016 01:09:40 +0000 (01:09 +0000)]
[libFuzzer] add ShrinkValueProfileTest, move code around, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283286
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 5 Oct 2016 01:04:02 +0000 (01:04 +0000)]
Revert "Re-commit "Use StringRef in Support/Darf APIs (NFC)""
One test seems randomly broken: DebugInfo/X86/gnu-public-names.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283285
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 5 Oct 2016 01:02:34 +0000 (01:02 +0000)]
Use StringRef in MCSectionMachO (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283284
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 5 Oct 2016 01:02:22 +0000 (01:02 +0000)]
Use StringRef in DarwinAsmParser (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283283
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Wed, 5 Oct 2016 00:44:52 +0000 (00:44 +0000)]
[LoopDistribute] Fix a typo in the pass name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283282
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 5 Oct 2016 00:37:18 +0000 (00:37 +0000)]
Re-commit "Use StringRef in Support/Darf APIs (NFC)"
This reverts commit r283278 and re-commit r283275 with
the update to fix the build on the LLDB side.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283281
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 5 Oct 2016 00:25:17 +0000 (00:25 +0000)]
[libFuzzer] clear the corpus elements if they are evicted (i.e. smaller elements with proper coverage are found). Make sure we never try to mutate empty element. Print the corpus size in bytes in the status lines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283279
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 5 Oct 2016 00:21:14 +0000 (00:21 +0000)]
Revert "Use StringRef in Support/Darf APIs (NFC)"
This reverts commit r283275, it broke LLDB Android debug server.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283278
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 5 Oct 2016 00:15:18 +0000 (00:15 +0000)]
Use StringRef instead of raw pointers in ARMBuildAttrs (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283277
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Tue, 4 Oct 2016 23:55:40 +0000 (23:55 +0000)]
Use StringRef in Support/Darf APIs (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283275
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Tue, 4 Oct 2016 23:54:18 +0000 (23:54 +0000)]
Codegen: Tail-duplicate during placement.
The tail duplication pass uses an assumed layout when making duplication
decisions. This is fine, but passes up duplication opportunities that
may arise when blocks are outlined. Because we want the updated CFG to
affect subsequent placement decisions, this change must occur during
placement.
In order to achieve this goal, TailDuplicationPass is split into a
utility class, TailDuplicator, and the pass itself. The pass delegates
nearly everything to the TailDuplicator object, except for looping over
the blocks in a function. This allows the same code to be used for tail
duplication in both places.
This change, in concert with outlining optional branches, allows
triangle shaped code to perform much better, esepecially when the
taken/untaken branches are correlated, as it creates a second spine when
the tests are small enough.
Issue from previous rollback fixed, and a new test was added for that
case as well.
Differential revision: https://reviews.llvm.org/D18226
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283274
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Tue, 4 Oct 2016 23:47:33 +0000 (23:47 +0000)]
Use StringRef in TableGen (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283273
91177308-0d34-0410-b5e6-
96231b3b80d8
Manuel Jacob [Tue, 4 Oct 2016 23:32:42 +0000 (23:32 +0000)]
[C API] Add LLVMConstExactUDiv and LLVMBuildExactUDiv functions.
Summary:
These are analog to the existing LLVMConstExactSDiv and LLVMBuildExactSDiv
functions.
Reviewers: deadalnix, majnemer
Subscribers: majnemer, llvm-commits
Differential Revision: https://reviews.llvm.org/D25259
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283269
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Tue, 4 Oct 2016 23:31:39 +0000 (23:31 +0000)]
Use StringRef in TableGen emitted API for attribute (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283268
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 4 Oct 2016 22:43:25 +0000 (22:43 +0000)]
Misc improvements to StringTableBuilder.
This patch adds write methods to StringTableBuilder so that it is
easier to change the underlying implementation.
Using the write methods, avoid creating a temporary buffer when using
mmaped output.
It also uses a more compact key in the DenseMap. Overall this produces
a slightly faster lld:
firefox
master 6.
853419709
patch 6.
841968912 1.00167361138x faster
chromium
master 4.
297280174
patch 4.
298712163 1.00033323147x slower
chromium fast
master 1.
802335952
patch 1.
806872459 1.00251701521x slower
the gold plugin
master 0.
3247149
patch 0.
321971644 1.00852017888x faster
clang
master 0.
551279945
patch 0.
543733194 1.01387951128x faster
llvm-as
master 0.
032743458
patch 0.
032143478 1.01866568391x faster
the gold plugin fsds
master 0.
350814247
patch 0.
348571741 1.00643341309x faster
clang fsds
master 0.
6281672
patch 0.
621130222 1.01132931187x faster
llvm-as fsds
master 0.
030168899
patch 0.
029797155 1.01247582194x faster
scylla
master 3.
104222518
patch 3.
059590248 1.01458766252x faster
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283266
91177308-0d34-0410-b5e6-
96231b3b80d8
Alina Sbirlea [Tue, 4 Oct 2016 22:39:53 +0000 (22:39 +0000)]
[cpu-detection] Copy simplified version of get_cpuid_max to remove dependency to clang's implementation
Summary:
Attempting to fix PR30384.
Take the same approach as in compiler_rt and add a simplified version of __get_cpuid_max.
Including cpuid.h is no longer needed.
Reviewers: echristo, joerg
Subscribers: mehdi_amini, llvm-commits
Differential Revision: https://reviews.llvm.org/D24597
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283265
91177308-0d34-0410-b5e6-
96231b3b80d8
David L Kreitzer [Tue, 4 Oct 2016 20:57:19 +0000 (20:57 +0000)]
Revert r283248. It caused failures in the hexagon buildbots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283254
91177308-0d34-0410-b5e6-
96231b3b80d8