platform/upstream/llvm.git
8 years agoAMDGPU/SI: Emit constant arrays in the .text section
Tom Stellard [Thu, 10 Dec 2015 02:13:01 +0000 (02:13 +0000)]
AMDGPU/SI: Emit constant arrays in the .text section

Summary:
This allows us to remove the END_OF_TEXT_LABEL hack we had been using
and simplifies the fixups used to compute the address of constant
arrays.

Reviewers: arsenm

Subscribers: arsenm, llvm-commits

Differential Revision: http://reviews.llvm.org/D15257

llvm-svn: 255204

8 years agoAMDGPU/SI: Add support for sgpr and vgpr inline assembly constraints
Tom Stellard [Thu, 10 Dec 2015 02:12:53 +0000 (02:12 +0000)]
AMDGPU/SI: Add support for sgpr and vgpr inline assembly constraints

Summary: The 's' constraint represents sgprs and the 'v' constraint represents vgprs.

Reviewers: arsenm, echristo

Subscribers: arsenm, llvm-commits

Differential Revision: http://reviews.llvm.org/D15342

llvm-svn: 255203

8 years ago[WebAssembly] Fix legalization of f32->f64 EXTLOAD.
Dan Gohman [Thu, 10 Dec 2015 02:07:53 +0000 (02:07 +0000)]
[WebAssembly] Fix legalization of f32->f64 EXTLOAD.

llvm-svn: 255202

8 years agoMark MS inline ASM 'nodplicate' it it has labels (PR23715)
Hans Wennborg [Thu, 10 Dec 2015 01:38:04 +0000 (01:38 +0000)]
Mark MS inline ASM 'nodplicate' it it has labels (PR23715)

Duplicating it can lead to labels being defined twice.

Differential revision: http://reviews.llvm.org/D15399

llvm-svn: 255201

8 years agoFix a typo in the clang user manual.
Yunzhong Gao [Thu, 10 Dec 2015 01:37:18 +0000 (01:37 +0000)]
Fix a typo in the clang user manual.
-fmax-unknown-pointer-align => -fmax-type-align

llvm-svn: 255200

8 years agoThere were problems if a relative path is used for an include path, the path will...
John Thompson [Thu, 10 Dec 2015 01:33:09 +0000 (01:33 +0000)]
There were problems if a relative path is used for an include path, the path will be normalized to ./xxx.  I don't know how to test this in a way that will work in a separated source/output environment, but it seems reasonable to assume that -I options won't be for provate directories.

llvm-svn: 255199

8 years agoPR25416: Improve performance of processing inline assembly consisting of many
Richard Smith [Thu, 10 Dec 2015 01:11:47 +0000 (01:11 +0000)]
PR25416: Improve performance of processing inline assembly consisting of many
implicitly-concatenated string literals. When looking for the start of a token
in the inline assembly, start from the end of the previous token, not the start
of the entire string.

Patch by Yunlian Jiang!

llvm-svn: 255198

8 years ago[WebAssembly] Update known test failures
Derek Schuff [Thu, 10 Dec 2015 01:09:40 +0000 (01:09 +0000)]
[WebAssembly] Update known test failures

We can now select sign_extend_inreg

llvm-svn: 255197

8 years ago[Lit Test] Updated 20 Lit tests to be C++11 compatible.
Charles Li [Thu, 10 Dec 2015 01:07:17 +0000 (01:07 +0000)]
[Lit Test] Updated 20 Lit tests to be C++11 compatible.

This is the 5th Lit test patch.
Expanded expected diagnostics to vary by C++ dialect.
Expanded RUN line to: default, C++98/03 and C++11.

llvm-svn: 255196

8 years agoRegisterPressure: Factor out liveness dead-def detection logic; NFCI
Matthias Braun [Thu, 10 Dec 2015 01:04:15 +0000 (01:04 +0000)]
RegisterPressure: Factor out liveness dead-def detection logic; NFCI

Detecting additional dead-defs without a dead flag that are only visible
through liveness information should be part of the register operand
collection not intertwined with the register pressure update logic.

llvm-svn: 255192

8 years ago[WebAssembly] Also legalize sign_extend_inreg of i32->i64.
Dan Gohman [Thu, 10 Dec 2015 01:00:19 +0000 (01:00 +0000)]
[WebAssembly] Also legalize sign_extend_inreg of i32->i64.

llvm-svn: 255191

8 years ago[WebAssembly] Update test failure expectations
Derek Schuff [Thu, 10 Dec 2015 00:56:18 +0000 (00:56 +0000)]
[WebAssembly] Update test failure expectations

llvm-svn: 255190

8 years agoReplace cmake check for printf with a check for fopen.
Evgeniy Stepanov [Thu, 10 Dec 2015 00:47:50 +0000 (00:47 +0000)]
Replace cmake check for printf with a check for fopen.

Printf is a builtin, and the check fails with -Werror because of a clang
warning about an incompatible redeclaration.

llvm-svn: 255189

8 years agoReplace cmake check for printf with a check for fopen.
Evgeniy Stepanov [Thu, 10 Dec 2015 00:47:08 +0000 (00:47 +0000)]
Replace cmake check for printf with a check for fopen.

Printf is a builtin, and the check fails with -Werror because of a clang
warning about an incompatible redeclaration.

llvm-svn: 255188

8 years agoReplace cmake check for printf with a check for fopen.
Evgeniy Stepanov [Thu, 10 Dec 2015 00:45:18 +0000 (00:45 +0000)]
Replace cmake check for printf with a check for fopen.

Printf is a builtin, and the check fails with -Werror because of a clang
warning about an incompatible redeclaration.

llvm-svn: 255187

8 years agoReplace cmake check for printf with a check for fopen.
Evgeniy Stepanov [Thu, 10 Dec 2015 00:44:42 +0000 (00:44 +0000)]
Replace cmake check for printf with a check for fopen.

Printf is a builtin, and the check fails with -Werror because of a clang
warning about an incompatible redeclaration.

llvm-svn: 255186

8 years agoRemove redundant _LIBCPP_ALWAYS_INLINE attribute from __convert_to_integral overloads
Eric Fiselier [Thu, 10 Dec 2015 00:43:37 +0000 (00:43 +0000)]
Remove redundant _LIBCPP_ALWAYS_INLINE attribute from __convert_to_integral overloads

llvm-svn: 255185

8 years agoRevert "[CMake] Provide options for toggling on and off various runtime libraries."
Chris Bieneman [Thu, 10 Dec 2015 00:40:58 +0000 (00:40 +0000)]
Revert "[CMake] Provide options for toggling on and off various runtime libraries."

This reverts r255170. This change caused a bunch of bot failures and needs to be revised.

llvm-svn: 255184

8 years ago[CMake] [Darwin] Log architecture test failures to CMakeError.log
Chris Bieneman [Thu, 10 Dec 2015 00:39:57 +0000 (00:39 +0000)]
[CMake] [Darwin] Log architecture test failures to CMakeError.log

This makes debugging configuration issues way easier.

llvm-svn: 255183

8 years agoPeepholeOptimizer: Ignore dead implicit defs
Dan Gohman [Thu, 10 Dec 2015 00:37:51 +0000 (00:37 +0000)]
PeepholeOptimizer: Ignore dead implicit defs

Target-specific instructions may have uninteresting physreg clobbers,
for target-specific reasons. The peephole pass doesn't need to concern
itself with such defs, as long as they're implicit and marked as dead.

llvm-svn: 255182

8 years ago[WebAssembly] Fix legalization of shift operators with illegal types.
Dan Gohman [Thu, 10 Dec 2015 00:26:26 +0000 (00:26 +0000)]
[WebAssembly] Fix legalization of shift operators with illegal types.

llvm-svn: 255181

8 years ago[WebAssembly] Fix copy+pastos.
Dan Gohman [Thu, 10 Dec 2015 00:22:40 +0000 (00:22 +0000)]
[WebAssembly] Fix copy+pastos.

llvm-svn: 255180

8 years ago[WebAssembly] Implement anyext.
Dan Gohman [Thu, 10 Dec 2015 00:17:35 +0000 (00:17 +0000)]
[WebAssembly] Implement anyext.

llvm-svn: 255179

8 years ago[lld][MachO] Always reserve space for the empty string in the mach-o symbol
Lang Hames [Thu, 10 Dec 2015 00:12:24 +0000 (00:12 +0000)]
[lld][MachO] Always reserve space for the empty string in the mach-o symbol
table.

The first entry in the MachO symbol table is always the empty string: make sure
we reserve space for it, or we will overflow the symbol table by one byte.

No test case - this manifests as an occasional memory error. In the near future
I hope to set up a bot building and runnnig LLD with sanitizers - that should
catch future instances of this issue.

llvm-svn: 255178

8 years agoRemove visibility attributes from out-of-class method definitions in iostreams.
Evgeniy Stepanov [Wed, 9 Dec 2015 23:42:30 +0000 (23:42 +0000)]
Remove visibility attributes from out-of-class method definitions in iostreams.

No point in pretending that these methods are hidden - they are
actually exported from libc++.so. Extern template declarations make
them part of libc++ ABI.

This patch does not change libc++.so export list (at least on Linux).

llvm-svn: 255177

8 years agoFix crash on invalid initialization with std::initializer_list
Reid Kleckner [Wed, 9 Dec 2015 23:18:38 +0000 (23:18 +0000)]
Fix crash on invalid initialization with std::initializer_list

It is possible for CheckListElementTypes to fail without filling in any
initializer list elements.

llvm-svn: 255176

8 years ago[X86] Enable shrink-wrapping by default, but keep it disabled for stack frames
Quentin Colombet [Wed, 9 Dec 2015 23:08:18 +0000 (23:08 +0000)]
[X86] Enable shrink-wrapping by default, but keep it disabled for stack frames
without a frame pointer when unwind may happen.
This is a workaround for a bug in the way we emit the CFI directives for
frameless unwind information. See PR25614.

llvm-svn: 255175

8 years agoObjective-C properties: loosen 'atomic' checking for readonly properties.
Douglas Gregor [Wed, 9 Dec 2015 22:57:32 +0000 (22:57 +0000)]
Objective-C properties: loosen 'atomic' checking for readonly properties.

r251874 reworked the way we handle properties declared within
Objective-C class extensions, which had the effective of tightening up
property checking in a number of places. In this particular class of
cases, we end up complaining about "atomic" mismatches between an
implicitly-atomic, readonly property and a nonatomic, readwrite
property, which doesn't make sense because "atomic" is essentially
irrelevant to readonly properties.

Therefore, suppress this diagnostic when the readonly property is
implicitly atomic. Fixes rdar://problem/23803109.

llvm-svn: 255174

8 years ago[PGO] Add cmake check to determine atomics op availability
Xinliang David Li [Wed, 9 Dec 2015 22:46:49 +0000 (22:46 +0000)]
[PGO] Add cmake check to determine atomics op availability

This allows the profile runtime to pick the right impl
for cmp&swap for a given target.

Differential Revision: http://reviews.llvm.org/D15248

llvm-svn: 255173

8 years ago[CMake] Pass CMAKE_MAKE_PROGRAM through to compiler-rt build.
Chris Bieneman [Wed, 9 Dec 2015 22:46:25 +0000 (22:46 +0000)]
[CMake] Pass CMAKE_MAKE_PROGRAM through to compiler-rt build.

This is needed if your make tool is overridden.

llvm-svn: 255172

8 years agouse range-based for loops; NFCI
Sanjay Patel [Wed, 9 Dec 2015 22:45:45 +0000 (22:45 +0000)]
use range-based for loops; NFCI

llvm-svn: 255171

8 years ago[CMake] Provide options for toggling on and off various runtime libraries.
Chris Bieneman [Wed, 9 Dec 2015 22:45:03 +0000 (22:45 +0000)]
[CMake] Provide options for toggling on and off various runtime libraries.

Summary:
Rather than having to add new "experimental" options each time someone wants to work on bringing a sanitizer to a new platform, this patch makes options for all of them.

The default values for the options are set by the platform checks that would have enabled them, but they can be overridden on or off.

Reviewers: kubabrecka, samsonov

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D14846

llvm-svn: 255170

8 years agoSynchronize the logic for deciding to link a gv.
Rafael Espindola [Wed, 9 Dec 2015 22:44:00 +0000 (22:44 +0000)]
Synchronize the logic for deciding to link a gv.

We were deciding to not link an available_externally gv over a
declaration, but then copying over the body anyway.

llvm-svn: 255169

8 years ago[tsan] Move emptyset/oldset to ThreadSignalContext.
Yabin Cui [Wed, 9 Dec 2015 22:40:31 +0000 (22:40 +0000)]
[tsan] Move emptyset/oldset to ThreadSignalContext.

Summary:
Android doesn't support __thread keyword. So move emptyset/oldset
from THREADLOCAL to ThreadSignalContext.

Reviewers: kcc, eugenis, dvyukov

Subscribers: llvm-commits, tberghammer, danalbert

Differential Revision: http://reviews.llvm.org/D15299

llvm-svn: 255168

8 years ago[tsan] Use REAL(malloc) instead of __libc_malloc for Android.
Yabin Cui [Wed, 9 Dec 2015 22:32:38 +0000 (22:32 +0000)]
[tsan] Use REAL(malloc) instead of __libc_malloc for Android.

Summary:
Android doesn't have __libc_malloc and related allocation
functions. As its dynamic linker doesn't use malloc, so
we can use REAL(malloc) to replace __libc_malloc safely.

Reviewers: kcc, eugenis, dvyukov

Subscribers: llvm-commits, tberghammer, danalbert, srhines

Differential Revision: http://reviews.llvm.org/D15297

llvm-svn: 255167

8 years agoAdd 3 more missing inline/visibility attributes.
Evgeniy Stepanov [Wed, 9 Dec 2015 22:32:36 +0000 (22:32 +0000)]
Add 3 more missing inline/visibility attributes.

These are the cases when an out-of-class definition of a method is
marked _LIBCPP_INLINE_VISIBILITY, but the in-class declaration is
not. This will start failing when (or if) we switch to
attribute((internal_linkage)).

llvm-svn: 255166

8 years agoFix the target specific "-msse3" flag check in CMake. NFC
Sumanth Gundapaneni [Wed, 9 Dec 2015 22:26:38 +0000 (22:26 +0000)]
Fix the target specific "-msse3" flag check in CMake. NFC

msse3 is a target dependent flag and must be guarded as check_cxx_compiler_flag()
checks only for compiler error messages and ignores warnings. Earlier COMPILER_RT_HAS_MSSE3_FLAG
is set to "TRUE" for all targets as clang emits warnings and the compilation spits unnecessary
warnings for non-X86 targets. This issue is fixed by coupling the flag with "-Werror"

Differential Revision: http://reviews.llvm.org/D15362

llvm-svn: 255165

8 years ago[tsan] Disable interceptors not supported in Android.
Yabin Cui [Wed, 9 Dec 2015 22:23:47 +0000 (22:23 +0000)]
[tsan] Disable interceptors not supported in Android.

Reviewers: kcc, eugenis, dvyukov

Subscribers: llvm-commits, tberghammer, danalbert, srhines

Differential Revision: http://reviews.llvm.org/D15295

llvm-svn: 255164

8 years agofix typos; NFC
Sanjay Patel [Wed, 9 Dec 2015 22:16:07 +0000 (22:16 +0000)]
fix typos; NFC

llvm-svn: 255163

8 years agoUse __make_integer_seq builtin for std::make_integer_sequence. Patch by K-ballo.
Eric Fiselier [Wed, 9 Dec 2015 22:03:06 +0000 (22:03 +0000)]
Use __make_integer_seq builtin for std::make_integer_sequence. Patch by K-ballo.

llvm-svn: 255162

8 years agoenable timeout/exceptional exit support for xUnit formatter
Todd Fiala [Wed, 9 Dec 2015 22:02:31 +0000 (22:02 +0000)]
enable timeout/exceptional exit support for xUnit formatter

Also adds enable.py/disable.py script to simplify turning on and off
the issue_verification tests helpful for testing a results formatter.

llvm-svn: 255161

8 years agoasan_win_dynamic_runtime_thunk.cc: declare atexit
Hans Wennborg [Wed, 9 Dec 2015 21:43:03 +0000 (21:43 +0000)]
asan_win_dynamic_runtime_thunk.cc: declare atexit

MSVC apparently makes atexit available even without including stdlib.h,
but clang-cl does not. This makes the file build also with clang-cl.

llvm-svn: 255160

8 years agoPut progress.py back, apparently this can't be deleted.
Zachary Turner [Wed, 9 Dec 2015 21:32:28 +0000 (21:32 +0000)]
Put progress.py back, apparently this can't be deleted.

llvm-svn: 255159

8 years ago[PGO] Rename the profdata filename to avoid the conflict b/w tests.
Rong Xu [Wed, 9 Dec 2015 21:27:59 +0000 (21:27 +0000)]
[PGO] Rename the profdata filename to avoid the conflict b/w tests.

Two tests diag_mismatch.ll and diag_no_funcprofdata.ll generates the same
profdata filename which can conflict in current test runs. This patch
renames them to have different names.

llvm-svn: 255158

8 years agoIR: Make ConstantDataArray::getFP actually return a ConstantDataArray
Justin Bogner [Wed, 9 Dec 2015 21:21:07 +0000 (21:21 +0000)]
IR: Make ConstantDataArray::getFP actually return a ConstantDataArray

The ConstantDataArray::getFP(LLVMContext &, ArrayRef<uint16_t>)
overload has had a typo in it since it was written, where it will
create a Vector instead of an Array. This obviously doesn't work at
all, but it turns out that until r254991 there weren't actually any
callers of this overload. Fix the typo and add some test coverage.

llvm-svn: 255157

8 years ago[ThinLTO] Release files read when creating combined index in gold plugin
Teresa Johnson [Wed, 9 Dec 2015 21:11:42 +0000 (21:11 +0000)]
[ThinLTO] Release files read when creating combined index in gold plugin

This wasn't causing an issue since at HEAD we exit the linker completely
after creating the combined index.

llvm-svn: 255156

8 years ago[Float2Int] Don't operate on vector instructions
Reid Kleckner [Wed, 9 Dec 2015 21:08:18 +0000 (21:08 +0000)]
[Float2Int] Don't operate on vector instructions

This fixes a crash bug. It's also not clear if we'd want to do this
transform for vectors.

llvm-svn: 255155

8 years ago[llvm-dwp] Sink debug_types.dwo emission into the code parsing the type signatures...
David Blaikie [Wed, 9 Dec 2015 21:02:33 +0000 (21:02 +0000)]
[llvm-dwp] Sink debug_types.dwo emission into the code parsing the type signatures (NFC)

This is a preliminary change towards deduplicating type units based on
their signatures. Next change will skip emission of types when their
signature has already been seen.

llvm-svn: 255154

8 years agoRemove the -P option from dotest.py
Zachary Turner [Wed, 9 Dec 2015 20:48:59 +0000 (20:48 +0000)]
Remove the -P option from dotest.py

This was an option to display a graphical progress bar.  Nobody
is using this, and it doesn't work correctly anyway with the new
result formatter.

llvm-svn: 255153

8 years agoDelete the -n command line option from dotest.py.
Zachary Turner [Wed, 9 Dec 2015 20:48:42 +0000 (20:48 +0000)]
Delete the -n command line option from dotest.py.

This removes the option to not print some one time version and
diagnostic information when running the test suite.

llvm-svn: 255152

8 years agoRemove the -i command line option from dotest.py.
Zachary Turner [Wed, 9 Dec 2015 20:48:31 +0000 (20:48 +0000)]
Remove the -i command line option from dotest.py.

This is part of a larger effort to remove unused command line
options from dotest.py.

llvm-svn: 255151

8 years agoDelete the -F command line option from dotest.py.
Zachary Turner [Wed, 9 Dec 2015 20:48:19 +0000 (20:48 +0000)]
Delete the -F command line option from dotest.py.

This removes the failfast command line option as part of an effort
to simplify dotest and remove unused command line options.  You can
still Ctrl+C any time you want to exit early.

llvm-svn: 255150

8 years agoDon't assign a temporary string to a StringRef.
Rafael Espindola [Wed, 9 Dec 2015 20:41:10 +0000 (20:41 +0000)]
Don't assign a temporary string to a StringRef.

Should fix the windows debug and asan bots.

llvm-svn: 255149

8 years agoUse WeakVH to keep track of calls with operand bundles in CloneCodeInfo
Sanjoy Das [Wed, 9 Dec 2015 20:33:52 +0000 (20:33 +0000)]
Use WeakVH to keep track of calls with operand bundles in CloneCodeInfo

`CloneAndPruneIntoFromInst` can DCE instructions after cloning them into
the new function, and so an AssertingVH is too strong.  This change
switches CloneCodeInfo to use a std::vector<WeakVH>.

llvm-svn: 255148

8 years agoDelete trailing whitespace; NFC
Sanjoy Das [Wed, 9 Dec 2015 20:33:45 +0000 (20:33 +0000)]
Delete trailing whitespace; NFC

llvm-svn: 255147

8 years agoDelay context construction to when/if it is needed in gold plugin (NFC)
Teresa Johnson [Wed, 9 Dec 2015 19:49:40 +0000 (19:49 +0000)]
Delay context construction to when/if it is needed in gold plugin (NFC)

llvm-svn: 255146

8 years agoclang-format order of gold-plugin includes (NFC)
Teresa Johnson [Wed, 9 Dec 2015 19:45:55 +0000 (19:45 +0000)]
clang-format order of gold-plugin includes (NFC)

llvm-svn: 255144

8 years agoRemove -k command line option from dotest.py.
Zachary Turner [Wed, 9 Dec 2015 19:45:51 +0000 (19:45 +0000)]
Remove -k command line option from dotest.py.

This is part of an effort to remove unused command line options.

llvm-svn: 255143

8 years agoRemove -e option from dotest.py.
Zachary Turner [Wed, 9 Dec 2015 19:45:36 +0000 (19:45 +0000)]
Remove -e option from dotest.py.

This is part of an effort to clean up dotest command line options
that are no longer used.

llvm-svn: 255142

8 years agoRemove -libcxx option from dotest.py
Zachary Turner [Wed, 9 Dec 2015 19:45:16 +0000 (19:45 +0000)]
Remove -libcxx option from dotest.py

Nobody was using this, and plus it can be achieved just as well
by using -E to set an environment variable.

llvm-svn: 255141

8 years ago[ThinLTO] FunctionImport pass can take a const index pointer (NFC)
Teresa Johnson [Wed, 9 Dec 2015 19:39:47 +0000 (19:39 +0000)]
[ThinLTO] FunctionImport pass can take a const index pointer (NFC)

llvm-svn: 255140

8 years agoMove XunitFormatter into its own xunit_formatter.py file.
Todd Fiala [Wed, 9 Dec 2015 19:32:14 +0000 (19:32 +0000)]
Move XunitFormatter into its own xunit_formatter.py file.

llvm-svn: 255139

8 years agoFix new summary to include exceptional exit count in determining exit value
Todd Fiala [Wed, 9 Dec 2015 19:05:44 +0000 (19:05 +0000)]
Fix new summary to include exceptional exit count in determining exit value

The main dotest.py should exit with a system return code of 1 on any
issue.  This change fixes a place where I omitted counting the
exceptional exit value to determine if we should return 1 when using the
new summary results.

This change also puts a banner around the Issue Details section that comes
before the Test Result Summary.

llvm-svn: 255138

8 years ago[InstCombine] fold bitcasts around an extractelement (2nd try)
Sanjay Patel [Wed, 9 Dec 2015 18:57:16 +0000 (18:57 +0000)]
[InstCombine] fold bitcasts around an extractelement (2nd try)

This is a redo of r255124 (reverted at r255126) with an added check for a
scalar destination type and an added test for the failure seen in Clang's
test/CodeGen/vector.c. The extra test shows a different missing optimization.

Original commit message:

Example:
  bitcast (extractelement (bitcast <2 x float> %X to <2 x i32>), 1) to float
    --->
  extractelement <2 x float> %X, i32 1

This is part of fixing PR25543:
https://llvm.org/bugs/show_bug.cgi?id=25543

The next step will be to generalize this fold:
trunc ( lshr ( bitcast X) ) -> extractelement (X)

Ie, I'm hoping to replace the existing transform of:
bitcast ( trunc ( lshr ( bitcast X)))
added by:
http://reviews.llvm.org/rL112232

with 2 less specific transforms to catch the case in the bug report.

Differential Revision: http://reviews.llvm.org/D14879

llvm-svn: 255137

8 years ago[TSan] Try harder to avoid compiler-generated memset calls.
Alexey Samsonov [Wed, 9 Dec 2015 18:48:10 +0000 (18:48 +0000)]
[TSan] Try harder to avoid compiler-generated memset calls.

check_memcpy test added in r254959 fails on some configurations due to
memset() calls inserted by Clang. Try harder to avoid them:
* Explicitly use internal_memset() instead of empty braced-initializer.
* Replace "new T()" with "new T", as the former generates zero-initialization
  for structs in C++11.

llvm-svn: 255136

8 years ago[tsan] Define sigaction_t for Android.
Yabin Cui [Wed, 9 Dec 2015 18:37:27 +0000 (18:37 +0000)]
[tsan] Define sigaction_t for Android.

Reviewers: kcc, eugenis, dvyukov

Subscribers: llvm-commits, tberghammer, danalbert, srhines

Differential Revision: http://reviews.llvm.org/D15298

llvm-svn: 255135

8 years agoDisable the issue verification tests.
Todd Fiala [Wed, 9 Dec 2015 18:24:47 +0000 (18:24 +0000)]
Disable the issue verification tests.

llvm-svn: 255134

8 years agoRevert "Revert r253253 and r253126: "Don't recompute LCSSA after loop-unrolling when...
Michael Zolotukhin [Wed, 9 Dec 2015 18:20:28 +0000 (18:20 +0000)]
Revert "Revert r253253 and r253126: "Don't recompute LCSSA after loop-unrolling when possible.""

The bug in IndVarSimplify was fixed in r254976, r254977, so I'm
reapplying the original patch for avoiding redundant LCSSA recomputation.

This reverts commit ffe3b434e505e403146aff00be0c177bb6d13466.

llvm-svn: 255133

8 years ago[PGO] Resubmit "MST based PGO instrumentation infrastructure" (r254021)
Rong Xu [Wed, 9 Dec 2015 18:08:16 +0000 (18:08 +0000)]
[PGO] Resubmit "MST based PGO instrumentation infrastructure" (r254021)

This new patch fixes a few bugs that exposed in last submit. It also improves
the test cases.
--Original Commit Message--
This patch implements a minimum spanning tree (MST) based instrumentation for
PGO. The use of MST guarantees minimum number of CFG edges getting
instrumented. An addition optimization is to instrument the less executed
edges to further reduce the instrumentation overhead. The patch contains both the
instrumentation and the use of the profile to set the branch weights.

Differential Revision: http://reviews.llvm.org/D12781

llvm-svn: 255132

8 years agocreate 3 issues for testbots: FAIL, ERROR (exceptional), and TIMEOUT
Todd Fiala [Wed, 9 Dec 2015 18:01:19 +0000 (18:01 +0000)]
create 3 issues for testbots: FAIL, ERROR (exceptional), and TIMEOUT

This change is a trial balloon to verify that the default test summary
output sends the right output for the buildbot issue detection script.

The effect of this change will be reverted after verifying the testbot
behavior.  This change will not stay in as is and will knowingly create
noise, see this thread:

http://lists.llvm.org/pipermail/lldb-dev/2015-December/009048.html

llvm-svn: 255131

8 years agoTurn on new test summary results by default.
Todd Fiala [Wed, 9 Dec 2015 18:01:14 +0000 (18:01 +0000)]
Turn on new test summary results by default.

llvm-svn: 255130

8 years agounique_ptrify some collections in FileManager
David Blaikie [Wed, 9 Dec 2015 17:23:13 +0000 (17:23 +0000)]
unique_ptrify some collections in FileManager

llvm-svn: 255129

8 years ago[Support] Change SaturatingAdd()/SaturatingMultiply() to use pointer for returning...
Nathan Slingerland [Wed, 9 Dec 2015 17:11:28 +0000 (17:11 +0000)]
[Support] Change SaturatingAdd()/SaturatingMultiply() to use pointer for returning overflow state

Summary:
Improve SaturatingAdd()/SaturatingMultiply() to use bool * to optionally return overflow result.
This should make it clearer that the value is returned at callsites and reduces the size of the implementation.

Reviewers: davidxl, silvas

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D15219

llvm-svn: 255128

8 years ago[Hexagon] Use integrated assembler by default
Krzysztof Parzyszek [Wed, 9 Dec 2015 16:34:24 +0000 (16:34 +0000)]
[Hexagon] Use integrated assembler by default

llvm-svn: 255127

8 years agoRevert "[InstCombine] fold bitcasts around an extractelement"
Mehdi Amini [Wed, 9 Dec 2015 16:31:39 +0000 (16:31 +0000)]
Revert "[InstCombine] fold bitcasts around an extractelement"

This reverts commit r255124.

Broke http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/4193/steps/test/logs/stdio

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 255126

8 years ago[WebAssembly] Reintroduce ARGUMENT moving logic
Dan Gohman [Wed, 9 Dec 2015 16:23:59 +0000 (16:23 +0000)]
[WebAssembly] Reintroduce ARGUMENT moving logic

Reinteroduce the code for moving ARGUMENTS back to the top of the basic block.
While the ARGUMENTS physical register prevents sinking and scheduling from
moving them, it does not appear to be sufficient to prevent SelectionDAG from
moving them down in the initial schedule. This patch introduces a patch that
moves them back to the top immediately after SelectionDAG runs.

This is still hopefully a temporary solution. http://reviews.llvm.org/D14750 is
one alternative, though the review has not been favorable, and proposed
alternatives are longer-term and have other downsides.

This fixes the main outstanding -verify-machineinstrs failures, so it adds
-verify-machineinstrs to several tests.

Differential Revision: http://reviews.llvm.org/D15377

llvm-svn: 255125

8 years ago[InstCombine] fold bitcasts around an extractelement
Sanjay Patel [Wed, 9 Dec 2015 16:17:20 +0000 (16:17 +0000)]
[InstCombine] fold bitcasts around an extractelement

Example:
  bitcast (extractelement (bitcast <2 x float> %X to <2 x i32>), 1) to float
    --->
  extractelement <2 x float> %X, i32 1

This is part of fixing PR25543:
https://llvm.org/bugs/show_bug.cgi?id=25543

The next step will be to generalize this fold:
trunc ( lshr ( bitcast X) ) -> extractelement (X)

Ie, I'm hoping to replace the existing transform of:
bitcast ( trunc ( lshr ( bitcast X)))
added by:
http://reviews.llvm.org/rL112232

with 2 less specific transforms to catch the case in the bug report.

Differential Revision: http://reviews.llvm.org/D14879

llvm-svn: 255124

8 years agoChange hasUniqueInitializer() to call isStrongDefinitionForLinker() instead of !isWea...
Mehdi Amini [Wed, 9 Dec 2015 16:17:07 +0000 (16:17 +0000)]
Change hasUniqueInitializer() to call isStrongDefinitionForLinker() instead of !isWeakForLinker()

Summary:
Available_externally global variable with initializer were considered "hasInitializer()",
while obviously it can't match the description:

    Whether the global variable has an initializer, and any changes made to the
    initializer will turn up in the final executable.

since modifying the initializer of an externally available variable does not make sense.

Reviewers: pcc, rafael

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D15351

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 255123

8 years agoRe-commit r255115, with the PredicatedScalarEvolution class moved to
Silviu Baranga [Wed, 9 Dec 2015 16:06:28 +0000 (16:06 +0000)]
Re-commit r255115, with the PredicatedScalarEvolution class moved to
ScalarEvolution.h, in order to avoid cyclic dependencies between the Transform
and Analysis modules:

[LV][LAA] Add a layer over SCEV to apply run-time checked knowledge on SCEV expressions

Summary:
This change creates a layer over ScalarEvolution for LAA and LV, and centralizes the
usage of SCEV predicates. The SCEVPredicatedLayer takes the statically deduced knowledge
by ScalarEvolution and applies the knowledge from the SCEV predicates. The end goal is
that both LAA and LV should use this interface everywhere.

This also solves a problem involving the result of SCEV expression rewritting when
the predicate changes. Suppose we have the expression (sext {a,+,b}) and two predicates
  P1: {a,+,b} has nsw
  P2: b = 1.

Applying P1 and then P2 gives us {a,+,1}, while applying P2 and the P1 gives us
sext({a,+,1}) (the AddRec expression was changed by P2 so P1 no longer applies).
The SCEVPredicatedLayer maintains the order of transformations by feeding back
the results of previous transformations into new transformations, and therefore
avoiding this issue.

The SCEVPredicatedLayer maintains a cache to remember the results of previous
SCEV rewritting results. This also has the benefit of reducing the overall number
of expression rewrites.

Reviewers: mzolotukhin, anemet

Subscribers: jmolloy, sanjoy, llvm-commits

Differential Revision: http://reviews.llvm.org/D14296

llvm-svn: 255122

8 years ago[RenderScript] Add hook for destroyed allocations
Ewan Crawford [Wed, 9 Dec 2015 16:01:58 +0000 (16:01 +0000)]
[RenderScript] Add hook for destroyed allocations

New hook for rsdAllocationDestroy() which is called when allocations are deleted.
LLDB should be aware of this so we can remove the allocation from our internal list.

llvm-svn: 255121

8 years agoARM: don't use a deleted node as the BaseReg in complex pattern.
Tim Northover [Wed, 9 Dec 2015 15:54:50 +0000 (15:54 +0000)]
ARM: don't use a deleted node as the BaseReg in complex pattern.

We mutated the DAG, which invalidated the node we were trying to use
as a base register. Sometimes we got away with it, but other times the
node really did get deleted before it was finished with.

Should fix PR25733

llvm-svn: 255120

8 years agoWebAssembly: add missing failure to the list.
JF Bastien [Wed, 9 Dec 2015 15:52:57 +0000 (15:52 +0000)]
WebAssembly: add missing failure to the list.

llvm-svn: 255119

8 years agoCorrectly XFAIL TestReturnValue
Pavel Labath [Wed, 9 Dec 2015 15:49:40 +0000 (15:49 +0000)]
Correctly XFAIL TestReturnValue

android is not an "os", use the target triple to match it.

llvm-svn: 255118

8 years agoRevert r255115 until we figure out how to fix the bot failures.
Silviu Baranga [Wed, 9 Dec 2015 15:25:28 +0000 (15:25 +0000)]
Revert r255115 until we figure out how to fix the bot failures.

llvm-svn: 255117

8 years agoAvoid extended mnemonic 'mfvrsave' in assembly code
Bill Schmidt [Wed, 9 Dec 2015 15:18:30 +0000 (15:18 +0000)]
Avoid extended mnemonic 'mfvrsave' in assembly code

llvm-svn: 255116

8 years ago[LV][LAA] Add a layer over SCEV to apply run-time checked knowledge on SCEV expressions
Silviu Baranga [Wed, 9 Dec 2015 15:03:52 +0000 (15:03 +0000)]
[LV][LAA] Add a layer over SCEV to apply run-time checked knowledge on SCEV expressions

Summary:
This change creates a layer over ScalarEvolution for LAA and LV, and centralizes the
usage of SCEV predicates. The SCEVPredicatedLayer takes the statically deduced knowledge
by ScalarEvolution and applies the knowledge from the SCEV predicates. The end goal is
that both LAA and LV should use this interface everywhere.

This also solves a problem involving the result of SCEV expression rewritting when
the predicate changes. Suppose we have the expression (sext {a,+,b}) and two predicates
  P1: {a,+,b} has nsw
  P2: b = 1.

Applying P1 and then P2 gives us {a,+,1}, while applying P2 and the P1 gives us
sext({a,+,1}) (the AddRec expression was changed by P2 so P1 no longer applies).
The SCEVPredicatedLayer maintains the order of transformations by feeding back
the results of previous transformations into new transformations, and therefore
avoiding this issue.

The SCEVPredicatedLayer maintains a cache to remember the results of previous
SCEV rewritting results. This also has the benefit of reducing the overall number
of expression rewrites.

Reviewers: mzolotukhin, anemet

Subscribers: jmolloy, sanjoy, llvm-commits

Differential Revision: http://reviews.llvm.org/D14296

llvm-svn: 255115

8 years agoFix cycle in selection DAG introduced by extractelement legalization
Robert Lougher [Wed, 9 Dec 2015 14:34:10 +0000 (14:34 +0000)]
Fix cycle in selection DAG introduced by extractelement legalization

During selection DAG legalization, extractelement is replaced with a load
instruction.  To do this, a temporary store to the stack is used unless an
existing store is found that can be re-used.

If re-using a store, the chain going out of the store must be replaced by
the one going out of the new load (this ensures that any stores that must
take place after the store happens after the load, else the value might
be overwritten before it is loaded).

The problem is, if the extractelement index is dependent on the store
replacing the chain will introduce a cycle in the selection DAG (the load
uses the index, and by replacing the chain we will make the index dependent
on the load).

To fix this, if the index is dependent on the store, the store is skipped.
This is conservative as we may end up creating an unnecessary extra store
to the stack.  However, the situation is not expected to occur very often.

Differential Revision: http://reviews.llvm.org/D15330

llvm-svn: 255114

8 years ago[AArch64] Fix FP16 vector instructions that should only accept low registers
Oliver Stannard [Wed, 9 Dec 2015 14:32:11 +0000 (14:32 +0000)]
[AArch64] Fix FP16 vector instructions that should only accept low registers

llvm-svn: 255113

8 years ago[mips][ias] Range check uimm10 operands
Daniel Sanders [Wed, 9 Dec 2015 13:48:05 +0000 (13:48 +0000)]
[mips][ias] Range check uimm10 operands

Summary:

Reviewers: vkalintiris

Subscribers: dsanders, llvm-commits

Differential Revision: http://reviews.llvm.org/D15229

llvm-svn: 255112

8 years agoWebAssembly: add known failures
JF Bastien [Wed, 9 Dec 2015 13:29:32 +0000 (13:29 +0000)]
WebAssembly: add known failures

The bots are now running the torture tests properly. Bin all failures from the GCC C torture tests so that we can tackle failures and make the tree go red on regressions.

llvm-svn: 255111

8 years ago[mips] Use multiclass patterns for f32/f64 comparisons and i32 selects.
Vasileios Kalintiris [Wed, 9 Dec 2015 13:24:22 +0000 (13:24 +0000)]
[mips] Use multiclass patterns for f32/f64 comparisons and i32 selects.

Summary:
Although the multiclass for i32 selects might seem redundant as it has
only one instantiation, we will use it to replace the correspondent
patterns in Mips64r6InstrInfo.td in follow-up commits.

Reviewers: dsanders

Subscribers: llvm-commits, dsanders

Differential Revision: http://reviews.llvm.org/D14612

llvm-svn: 255110

8 years agoRevert r254897 "[mips][microMIPS] Implement LH, LHE, LHU and LHUE instructions"
Zlatko Buljan [Wed, 9 Dec 2015 13:07:45 +0000 (13:07 +0000)]
Revert r254897 "[mips][microMIPS] Implement LH, LHE, LHU and LHUE instructions"

Commited patch was intended to implement LH, LHE, LHU and LHUE instructions.
After commit test-suite failed with error message in the form of:
fatal error: error in backend: Cannot select: t124: i32,ch = load<LD2[%d](tbaa=<0x94acc48>), sext from i16> t0, t2, undef:i32
For that reason I decided to revert commit r254897 and make new patch which besides implementation and standard regression tests will also have dedicated tests (CodeGen) for the above error.

llvm-svn: 255109

8 years ago[LLDB][MIPS] Adding call to IsMSAAvailable() while creating RegisterInfoInterface
Sagar Thakur [Wed, 9 Dec 2015 12:31:01 +0000 (12:31 +0000)]
[LLDB][MIPS] Adding call to IsMSAAvailable() while creating RegisterInfoInterface

This patch will fix the test case test_p_returns_correct_data_size_for_each_qRegisterInfo_attach_llgs_* of TestLldbGdbServer.py on mips. The test fails because we were sending RegisterInfo for msa registers to client even when msa registers are not available. With this commit server will send E45(end of resigters) response if msa registers are not available.

llvm-svn: 255108

8 years agoexecuteScopConditionally: Introduce special exiting block
Tobias Grosser [Wed, 9 Dec 2015 11:38:22 +0000 (11:38 +0000)]
executeScopConditionally: Introduce special exiting block

When introducing separate control flow for the original and optimized code we
introduce now a special 'ExitingBlock':

      \   /
    EnteringBB
        |
    SplitBlock---------\
   _____|_____         |
  /  EntryBB  \    StartBlock
  |  (region) |        |
  \_ExitingBB_/   ExitingBlock
        |              |
    MergeBlock---------/
        |
      ExitBB
      /    \

This 'ExitingBlock' contains code such as the final_reloads for scalars, which
previously were just added to whichever statement/loop_exit/branch-merge block
had been generated last. Having an explicit basic block makes it easier to
find these constructs when looking at the CFG.

llvm-svn: 255107

8 years agotest: Fix misspelled test line
Tobias Grosser [Wed, 9 Dec 2015 11:38:08 +0000 (11:38 +0000)]
test: Fix misspelled test line

llvm-svn: 255106

8 years agoXFAIL TestReturnValue for remote Windows->Android tests
Pavel Labath [Wed, 9 Dec 2015 10:54:18 +0000 (10:54 +0000)]
XFAIL TestReturnValue for remote Windows->Android tests

this also adds the ability to match the host platform to the expectedFailureAll decorator.

llvm-svn: 255105

8 years agoFix a cleanup error in TestPlatformProcessConnect.py
Tamas Berghammer [Wed, 9 Dec 2015 10:16:05 +0000 (10:16 +0000)]
Fix a cleanup error in TestPlatformProcessConnect.py

llvm-svn: 255104

8 years ago[ELF] - Implement the TLS relocation optimization for 32-bit x86.
George Rimar [Wed, 9 Dec 2015 09:55:54 +0000 (09:55 +0000)]
[ELF] - Implement the TLS relocation optimization for 32-bit x86.

Implement the TLS relocation optimization for 32-bit x86 that is described in
"ELF Handling For Thread-Local Storage" by Ulrich Drepper, chapter 5,
"IA-32 Linker Optimizations". Specifically, this patch implements these
optimizations: LD->LE, GD->IE, GD->LD, and IE->LE.

Differential revision: http://reviews.llvm.org/D15292

llvm-svn: 255103

8 years agoEarlyCSE: fix typo from rL255054.
JF Bastien [Wed, 9 Dec 2015 09:05:42 +0000 (09:05 +0000)]
EarlyCSE: fix typo from rL255054.

llvm-svn: 255102

8 years agoRevert "Implement a new pass - LiveDebugValues - to compute the set of live DEBUG_VAL...
Mehdi Amini [Wed, 9 Dec 2015 08:17:42 +0000 (08:17 +0000)]
Revert "Implement a new pass - LiveDebugValues - to compute the set of live DEBUG_VALUEs at each basic block and insert them. Reviewed and accepted at: reviews.llvm.org/D11933"

This reverts commit r255096.

Break the bots: http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_check/16378/

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 255101