Matt Arsenault [Wed, 13 Jul 2016 06:04:22 +0000 (06:04 +0000)]
AMDGPU: Fold out no-op kill intrinsics
llvm-svn: 275253
Matt Arsenault [Wed, 13 Jul 2016 05:55:15 +0000 (05:55 +0000)]
AMDGPU: WQM cleanups
- Add new TTI instruction checks
- Don't use const for blocks that are mutated.
- Checking isBranch and isTerminator should be redundant
llvm-svn: 275252
David Majnemer [Wed, 13 Jul 2016 05:16:16 +0000 (05:16 +0000)]
[ConstantFolding] Don't treat negative GEP offsets as positive
GEP offsets are signed, don't treat them as huge positive numbers.
llvm-svn: 275251
Adam Nemet [Wed, 13 Jul 2016 05:01:48 +0000 (05:01 +0000)]
[BFI] Add new LazyBFI analysis pass
Summary:
This is necessary for D21771. In order to add the hotness attribute to
optimization remarks we need BFI to be available in all passes that emit
optimization remarks.
However we don't want to pay for computing BFI unless the hotness
attribute is requested.
This is achieved by making BFI lazy at the very high-level through a new
analysis pass -- BFI is not calculated unless requested.
I am adding a test to check the laziness under D21771 where the first
user of the analysis is added.
Reviewers: hfinkel, dexonsmith, davidxl
Subscribers: davidxl, dexonsmith, llvm-commits
Differential Revision: http://reviews.llvm.org/D22141
llvm-svn: 275250
David Majnemer [Wed, 13 Jul 2016 04:22:12 +0000 (04:22 +0000)]
[ConstantFolding] Cleanups
No functional change is intended, just a minor cleanup.
llvm-svn: 275249
Saleem Abdulrasool [Wed, 13 Jul 2016 03:47:58 +0000 (03:47 +0000)]
vim: separate the keywords into one per line
This achieves the same result as previously by using line wrapping. This allows
us to have one keyword per line which makes adding a new keyword significantly
easier, especially if they are inserted in a lexicographical sort order as you
no longer need to reflow the content around it.
This only does the keywords as that is the group which changes more often.
llvm-svn: 275248
Teresa Johnson [Wed, 13 Jul 2016 03:42:41 +0000 (03:42 +0000)]
[ThinLTO/gold] ThinLTO internalization fixes
Internalization was missing cases where we originally had a local symbol
that was promoted eagerly but not actually exported. This is because we
were only internalizing the set of global (non-local) symbols that were
PREVAILAING_DEF_IRONLY. Instead, collect the set of global symbols that
are referenced outside of a single IR file, and skip internalization for
those.
llvm-svn: 275247
David Majnemer [Wed, 13 Jul 2016 03:42:38 +0000 (03:42 +0000)]
[IR] Make getIndexedOffsetInType return a signed result
A GEPed offset can go negative, the result of getIndexedOffsetInType
should according be a signed type.
llvm-svn: 275246
Saleem Abdulrasool [Wed, 13 Jul 2016 03:36:05 +0000 (03:36 +0000)]
vim: add local_unnamed_addr keyword
The `local_unnamed_addr` was introduced in SVN r272709. Update the syntax
highlighting rules.
llvm-svn: 275245
David Majnemer [Wed, 13 Jul 2016 03:24:41 +0000 (03:24 +0000)]
[ConstantFold] Don't incorrectly infer inbounds on array GEP
The many levels of nesting inside the responsible code made it easy for
bugs to sneak in. Flattening the logic makes it easier to see what's
going on.
llvm-svn: 275244
David Majnemer [Wed, 13 Jul 2016 03:24:38 +0000 (03:24 +0000)]
[LoopVectorize] Further cleanups
No functional change is intended, just a minor cleanup.
llvm-svn: 275243
Saleem Abdulrasool [Wed, 13 Jul 2016 03:19:27 +0000 (03:19 +0000)]
COFF: drop the dependency on LIB.EXE for implibs
lld currently relies on lib.exe in order to generate an empty import library.
The "empty" import library consists of 5 members:
- first linker member
- second linker member
- Import Descriptor
- NULL Import Descriptor
- NULl Thunk
The first two entries (first and second linker members) are string tables which
are never updated. Therefore, they may as well as not be present. A subsequent
change to add that is probably warranted. However, this does not prevent the
use of the linker.
The Import Descriptor is the content which is most important. It provides an
Import Name Table entry for the library (as specified by the LIBRARY directive
in the DEF file). Additionally, it contains undefined references to the NULL
Import Descriptor and the library NULL Thunk Data. This ensures that the linker
will pull in the subsequent objects from the import library for the link. The
Import Descriptor has a single symbol (__IMPORT_DESCRIPTOR_<Library>) which
contains 3 relocations, one to the INT (Import Name Table) entry, one to the ILT
(Import Lookup Table) entry, and one to the IAT (Import Address Table) entry.
The NULL Import Descriptor is the last import descriptor and terminates the
import descriptor array. It contains a single symbol
(__NULL_IMPORT_DESCRIPTOR).
The NULL Thunk contains a single symbol (\x7f<Library>_NULL_THUNK_DATA) and
provides the terminator for the ILT and IAT.
These files are currently constructed manually following the example of the
Short Import Library format. This is arguably less than ideal, and it may be
possible to use MCAssembler and feed it the fragments to construct the object.
The major difference between the LIB (LINK) generated objects and the ones
generated here is that they are all one section shorter (.debug$S) as they do
not contain the debug information and one symbol shorter (@comp.id) as they do
not contain the RICH signature.
Move the logic related to the librarian into a new source file (Librarian.cpp).
llvm-svn: 275242
Saleem Abdulrasool [Wed, 13 Jul 2016 02:58:44 +0000 (02:58 +0000)]
CodeGen: minor cleanup, NFC
Initialise more members in initializer lists. Invert the condition that had
grown to be pretty confusing. The `_objc_empty_vtable` is only used on macOS
<10.9. This simplifies the code. NFC.
llvm-svn: 275241
Craig Topper [Wed, 13 Jul 2016 02:21:25 +0000 (02:21 +0000)]
[X86] Remove some seemingly unnecessary patterns that supported vector zext/sext with 256-bit source types producing a 256-bit result.
These patterns just extracted the source down to 128-bits to use the instructions. AVX512 seems to have blindly copied them over for VLX, but did not create similar patterns for 512-bit sources. So I'm hoping the backend can't actually produce these cases.
llvm-svn: 275240
Keno Fischer [Wed, 13 Jul 2016 01:28:12 +0000 (01:28 +0000)]
Fix ScalarEvolutionExpander step scaling bug
The expandAddRecExprLiterally function incorrectly transforms
`[Start + Step * X]` into `Step * [Start + X]` instead of the correct
transform of `[Step * X] + Start`.
This caused https://github.com/JuliaLang/julia/issues/14704#issuecomment-
174126219
due to what appeared to be sufficiently complicated loop interactions.
Patch by Jameson Nash (jameson@juliacomputing.com).
Reviewers: sanjoy
Differential Revision: http://reviews.llvm.org/D16505
llvm-svn: 275239
Teresa Johnson [Tue, 12 Jul 2016 23:49:17 +0000 (23:49 +0000)]
Remove another unused variable from r275216
Remove another variable added in r275216 that was only used in debug
mode.
llvm-svn: 275238
Sean Callanan [Tue, 12 Jul 2016 23:31:42 +0000 (23:31 +0000)]
Revert r275223, which committed the wrong thing.
llvm-svn: 275237
Rui Ueyama [Tue, 12 Jul 2016 23:28:33 +0000 (23:28 +0000)]
Add -m elf32_x86_64.
Patch by H.J. Lu.
This patch adds -m elf32_x86_64 to lld. But it doesn't generate working
x32 binaries.
Differential Revision: http://reviews.llvm.org/D22268
llvm-svn: 275236
Rui Ueyama [Tue, 12 Jul 2016 23:28:31 +0000 (23:28 +0000)]
Add ILP32 support to X86_64TargetInfo.
Patch by H.J. Lu.
As x86-64 psABI supports both LP64 and ILP32, this patch adds <ELFT>
template to X86_64TargetInfo.
Differential Revision: http://reviews.llvm.org/D22287
llvm-svn: 275235
Rui Ueyama [Tue, 12 Jul 2016 23:28:30 +0000 (23:28 +0000)]
Simplify. NFC.
Config->Pic is true if (Config->Pie || Config->Shared) is true,
so this extra check was redundant.
llvm-svn: 275234
Justin Lebar [Tue, 12 Jul 2016 23:23:13 +0000 (23:23 +0000)]
[CUDA] Use the multi-element remove function in EraseUnwantedCUDAMatches.
Summary:
Bug pointed out by Benjamin Kramer in r264008. I think the bug is
benign because by the time this is called, we should only have at most
two overloads to consider (either a host and a device overload, or a
host+device overload, but not all three).
Reviewers: tra
Subscribers: cfe-commits, bkramer
Differential Revision: http://reviews.llvm.org/D21914
llvm-svn: 275233
Justin Lebar [Tue, 12 Jul 2016 23:23:12 +0000 (23:23 +0000)]
[CUDA] Add additional testcases for EraseUnwantedCUDAMatches.
Summary:
Specifically, this patch adds testcases for all three calls to
EraseUnwantedCUDAMatches. The addr-of-overloaded-fn test I accidentally
neutered in r264207, which moved much of
CodeGenCUDA/function-overload.cu into SemaCUDA/function-overload.cu.
The coverage from overloaded-delete test is new.
Reviewers: tra
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D21913
llvm-svn: 275232
Justin Lebar [Tue, 12 Jul 2016 23:23:01 +0000 (23:23 +0000)]
[CUDA] Don't assume that destructors can't be overloaded.
Summary:
You can overload a destructor in CUDA, and SemaOverload needs to be
tweaked not to crash when it sees an explicit call to an overloaded
destructor.
Reviewers: rsmith
Subscribers: cfe-commits, tra
Differential Revision: http://reviews.llvm.org/D21912
llvm-svn: 275231
Michael Kuperstein [Tue, 12 Jul 2016 23:11:34 +0000 (23:11 +0000)]
[LV] Do not invalidate use-lists we're iterating over.
Should make sanitizers happier.
llvm-svn: 275230
Greg Clayton [Tue, 12 Jul 2016 23:07:50 +0000 (23:07 +0000)]
Remove assert since it was crashing the mutli process driver tests. Made the code behave correctly when indexes are out of range or the collection is empty and is "log enable lldb unwind" is enabled, log an error message.
llvm-svn: 275226
Greg Clayton [Tue, 12 Jul 2016 23:06:28 +0000 (23:06 +0000)]
This doesn't compiler on Darwin. Skipping it.
llvm-svn: 275225
Dehao Chen [Tue, 12 Jul 2016 22:42:24 +0000 (22:42 +0000)]
Add missing files for r275222
New pass manager for LICM.
Summary: Port LICM to the new pass manager.
Reviewers: davidxl, silvas
Subscribers: krasin, vitalybuka, silvas, davide, sanjoy, llvm-commits, mehdi_amini
Differential Revision: http://reviews.llvm.org/D21772
llvm-svn: 275224
Sean Callanan [Tue, 12 Jul 2016 22:42:07 +0000 (22:42 +0000)]
Mark TagDecls as having external visible storage, like ContainerDecls.
The lookup tables can get out of date during the lifetime of the object so we
need to preserve LLDB's ability to answer questions about TagDecls' contents.
<rdar://problem/
20751935>
llvm-svn: 275223
Dehao Chen [Tue, 12 Jul 2016 22:37:48 +0000 (22:37 +0000)]
New pass manager for LICM.
Summary: Port LICM to the new pass manager.
Reviewers: davidxl, silvas
Subscribers: krasin, vitalybuka, silvas, davide, sanjoy, llvm-commits, mehdi_amini
Differential Revision: http://reviews.llvm.org/D21772
llvm-svn: 275222
Tim Northover [Tue, 12 Jul 2016 22:23:42 +0000 (22:23 +0000)]
GlobalISel: freeze reserved regs after IRTranslator.
We can freeze the registers after the MachineFrameInfo has been configured (by
telling it about calls, inline asm, ...). This doesn't happen at all yet, but
will be part of IR translation.
Fixes -verify-machineinstrs assertion.
llvm-svn: 275221
Matt Arsenault [Tue, 12 Jul 2016 21:41:32 +0000 (21:41 +0000)]
AMDGPU: Follow up to r275203
I meant to squash this into it.
llvm-svn: 275220
Teresa Johnson [Tue, 12 Jul 2016 21:29:05 +0000 (21:29 +0000)]
Remove unused variable to fix bot failure from r275216
Remove unused variable added in r275216. Should fix bot failure:
http://lab.llvm.org:8011/builders/lld-x86_64-darwin13/builds/24665
llvm-svn: 275219
Nemanja Ivanovic [Tue, 12 Jul 2016 21:24:08 +0000 (21:24 +0000)]
The test case I added is PowerPC specific but I accidentally
had it in the wrong directory. Moved it to CodeGen/PowerPC.
Sorry about the noise.
llvm-svn: 275218
Michael Kuperstein [Tue, 12 Jul 2016 21:24:06 +0000 (21:24 +0000)]
[LV] Remove wrong assumption about LCSSA
The LCSSA pass itself will not generate several redundant PHI nodes in a single
exit block. However, such redundant PHI nodes don't violate LCSSA form, and may
be introduced by passes that preserve LCSSA, and/or preserved by the LCSSA pass
itself. So, assuming a single PHI node per exit block is not safe.
llvm-svn: 275217
Teresa Johnson [Tue, 12 Jul 2016 21:13:44 +0000 (21:13 +0000)]
Refactor indirect call promotion profitability analysis (NFC)
Summary:
Refactored the profitability analysis out of the IC promotion pass and
into lib/Analysis so that it can be accessed by the summary index
builder in a follow-on patch to enable IC promotion in ThinLTO (D21932).
Reviewers: davidxl, xur
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D22182
llvm-svn: 275216
Nemanja Ivanovic [Tue, 12 Jul 2016 21:00:10 +0000 (21:00 +0000)]
[Power9] Add codegen for VSX word insert/extract instructions
This patch corresponds to review:
http://reviews.llvm.org/D20239
It adds exploitation of XXINSERTW and XXEXTRACTUW instructions that
are useful in some cases for inserting and extracting vector elements of
v4[if]32 vectors.
llvm-svn: 275215
Piotr Padlewski [Tue, 12 Jul 2016 20:59:17 +0000 (20:59 +0000)]
Review fixes to lit documentation
Reviewers: mehdi_amini
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D22245
llvm-svn: 275214
David Majnemer [Tue, 12 Jul 2016 20:31:46 +0000 (20:31 +0000)]
[LoopAccessAnalysis] Some minor cleanups
Use range-base for loops.
Use auto when appropriate.
No functional change is intended.
llvm-svn: 275213
Simon Pilgrim [Tue, 12 Jul 2016 20:27:32 +0000 (20:27 +0000)]
[X86][AVX] Add support for target shuffle combining to VPERM2F128/VPERM2I128
llvm-svn: 275212
Marshall Clow [Tue, 12 Jul 2016 20:15:46 +0000 (20:15 +0000)]
Add more tests for LWG#2582. No code changes needed, just tests.
llvm-svn: 275211
JF Bastien [Tue, 12 Jul 2016 20:14:52 +0000 (20:14 +0000)]
libc++: name anonymous structs
As discussed in http://reviews.llvm.org/D22073
llvm-svn: 275210
Reid Kleckner [Tue, 12 Jul 2016 20:10:28 +0000 (20:10 +0000)]
[sanitizers] Allocate 12MB for stack instead of 134MB
The thread registry test was failing to allocate 25 threads with stack
size 134MB, which is pretty reasonable.
Also print the error code in our pthread wrappers in case this happens
again.
llvm-svn: 275209
Davide Italiano [Tue, 12 Jul 2016 19:54:19 +0000 (19:54 +0000)]
[SCCP] Constant fold structs if all the lattice value are constant.
Differential Revision: http://reviews.llvm.org/D22269
llvm-svn: 275208
Etienne Bergeron [Tue, 12 Jul 2016 19:39:07 +0000 (19:39 +0000)]
[asan] Fix interception unittest on Windows64.
mov edi,edi is _not_ NOP in 64-bit, use 66,90h instead.
This bug was causing interception unittest to crash on
Windows64 (windows 8 and windows 10).
Credits to etienneb for finding the root cause.
Patch by: Wei Wang
Differential Revision: http://reviews.llvm.org/D22274
llvm-svn: 275207
Petr Hosek [Tue, 12 Jul 2016 19:37:53 +0000 (19:37 +0000)]
[ELF] Support for setting the base address
The -image-base option allows for overriding the base address.
Differential Revision: http://reviews.llvm.org/D22116
llvm-svn: 275206
David Majnemer [Tue, 12 Jul 2016 19:35:15 +0000 (19:35 +0000)]
[LoopVectorize] Assorted cleanups
Use range-based for loops instead of doing everything manually.
Use auto when appropriate.
No functional change is intended.
llvm-svn: 275205
Matthias Braun [Tue, 12 Jul 2016 19:04:30 +0000 (19:04 +0000)]
X86FixupBWInsts: No need for forward liveness analysis.
With r274952 and r275201 in place there are no cases left where a
forward liveness analysis yields different results than a backward one.
So we can remove the forward stepping logic.
Differential Revision: http://reviews.llvm.org/D22083
llvm-svn: 275204
Matt Arsenault [Tue, 12 Jul 2016 19:01:23 +0000 (19:01 +0000)]
AMDGPU: Fix verifier error with kill intrinsic
Don't create a terminator in the middle of the block.
We should probably get rid of this intrinsic.
llvm-svn: 275203
Dehao Chen [Tue, 12 Jul 2016 18:45:51 +0000 (18:45 +0000)]
[PM] Port LoopIdiomRecognize Pass to new PM
Summary: Port LoopIdiomRecognize Pass to new PM
Reviewers: davidxl
Subscribers: davide, sanjoy, mzolotukhin, llvm-commits
Differential Revision: http://reviews.llvm.org/D22250
llvm-svn: 275202
Matthias Braun [Tue, 12 Jul 2016 18:44:33 +0000 (18:44 +0000)]
BranchFolding: Use LivePhysReg to update live in lists.
Use LivePhysRegs with a backwards walking algorithm to update live in
lists, this way the results do not depend on the presence of kill flags
anymore.
This patch also reduces the number of registers added as live-in.
Previously all pristine registers as well as all sub registers of a
super register were added resulting in unnecessarily large live in
lists. This fixed https://llvm.org/PR25263.
Differential Revision: http://reviews.llvm.org/D22027
llvm-svn: 275201
Matt Arsenault [Tue, 12 Jul 2016 18:41:03 +0000 (18:41 +0000)]
AMDGPU: Set isConvergent on v_cmpx* instructions
No test since these aren't used now, except for one place
in a pre-emit pass.
llvm-svn: 275200
Enrico Granata [Tue, 12 Jul 2016 18:33:52 +0000 (18:33 +0000)]
Tweaks to the NSIndexPath formatter to enhance stability
rdar://problem/
25767901
llvm-svn: 275199
Oleksiy Vyalov [Tue, 12 Jul 2016 18:14:27 +0000 (18:14 +0000)]
Add logging to Linux Host::GetProcessAndStatInfo.
llvm-svn: 275198
Wei Ding [Tue, 12 Jul 2016 18:02:14 +0000 (18:02 +0000)]
AMDGPU: Add LLVM IR Intrinsic for v_lerp_u8
Differential Revision: http://reviews.llvm.org/D22239
llvm-svn: 275197
Krzysztof Parzyszek [Tue, 12 Jul 2016 17:55:28 +0000 (17:55 +0000)]
Fix printing of debugging information in LiveIntervals::shrinkToUses
Print VNI->def before calling VNI->markUnused(), since markUnused makes
the def invalid.
llvm-svn: 275196
Tim Northover [Tue, 12 Jul 2016 17:38:50 +0000 (17:38 +0000)]
AArch64: fix return type of vqmovun_high_*.
These should be returning an unsigned quantity.
llvm-svn: 275195
Krzysztof Parzyszek [Tue, 12 Jul 2016 17:37:44 +0000 (17:37 +0000)]
Add print/dump routines to LiveInterval::SubRange
llvm-svn: 275194
Xinliang David Li [Tue, 12 Jul 2016 17:14:51 +0000 (17:14 +0000)]
[PGO] Don't include full file path in static function profile counter names
Patch by Jake VanAdrighem
Differential Revision: http://reviews.llvm.org/D22028
llvm-svn: 275193
Sanjay Patel [Tue, 12 Jul 2016 17:05:04 +0000 (17:05 +0000)]
add tests for missing DeMorgan's Law folds
llvm-svn: 275192
David Majnemer [Tue, 12 Jul 2016 16:56:33 +0000 (16:56 +0000)]
Fix for the mingw builder
llvm-svn: 275191
David Majnemer [Tue, 12 Jul 2016 16:48:17 +0000 (16:48 +0000)]
[ItaniumMangle] Correctly mangle BuiltinTemplateDecls
A BuiltinTemplateDecl has no underlying templated decl and as such they
cannot be relied upon for mangling. The ItaniumMangler had some bugs
here which lead to crashes.
This fixes PR28519.
llvm-svn: 275190
Michael Kruse [Tue, 12 Jul 2016 16:37:50 +0000 (16:37 +0000)]
Add CHECK line to test case. NFC.
Check not only that the compiler is not crashing, but also whether the
probablematic part (The sequence of instructions simplified to '4') is reflected
in the output.
Thanks to Tobias for the hint.
llvm-svn: 275189
Sanjay Patel [Tue, 12 Jul 2016 16:21:55 +0000 (16:21 +0000)]
auto-generate checks
llvm-svn: 275188
Sanjay Patel [Tue, 12 Jul 2016 16:17:30 +0000 (16:17 +0000)]
auto-generate checks
llvm-svn: 275187
Sanjay Patel [Tue, 12 Jul 2016 16:13:04 +0000 (16:13 +0000)]
auto-generate checks
llvm-svn: 275186
Pavel Labath [Tue, 12 Jul 2016 16:06:31 +0000 (16:06 +0000)]
Increase "process load" timeout
Loading a dynamic library can take quite a long time, since it triggers a number of
shared-library-event stops for dependent libraries. This is especially true for remote targets
due to communication latency. Increase the default 500ms timeout to account for that.
Committing as obvious.
llvm-svn: 275185
Marshall Clow [Tue, 12 Jul 2016 15:50:53 +0000 (15:50 +0000)]
Add tests for the meta.unary.props that do not require a complete type. This is part of LWG#2582
llvm-svn: 275184
Daniel Jasper [Tue, 12 Jul 2016 15:45:53 +0000 (15:45 +0000)]
clang-format: [JS] Allow top-level conditionals again.
I am not sure exactly which test breakage Martin was trying to fix in
r273694. For now, fix the behavior for top-level conditionals, which
(surprisingly) are actually used somewhat commonly.
llvm-svn: 275183
Kuba Brecka [Tue, 12 Jul 2016 15:41:14 +0000 (15:41 +0000)]
Disable the "gcd-io-race.mm" test to investigate bot hangs due to the test being deadlocked.
llvm-svn: 275182
Etienne Bergeron [Tue, 12 Jul 2016 15:33:25 +0000 (15:33 +0000)]
[compiler-rt] Disable a test failing on windows.
Summary:
The unittest is not working on windows. The "regexp.h" is not available and
gtest-port won't support regexp with operator '|'.
The test wasn't failing on 32-bits because of this check:
```
if (SANITIZER_WORDSIZE != 64 || ASAN_AVOID_EXPENSIVE_TESTS) return;
```
```
[ RUN ] AddressSanitizer.HugeMallocTest
C:/src/llvm/llvm/utils/unittest/googletest\src/gtest-port.cc(272): error: Failed
Syntax error at index 30 in simple regular expression "is located 1 bytes to the left|AddressSanitizer failed to allocate": '|' is unsupported.
C:/src/llvm/llvm/projects/compiler-rt/lib/asan/tests/asan_test.cc(308): error: Death test: Ident((char*)malloc(n_megs << 20))[-1] = 0
Result: died but not with expected error.
Expected: is located 1 bytes to the left|AddressSanitizer failed to allocate
```
See gtest-port.h:
```
#elif GTEST_OS_WINDOWS
// <regex.h> is not available on Windows. Use our own simple regex
// implementation instead.
# define GTEST_USES_SIMPLE_RE 1
```
Reviewers: rnk
Subscribers: llvm-commits, wang0109, kubabrecka, chrisha
Differential Revision: http://reviews.llvm.org/D22257
llvm-svn: 275181
Etienne Bergeron [Tue, 12 Jul 2016 15:33:04 +0000 (15:33 +0000)]
[compiler-rt] Enhance function padding detection for function interception
Summary:
Many CRT (64-bits) functions contains a "hint-nop". The current padding
detection is not able to recognize the 10-bytes padding and the HotPatch
hooking technique cannot be used.
Other patterns may be discover and may be added later.
Reviewers: rnk
Subscribers: llvm-commits, wang0109, chrisha
Differential Revision: http://reviews.llvm.org/D22258
llvm-svn: 275180
Nirav Dave [Tue, 12 Jul 2016 15:32:36 +0000 (15:32 +0000)]
[MC] Flip llc's assembly comment preservation flag to have consistent
orientation with llvm-mc.
llvm-svn: 275179
Haicheng Wu [Tue, 12 Jul 2016 15:31:41 +0000 (15:31 +0000)]
[AArch64] Set FMOVS0 and FMOVD0 as isAsCheapAsAMove when needed.
If a subtarget has both ZCZeroing and CustomCheapAsMoveHandling features (now
only Kryo has both), set FMOVS0 and FMOVD0 isAsCheapAsAMove.
Differential Revision: http://reviews.llvm.org/D22256
llvm-svn: 275178
Marshall Clow [Tue, 12 Jul 2016 15:29:35 +0000 (15:29 +0000)]
mark issue #2422 as complete; this was just a wording clarification
llvm-svn: 275177
Marshall Clow [Tue, 12 Jul 2016 15:15:55 +0000 (15:15 +0000)]
mark issue #2181 as complete; this was just a wording clarification
llvm-svn: 275176
Pavel Labath [Tue, 12 Jul 2016 15:13:11 +0000 (15:13 +0000)]
[NPL] Increase ETXTBSY workaround sleep
10ms does not seem to be enough all the time, go to 50.
llvm-svn: 275175
Michael Kruse [Tue, 12 Jul 2016 15:08:47 +0000 (15:08 +0000)]
[SCEVAffinator] Fix assertion checking for constant divisor.
An assertion in visitSDivInstruction() checked whether the divisor is constant
by checking whether the argument is a ConstantInt. However, SCEVValidator allows
the divisor to be simplified to a constant by ScalarEvolution.
We synchronize the implementation of SCEVValidator and SCEVAffinator to both
accept simplified SCEV expressions.
llvm-svn: 275174
Pavel Labath [Tue, 12 Jul 2016 15:07:18 +0000 (15:07 +0000)]
[test] Fix category-based skipping
Summary:
LLDBTestResult.hardMarkAsSkipped marked the whole class as skipped when the first class in the
test failed the category check. This meant that subsequent tests in the same class did not run
even if they were passing the category filter. Fix that.
Reviewers: tfiala
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D22213
llvm-svn: 275173
Saleem Abdulrasool [Tue, 12 Jul 2016 14:39:13 +0000 (14:39 +0000)]
Add option to disable __deallocate #warning
From r229162:
Visual Studio's SAL extension uses a macro named __deallocate. This
macro is used pervasively
Using -Werror when building for Windows can force the use of -Wno-#warnings
specifically because of this __deallocate #warning. Instead of forcing
builds to disable all #warnings, this option allows libc++ to be built
without this particular warning, while leaving other #warnings enabled.
Patch by Dave Lee!
llvm-svn: 275172
Marshall Clow [Tue, 12 Jul 2016 14:38:59 +0000 (14:38 +0000)]
Put the status in the right column
llvm-svn: 275171
Marshall Clow [Tue, 12 Jul 2016 14:37:39 +0000 (14:37 +0000)]
Mark P0067 as 'postponed', because it will be revised before the next meeting
llvm-svn: 275170
Michael Zuckerman [Tue, 12 Jul 2016 12:42:27 +0000 (12:42 +0000)]
[Clang][AVX512] Making cosmetic changes
llvm-svn: 275169
Nemanja Ivanovic [Tue, 12 Jul 2016 12:16:27 +0000 (12:16 +0000)]
[PowerPC] Cannonicalize applicable vector shift immediates as swaps
This patch corresponds to review:
http://reviews.llvm.org/D21358
Vector shifts that have the same semantics as a vector swap are cannonicalized
as such to provide additional opportunities for swap removal optimization to
remove unnecessary swaps.
llvm-svn: 275168
Amjad Aboud [Tue, 12 Jul 2016 12:06:34 +0000 (12:06 +0000)]
[codeview] Improved array type support.
Added support for:
1. Multi dimension array.
2. Array of structure type, which previously was declared incompletely.
3. Dynamic size array.
4. Array where element type is a typedef, volatile or constant (this should resolve PR28311).
Differential Revision: http://reviews.llvm.org/D21526
llvm-svn: 275167
George Rimar [Tue, 12 Jul 2016 09:49:43 +0000 (09:49 +0000)]
Recommit r275161 "[ELF] - Move section factory out from writer to make it reusable."
With fix:
* fixed compilation error under linux:
template <class ELFT> class OutputSectionFactory {
...
typedef typename SectionKey<ELFT::Is64Bits> Key;
changed to:
template <class ELFT> class OutputSectionFactory {
...
typedef typename elf::SectionKey<ELFT::Is64Bits> Key;
llvm-svn: 275166
Pavel Labath [Tue, 12 Jul 2016 09:37:55 +0000 (09:37 +0000)]
Fix a race on process exit
Summary:
Process::SetExitStatus was popping the process io handler and resetting m_process_input_reader
shared pointer, which is not a safe thing to do as the function is called asynchronously and
other threads may be accessing the member variable. (E.g. if the process terminates really
quickly, the private state thread might only be in the process of pushing the handler on the
stack. Sometimes, this leads to deadlock, as the shared pointer's state gets corrupted by the
concurrent access.
Since the IOHandler will be popped anyway in Process:HandleProcessStateChangedEvent when the
exited event gets processed, doing the same in SetExitStatus seems to be unnecessary.
Reviewers: clayborg
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D22209
llvm-svn: 275165
Pavel Labath [Tue, 12 Jul 2016 09:26:30 +0000 (09:26 +0000)]
Dwarf parser: don't lookup void typedefs in the DWO
Summary:
void typedefs do not have a DW_AT_type attribute, so we end up with an empty encoding_uid
variable. These don't need to be looked up and trying to look that will assert in a debug build.
Reviewers: clayborg
Subscribers: lldb-commits, tberghammer
Differential Revision: http://reviews.llvm.org/D22218
llvm-svn: 275164
George Rimar [Tue, 12 Jul 2016 09:11:13 +0000 (09:11 +0000)]
Revert r275161 "[ELF] - Move section factory out from writer to make it reusable."
It broke build bot:
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-debian-fast/builds/39652
llvm-svn: 275163
George Rimar [Tue, 12 Jul 2016 08:50:42 +0000 (08:50 +0000)]
[ELF] - Make few members of Writer to be global and export them for reuse
Creating sections on linkerscript side requires some methods
that can be reused if are exported from writer.
Patch implements that change.
Differential revision: http://reviews.llvm.org/D20104
llvm-svn: 275162
George Rimar [Tue, 12 Jul 2016 08:38:04 +0000 (08:38 +0000)]
[ELF] - Move section factory out from writer to make it reusable.
Since linkerscript should create sections by itself
(if SECTIONS command is present),
then we might want to reuse the OutputSectionFactory (D19976 already do that now),
so this patch moves it out from writer cpp file for that purpose.
Differential revision: http://reviews.llvm.org/D19977
llvm-svn: 275161
Nicolai Haehnle [Tue, 12 Jul 2016 08:12:16 +0000 (08:12 +0000)]
AMDGPU: Unify MOVRELSOffset and MOVRELDOffset
Summary:
Previously, constant index insertelements would be turned into SI_INDIRECT_DST,
which is bound to prevent some optimization opportunities. Worse, it mislead
the heuristic that decides whether immediates should be lowered to S_MOV_B32
or V_MOV_B32 in a way that resulted in unnecessary v_readfirstlanes.
Reviewers: arsenm, tstellarAMD
Subscribers: arsenm, kzhuravl, llvm-commits
Differential Revision: http://reviews.llvm.org/D22217
llvm-svn: 275160
George Rimar [Tue, 12 Jul 2016 07:44:40 +0000 (07:44 +0000)]
[ELF] - Add Id field to Version struct.
That helps to avoid expressions like I + 2 in code
that assigns version number to symbols.
Change was suggested by Rui Ueyama.
Differential revision: http://reviews.llvm.org/D22086
llvm-svn: 275159
Eugene Leviant [Tue, 12 Jul 2016 06:39:48 +0000 (06:39 +0000)]
[ELF] Support for symbol assignment in linker scripts within SECTIONS {} block
llvm-svn: 275158
Clement Courbet [Tue, 12 Jul 2016 06:36:00 +0000 (06:36 +0000)]
[ASTMatchers] isSignedInteger() and isUnsignedInteger()
Complementary to isInteger(), these match signed and unsigned integers
respectively.
Review: http://reviews.llvm.org/D21989
llvm-svn: 275157
Vitaly Buka [Tue, 12 Jul 2016 06:25:32 +0000 (06:25 +0000)]
Revert "New pass manager for LICM."
Summary: This reverts commit r275118.
Subscribers: sanjoy, mehdi_amini
Differential Revision: http://reviews.llvm.org/D22259
llvm-svn: 275156
Craig Topper [Tue, 12 Jul 2016 05:27:53 +0000 (05:27 +0000)]
[AVX512] Remove masked logic op intrinsics and autoupgrade them to native IR.
llvm-svn: 275155
David Majnemer [Tue, 12 Jul 2016 04:42:50 +0000 (04:42 +0000)]
[MS ABI] Support throwing/catching __unaligned types
We need to mark the appropriate bits in ThrowInfo and HandlerType so
that the personality routine can correctly handle qualification
conversions.
llvm-svn: 275154
Rui Ueyama [Tue, 12 Jul 2016 03:49:41 +0000 (03:49 +0000)]
Remove unused parameters.
llvm-svn: 275153
Rui Ueyama [Tue, 12 Jul 2016 03:33:48 +0000 (03:33 +0000)]
Dump enum unique names.
llvm-svn: 275152
Jason Molenda [Tue, 12 Jul 2016 03:25:22 +0000 (03:25 +0000)]
Add some safety checks to Platform::GetRemoteSharedModule so if it
is passed a ModuleSpec with a UUID, it won't accept a file it finds
with a matching FileSpec & ArchSpec, but with a different UUID.
<rdar://problem/
27258864>
llvm-svn: 275151