Zachary Turner [Thu, 6 Oct 2016 21:22:44 +0000 (21:22 +0000)]
Convert UniqueCStringMap to use StringRef.
llvm-svn: 283494
Todd Fiala [Thu, 6 Oct 2016 21:16:37 +0000 (21:16 +0000)]
xfail TestReportData.py on i386
Tracked by:
rdar://
28658860
llvm-svn: 283493
Todd Fiala [Thu, 6 Oct 2016 21:07:45 +0000 (21:07 +0000)]
xfail TestQueues on macOS
This test is failing on CI. I cannot get it to fail on my
local setup.
Tracked by:
rdar://
28658529
llvm-svn: 283492
Francis Ricci [Thu, 6 Oct 2016 20:41:11 +0000 (20:41 +0000)]
Fix GetDisplayName when only a demangled name is available
Summary:
GetDisplayDemangledName will already return a ConstString() when
there is neither a mangled name or a demangled name, so we don't need to special
case here. This will fix GetDisplayName in cases where m_mangled contains
only a demangled name and not a mangled name.
Reviewers: clayborg, granata.enrico, sas
Subscribers: lldb-commits
Differential Revision: https://reviews.llvm.org/D25201
llvm-svn: 283491
Rong Xu [Thu, 6 Oct 2016 20:38:13 +0000 (20:38 +0000)]
[PGO] Create weak alias for the renamed Comdat function
Add a weak alias to the renamed Comdat function in IR level instrumentation,
using it's original name. This ensures the same behavior w/ and w/o IR
instrumentation, even for non standard conforming code.
Differential Revision: http://reviews.llvm.org/D25339
llvm-svn: 283490
Richard Smith [Thu, 6 Oct 2016 20:30:51 +0000 (20:30 +0000)]
[modules] Be sure to emit local specializations of imported templates, even if
the resulting specialization is not referenced by the rest of the AST. This
both avoids performing unnecessary reinstantiations in downstream users of the
AST file and fixes a bug (breaking modules self-host right now) where we would
sometimes fail to emit a definition of a class template specialization if we
imported just a declaration of it from elsewhere (see new testcase for reduced
example).
llvm-svn: 283489
Rui Ueyama [Thu, 6 Oct 2016 20:04:54 +0000 (20:04 +0000)]
Remove useless function.
llvm-svn: 283488
Justin Lebar [Thu, 6 Oct 2016 19:47:56 +0000 (19:47 +0000)]
[Sema] Replace smart quote with "'" in comment.
Looks like the smart quote was copy/pasted from the C++ standard.
The smart quote was not encoded as valid UTF-8 (?), even though vim was
detecting the file as UTF-8. This broke the clang-format Python script,
which tried to read the file using the same encoding as vim detected.
llvm-svn: 283487
Michael Kuperstein [Thu, 6 Oct 2016 19:31:27 +0000 (19:31 +0000)]
[X86] Preserve BasePtr for LEA64_32r
When replacing FrameIndex with BasePtr, we must preserve BasePtr for
LEA64_32r since BasePtr is used later for stack adjustment if it is
the same as StackPtr.
Patch by H.J Lu <hjl.tools@gmail.com>
Differential Revision: https://reviews.llvm.org/D23575
llvm-svn: 283486
Simon Pilgrim [Thu, 6 Oct 2016 19:29:25 +0000 (19:29 +0000)]
[X86][SSE] Add f16/f80/f128 vector sitofp test cases
As discussed on D23808
llvm-svn: 283485
Todd Fiala [Thu, 6 Oct 2016 19:23:29 +0000 (19:23 +0000)]
xfail TestSBTypeTypeClass.py on macOS i386
Tracked by:
rdar://
28656677
llvm-svn: 283484
Todd Fiala [Thu, 6 Oct 2016 19:18:48 +0000 (19:18 +0000)]
xfail TestDataFormatterNSIndexPath.py on macOS i386
Tracked by:
rdar://
28656605
llvm-svn: 283483
Todd Fiala [Thu, 6 Oct 2016 19:12:05 +0000 (19:12 +0000)]
xfail TestExec.py on macOS i386
Tracked by:
rdar://
28656532
llvm-svn: 283482
Todd Fiala [Thu, 6 Oct 2016 19:04:58 +0000 (19:04 +0000)]
xfail TestDiagnoseDereferenceFunctionReturn.py on macOS i386
Tracked by:
rdar://
28656408
llvm-svn: 283481
Michael Kuperstein [Thu, 6 Oct 2016 18:58:24 +0000 (18:58 +0000)]
[DAG] Generalize build_vector -> vector_shuffle combine for more than 2 inputs
This generalizes the build_vector -> vector_shuffle combine to support any
number of inputs. The idea is to create a binary tree of shuffles, where
the first layer performs pairwise shuffles of the input vectors placing each
input element into the correct lane, and the rest of the tree blends these
shuffles together.
This doesn't try to be smart and create any sort of "optimal" shuffles.
The assumption is that even a "poor" shuffle sequence is better than extracting
and inserting the elements one by one.
Differential Revision: https://reviews.llvm.org/D24683
llvm-svn: 283480
Jim Ingham [Thu, 6 Oct 2016 18:57:30 +0000 (18:57 +0000)]
StringRef::front asserts on empty strings, causing "break modify -c ''" to assert.
Added a check for empty at the point where we were going to crash.
<rdar://problem/
28654032>
llvm-svn: 283479
Michael Ilseman [Thu, 6 Oct 2016 18:30:26 +0000 (18:30 +0000)]
Revert "Add -strip-nonlinetable-debuginfo capability"
This reverts commit r283473.
Reverted until review is completed.
llvm-svn: 283478
Todd Fiala [Thu, 6 Oct 2016 18:25:54 +0000 (18:25 +0000)]
xfail TestDarwinLogBasic.py for i386 macOS
Tracked by:
rdar://
28655626
llvm-svn: 283477
Matt Arsenault [Thu, 6 Oct 2016 18:12:13 +0000 (18:12 +0000)]
AMDGPU: Don't fold undef uses or copies with implicit uses
llvm-svn: 283476
Matt Arsenault [Thu, 6 Oct 2016 18:12:07 +0000 (18:12 +0000)]
AMDGPU: Remove scheduling info from si_mask_branch
llvm-svn: 283475
Valentina Giusti [Thu, 6 Oct 2016 18:05:12 +0000 (18:05 +0000)]
Add bound violation handling for Intel(R) Memory Protection Extensions (Intel(R) MPX)
Summary:
This patch adds support for handling the SIGSEGV signal with 'si_code ==
SEGV_BNDERR', which is thrown when a bound violation is caught by the
Intel(R) MPX technology.
Differential Revision: https://reviews.llvm.org/D25329
llvm-svn: 283474
Michael Ilseman [Thu, 6 Oct 2016 17:58:38 +0000 (17:58 +0000)]
Add -strip-nonlinetable-debuginfo capability
This adds a new function to DebugInfo.cpp that takes an llvm::Module
as input and removes all debug info metadata that is not directly
needed for line tables, thus effectively stripping all type and
variable information from the module.
The primary motivation for this feature was the bitcode work flow
(cf. http://lists.llvm.org/pipermail/llvm-dev/2016-June/100643.html
for more background). This is not wired up yet, but will be in
subsequent patches. For testing, the new functionality is exposed to
opt with a -strip-nonlinetable-debuginfo option.
The secondary use-case (and one that works right now!) is as a
reduction pass in bugpoint. I added two new bugpoint options
(-disable-strip-debuginfo and -disable-strip-debug-types) to control
the new features. By default it will first attempt to remove all debug
information, then only the type info, and then proceed to hack at any
remaining MDNodes.
llvm-svn: 283473
Ed Maste [Thu, 6 Oct 2016 17:55:22 +0000 (17:55 +0000)]
Match printf field width arg and type
A '*' as a field width or precision specifies that the field width or
precision is supplied by an int argument.
llvm-svn: 283472
Matt Arsenault [Thu, 6 Oct 2016 17:54:30 +0000 (17:54 +0000)]
AMDGPU: Remove leftover implicit operands when folding immediates
When constant folding an operation to a copy or an immediate
mov, the implicit uses/defs of the old instruction were left behind,
e.g. replacing v_or_b32 left the implicit exec use on the new copy.
llvm-svn: 283471
Matt Arsenault [Thu, 6 Oct 2016 17:19:11 +0000 (17:19 +0000)]
Reapply "AMDGPU: Support using tablegened MC pseudo expansions"
Fix bad merge
llvm-svn: 283470
Matt Arsenault [Thu, 6 Oct 2016 17:08:01 +0000 (17:08 +0000)]
Revert "AMDGPU: Support using tablegened MC pseudo expansions"
llvm-svn: 283469
Jim Ingham [Thu, 6 Oct 2016 17:01:00 +0000 (17:01 +0000)]
These test cases don't test different debug info formats.
llvm-svn: 283468
Matt Arsenault [Thu, 6 Oct 2016 16:56:41 +0000 (16:56 +0000)]
AMDGPU: Support using tablegened MC pseudo expansions
Make the necessary refactorings to make use of PseudoInstExpansion
llvm-svn: 283467
Vedant Kumar [Thu, 6 Oct 2016 16:45:40 +0000 (16:45 +0000)]
[ubsan] Turn on 'Has CXXABI' to enable support for -fsanitize=vptr on Darwin
Differential Revision: https://reviews.llvm.org/D24990
llvm-svn: 283466
Brian Gesiak [Thu, 6 Oct 2016 16:39:22 +0000 (16:39 +0000)]
[docs] Add PR to Lexicon
Summary:
The acronym PR could be ambiguous to some users, especially those who
are used to interpreting it as GitHub's "pull request".
Reviewers: ddunbar, jordan_rose, void, beanz
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25331
llvm-svn: 283465
Matt Arsenault [Thu, 6 Oct 2016 16:20:41 +0000 (16:20 +0000)]
BranchRelaxation: Support expanding unconditional branches
AMDGPU needs to expand unconditional branches in a new
block with an indirect branch.
llvm-svn: 283464
Krzysztof Parzyszek [Thu, 6 Oct 2016 16:18:04 +0000 (16:18 +0000)]
[Hexagon] Avoid replacing full regs with subregisters in tied operands
Doing so will result in the two-address pass generating incorrect code.
llvm-svn: 283463
Matt Arsenault [Thu, 6 Oct 2016 16:00:58 +0000 (16:00 +0000)]
BranchRelaxation: Account for function alignment
llvm-svn: 283462
Valentina Giusti [Thu, 6 Oct 2016 15:49:10 +0000 (15:49 +0000)]
Improve test for Intel(R) MPX registers.
Summary:
Let the inferior test code determine if CPU and kernel support Intel(R)
MPX and cleanup test script.
Differential Revision: https://reviews.llvm.org/D25328
llvm-svn: 283461
David Sheinkman [Thu, 6 Oct 2016 15:47:36 +0000 (15:47 +0000)]
[OpenMP] Check if the template specialization is mappable instead of specialized template Differential Revision: https://reviews.llvm.org/D25252
llvm-svn: 283460
Matt Arsenault [Thu, 6 Oct 2016 15:38:53 +0000 (15:38 +0000)]
Move AArch64BranchRelaxation to generic code
llvm-svn: 283459
Matt Arsenault [Thu, 6 Oct 2016 15:38:09 +0000 (15:38 +0000)]
AArch64: Move remaining target specific BranchRelaxation bits to TII
llvm-svn: 283458
Nirav Dave [Thu, 6 Oct 2016 15:28:08 +0000 (15:28 +0000)]
[X86] Fix intel syntax push parsing bug
Change erroneous parsing of push immediate instructions in intel syntax
to default to pointer size by rewriting into the ATT style for matching.
This fixes PR22028.
Reviewers: majnemer, rnk
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25288
llvm-svn: 283457
Mehdi Amini [Thu, 6 Oct 2016 15:12:22 +0000 (15:12 +0000)]
Revert "Use StringRef in LTOModule implementation (NFC)"
This reverts commit r282997, a windows bot is asserting in
one test apparently.
llvm-svn: 283456
Rafael Espindola [Thu, 6 Oct 2016 15:08:10 +0000 (15:08 +0000)]
Centralize sh_entsize checking.
llvm-svn: 283455
Rafael Espindola [Thu, 6 Oct 2016 14:47:04 +0000 (14:47 +0000)]
Refactor to use getSectionContentsAsArray.
This centralizes quite a bit of error checking.
llvm-svn: 283454
Rafael Espindola [Thu, 6 Oct 2016 14:07:26 +0000 (14:07 +0000)]
Refactor duplicated typedefs. NFC.
llvm-svn: 283453
Marshall Clow [Thu, 6 Oct 2016 13:59:18 +0000 (13:59 +0000)]
Mark issues 2514, 2519, 2536 and 2475 as done
llvm-svn: 283452
Tim Northover [Thu, 6 Oct 2016 13:57:31 +0000 (13:57 +0000)]
GlobalISel: fix misuse of using declaration in test.
Clang didn't diagnose it before. Oops.
llvm-svn: 283451
Sam Kolton [Thu, 6 Oct 2016 13:46:08 +0000 (13:46 +0000)]
[AMDGPU] Disassembler: print label names in branch instructions
Summary: Add AMDGPUSymbolizer for finding names for labels from ELF symbol table.
Initialize MCObjectFileInfo with some default values.
Reviewers: vpykhtin, artem.tamazov, tstellarAMD
Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye
Differential Revision: https://reviews.llvm.org/D24802
llvm-svn: 283450
Anna Thomas [Thu, 6 Oct 2016 13:24:20 +0000 (13:24 +0000)]
[RS4GC] Fix comment to show TODO. NFC
llvm-svn: 283449
Vassil Vassilev [Thu, 6 Oct 2016 13:18:06 +0000 (13:18 +0000)]
Allocate after the early exit checks. NFC.
llvm-svn: 283448
Rafael Espindola [Thu, 6 Oct 2016 13:11:12 +0000 (13:11 +0000)]
Use range loop. NFC.
llvm-svn: 283447
Krzysztof Parzyszek [Thu, 6 Oct 2016 13:05:46 +0000 (13:05 +0000)]
[RDF] Replace some expensive copies with references in range-based loops
llvm-svn: 283446
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