Krzysztof Parzyszek [Thu, 6 Oct 2016 13:05:13 +0000 (13:05 +0000)]
[RDF] Replace potentially unclear autos with real types
llvm-svn: 283445
Vassil Vassilev [Thu, 6 Oct 2016 13:04:54 +0000 (13:04 +0000)]
[modules] Allow VarDecls with initializers to use special var abbrev.
Update storage sizes to fit the (past) changes in the VarDecl's data model.
Update some comments.
Patch partially reviewed by Richard Smith as part of https://reviews.llvm.org/D24508
llvm-svn: 283444
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).
llvm-svn: 283443
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.
llvm-svn: 283442
Asiri Rathnayake [Thu, 6 Oct 2016 11:15:41 +0000 (11:15 +0000)]
[libcxx] Recover no-exceptions XFAILs - I
First batch of changes to get some of these XFAILs working in the
no-exceptions libc++ variant.
Changed some XFAILs to UNSUPPORTED where the test is all about exception
handling. In other cases, used the test macros TEST_THROW and
TEST_HAS_NO_EXCEPTIONS to conditionally exclude those parts of the test
that concerns exception handling behaviour.
Reviewers: EricWF, mclow.lists
Differential revision: https://reviews.llvm.org/D24562
llvm-svn: 283441
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.
llvm-svn: 283440
Henric Karlsson [Thu, 6 Oct 2016 10:58:41 +0000 (10:58 +0000)]
Test commit access (NFC)
llvm-svn: 283439
Sagar Thakur [Thu, 6 Oct 2016 10:21:42 +0000 (10:21 +0000)]
[ESan] [MIPS] Fix workingset-signal-posix.cpp on MIPS
Used uptr for __sanitizer_kernel_sigset_t.sig to avoid byte order issues on big endian systems
Reviewd by bruening.
Differential: D24332
llvm-svn: 283438
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.
llvm-svn: 283437
Zvi Rackover [Thu, 6 Oct 2016 10:04:00 +0000 (10:04 +0000)]
Add test-cases which demontrate pr30561
llvm-svn: 283436
Sagar Thakur [Thu, 6 Oct 2016 09:58:11 +0000 (09:58 +0000)]
[ESan][MIPS] Adds support for MIPS64
With this patch 12 out of 13 tests are passing.
Reviewed by zhaoqin.
Differential: D23799
llvm-svn: 283435
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
llvm-svn: 283434
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
llvm-svn: 283433
Alex Lorenz [Thu, 6 Oct 2016 09:47:29 +0000 (09:47 +0000)]
[Sema] Fix PR30520: Handle incomplete field types in transparent_union unions
This commit fixes a crash that happens when clang is analyzing a
transparent_union attribute on a union which has a field with incomplete type.
rdar://
28630028
Differential Revision: https://reviews.llvm.org/D25273
llvm-svn: 283432
Eugene Leviant [Thu, 6 Oct 2016 09:45:04 +0000 (09:45 +0000)]
[ELF] Don't fail if undefined symbol is not used
Differential revision: https://reviews.llvm.org/D25240
llvm-svn: 283431
Benjamin Kramer [Thu, 6 Oct 2016 09:40:37 +0000 (09:40 +0000)]
Add missing -no-canonical-prefixes.
llvm-svn: 283430
Eugene Leviant [Thu, 6 Oct 2016 09:39:28 +0000 (09:39 +0000)]
[ELF] Linker script: implement LOADADDR
Differential revision: https://reviews.llvm.org/D24298
llvm-svn: 283429
Alex Lorenz [Thu, 6 Oct 2016 09:37:15 +0000 (09:37 +0000)]
Fix PR30440: Initialize FunctionTypeDepth in CXXNameMangler
This commit fixes PR 30440 by initializing CXXNameMangler's FunctionTypeDepth
in the two constructors added in r274222 (The commit that caused this
regression).
rdar://
28455269
Differential Revision: https://reviews.llvm.org/D24932
llvm-svn: 283428
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
llvm-svn: 283427
George Rimar [Thu, 6 Oct 2016 09:17:55 +0000 (09:17 +0000)]
[ELF] - Make checks in ObjectFile<ELFT>::getSection() stricter.
This patch makes the check for null section stricter,
so it is only allowed for STT_SECTION symbols now.
Differential revision: https://reviews.llvm.org/D25231
llvm-svn: 283426
Haojian Wu [Thu, 6 Oct 2016 08:59:24 +0000 (08:59 +0000)]
[clang-move] Move comments which are associated with the moved class.
Reviewers: ioeric
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D25227
llvm-svn: 283425
Haojian Wu [Thu, 6 Oct 2016 08:29:32 +0000 (08:29 +0000)]
[clang-move] Cleanup around replacements.
Summary:
cleanup the remaining empty namespace after moving out the
class defintitions.
Reviewers: ioeric
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D25282
llvm-svn: 283424
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.
llvm-svn: 283423
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!
llvm-svn: 283422
Dean Michael Berris [Thu, 6 Oct 2016 07:09:40 +0000 (07:09 +0000)]
[compiler-rt][XRay][NFC] clang-format XRay sources
llvm-svn: 283421
Petr Hosek [Thu, 6 Oct 2016 06:08:09 +0000 (06:08 +0000)]
[Driver] Add driver support for Fuchsia
Provide toolchain and tool support for Fuchsia operating system.
Fuchsia uses compiler-rt as the runtime library and libc++, libc++abi
and libunwind as the C++ standard library. lld is used as a default
linker.
Differential Revision: https://reviews.llvm.org/D25117
llvm-svn: 283420
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
llvm-svn: 283419
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
llvm-svn: 283418
Mehdi Amini [Thu, 6 Oct 2016 05:11:48 +0000 (05:11 +0000)]
Taking StringRef in Driver.h APIs instead of raw pointers (NFC)
llvm-svn: 283417
Mehdi Amini [Thu, 6 Oct 2016 04:26:16 +0000 (04:26 +0000)]
Use llvm::raw_string_ostream instead of std::stringstream (NFC)
As a side effect, this avoid having to call .data() on the StringRef.
llvm-svn: 283416
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
llvm-svn: 283415
Zachary Turner [Wed, 5 Oct 2016 23:51:13 +0000 (23:51 +0000)]
Fix build error on Android again.
This one was my fault since I can't compile Android.
llvm-svn: 283414
Zachary Turner [Wed, 5 Oct 2016 23:40:23 +0000 (23:40 +0000)]
Convert some Args index-based iteration to range-style iteration.
This is better for a number of reasons. Mostly style, but also:
1) Signed-unsigned comparison warnings disappear since there is
no loop index.
2) Iterating with the range-for style gives you back an entry
that has more than just a const char*, so it's more efficient
and more useful.
3) Makes code safter since the type system enforces that it's
impossible to index out of bounds.
llvm-svn: 283413
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
llvm-svn: 283411
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.
llvm-svn: 283410
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.
llvm-svn: 283409
Eric Fiselier [Wed, 5 Oct 2016 22:55:10 +0000 (22:55 +0000)]
Fix strict-aliasing violation in typeinfo::hash_code()
Summary:
The current implementation of `hash_code()` for uniqued RTTI strings violates strict aliasing by dereferencing a type-punned pointer. Specifically it generates a `const char**` pointer from the address of the `__name` member before casting it to `const size_t*` and dereferencing it to get the hash. This is really just a complex and incorrect way of writing `reinterpret_cast<size_t>(__name)`.
This patch changes the conversion sequence so that it no longer contains UB.
Reviewers: howard.hinnant, mclow.lists
Subscribers: rjmccall, cfe-commits
Differential Revision: https://reviews.llvm.org/D24012
llvm-svn: 283408
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.
llvm-svn: 283407
Richard Smith [Wed, 5 Oct 2016 22:41:02 +0000 (22:41 +0000)]
PR22924, PR22845, some of CWG1464: When checking the initializer for an array
new expression, distinguish between the case of a constant and non-constant
initializer. In the former case, if the bound is erroneous (too many
initializer elements, bound is negative, or allocated size overflows), reject,
and take the bound into account when determining whether we need to
default-construct any elements. In the remanining cases, move the logic to
check for default-constructibility of trailing elements into the initialization
code rather than inventing a bogus array bound, to cope with cases where the
number of initialized elements is not the same as the number of initializer
list elements (this can happen due to string literal initialization or brace
elision).
This also fixes rejects-valid and crash-on-valid errors when initializing a
new'd array of character type from a braced string literal.
llvm-svn: 283406
Richard Smith [Wed, 5 Oct 2016 22:40:54 +0000 (22:40 +0000)]
Add missing #include from r283039. Found by modules build.
llvm-svn: 283405
Jason Molenda [Wed, 5 Oct 2016 22:37:01 +0000 (22:37 +0000)]
Add i386/x86_64 tests of the eh_frame augmentation code in the x86
insturction profiling. Add a test that verifies that we reject a
32-bit only instruction in 64-bit (long) mode.
This wraps up all the testing I want to add for
x86AssemblyInspectionEngine.
llvm-svn: 283404
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.
llvm-svn: 283403
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.
llvm-svn: 283402
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.
llvm-svn: 283400
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.
llvm-svn: 283399
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
llvm-svn: 283398
Rui Ueyama [Wed, 5 Oct 2016 22:08:58 +0000 (22:08 +0000)]
Add exact number of streams for reserved stream #s.
llvm-svn: 283397
Enrico Granata [Wed, 5 Oct 2016 22:04:43 +0000 (22:04 +0000)]
Fixes for libc++ std::unordered_map data formatter against trunk
Fixes rdar://
28237467
llvm-svn: 283396
Reid Kleckner [Wed, 5 Oct 2016 21:46:56 +0000 (21:46 +0000)]
Remove extra semicolon
llvm-svn: 283395
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.
llvm-svn: 283394
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.
llvm-svn: 283393
Rui Ueyama [Wed, 5 Oct 2016 21:37:25 +0000 (21:37 +0000)]
Add an empty IPI stream.
With this, "llvm-pdbdump yaml -ipi-stream" prints out an IPI stream.
Previously it crashed because it can't handle the case where IPI
stream doesn't exist.
llvm-svn: 283392
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
llvm-svn: 283391
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.
llvm-svn: 283390
Dan Gohman [Wed, 5 Oct 2016 21:24:08 +0000 (21:24 +0000)]
[WebAssembly] Add binary-encoding opcode values to instruction descriptions.
llvm-svn: 283389
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
llvm-svn: 283388
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.
llvm-svn: 283387
Zachary Turner [Wed, 5 Oct 2016 21:14:56 +0000 (21:14 +0000)]
Convert some more aliasing and CI functions to StringRef.
llvm-svn: 283386
Zachary Turner [Wed, 5 Oct 2016 21:14:49 +0000 (21:14 +0000)]
Update some command aliasing functions to use StringRef.
llvm-svn: 283385
Zachary Turner [Wed, 5 Oct 2016 21:14:38 +0000 (21:14 +0000)]
Convert CommandObject constructors to StringRef.
llvm-svn: 283384
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
llvm-svn: 283383
Rui Ueyama [Wed, 5 Oct 2016 21:06:32 +0000 (21:06 +0000)]
Early continue. NFC.
llvm-svn: 283382
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.
llvm-svn: 283381
Zachary Turner [Wed, 5 Oct 2016 20:47:17 +0000 (20:47 +0000)]
Fixup the xfail situation on Windows.
Xfails added and/or removed to reflect the current state of Windows.
llvm-svn: 283380
Anna Zaks [Wed, 5 Oct 2016 20:45:36 +0000 (20:45 +0000)]
[compiler-rt] Enable building iOS by default.
llvm-svn: 283379
Anna Zaks [Wed, 5 Oct 2016 20:45:34 +0000 (20:45 +0000)]
[asan] Fixup: Switch to using dynamic shadow offset on iOS
Address lint comments.
llvm-svn: 283378
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
llvm-svn: 283377
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
llvm-svn: 283376
Anna Zaks [Wed, 5 Oct 2016 20:33:59 +0000 (20:33 +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.
Differential Revision: https://reviews.llvm.org/D25218
llvm-svn: 283375
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
llvm-svn: 283374
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.
llvm-svn: 283373
Rui Ueyama [Wed, 5 Oct 2016 20:09:50 +0000 (20:09 +0000)]
Remove trailing whitespace.
llvm-svn: 283372
Krzysztof Parzyszek [Wed, 5 Oct 2016 20:08:09 +0000 (20:08 +0000)]
[RDF] Fix live def propagation through basic block
llvm-svn: 283371
Zachary Turner [Wed, 5 Oct 2016 20:03:37 +0000 (20:03 +0000)]
Convert various CommandInterpreter functions to StringRef.
llvm-svn: 283370
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
llvm-svn: 283369
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.
llvm-svn: 283368
Rafael Espindola [Wed, 5 Oct 2016 19:36:02 +0000 (19:36 +0000)]
Store the hash in SectionPiece.
This spreads out computing the hash and using it in a hash table. The
speedups are:
firefox
master 6.
811232891
patch 6.
559280249 1.03841162939x faster
chromium
master 4.
369323666
patch 4.
33171853 1.00868134338x faster
chromium fast
master 1.
856679971
patch 1.
850617741 1.00327578725x faster
the gold plugin
master 0.
32917962
patch 0.
325711944 1.01064645023x faster
clang
master 0.
558015452
patch 0.
550284165 1.01404962652x faster
llvm-as
master 0.
032563515
patch 0.
032152077 1.01279662275x faster
the gold plugin fsds
master 0.
356221362
patch 0.
352772162 1.00977741549x faster
clang fsds
master 0.
635096494
patch 0.
627249229 1.01251060127x faster
llvm-as fsds
master 0.
030183188
patch 0.
029889544 1.00982430511x faster
scylla
master 3.
071448906
patch 2.
938484138 1.04524944215x faster
This seems to be because we don't stall as much. When linking firefox
stalled-cycles-frontend goes from 57.56% to 55.55%.
With -O2 the difference is even more significant since we avoid
recomputing the hash. For firefox we go from 9.
990295265 to
9.
149627521 seconds (1.09x faster).
llvm-svn: 283367
Peter Collingbourne [Wed, 5 Oct 2016 19:25:20 +0000 (19:25 +0000)]
FastISel: Remove unused/un-overridden entry points. NFCI.
llvm-svn: 283366
Matthew Simpson [Wed, 5 Oct 2016 19:19:49 +0000 (19:19 +0000)]
[LV] Remove obsolete comment (NFC)
llvm-svn: 283365
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.
llvm-svn: 283364
Nemanja Ivanovic [Wed, 5 Oct 2016 19:11:36 +0000 (19:11 +0000)]
Removing optimization from the RUN lines and adjusting the checks
to not rely on optimization.
llvm-svn: 283363
Luke Drummond [Wed, 5 Oct 2016 19:10:47 +0000 (19:10 +0000)]
Add the ability to set breakpoints on named RenderScript reductions
- Add new `lldb_private::lldb_renderscript::RSReduceBreakpointResolver`
class that can set breakpoints on kernels that are constituent
functions of named reduction groups. Also support debugging of subsets
of the the reduction group with the `-t, --function-role` flag which
takes a comma-separated list of reduction function types
outconverter,combiner,initializer,accumulator (defaults to all)
- Add 2 new helper methods to `RenderScriptRuntime`,
1. `CreateReductionBreakpoint(name, types)`: instantiates a new
RSReduceBreakpointResolver and inserts that resolver into the running
process.
2. `PlaceBreakpointOnReduction`: which is a public helper function.
- hook up the above functionality to the command-line with new
`CommandObject*` classes that handle parsing of function roles and
dispatch to the runtime. These are namespaced under the snappy
`language renderscript reduction breakpoint ...` subcommand
- [incidental] Factor multiple common uses of
`FindFirstSymbolWithNameAndType(ConstString(".rs.info")` into static
`IsRenderScriptScriptModule(ModuleSP module)` function, and replace
original uses.
llvm-svn: 283362
Sanjay Patel [Wed, 5 Oct 2016 18:51:12 +0000 (18:51 +0000)]
fix documentation comments; NFC
llvm-svn: 283361
Marshall Clow [Wed, 5 Oct 2016 18:47:18 +0000 (18:47 +0000)]
Comment out failing test while I figure out who is at fault
llvm-svn: 283360
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.
llvm-svn: 283359
Zachary Turner [Wed, 5 Oct 2016 18:40:51 +0000 (18:40 +0000)]
Fix some test failures due to the recent Breakpoint patch.
llvm-svn: 283358
Rafael Espindola [Wed, 5 Oct 2016 18:40:00 +0000 (18:40 +0000)]
Compact SectionPiece.
It is pretty easy to get the data from the InputSection, so we don't
have to store it.
This opens the way for storing the hash instead.
llvm-svn: 283357
Marshall Clow [Wed, 5 Oct 2016 18:36:24 +0000 (18:36 +0000)]
Mark LWG#2679 as complete
llvm-svn: 283356
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.
llvm-svn: 283355
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.
llvm-svn: 283354
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
llvm-svn: 283353
Dimitar Vlahovski [Wed, 5 Oct 2016 18:11:45 +0000 (18:11 +0000)]
Removing the new Minidump plugin
Tests are failing and build is failing on windows and darwin.
Will fix and commit it later
-------------------------------------------------------------
Revert "xfailing minidump tests again ... :("
This reverts commit
97eade002c9e43c1e0d11475a4888083a8965044.
Revert "Fixing new Minidump plugin tests"
This reverts commit
0dd93b3ab39c8288696001dd50b9a093b813b09c.
Revert "Add the new minidump files to the Xcode project."
This reverts commit
2f638a1d046b8a88e61e212220edc40aecd2ce44.
Revert "xfailing tests for Minidump plugin"
This reverts commit
99311c0b22338a83e6a00c4fbddfd3577914c003.
Revert "Adding a new Minidump post-mortem debugging plugin"
This reverts commit
b09a7e4dae231663095a84dac4be3da00b03a021.
llvm-svn: 283352
Zachary Turner [Wed, 5 Oct 2016 17:58:46 +0000 (17:58 +0000)]
Try to fix Android build.
Seems it doesn't like the implicit conversion from
StringRef[] to ArrayRef<StringRef>.
llvm-svn: 283351
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.
llvm-svn: 283350
Anna Zaks [Wed, 5 Oct 2016 17:42:24 +0000 (17:42 +0000)]
Revert "[asan] Switch to using dynamic shadow offset on iOS"
This reverts commit
b2af965b7924ad793b313996a96633bb72daf629.
Revert as these changes broke a Chromium buildbot.
llvm-svn: 283349
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.
llvm-svn: 283348
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
llvm-svn: 283347
Bjorn Pettersson [Wed, 5 Oct 2016 17:22:11 +0000 (17:22 +0000)]
Test commit permission. NFC
llvm-svn: 283346
Zachary Turner [Wed, 5 Oct 2016 17:07:47 +0000 (17:07 +0000)]
Convert some breakpoint code to use StringRef.
Differential revision: https://reviews.llvm.org/D25158
llvm-svn: 283345
Zachary Turner [Wed, 5 Oct 2016 17:07:34 +0000 (17:07 +0000)]
Make lldb -Werror clean on Windows.
Differential Revision: https://reviews.llvm.org/D25247
llvm-svn: 283344