Rafael Espindola [Mon, 29 Jun 2015 14:02:24 +0000 (14:02 +0000)]
Convert an assert that can fail into error checking.
llvm-svn: 240944
Dmitry Vyukov [Mon, 29 Jun 2015 13:56:31 +0000 (13:56 +0000)]
tsan: fix flaky test
See the comment for explanation.
llvm-svn: 240943
Pavel Labath [Mon, 29 Jun 2015 13:51:49 +0000 (13:51 +0000)]
Ignore the .svn directory when building swig wrappers (bug #23917)
llvm-svn: 240942
Asaf Badouh [Mon, 29 Jun 2015 12:51:53 +0000 (12:51 +0000)]
[x86][AVX512CD] Add conflict and lzcnt intrinsics in their 512bit versions
include tests
review
http://reviews.llvm.org/D10795
llvm-svn: 240941
Rafael Espindola [Mon, 29 Jun 2015 12:38:35 +0000 (12:38 +0000)]
Update for llvm change.
llvm-svn: 240940
Rafael Espindola [Mon, 29 Jun 2015 12:38:31 +0000 (12:38 +0000)]
Remove Elf_Sym_Iter.
It was a fairly broken concept for an ELF only class.
An ELF file can have two symbol tables, but they have exactly the same
format. There is no concept of a dynamic or a static symbol. Storing this
on the iterator also makes us do more work per symbol than necessary. To fetch
a name we would:
* Find if we had a static or a dynamic symbol.
* Look at the corresponding symbol table and find the string table section.
* Look at the string table section to fetch its contents.
* Compute the name as a substring of the string table.
All but the last step can be done per symbol table instead of per symbol. This
is a step in that direction.
llvm-svn: 240939
Daniel Marjamaki [Mon, 29 Jun 2015 12:18:11 +0000 (12:18 +0000)]
[clang-tidy] Fix false positives in the macro parentheses checker
Summary:
There were false positives in C++ code where macro argument was a type.
Reviewers: alexfh
Differential Revision: http://reviews.llvm.org/D10801
llvm-svn: 240938
Asaf Badouh [Mon, 29 Jun 2015 12:16:40 +0000 (12:16 +0000)]
[X86][AVX512BW] Add more intrinsics support:
Blend, abs, packs, adds, subs, avg, max, min, permute.
all the intrinsics are covered by tests
review:
http://reviews.llvm.org/D10799
llvm-svn: 240937
Elena Demikhovsky [Mon, 29 Jun 2015 12:14:24 +0000 (12:14 +0000)]
AVX-512: all forms of SCATTER instruction on SKX,
encoding, intrinsics and tests.
llvm-svn: 240936
Pavel Labath [Mon, 29 Jun 2015 11:03:21 +0000 (11:03 +0000)]
Add Support for LLVM_INSTALL_TOOLCHAIN_ONLY (bug #23784)
Support for LLVM_INSTALL_TOOLCHAIN_ONLY is modeled on same functionality
from LLVM and Clang CMake files.
Patch by: Eugene Zelenko
llvm-svn: 240935
Daniel Jasper [Mon, 29 Jun 2015 10:42:59 +0000 (10:42 +0000)]
clang-format: Don't indent relative to unary operators (some more).
Before:
long
aaaaaaaa = !aaaa( // break
aaaaaa);
long
aaaaaaaa = !aa.aa( // break
aaaaaa);
After:
long
aaaaaaaa = !aaaa( // break
aaaaaa);
long
aaaaaaaa = !aa.aa( // break
aaaaaa);
llvm-svn: 240934
Pavel Labath [Mon, 29 Jun 2015 10:30:06 +0000 (10:30 +0000)]
fix lldb-server linking on RHEL 6 (bug #23774)
Patch by: Eugene Zelenko
llvm-svn: 240933
Javed Absar [Mon, 29 Jun 2015 09:53:33 +0000 (09:53 +0000)]
[ARM]: Extend -mfpu options for half-precision and vfpv3xd
removing default label in switch as it results.
This is part of earlier commit http://reviews.llvm.org/D1064
Subscribers: llvm-commits
llvm-svn: 240932
Igor Breger [Mon, 29 Jun 2015 09:48:56 +0000 (09:48 +0000)]
This is a comment-only change to test commit access
llvm-svn: 240931
Javed Absar [Mon, 29 Jun 2015 09:32:29 +0000 (09:32 +0000)]
[ARM]: Extend -mfpu options for half-precision and vfpv3xd
Some of the the permissible ARM -mfpu options, which are supported in GCC,
are currently not present in llvm/clang.This patch adds the options:
'neon-fp16', 'vfpv3-fp16', 'vfpv3-d16-fp16', 'vfpv3xd' and 'vfpv3xd-fp16.
These are related to half-precision floating-point and single precision.
Reviewers: rengolin, ranjeet.singh
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D10645
llvm-svn: 240930
Javed Absar [Mon, 29 Jun 2015 09:30:19 +0000 (09:30 +0000)]
[ARM]: Extend -mfpu options for half-precision and vfpv3xd
Some of the the permissible ARM -mfpu options, which are supported in GCC,
are currently not present in llvm/clang.This patch adds the options:
'neon-fp16', 'vfpv3-fp16', 'vfpv3-d16-fp16', 'vfpv3xd' and 'vfpv3xd-fp16.
These are related to half-precision floating-point and single precision.
Reviewers: rengolin, ranjeet.singh
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D10764
llvm-svn: 240929
Elena Demikhovsky [Mon, 29 Jun 2015 09:20:57 +0000 (09:20 +0000)]
AVX-512: Implemented AVX-512 FMA intrinsics and tests.
by Igor Breger
http://reviews.llvm.org/D10797
llvm-svn: 240928
Pavel Labath [Mon, 29 Jun 2015 09:18:17 +0000 (09:18 +0000)]
[linux] Use cmake to detect support process_vm_readv (bug #23918)
Summary:
Some old linux versions do not have process_vm_readv function defined. Even older versions do not
have even the __NR_process_vm_readv syscall number. We use cmake to detect these situations and
fallback appropriately: in the first case, we can issue the syscall manually, while it the latter
case, we need to drop fast memory read support completely.
Test Plan: linux test suite passes
Reviewers: ovyalov, Eugene.Zelenko
Subscribers: tberghammer, lldb-commits
Differential Revision: http://reviews.llvm.org/D10727
llvm-svn: 240927
Igor Breger [Mon, 29 Jun 2015 09:10:00 +0000 (09:10 +0000)]
AVX-512: Implemented missing encoding and intrinsics for FMA instructions
Added tests for DAG lowering ,encoding and intrinsics
Differential Revision: http://reviews.llvm.org/D10796
llvm-svn: 240926
NAKAMURA Takumi [Mon, 29 Jun 2015 04:50:09 +0000 (04:50 +0000)]
Whitespace.
llvm-svn: 240924
Frederic Riss [Mon, 29 Jun 2015 04:41:58 +0000 (04:41 +0000)]
Delete unused variables.
llvm-svn: 240923
Rui Ueyama [Mon, 29 Jun 2015 01:03:53 +0000 (01:03 +0000)]
COFF: Fix logic to find default entry name or subsystem.
The previous logic to find default entry name or subsystem does not
seem correct (i.e. was not compatible with MSVC linker). Previously,
default entry name was inferred from CRT functions and user-defined
entry functions. Subsystem was inferred from CRT functions.
Default entry name and subsystem are now inferred based on the
following table. Note that we no longer use CRT functions to infer
them.
Entry name Subsystem
main mainCRTStartup console
wmain wmainCRTStartup console
WinMain WinMainCRTStartup windows
wWinMain wWinMainCRTStartup windows
llvm-svn: 240922
David Majnemer [Mon, 29 Jun 2015 00:06:50 +0000 (00:06 +0000)]
[MS ABI] Unify constant and non-constant member pointer conversion
We had two separate paths for member pointer conversion: one which
takes a constant and another which takes an arbitrary value. In the
latter case, we are permitted to construct arbitrary instructions.
It turns out that the bulk of the member pointer conversion is sharable
if we construct an artificial IRBuilder.
llvm-svn: 240921
NAKAMURA Takumi [Sun, 28 Jun 2015 23:14:35 +0000 (23:14 +0000)]
Revert r240872, "Suppress clang/test/CodeGen/builtins-ppc-p8vector.c for -Asserts for now. Will fix later."
This has been fixed since r240912.
llvm-svn: 240920
Rui Ueyama [Sun, 28 Jun 2015 22:16:41 +0000 (22:16 +0000)]
COFF: Allow mangled symbols as arguments for /export.
Usually dllexported symbols are defined with 'extern "C"',
so identifying them is easy. We can just do hash table lookup
to look up exported symbols.
However, C++ non-member functions are also allowed to be exported,
and they can be specified with unmangled name. So, if /export:foo
is given, we need to look up not only "foo" but also its all
mangled names. In MSVC mangling scheme, that means that we need to
look up any symbol which starts with "?foo@@Y".
In this patch, we scan the entire symbol table to search for
a mangled symbol. The symbol table is a DenseMap, and that doesn't
support table lookup by string prefix. This is of course very
inefficient. But that should be probably OK because the user
should always add 'extern "C"' to dllexported symbols.
llvm-svn: 240919
Rui Ueyama [Sun, 28 Jun 2015 22:06:53 +0000 (22:06 +0000)]
COFF: Fix flaky test.
This test was flaky because stdout and stderr can be mixed.
llvm-svn: 240918
Rui Ueyama [Sun, 28 Jun 2015 20:34:09 +0000 (20:34 +0000)]
COFF: Undefined weak aliases are not fatal if /force is given.
llvm-svn: 240917
Rui Ueyama [Sun, 28 Jun 2015 20:07:08 +0000 (20:07 +0000)]
COFF: Add a comment.
llvm-svn: 240916
Rui Ueyama [Sun, 28 Jun 2015 19:56:30 +0000 (19:56 +0000)]
COFF: Add /noentry flag.
This option is sometimes used to create a resource-only DLL that
doesn't need any initialization.
llvm-svn: 240915
Rui Ueyama [Sun, 28 Jun 2015 19:38:10 +0000 (19:38 +0000)]
Fix broken test.
llvm-svn: 240914
Rui Ueyama [Sun, 28 Jun 2015 19:35:15 +0000 (19:35 +0000)]
COFF: Support /force flag.
This option is to ignore remaining undefined symbols and force
the linker to create an output file anyways.
The existing code assumes that there's no undefined symbol after
reportRemainingUndefines(). That assumption is legitimate.
I also don't want to mess up the existing code for this minor feature.
In order to keep it as is, remaining undefined symbols are replaced
with dummy defined symbols.
llvm-svn: 240913
Jingyue Wu [Sun, 28 Jun 2015 18:30:36 +0000 (18:30 +0000)]
[PPC] fixes typos in builtins-ppc-p8vector.c
The extra ] causes %{{[0-9]]*}} to match only %<single digit> such as %1.
llvm-svn: 240912
Matt Arsenault [Sun, 28 Jun 2015 18:16:14 +0000 (18:16 +0000)]
AMDGPU/SI: Fix extra space when printing v_div_fmas_*
llvm-svn: 240911
Jingyue Wu [Sun, 28 Jun 2015 17:45:05 +0000 (17:45 +0000)]
[SLSR] S's basis must have the same type as S
llvm-svn: 240910
Birunthan Mohanathas [Sun, 28 Jun 2015 14:52:34 +0000 (14:52 +0000)]
clang-format: Stop old options from overriding new options
Summary: Depends on D10785.
Reviewers: djasper
Reviewed By: djasper
Subscribers: klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D10786
llvm-svn: 240909
Birunthan Mohanathas [Sun, 28 Jun 2015 14:52:01 +0000 (14:52 +0000)]
clang-format: Add missing members to FormatStyle::operator==
Summary: Depends on D10784.
Reviewers: djasper
Reviewed By: djasper
Subscribers: dblaikie, klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D10785
llvm-svn: 240908
Birunthan Mohanathas [Sun, 28 Jun 2015 14:51:17 +0000 (14:51 +0000)]
clang-format: Alphabetize FormatStyle members
Reviewers: djasper
Reviewed By: djasper
Subscribers: klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D10784
llvm-svn: 240907
Asaf Badouh [Sun, 28 Jun 2015 14:30:39 +0000 (14:30 +0000)]
[x86][AVX512]
Add vscalef support
include encoding and intrinsics
review:
http://reviews.llvm.org/D10730
llvm-svn: 240906
Elena Demikhovsky [Sun, 28 Jun 2015 10:53:29 +0000 (10:53 +0000)]
AVX-512: Added all SKX forms of GATHER instructions.
Added intrinsics.
Added encoding and tests.
llvm-svn: 240905
David Majnemer [Sun, 28 Jun 2015 04:23:33 +0000 (04:23 +0000)]
[Driver] x86-64 Windows is always PIC
This fixes PR23963.
llvm-svn: 240902
Rui Ueyama [Sun, 28 Jun 2015 03:05:38 +0000 (03:05 +0000)]
COFF: Remove a function that doesn't do much itself. NFC.
llvm-svn: 240901
Rui Ueyama [Sun, 28 Jun 2015 02:35:31 +0000 (02:35 +0000)]
COFF: Handle LINK environment variable.
If LINK is defined and not empty, it's supposed to contain
command line options.
llvm-svn: 240900
Rui Ueyama [Sun, 28 Jun 2015 02:00:33 +0000 (02:00 +0000)]
COFF: Remove useless "explicit".
llvm-svn: 240899
Rui Ueyama [Sun, 28 Jun 2015 01:35:59 +0000 (01:35 +0000)]
COFF: Make doICF non-recursive. NFC.
llvm-svn: 240898
Rui Ueyama [Sun, 28 Jun 2015 01:30:54 +0000 (01:30 +0000)]
COFF: Fix ICF correctness bug.
When comparing two COMDAT sections, we need to take section values
and associative sections into account. This patch fixes that bug.
It fixes a crash bug of llvm-tblgen when linked with /opt:lldicf.
One thing I don't understand yet is that this logic seems to be
too strict. MSVC linker is able to create more compact executables
(which of course work correctly). With this ICF algorithm, LLD is
able to make executable smaller, but the outputs are larger than
MSVC's. There must be something I'm missing here.
llvm-svn: 240897
Nico Weber [Sun, 28 Jun 2015 01:06:16 +0000 (01:06 +0000)]
clang-format: Support @autoreleasepool.
Format @autoreleasepool properly for the Attach brace style
by recognizing @autoreleasepool as a block introducer.
Patch from Strager Neds!
http://reviews.llvm.org/D10372
llvm-svn: 240896
Chaoren Lin [Sat, 27 Jun 2015 23:11:34 +0000 (23:11 +0000)]
Replace `rm -rf` with more portable implementation.
Reviewers: clayborg, vharron
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D10787
llvm-svn: 240895
Chaoren Lin [Sat, 27 Jun 2015 23:11:32 +0000 (23:11 +0000)]
timegm in LibcGlue needs to be extern, not static.
Reviewers: vharron
Reviewed By: vharron
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D10778
llvm-svn: 240894
Adrian Prantl [Sat, 27 Jun 2015 21:55:00 +0000 (21:55 +0000)]
Revert "Debug Info: One more bitfield bugfix. While yesterday's r240853 fixed"
This reverts commit 240890. Breaking the gdb buildbot.
llvm-svn: 240893
Benjamin Kramer [Sat, 27 Jun 2015 21:11:43 +0000 (21:11 +0000)]
Don't use %llc_dwarf for target-specific tests.
Should fix running them on windows.
llvm-svn: 240892
Benjamin Kramer [Sat, 27 Jun 2015 20:33:26 +0000 (20:33 +0000)]
[SDAG] Now that we have a way to communicate the exact bit on sdiv use it to simplify sdiv by a constant.
We had a hack in SDAGBuilder in place to work around this but now we
can avoid that. Call BuildExactSDIV from BuildSDIV so DAGCombiner can
perform this trick automatically.
The added check in DAGCombiner is necessary to prevent exact sdiv by pow2
from regressing as the target-specific pow2 lowering is not aware of
exact bits yet.
This is mostly covered by existing tests. One side effect is that we
get the better lowering for exact vector sdivs now too :)
llvm-svn: 240891
Adrian Prantl [Sat, 27 Jun 2015 20:12:43 +0000 (20:12 +0000)]
Debug Info: One more bitfield bugfix. While yesterday's r240853 fixed
the DW_AT_bit_offset computation, the byte offset is in fact also
endian-dependent as it needs to point to the storage unit containing the
most-significant bit of the the bitfield.
I'm so looking forward to emitting the endian-agnostic DWARF 3 version
instead.
llvm-svn: 240890
Davide Italiano [Sat, 27 Jun 2015 19:18:55 +0000 (19:18 +0000)]
[Sema] Unions cannot have virtual functions.
PR: PR23931
Differential Revision: http://reviews.llvm.org/D10752
Reviewed by: rsmith
llvm-svn: 240889
Alex Denisov [Sat, 27 Jun 2015 19:04:55 +0000 (19:04 +0000)]
Fix typo. NFC.
llvm-svn: 240888
Daniel Sanders [Sat, 27 Jun 2015 17:56:44 +0000 (17:56 +0000)]
[mips] Fold duplicate big-endian disassembler tests together.
llvm-svn: 240887
Keno Fischer [Sat, 27 Jun 2015 17:31:28 +0000 (17:31 +0000)]
Add ABI/SysV-mips(64) to Makefile build
The Makefile build was broken without this.
llvm-svn: 240886
Daniel Sanders [Sat, 27 Jun 2015 16:13:59 +0000 (16:13 +0000)]
[mips] Sort big-endian disassembler tests by opcode.
llvm-svn: 240885
Daniel Sanders [Sat, 27 Jun 2015 15:42:25 +0000 (15:42 +0000)]
[mips] Make little-endian disassembler test filenames consistent.
Most are named *-el.txt. Renamed the three that were *-le.txt
llvm-svn: 240884
Daniel Sanders [Sat, 27 Jun 2015 15:39:19 +0000 (15:39 +0000)]
[mips] Add COP0 register class and use it in M[FT]C0/DM[FT]C0.
Summary:
Previously it (incorrectly) used GPR's.
Patch by Simon Dardis. A couple small corrections by myself.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D10567
llvm-svn: 240883
Peter Zotov [Sat, 27 Jun 2015 14:32:30 +0000 (14:32 +0000)]
[OCaml] Bump ctypes dependency to 0.4.
ctypes 0.3 and earlier contains an interface-definig bug:
its ptr_of_raw_address accepts Int64 and not Nativeint. ctypes 0.4
was not released during the 3.6 cycle, and because of that, LLVM 3.6
was released with ctypes 0.3 as a dependency, which now breaks
the build on modern ctypes.
Unbreak.
llvm-svn: 240882
Jeroen Ketema [Sat, 27 Jun 2015 12:35:54 +0000 (12:35 +0000)]
Properly initialize Module pointer
llvm-svn: 240881
Birunthan Mohanathas [Sat, 27 Jun 2015 09:25:28 +0000 (09:25 +0000)]
clang-format: Fix language of DisableFormat description
This is a comment-only change to test commit access.
llvm-svn: 240879
Jay Foad [Sat, 27 Jun 2015 08:39:12 +0000 (08:39 +0000)]
[msan] Fix infinite recursion when _Unwind_Backtrace calls memcpy
Summary:
On PPC64, half the msan tests fail with an infinite recursion through
GetStackTrace like this:
#0 __msan::GetStackTrace
#1 __msan_memcpy
#2 ?? () from /lib64/libgcc_s.so.1
#3 ?? () from /lib64/libgcc_s.so.1
#4 _Unwind_Backtrace
#5 __sanitizer::BufferedStackTrace::SlowUnwindStack
#6 __sanitizer::BufferedStackTrace::Unwind
#7 __msan::GetStackTrace
#8 __interceptor_calloc
#9 _dl_allocate_tls
#10 pthread_create@@GLIBC_2.17
#11 __interceptor_pthread_create
#12 main
The problem is that we call _Unwind_Backtrace to get a stack trace; but
_Unwind_Backtrace calls memcpy, which we intercept and try to get
another stack trace.
This patch fixes it in __msan_memcpy by skipping the stack trace if
IsInSymbolizer(). This works because GetStackTrace already creates a
SymbolizerScope to "block reports from our interceptors during
_Unwind_Backtrace".
Reviewers: samsonov, wschmidt, eugenis
Reviewed By: eugenis
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D10762
llvm-svn: 240878
David Majnemer [Sat, 27 Jun 2015 08:38:17 +0000 (08:38 +0000)]
[LoopVectorize] Pointer indicies may be wider than the pointer
If we are dealing with a pointer induction variable, isInductionPHI
gives back a step value of Stride / size of pointer. However, we might
be indexing with a legal type wider than the pointer width.
Handle this by inserting casts where appropriate instead of crashing.
This fixes PR23954.
llvm-svn: 240877
David Majnemer [Sat, 27 Jun 2015 07:52:53 +0000 (07:52 +0000)]
[PruneEH] A naked, noinline function can return via InlineAsm
The PruneEH pass tries to annotate functions as 'noreturn' if it doesn't
see a ReturnInst. However, a naked function containing inline assembly
can contain control flow leaving the function.
This fixes PR23971.
llvm-svn: 240876
Lang Hames [Sat, 27 Jun 2015 03:49:25 +0000 (03:49 +0000)]
[Stackmap] Pre-assemble the stackmap parser test case. (Fix builders).
This case had been failing on testers that didn't have x86 support. Rather
than XFAIL it on testers without x86 support, I've just assembled it and used
the raw object as the test input.
llvm-svn: 240875
NAKAMURA Takumi [Sat, 27 Jun 2015 03:46:58 +0000 (03:46 +0000)]
llvm/test/CodeGen/X86/xor.ll: Appease Win32 targets since r240796.
%struct.ref_s = type { %union.v, i16, i16 }
%union.v = type { i64 }
It seems %struct.ref_s is incompatible in tail padding.
llvm-svn: 240874
Chandler Carruth [Sat, 27 Jun 2015 03:40:10 +0000 (03:40 +0000)]
[opt] Inline a trivial lookup function into the header.
This function is actually *very* hot. It is hard to see currently
because the call graph is very recursive, but I'm working to remove that
and when I do this function becomes significantly higher on the profile
(up to 5%!) and so worth avoiding the call overhead.
No specific perf gain I can measure yet (below the noise), but likely to
have more impact as we stop cluttering the call graph.
Differential Revision: http://reviews.llvm.org/D10788
llvm-svn: 240873
NAKAMURA Takumi [Sat, 27 Jun 2015 03:33:47 +0000 (03:33 +0000)]
Suppress clang/test/CodeGen/builtins-ppc-p8vector.c for -Asserts for now. Will fix later.
llvm-svn: 240872
Chandler Carruth [Sat, 27 Jun 2015 02:05:40 +0000 (02:05 +0000)]
Switch the new COFF linker's symbol table to use a DenseMap of
StringRefs. This uses the LLVM hashing rather than the standard library
and a closed addressed hash table rather than chaining.
This improves the Windows self-link of LLD by 4.4% (averaged over 10
runs, with well under 1% of variance on each).
There is still some room to improve here. Two things I clearly see in
the profile:
1) This is one of the biggest stress tests for the LLVM hashing code. It
actually consumes something like 3-4% of the link time after the
change.
2) The way that StringRef keys are handled in the DenseMap interface is
pretty suboptimal. We pay the price of checking for empty and
tombstone keys when we could only possibly be looking for a normal
key. But fixing this requires invasive API changes.
So there is still some headroom here.
Differential Revision: http://reviews.llvm.org/D10684
llvm-svn: 240871
Petr Hosek [Sat, 27 Jun 2015 01:54:17 +0000 (01:54 +0000)]
[MC] Ensure that pending labels are flushed when -mc-relax-all flag is used
Summary:
The current implementation doesn't always flush all pending labels
beforeemitting data which can result in an incorrectly placed labels in
case when when instruction bundling is enabled and -mc-relax-all flag is
being used. To address this issue, we always flush pending labels before
emitting data.
The change was tested by running PNaCl toolchain trybots with
-mc-relax-all flag set.
Fixes https://code.google.com/p/nativeclient/issues/detail?id=4063
Test Plan: Regression test attached
Reviewers: mseaborn
Subscribers: jfb, llvm-commits
Differential Revision: http://reviews.llvm.org/D10325
llvm-svn: 240870
Petr Hosek [Sat, 27 Jun 2015 01:49:53 +0000 (01:49 +0000)]
[MC] Align fragments when -mc-relax-all flag is used
Summary:
Ensure that fragments are bundle aligned when instruction bundling
is enabled and the -mc-relax-all flag is set. This is implicitly
assumed by the bundle padding implementation but this assumption
does not hold when custom alignment is being used.
The change was tested by running PNaCl toolchain trybots with
-mc-relax-all flag set.
Fixes https://code.google.com/p/nativeclient/issues/detail?id=4063
Test Plan: Regression test attached
Reviewers: mseaborn
Subscribers: jfb, llvm-commits
Differential Revision: http://reviews.llvm.org/D10044
llvm-svn: 240869
Duncan P. N. Exon Smith [Sat, 27 Jun 2015 01:19:17 +0000 (01:19 +0000)]
AsmPrinter: Document why DIEValueList uses a linked-list, NFC
There are two main reasons why a linked-list makes sense for
`DIEValueList`.
1. We want `DIE` to be on a `BumpPtrAllocator` to improve teardown
efficiency. Making `DIEValueList` array-based would make that much
more complicated.
2. The singly-linked list is fairly memory efficient. The histogram
[1] shows that most DIEs have relatively few values, so we often pay
less than the 2/3-pointer static overhead of a vector. Furthermore,
we don't know ahead of time exactly how many values a `DIE` needs,
so a vector-like scheme will on average over-allocate by ~50%. As
it happens, that's the same memory overhead as the linked list node.
[1]: http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-May/085910.html
The comment I added to the code is a little more succinct, but I think
it's enough to give the idea.
llvm-svn: 240868
Duncan P. N. Exon Smith [Sat, 27 Jun 2015 00:38:26 +0000 (00:38 +0000)]
IR: Expose ModuleSlotTracker in Value::print()
Allow callers of `Value::print()` and `Metadata::print()` to pass in a
`ModuleSlotTracker`. This allows them to pay only once for calculating
module-level slots (such as Metadata).
This is related to PR23865, where there was a huge cost for
`MachineFunction::print()`. Although I don't have a *particular* user
in mind for this new code, I have hit big slowdowns before when running
`opt -debug`, and I think this will be useful. Going forward, if
someone hits a big slowdown with `print()` statements, they can create a
`ModuleSlotTracker` and send it through. Similarly, adding support to
`Value::dump()` and `Metadata::dump()` should be trivial.
I added unit tests to be sure the `print()` functions actually behave
the same way with and without the slot tracker.
llvm-svn: 240867
Peter Collingbourne [Sat, 27 Jun 2015 00:17:51 +0000 (00:17 +0000)]
LowerBitSets: Ignore bitset entries that do not directly refer to a global.
It is possible for a global to be substituted with another global of a
different type or a different kind (i.e. an alias) at IR link time. One
example of this scenario is when a Microsoft ABI vtable is substituted with
an alias referring to a larger vtable containing an RTTI reference.
This will cause the global to be RAUW'd with a possibly bitcasted reference
to the other global. This will of course also affect any references to the
global in bitset metadata.
The right way to handle such metadata is simply to ignore it. This is sound
because the linked module should contain another copy of the bitset entries as
applied to the new global.
llvm-svn: 240866
Duncan P. N. Exon Smith [Sat, 27 Jun 2015 00:15:32 +0000 (00:15 +0000)]
Plug a leak introduced by r240848
Apparently this obvious leak was never exercised before, but r240848
exposed it. Plug it.
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/5075
llvm-svn: 240865
Greg Clayton [Sat, 27 Jun 2015 00:12:59 +0000 (00:12 +0000)]
Fix some compiler warnings about not using override consistently.
llvm-svn: 240864
Adrian Prantl [Sat, 27 Jun 2015 00:01:33 +0000 (00:01 +0000)]
Add original source code to test case as suggested in review.
llvm-svn: 240863
Rui Ueyama [Fri, 26 Jun 2015 23:59:13 +0000 (23:59 +0000)]
COFF: Use vector::erase instead of reallocating entire vector. NFC.
llvm-svn: 240862
Siva Chandra [Fri, 26 Jun 2015 23:57:38 +0000 (23:57 +0000)]
Add test for SBValue.GetNonSyntheticValue in presence of synth provider.
Test Plan: dotest.py -p TestFormattersSBAPI
Reviewers: granata.enrico
Reviewed By: granata.enrico
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D10783
llvm-svn: 240861
Lang Hames [Fri, 26 Jun 2015 23:56:53 +0000 (23:56 +0000)]
[StackMaps] Add a lightweight parser for stackmap version 1 sections.
The parser provides a convenient interface for reading llvm stackmap v1 sections
in object files.
This patch also includes a new option for llvm-readobj, '-stackmap', which uses
the parser to pretty-print stackmap sections for debugging/testing purposes.
llvm-svn: 240860
Rui Ueyama [Fri, 26 Jun 2015 23:51:45 +0000 (23:51 +0000)]
COFF: Avoid vector reallocation. NFC.
llvm-svn: 240859
Evgeniy Stepanov [Fri, 26 Jun 2015 23:44:43 +0000 (23:44 +0000)]
[asan] Disable 3 tests on Android.
Different reasons for failing; see source file comments.
llvm-svn: 240858
Evgeniy Stepanov [Fri, 26 Jun 2015 23:43:03 +0000 (23:43 +0000)]
[asan] Add -pie to uninstrumented executables on interface_test.cc
This helps Android (which only support PIE) and does not hurt anything else.
llvm-svn: 240857
Evgeniy Stepanov [Fri, 26 Jun 2015 23:41:50 +0000 (23:41 +0000)]
[asan] Enable 2 tests on Android.
Due to bionic improvements and "recent" sized-delete changes in clang.
llvm-svn: 240856
Evgeniy Stepanov [Fri, 26 Jun 2015 23:40:27 +0000 (23:40 +0000)]
[asan] Disable -O1,-O2,-O3 in clang_gcc_abi.cc test.
A workaround for PR23971.
Fixes the test on Android.
llvm-svn: 240855
Evgeniy Stepanov [Fri, 26 Jun 2015 23:39:23 +0000 (23:39 +0000)]
[asan] Disable glibc-specific code chunk on Android.
Fixes quarantine_size_mb.cc test on the Android bot.
llvm-svn: 240854
Adrian Prantl [Fri, 26 Jun 2015 23:31:27 +0000 (23:31 +0000)]
Debug Info: Fix a bug in the DW_AT_bit_offset calculation that would
result in negative offsets and attempt a better job at documenting
the algorithm.
rdar://
21082998
llvm-svn: 240853
Duncan P. N. Exon Smith [Fri, 26 Jun 2015 23:18:44 +0000 (23:18 +0000)]
CodeGen: Create a proper ModuleSlotTracker for MachineInstr
Another follow-up related to r240848: try a little harder to share slot
tracking calculations within a single `MachineInstr` dump. This is
unrelated to `MachineFunction::print()`, since that should be passing
through the function's `ModuleSlotTracker` by now, but could affect the
speed of dumping from a debugger if there is more than one IR-level
operand.
llvm-svn: 240852
Alex Lorenz [Fri, 26 Jun 2015 22:56:48 +0000 (22:56 +0000)]
MIR Serialization: Serialize global address machine operands.
This commit serializes the global address machine operands.
This commit doesn't serialize the operand's offset and target
flags, it serializes only the global value reference.
Reviewers: Duncan P. N. Exon Smith
Differential Revision: http://reviews.llvm.org/D10671
llvm-svn: 240851
Philip Reames [Fri, 26 Jun 2015 22:47:37 +0000 (22:47 +0000)]
[RewriteStatepointsForGC] Generalized vector phi/select handling for base pointers
This change extends the detection of base pointers for vector constructs to handle arbitrary phi and select nodes. The existing non-vector code already handles those, so this is basically just extending the vector special case to be less special cased. It still isn't generalized vector handling since we can't handle arbitrary vector instructions (e.g. shufflevectors), but it's a lot closer.
The general structure of the change is as follows:
* Extend the base defining value relation over a subset of vector instructions and vector typed phi & select instructions.
* Move scalarization from before base pointer rewriting to after base pointer rewriting. The extension of the BDV relation is sufficient to find vector base phis for vector inputs.
* Preserve the existing special case logic for when the base of a vector element is locally obvious. This general idea could be extended to the scalar case as well.
Differential Revision: http://reviews.llvm.org/D10461#inline-84275
llvm-svn: 240850
Jingyue Wu [Fri, 26 Jun 2015 22:35:43 +0000 (22:35 +0000)]
[NVPTX] noop when kernel pointers are already global
Summary:
Some front ends make kernel pointers global already. In that case,
handlePointerParams does nothing.
Test Plan: more tests in lower-kernel-ptr-arg.ll
Reviewers: grosser
Subscribers: jholewinski, llvm-commits
Differential Revision: http://reviews.llvm.org/D10779
llvm-svn: 240849
Duncan P. N. Exon Smith [Fri, 26 Jun 2015 22:28:47 +0000 (22:28 +0000)]
CodeGen: Push the ModuleSlotTracker through Metadata
For another 1% speedup on the testcase in PR23865, push the
`ModuleSlotTracker` through to metadata-related printing in
`MachineBasicBlock::print()`.
llvm-svn: 240848
Philip Reames [Fri, 26 Jun 2015 22:21:52 +0000 (22:21 +0000)]
Minor style cleanup after 240843 [NFC]
Use a for-each loop in one case and rename the function to reflect it's new usage.
llvm-svn: 240847
Rui Ueyama [Fri, 26 Jun 2015 22:14:41 +0000 (22:14 +0000)]
COFF: Remove dead code.
llvm-svn: 240846
Duncan P. N. Exon Smith [Fri, 26 Jun 2015 22:06:47 +0000 (22:06 +0000)]
CodeGen: Push the ModuleSlotTracker through MachineOperands
Push `ModuleSlotTracker` through `MachineOperand`s, dropping the time
for `llc -print-machineinstrs` on the testcase in PR23865 from ~13
seconds to ~9 seconds. Now `SlotTracker::processFunctionMetadata()`
accounts for only 8% of the runtime, which seems reasonable.
llvm-svn: 240845
Rui Ueyama [Fri, 26 Jun 2015 22:05:32 +0000 (22:05 +0000)]
COFF: Add base relocation for delay-import table.
Because the address table of the delay-import table contains
absolute address, it needs to be added to the base relocation
table.
llvm-svn: 240844
Philip Reames [Fri, 26 Jun 2015 22:04:34 +0000 (22:04 +0000)]
[Verifier] Follow on to 240836
Address one missed review comment and do the rename I left out of that patch to make it reviewable.
llvm-svn: 240843
Duncan P. N. Exon Smith [Fri, 26 Jun 2015 22:04:20 +0000 (22:04 +0000)]
CodeGen: Use a single SlotTracker in MachineFunction::print()
Expose enough of the IR-level `SlotTracker` so that
`MachineFunction::print()` can use a single one for printing
`BasicBlock`s. Next step would be to lift this through a few more APIs
so that we can make other print methods faster.
Fixes PR23865, changing the runtime of `llc -print-machineinstrs` from
many minutes (killed after 3 minutes, but it wasn't very close) to
13 seconds for a 502185 line dump.
llvm-svn: 240842
Tom Stellard [Fri, 26 Jun 2015 21:58:42 +0000 (21:58 +0000)]
AMDPGU/SI: Use correct resource descriptors for VI on HSA
Summary: We need to set MTYPE = 2 for VI shaders when targeting the HSA runtime.
Reviewers: arsenm
Differential Revision: http://reviews.llvm.org/D10777
llvm-svn: 240841