Simon Pilgrim [Tue, 13 Sep 2016 17:34:56 +0000 (17:34 +0000)]
[X86][SSE] Added AVX512F and additional vector truncate test cases
trunc16i16_16i8 is currently commented out due to PR25684
llvm-svn: 281356
Manman Ren [Tue, 13 Sep 2016 17:25:08 +0000 (17:25 +0000)]
ObjectiveC generics: Add ObjCTypeParamType in the type system.
We also need to add ObjCTypeParamTypeLoc. ObjCTypeParamType supports the
representation of "T <protocol>" where T is a type parameter. Before this,
we use TypedefType to represent the type parameter for ObjC.
ObjCTypeParamType has "ObjCTypeParamDecl *OTPDecl" and it extends from
ObjCProtocolQualifiers. It is a non-canonical type and is canonicalized
to the underlying type with the protocol qualifiers.
rdar://
24619481
rdar://
25060179
Differential Revision: http://reviews.llvm.org/D23079
llvm-svn: 281355
Simon Pilgrim [Tue, 13 Sep 2016 17:15:28 +0000 (17:15 +0000)]
[DAGCombiner] Use APInt directly in (shl (ext (shl x, c1)), c2) combine
Fix failure to detect out of range shift constants leading to assert in ConstantSDNode::getZExtValue()
Followup to D23007
llvm-svn: 281354
Manman Ren [Tue, 13 Sep 2016 17:03:12 +0000 (17:03 +0000)]
ObjectiveC: Refactor applyObjCProtocolQualifiers.
To construct the canonical type of ObjCTypeParamType, we need to apply
qualifiers on ObjCObjectPointerType. The updated applyObjCProtocolQualifiers
handles this case by merging the protocol lists, constructing a new
ObjCObjectType, then a new ObjCObjectPointerType.
rdar://
24619481
rdar://
25060179
Differential Revision: http://reviews.llvm.org/D24059
llvm-svn: 281353
Todd Fiala [Tue, 13 Sep 2016 16:53:07 +0000 (16:53 +0000)]
fixup Xcode build for removal of MIUtilParse.*
llvm-svn: 281352
Manman Ren [Tue, 13 Sep 2016 16:45:29 +0000 (16:45 +0000)]
Add a class ObjCProtocolQualifiers to wrap APIs for ObjC protocol list.
Now ObjCObjectType extends from ObjCProtocolQualifiers. We save number of
protocols in ObjCProtocolQualifiers.
This is in preparation of adding a new type class ObjCTypeParamType that
can take protocol qualifiers.
rdar://
24619481
rdar://
25060179
Differential Revision: http://reviews.llvm.org/D23078
llvm-svn: 281351
Matt Arsenault [Tue, 13 Sep 2016 16:39:43 +0000 (16:39 +0000)]
Fix misleading comment for getOrEnforceKnownAlignment
It does not return 0 to indicate failure, and returns the known
alignment.
llvm-svn: 281350
Dimitar Vlahovski [Tue, 13 Sep 2016 16:22:15 +0000 (16:22 +0000)]
Fix a merge mishap in rL281348
llvm-svn: 281349
Dimitar Vlahovski [Tue, 13 Sep 2016 15:54:38 +0000 (15:54 +0000)]
MinidumpParsing: pid, modules, exceptions, strings
Summary:
Added parsing of the MiscInfo data stream.
The main member of it that we care about is the process_id
On Linux generated Minidump (from breakpad) we don't have
the MiscInfo, we have the /proc/$pid/status from where we can get the
pid.
Also parsing the module list - the list of all of the loaded
modules/shared libraries.
Parsing the exception stream.
Parsing MinidumpStrings.
I have unit tests for all of that.
Also added some tests using a Minidump generated from Windows tools (not
from breakpad)
Reviewers: labath, zturner
Subscribers: beanz, lldb-commits
Differential Revision: https://reviews.llvm.org/D24385
llvm-svn: 281348
Jason Henline [Tue, 13 Sep 2016 15:44:18 +0000 (15:44 +0000)]
[SE] Stop using llvm-config --cxxflags
Summary:
Build configuration was adding $(llvm-config --cxxflags) to the
StreamExecutor CXXFLAGS, but this was causing "-O3" to be passed even
for debug builds, and was making debugging difficult.
The llvm-config call was originally introduced to handle the -fno-rtti
flag because an RTTI StreamExecutor could not link with a no-RTTI LLVM.
This patch converts to using LLVM_ENABLE_RTTI and only adding the
`-fno-rtti` flag if needed, not all the rest of the LLVM CXXFLAGS.
I have tested this with clang-4.0 and gcc-4.8 on Ubuntu. Some work will
probably have to be done to support MSVC.
Reviewers: jlebar
Subscribers: beanz, jprice, parallel_libs-commits, mgorny
Differential Revision: https://reviews.llvm.org/D24474
llvm-svn: 281347
Nico Weber [Tue, 13 Sep 2016 15:05:04 +0000 (15:05 +0000)]
Traversing template paramter lists of DeclaratorDecls and/or TagDecls.
The unit tests in this patch demonstrate the need to traverse template
parameter lists of DeclaratorDecls (e.g. VarDecls, CXXMethodDecls) and
TagDecls (e.g. EnumDecls, RecordDecls).
Fixes PR29042.
https://reviews.llvm.org/D24268
Patch from Lukasz
Łukasz Anforowicz <lukasza@chromium.org>!
llvm-svn: 281345
Eric Liu [Tue, 13 Sep 2016 15:02:43 +0000 (15:02 +0000)]
Remove redundant comma around parenthesis in parameter list.
Reviewers: djasper
Subscribers: cfe-commits, klimek
Differential Revision: https://reviews.llvm.org/D24501
llvm-svn: 281344
Andrea Di Biagio [Tue, 13 Sep 2016 14:50:47 +0000 (14:50 +0000)]
[ConstantFold] Improve the bitcast folding logic for constant vectors.
The constant folder didn't know how to always fold bitcasts of constant integer
vectors. In particular, it was unable to handle the case where a constant vector
had some undef elements, and the resulting (i.e. bitcasted) vector type had more
elements than the original vector type.
Example:
%cast = bitcast <2 x i64><i64 undef, i64 2> to <4 x i32>
On a little endian target, %cast could have been folded to:
<4 x i32><i32 undef, i32 undef, i32 2, i32 0>
This patch improves the folding logic by teaching how to correctly propagate
undef elements in the folded vector.
Differential Revision: https://reviews.llvm.org/D24301
llvm-svn: 281343
Jonas Hahnfeld [Tue, 13 Sep 2016 14:42:40 +0000 (14:42 +0000)]
[asan] Add missing include for rand()
llvm-svn: 281342
Simon Pilgrim [Tue, 13 Sep 2016 14:41:39 +0000 (14:41 +0000)]
[X86] Regenerated shift combine tests.
Added x86_64 tests
llvm-svn: 281341
Vassil Vassilev [Tue, 13 Sep 2016 14:41:35 +0000 (14:41 +0000)]
[modules] Re-enable some previously excluded files.
Our modules support seems to be able to handle them nowadays.
Patch by Cristina Cristescu!
llvm-svn: 281340
Krzysztof Parzyszek [Tue, 13 Sep 2016 14:36:55 +0000 (14:36 +0000)]
[Hexagon] Clear the flow queue after visiting a single instruction
llvm-svn: 281339
Rafael Espindola [Tue, 13 Sep 2016 14:23:14 +0000 (14:23 +0000)]
Enable merging of SHF_MERGE sections with linker scripts.
This also fixes the related problem of non SHF_MERGE sections with
different flags not being merged.
Fixes pr30355.
llvm-svn: 281338
Nirav Dave [Tue, 13 Sep 2016 13:57:16 +0000 (13:57 +0000)]
Apply Clang-format to MCAsmParser.cpp NFC.
llvm-svn: 281337
Nirav Dave [Tue, 13 Sep 2016 13:55:06 +0000 (13:55 +0000)]
Defer asm errors to post-statement failure
Recommitting after fixing AsmParser Initialization.
Allow errors to be deferred and emitted as part of clean up to simplify
and shorten Assembly parser code. This will allow error messages to be
emitted in helper functions and be modified by the caller which has
better context.
As part of this many minor cleanups to the Parser:
* Unify parser cleanup on error
* Add Workaround for incorrect return values in ParseDirective instances
* Tighten checks on error-signifying return values for parser functions
and fix in-tree TargetParsers to be more consistent with the changes.
* Fix AArch64 test cases checking for spurious error messages that are
now fixed.
These changes should be backwards compatible with current Target Parsers
so long as the error status are correctly returned in appropriate
functions.
Reviewers: rnk, majnemer
Subscribers: aemerson, jyknight, llvm-commits
Differential Revision: https://reviews.llvm.org/D24047
llvm-svn: 281336
Chad Rosier [Tue, 13 Sep 2016 13:30:30 +0000 (13:30 +0000)]
[LoopInterchange] Minor refactor. NFC.
llvm-svn: 281334
Tobias Grosser [Tue, 13 Sep 2016 13:22:27 +0000 (13:22 +0000)]
GPGPU: Use const_cast to avoid compiler warning [NFC]
llvm-svn: 281333
Andrea Di Biagio [Tue, 13 Sep 2016 13:17:42 +0000 (13:17 +0000)]
[InstSimplify] Add tests to show missed bitcast folding opportunities.
InstSimplify doesn't always know how to fold a bitcast of a constant vector.
In particular, the logic in InstSimplify doesn't know how to handle the case
where the constant vector in input contains some undef elements, and the
number of elements is smaller than the number of elements of the bitcast
vector type.
llvm-svn: 281332
Chad Rosier [Tue, 13 Sep 2016 13:08:53 +0000 (13:08 +0000)]
Don't use else if after return. Tidy comments. NFC.
llvm-svn: 281331
Chad Rosier [Tue, 13 Sep 2016 13:00:29 +0000 (13:00 +0000)]
Typo. NFC.
llvm-svn: 281330
Rafael Espindola [Tue, 13 Sep 2016 13:00:06 +0000 (13:00 +0000)]
Refactor duplicated code. NFC.
llvm-svn: 281329
Chad Rosier [Tue, 13 Sep 2016 12:56:04 +0000 (12:56 +0000)]
[LoopInterchange] Tidy up and remove unnecessary dyn_casts. NFC.
llvm-svn: 281328
James Molloy [Tue, 13 Sep 2016 12:45:51 +0000 (12:45 +0000)]
Revert "[ARM] Promote small global constants to constant pools"
This reverts commit r281314. Speculatively revert as it's possible this caused linker errors: http://lab.llvm.org:8011/builders/clang-native-arm-lnt/builds/19656
llvm-svn: 281327
Sam Parker [Tue, 13 Sep 2016 12:33:06 +0000 (12:33 +0000)]
Remove InstCombine test file
My previous commit should of removed a test file but I missed it.
llvm-svn: 281326
Rafael Espindola [Tue, 13 Sep 2016 12:25:30 +0000 (12:25 +0000)]
Turn createKey into a static helper. NFC.
llvm-svn: 281325
Pablo Barrio [Tue, 13 Sep 2016 12:18:15 +0000 (12:18 +0000)]
[ARM] Add ".code 32" to functions in the ARM instruction set
Before, only Thumb functions were marked as ".code 16". These
".code x" directives are effective until the next directive of its
kind is encountered. Therefore, in code with interleaved ARM and
Thumb functions, it was possible to declare a function as ARM and
end up with a Thumb function after assembly. A test has been added.
An existing test has also been fixed to take this change into
account.
Reviewers: aschwaighofer, t.p.northover, jmolloy, rengolin
Subscribers: aemerson, rengolin, llvm-commits
Differential Revision: https://reviews.llvm.org/D24337
llvm-svn: 281324
James Molloy [Tue, 13 Sep 2016 12:12:32 +0000 (12:12 +0000)]
[Thumb] Teach ISel how to lower compares of AND bitmasks efficiently
For the common pattern (CMPZ (AND x, #bitmask), #0), we can do some more efficient instruction selection if the bitmask is one consecutive sequence of set bits (32 - clz(bm) - ctz(bm) == popcount(bm)).
1) If the bitmask touches the LSB, then we can remove all the upper bits and set the flags by doing one LSLS.
2) If the bitmask touches the MSB, then we can remove all the lower bits and set the flags with one LSRS.
3) If the bitmask has popcount == 1 (only one set bit), we can shift that bit into the sign bit with one LSLS and change the condition query from NE/EQ to MI/PL (we could also implement this by shifting into the carry bit and branching on BCC/BCS).
4) Otherwise, we can emit a sequence of LSLS+LSRS to remove the upper and lower zero bits of the mask.
1-3 require only one 16-bit instruction and can elide the CMP. 4 requires two 16-bit instructions but can elide the CMP and doesn't require materializing a complex immediate, so is also a win.
llvm-svn: 281323
Sam Parker [Tue, 13 Sep 2016 12:10:14 +0000 (12:10 +0000)]
Enable simplify libcalls for ARM PCS
Teach SimplifyLibcalls that in can treat functions annotated with
apcs, aapcs or aapcs_vfp like normal C functions if they only take
and return integer or pointer values, and the target is not iOS.
Differential Revision: https://reviews.llvm.org/D24453
llvm-svn: 281322
Ying Yi [Tue, 13 Sep 2016 11:28:31 +0000 (11:28 +0000)]
[llvm-cov] - Included footer "Generated by llvm-cov -- llvm version <version number>" in the coverage report.
The llvm-cov version information will be useful to the user when comparing the code coverage across different versions of llvm-cov. This patch provides the llvm-cov version information in the generated coverage report.
Differential Revision: https://reviews.llvm.org/D24457
llvm-svn: 281321
Rafael Espindola [Tue, 13 Sep 2016 11:28:22 +0000 (11:28 +0000)]
Delete dead code.
We already handle this is createSections.
llvm-svn: 281320
Peter Smith [Tue, 13 Sep 2016 11:15:51 +0000 (11:15 +0000)]
[ARM] Support ldr.w in pseudo instruction ldr rd,=immediate
The changes made in r269352, r269353 and r269354 to support the
transformation of the ldr rd,=immediate to mov introduced a regression
from 3.8 (ldr.w rd, =immediate) not supported.
This change puts support back in for ldr.w by means of a t2InstAlias for
the .w form. The .w is ignored in ARM state and propagated to the ldr in
Thumb2.
llvm-svn: 281319
George Rimar [Tue, 13 Sep 2016 10:45:39 +0000 (10:45 +0000)]
[ELF] - Versionscript: support mangled symbols with the same name.
This is PR30312. Info from bug page:
Both of these symbols demangle to abc::abc():
_ZN3abcC1Ev
_ZN3abcC2Ev
(These would be abc's complete object constructor and base object constructor, respectively.)
however with "abc::abc()" in the version script only one of the two receives the symbol version.
Patch fixes that.
It uses testcase created by Ed Maste (D24306).
Differential revision: https://reviews.llvm.org/D24336
llvm-svn: 281318
Pavel Labath [Tue, 13 Sep 2016 10:39:12 +0000 (10:39 +0000)]
Remove MIUtilParse (no longer used)
Summary: follow-up to https://reviews.llvm.org/D23882
Reviewers: dawn, krytarowski, labath, ki.stfu
Subscribers: beanz, mgorny, labath, ki.stfu, lldb-commits
Differential Revision: https://reviews.llvm.org/D23883
Author: Michał Górny <mgorny@gentoo.org>
llvm-svn: 281317
Vassil Vassilev [Tue, 13 Sep 2016 10:38:26 +0000 (10:38 +0000)]
Revert accidentally checked in change in r281315.
llvm-svn: 281316
Vassil Vassilev [Tue, 13 Sep 2016 10:36:12 +0000 (10:36 +0000)]
Simplify. NFC.
llvm-svn: 281315
James Molloy [Tue, 13 Sep 2016 10:28:11 +0000 (10:28 +0000)]
[ARM] Promote small global constants to constant pools
If a constant is unamed_addr and is only used within one function, we can save
on the code size and runtime cost of an indirection by changing the global's storage
to inside the constant pool. For example, instead of:
ldr r0, .CPI0
bl printf
bx lr
.CPI0: &format_string
format_string: .asciz "hello, world!\n"
We can emit:
adr r0, .CPI0
bl printf
bx lr
.CPI0: .asciz "hello, world!\n"
This can cause significant code size savings when many small strings are used in one
function (4 bytes per string).
llvm-svn: 281314
Kirill Bobyrev [Tue, 13 Sep 2016 10:19:13 +0000 (10:19 +0000)]
[clang-tidy] Fix naming in container-size-empty.
llvm-svn: 281313
Eric Liu [Tue, 13 Sep 2016 10:05:44 +0000 (10:05 +0000)]
[WebAssembly] Trying to fix broken tests in CodeGen/WebAssembly caused by r281285.
Reviewers: bkramer, ddcc, dschuff, sunfish
Subscribers: jfb, llvm-commits, dschuff
Differential Revision: https://reviews.llvm.org/D24497
llvm-svn: 281312
Michael Kruse [Tue, 13 Sep 2016 09:56:05 +0000 (09:56 +0000)]
Use value directly instead of reference. NFC.
The alias to the array element is read-only and a primitive type (pointer),
therefore use the value directly instead of a reference to it.
llvm-svn: 281311
Asiri Rathnayake [Tue, 13 Sep 2016 09:32:32 +0000 (09:32 +0000)]
[libcxx] Fix gcc builds.
Step around a gcc pre-processor defect which causes it to fail to
parse the __has_include macro check.
llvm-svn: 281310
Tamas Berghammer [Tue, 13 Sep 2016 09:27:21 +0000 (09:27 +0000)]
Fix linux build after rL281273
llvm-svn: 281309
Ayman Musa [Tue, 13 Sep 2016 09:12:45 +0000 (09:12 +0000)]
Remove MVT:i1 xor instruction before SELECT. (Performance improvement).
Differential Revision: https://reviews.llvm.org/D23764
llvm-svn: 281308
Kirill Bobyrev [Tue, 13 Sep 2016 08:58:11 +0000 (08:58 +0000)]
[clang-tidy] Extend readability-container-size-empty to arbitrary class with size() and empty()
This patch extends readability-container-size-empty check allowing it to produce
warnings not only for STL containers, but also for containers, which provide two
functions matching following signatures:
* `size_type size() const;`
* `bool empty() const;`
Where `size_type` can be any kind of integer type.
This functionality was proposed in https://llvm.org/bugs/show_bug.cgi?id=26823
by Eugene Zelenko.
Approval: alexfh
Reviewers: alexfh, aaron.ballman, Eugene.Zelenko
Subscribers: etienneb, Prazek, hokein, xazax.hun, cfe-commits
Differential Revision: https://reviews.llvm.org/D24349
llvm-svn: 281307
Sjoerd Meijer [Tue, 13 Sep 2016 08:51:59 +0000 (08:51 +0000)]
Revert of r281304 as it is causing build bot failures in hexagon
hwloop regression tests. These tests pass locally; will be investigating
where these differences come from.
llvm-svn: 281306
Tobias Grosser [Tue, 13 Sep 2016 08:42:10 +0000 (08:42 +0000)]
GPGPU: Allow region statements
llvm-svn: 281305
Sjoerd Meijer [Tue, 13 Sep 2016 08:08:06 +0000 (08:08 +0000)]
This adds a new field isAdd to MCInstrDesc. The ARM and Hexagon instruction
descriptions now tag add instructions, and the Hexagon backend is using this to
identify loop induction statements.
Patch by Sam Parker and Sjoerd Meijer.
Differential Revision: https://reviews.llvm.org/D23601
llvm-svn: 281304
Tobias Grosser [Tue, 13 Sep 2016 08:02:14 +0000 (08:02 +0000)]
GPGPU: Extend types when array sizes have smaller types
This prevents a compiler crash.
llvm-svn: 281303
Elena Demikhovsky [Tue, 13 Sep 2016 07:57:00 +0000 (07:57 +0000)]
AVX-512: Fix for PR28175 - Scalar code optimization.
Optimized (truncate (assertzext x) to i1) and anyext i1 to i8/16/32.
Optimization of this patterns is a one more step towards i1 optimization on AVX-512.
Differential Revision: https://reviews.llvm.org/D24456
llvm-svn: 281302
Diana Picus [Tue, 13 Sep 2016 07:45:17 +0000 (07:45 +0000)]
[AArch64] Support stackmap/patchpoint in getInstSizeInBytes
We currently return 4 for stackmaps and patchpoints, which is very optimistic
and can in rare cases cause the branch relaxation pass to fail to relax certain
branches.
This patch causes getInstSizeInBytes to return a pessimistic estimate of the
size as the number of bytes requested in the stackmap/patchpoint. In the future,
we could provide a more accurate estimate by sharing some of the logic in
AArch64::LowerSTACKMAP/PATCHPOINT.
Fixes part of https://llvm.org/bugs/show_bug.cgi?id=28750
Differential Revision: https://reviews.llvm.org/D24073
llvm-svn: 281301
Craig Topper [Tue, 13 Sep 2016 07:40:53 +0000 (07:40 +0000)]
[X86] Remove masked shufpd/shufps intrinsics and autoupgrade to native vector shuffles. They were removed from clang previously but accidentally left in the backend.
llvm-svn: 281300
Craig Topper [Tue, 13 Sep 2016 07:40:48 +0000 (07:40 +0000)]
[X86] Remove some dead intrinsics. They aren't implemented and clang doesn't reference them.
llvm-svn: 281299
Nikola Smiljanic [Tue, 13 Sep 2016 07:02:02 +0000 (07:02 +0000)]
Allow register variables in naked functions.
llvm-svn: 281298
Davide Italiano [Tue, 13 Sep 2016 06:31:37 +0000 (06:31 +0000)]
[Docs] Fix a broken link in the Kaleidoscope tutorial.
Patch by: Alfred Perlstein <alfred@FreeBSD.org>
llvm-svn: 281297
Davide Italiano [Tue, 13 Sep 2016 06:29:17 +0000 (06:29 +0000)]
[LTO] Only expose the dataLayout string instead of the whole module.
Differential Revision: https://reviews.llvm.org/D24494
llvm-svn: 281296
Tobias Grosser [Tue, 13 Sep 2016 05:19:26 +0000 (05:19 +0000)]
Adapt test case to recent change in Global Variable Definition
llvm-svn: 281295
Stephen Hines [Tue, 13 Sep 2016 05:00:20 +0000 (05:00 +0000)]
clang-format: Add Java detection to git-clang-format.
Summary: This change adds "java" to the list of known extensions that clang-format supports.
Patch by Luis Hector Chavez
Reviewers: djasper
Subscribers: srhines, cfe-commits
Differential Revision: https://reviews.llvm.org/D24401
llvm-svn: 281294
Adam Nemet [Tue, 13 Sep 2016 04:32:40 +0000 (04:32 +0000)]
Reapply r281276 with passing -emit-llvm in one of the tests
Original commit message:
Add -fdiagnostics-show-hotness
Summary:
I've recently added the ability for optimization remarks to include the
hotness of the corresponding code region. This uses PGO and allows
filtering of the optimization remarks by relevance. The idea was first
discussed here:
http://thread.gmane.org/gmane.comp.compilers.llvm.devel/98334
The general goal is to produce a YAML file with the remarks. Then, an
external tool could dynamically filter these by hotness and perhaps by
other things.
That said it makes sense to also expose this at the more basic level
where we just include the hotness info with each optimization remark.
For example, in D22694, the clang flag was pretty useful to measure the
overhead of the additional analyses required to include hotness.
(Without the flag we don't even run the analyses.)
For the record, Hal has already expressed support for the idea of this
patch on IRC.
Differential Revision: https://reviews.llvm.org/D23284
llvm-svn: 281293
Zachary Turner [Tue, 13 Sep 2016 04:11:57 +0000 (04:11 +0000)]
Revert "[Support][CommandLine] Add cl::getRegisteredSubcommands()"
This reverts r281290, as it breaks unit tests.
http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/303
llvm-svn: 281292
Jason Molenda [Tue, 13 Sep 2016 02:45:45 +0000 (02:45 +0000)]
Reduce the number of simultaneous debug sessions to 10 and remove
the expectedFlakeyDarwin annotation.
I've been running this test in isolation on my macOS Sierra system
and haven't seen a failure in 20-30 runs. The number of simultaneous
debug sessions that it spins up could be a problem when the testbots
are running under load, so I'm reducing this from 20 simultaneous
debug sessions to see if we can get enough stability to leave this
enabled.
llvm-svn: 281291
Dean Michael Berris [Tue, 13 Sep 2016 02:35:00 +0000 (02:35 +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
llvm-svn: 281290
Davide Italiano [Tue, 13 Sep 2016 02:22:02 +0000 (02:22 +0000)]
[lib/LTO] Expose getModule() in lto::InputFile.
lld will use this to get the datalayout string and emit a
diagnostic if empty.
llvm-svn: 281289
Jim Ingham [Tue, 13 Sep 2016 01:58:08 +0000 (01:58 +0000)]
Add a few const's (thanks Zachary) and return shared or unique pointers
in places where they help prevent leaks.
llvm-svn: 281288
Richard Trieu [Tue, 13 Sep 2016 01:37:01 +0000 (01:37 +0000)]
Handle empty message in static_asserts.
llvm-svn: 281287
Richard Trieu [Tue, 13 Sep 2016 01:20:40 +0000 (01:20 +0000)]
Fix interaction between serialization and c++1z feature.
In c++1z, static_assert is not required to have a StringLiteral message, where
previously it was required. Update the AST Reader to be able to handle a
null StringLiteral.
llvm-svn: 281286
Peter Collingbourne [Tue, 13 Sep 2016 01:13:19 +0000 (01:13 +0000)]
Update Clang for D20147 ("DebugInfo: New metadata representation for global variables.")
Differential Revision: http://reviews.llvm.org/D20415
llvm-svn: 281285
Peter Collingbourne [Tue, 13 Sep 2016 01:12:59 +0000 (01:12 +0000)]
DebugInfo: New metadata representation for global variables.
This patch reverses the edge from DIGlobalVariable to GlobalVariable.
This will allow us to more easily preserve debug info metadata when
manipulating global variables.
Fixes PR30362. A program for upgrading test cases is attached to that
bug.
Differential Revision: http://reviews.llvm.org/D20147
llvm-svn: 281284
Michael Kuperstein [Tue, 13 Sep 2016 00:57:43 +0000 (00:57 +0000)]
[DAG] Refactor BUILD_VECTOR combine to make it easier to extend. NFCI.
This should make it easier to add cases that we currently don't cover,
like supporting more kinds of type mismatches and more than 2 input vectors.
llvm-svn: 281283
Enrico Granata [Tue, 13 Sep 2016 00:22:49 +0000 (00:22 +0000)]
Fix an issue where LLDB was not masking enough bits off of objc classes data() pointers, effectively rendering us unable to generate descriptors for some classes
Fixes rdar://
27758358
llvm-svn: 281282
Hans Wennborg [Tue, 13 Sep 2016 00:21:32 +0000 (00:21 +0000)]
X86: Conditional tail calls should not have isBarrier = 1
That confuses e.g. machine basic block placement, which then doesn't
realize that control can fall through a block that ends with a conditional
tail call. Instead, isBranch=1 should be set.
Also, mark EFLAGS as used by these instructions.
llvm-svn: 281281
Eric Christopher [Tue, 13 Sep 2016 00:19:29 +0000 (00:19 +0000)]
Temporarily Revert "[MC] Defer asm errors to post-statement failure" as it's causing errors on the sanitizer bots.
This reverts commit r281249.
llvm-svn: 281280
Adam Nemet [Tue, 13 Sep 2016 00:16:49 +0000 (00:16 +0000)]
Revert "Add -fdiagnostics-show-hotness"
This reverts commit r281276.
Many bots are failing.
llvm-svn: 281279
Reid Kleckner [Tue, 13 Sep 2016 00:01:23 +0000 (00:01 +0000)]
[DebugInfo] Deduplicate debug info limiting logic
We should be doing the same checks when a type is completed as we do
when a complete type is used during emission. Previously, we duplicated
the logic, and it got out of sync. This could be observed with
dllimported classes.
Also reduce a test case for this slightly.
Implementing review feedback from David Blaikie on r281057.
llvm-svn: 281278
George Burgess IV [Mon, 12 Sep 2016 23:50:35 +0000 (23:50 +0000)]
[Sema] Fix PR30346: relax __builtin_object_size checks.
This patch makes us act more conservatively when trying to determine
the objectsize for an array at the end of an object. This is in
response to code like the following:
```
struct sockaddr {
/* snip */
char sa_data[14];
};
void foo(const char *s) {
size_t slen = strlen(s) + 1;
size_t added_len = slen <= 14 ? 0 : slen - 14;
struct sockaddr *sa = malloc(sizeof(struct sockaddr) + added_len);
strcpy(sa->sa_data, s);
// ...
}
```
`__builtin_object_size(sa->sa_data, 1)` would return 14, when there
could be more than 14 bytes at `sa->sa_data`.
Code like this is apparently not uncommon. FreeBSD's manual even
explicitly mentions this pattern:
https://www.freebsd.org/doc/en/books/developers-handbook/sockets-essential-functions.html
(section 7.5.1.1.2).
In light of this, we now just give up on any array at the end of an
object if we can't find the object's initial allocation.
I lack numbers for how much more conservative we actually become as a
result of this change, so I chose the fix that would make us as
compatible with GCC as possible. If we want to be more aggressive, I'm
happy to consider some kind of whitelist or something instead.
llvm-svn: 281277
Adam Nemet [Mon, 12 Sep 2016 23:48:16 +0000 (23:48 +0000)]
Add -fdiagnostics-show-hotness
Summary:
I've recently added the ability for optimization remarks to include the
hotness of the corresponding code region. This uses PGO and allows
filtering of the optimization remarks by relevance. The idea was first
discussed here:
http://thread.gmane.org/gmane.comp.compilers.llvm.devel/98334
The general goal is to produce a YAML file with the remarks. Then, an
external tool could dynamically filter these by hotness and perhaps by
other things.
That said it makes sense to also expose this at the more basic level
where we just include the hotness info with each optimization remark.
For example, in D22694, the clang flag was pretty useful to measure the
overhead of the additional analyses required to include hotness.
(Without the flag we don't even run the analyses.)
For the record, Hal has already expressed support for the idea of this
patch on IRC.
Differential Revision: https://reviews.llvm.org/D23284
llvm-svn: 281276
Adam Nemet [Mon, 12 Sep 2016 23:48:11 +0000 (23:48 +0000)]
Fix a long comment line
llvm-svn: 281275
Adam Nemet [Mon, 12 Sep 2016 23:46:34 +0000 (23:46 +0000)]
[OptDiag] Add getHotness accessor
llvm-svn: 281274
Jim Ingham [Mon, 12 Sep 2016 23:10:56 +0000 (23:10 +0000)]
This is the main part of a change to add breakpoint save and restore to lldb.
Still to come:
1) SB API's
2) Testcases
3) Loose ends:
a) serialize Thread options
b) serialize Exception resolvers
4) "break list --file" should list breakpoints contained in a file and
"break read -f 1 3 5" should then read in only those breakpoints.
<rdar://problem/
12611863>
llvm-svn: 281273
Philip Reames [Mon, 12 Sep 2016 22:38:44 +0000 (22:38 +0000)]
[LVI] Complete the abstract of the cache layer [NFCI]
Convert the previous introduced is-a relationship between the LVICache and LVIImple clases into a has-a relationship and hide all the implementation details of the cache from the lazy query layer.
The only slightly concerning change here is removing the addition of a queried block into the SeenBlock set in LVIImpl::getBlockValue. As far as I can tell, this was effectively dead code. I think it *used* to be the case that getCachedValueInfo wasn't const and might end up inserting elements in the cache during lookup. That's no longer true and hasn't been for a while. I did fixup the const usage to make that more obvious.
llvm-svn: 281272
Chris Bieneman [Mon, 12 Sep 2016 22:38:43 +0000 (22:38 +0000)]
[CMake] Fix linker-as-ld to symlink instead of copy lld
Summary: This test fails if you're building with BUILD_SHARED_LIBS because the LLVM libraries are found via @rpath. Symlinking instead of copying should be sufficiently robust for the test case.
Reviewers: llvm-commits
Subscribers: davide
Differential Revision: https://reviews.llvm.org/D24476
llvm-svn: 281271
Sanjay Patel [Mon, 12 Sep 2016 22:28:29 +0000 (22:28 +0000)]
add more tests for PR30273
llvm-svn: 281270
Lang Hames [Mon, 12 Sep 2016 22:05:14 +0000 (22:05 +0000)]
[ORC] Clang-format RPCSerialization.h.
llvm-svn: 281269
Lang Hames [Mon, 12 Sep 2016 22:05:12 +0000 (22:05 +0000)]
[ORC] Add some more documentation to RPCSerialization.h.
llvm-svn: 281268
Philip Reames [Mon, 12 Sep 2016 22:03:36 +0000 (22:03 +0000)]
[LVI] Sink a couple more cache manipulation routines into the cache itself [NFCI]
The only interesting bit here is the refactor of the handle callback and even that's pretty straight-forward.
llvm-svn: 281267
Philip Reames [Mon, 12 Sep 2016 21:46:58 +0000 (21:46 +0000)]
[LVI] Abstract out the actual cache logic [NFCI]
Seperate the caching logic from the implementation of the lazy analysis. For the moment, the lazy analysis impl has a is-a relationship with the cache; this will change to a has-a relationship shortly. This was done as two steps merely to keep the changes simple and the diff understandable.
llvm-svn: 281266
Rui Ueyama [Mon, 12 Sep 2016 21:44:29 +0000 (21:44 +0000)]
Add comments.
llvm-svn: 281265
Shoaib Meenai [Mon, 12 Sep 2016 21:41:12 +0000 (21:41 +0000)]
config: Use _LIBCPP_TYPE_VIS_ONLY with enum class
An enum class has associated type info. In the Microsoft ABI, type info
is emitted in the COMDAT section and isn't exported, so clang rightfully
complains about __declspec(dllexport) being unused for an enum class.
On other platforms, we still want to export the type info.
Differential Revision: https://reviews.llvm.org/D24065
llvm-svn: 281264
Nico Weber [Mon, 12 Sep 2016 21:40:50 +0000 (21:40 +0000)]
Revert r281215, it caused PR30358.
llvm-svn: 281263
Nico Weber [Mon, 12 Sep 2016 21:15:44 +0000 (21:15 +0000)]
attempt to unbreak build after r281254
llvm-svn: 281262
Saleem Abdulrasool [Mon, 12 Sep 2016 21:15:23 +0000 (21:15 +0000)]
CodeGen: use some range-based for loops
Use range-based for loops to simplify the logic. Add an explicit check for
MachO as the inline asm uses MachO specific directives.
llvm-svn: 281261
Davide Italiano [Mon, 12 Sep 2016 21:07:26 +0000 (21:07 +0000)]
[MachO] Factor out a fair amount of duplicated code. NFCI.
llvm-svn: 281260
Richard Smith [Mon, 12 Sep 2016 21:07:09 +0000 (21:07 +0000)]
Add a couple of test files missed in r281258.
llvm-svn: 281259
Richard Smith [Mon, 12 Sep 2016 21:06:40 +0000 (21:06 +0000)]
[modules] When we merge two definitions of a function, mark the retained
definition as visible in the discarded definition's module, as we do for
other kinds of definition.
llvm-svn: 281258
Lang Hames [Mon, 12 Sep 2016 20:45:01 +0000 (20:45 +0000)]
[ORC] Add missing <thread> header to RPCSerialization.h.
llvm-svn: 281257
Davide Italiano [Mon, 12 Sep 2016 20:44:53 +0000 (20:44 +0000)]
[Cmake] Use Cmake's default RPATH for unittest.
Similarly to what was done in r280791 for llvm/.
This should fix a bunch of failures I saw while
trying a BUILD_SHARED_LIBS build on MacOS.
Still there are some failures, but this is a step
forward.
Thanks a lot to Chris Bieneman for the suggested
fix (in PR30345)
llvm-svn: 281256
Kostya Serebryany [Mon, 12 Sep 2016 20:39:13 +0000 (20:39 +0000)]
[sanitizer] replace CHECK with CHECK_XY in two places for better diagnostics
llvm-svn: 281255