platform/upstream/llvm.git
7 years ago[AVR] Add calling convention CodeGen tests
Dylan McKay [Sun, 11 Dec 2016 07:09:45 +0000 (07:09 +0000)]
[AVR] Add calling convention CodeGen tests

This adds CodeGen tests for the AVR C calling convention.

llvm-svn: 289369

7 years ago[libFuzzer] don't depend on time in a test
Kostya Serebryany [Sun, 11 Dec 2016 06:28:09 +0000 (06:28 +0000)]
[libFuzzer] don't depend on time in a test

llvm-svn: 289368

7 years agoActually re-disable -Wsign-compare
Eric Fiselier [Sun, 11 Dec 2016 05:54:43 +0000 (05:54 +0000)]
Actually re-disable -Wsign-compare

llvm-svn: 289367

7 years agoRe-disable -Wsign-compare for now. I didn't catch all occurrences
Eric Fiselier [Sun, 11 Dec 2016 05:45:55 +0000 (05:45 +0000)]
Re-disable -Wsign-compare for now. I didn't catch all occurrences

llvm-svn: 289366

7 years agoFix signed comparison warning
Eric Fiselier [Sun, 11 Dec 2016 05:43:20 +0000 (05:43 +0000)]
Fix signed comparison warning

llvm-svn: 289365

7 years agoEnable the -Wsign-compare warning to better support MSVC
Eric Fiselier [Sun, 11 Dec 2016 05:31:00 +0000 (05:31 +0000)]
Enable the -Wsign-compare warning to better support MSVC

llvm-svn: 289363

7 years ago[AVR] Add a test to validate a simple 'blinking led' program
Dylan McKay [Sun, 11 Dec 2016 04:59:39 +0000 (04:59 +0000)]
[AVR] Add a test to validate a simple 'blinking led' program

llvm-svn: 289362

7 years ago[CrashReproducer] Setup a module collector callback for HeaderInclude
Bruno Cardoso Lopes [Sun, 11 Dec 2016 04:27:31 +0000 (04:27 +0000)]
[CrashReproducer] Setup a module collector callback for HeaderInclude

Collect missing include that cannot be fetched otherwise (e.g. when
using headermaps).

rdar://problem/27913709

llvm-svn: 289361

7 years ago[CrashReproducer] Collect headermap files
Bruno Cardoso Lopes [Sun, 11 Dec 2016 04:27:28 +0000 (04:27 +0000)]
[CrashReproducer] Collect headermap files

Include headermaps (.hmap files) in the .cache directory and
add VFS entries. All headermaps are known after HeaderSearch
setup, collect them right after.

rdar://problem/27913709

llvm-svn: 289360

7 years agoFix copy/paste errors introduced in r289358
Eric Fiselier [Sun, 11 Dec 2016 04:00:26 +0000 (04:00 +0000)]
Fix copy/paste errors introduced in r289358

llvm-svn: 289359

7 years agoFix undefined behavior in container swap tests.
Eric Fiselier [Sun, 11 Dec 2016 03:41:12 +0000 (03:41 +0000)]
Fix undefined behavior in container swap tests.

These swap tests were swapping non-POCS non-equal allocators which
is undefined behavior. This patch changes the tests to use allocators
which compare equal. In order to test that the allocators were not
swapped I added an "id" field to test_allocator which does not
participate in equality but does propagate across copies/swaps.

This patch is based off of D26623 which was submitted by STL.

llvm-svn: 289358

7 years agoFix yet another dynamic exception spec
Eric Fiselier [Sun, 11 Dec 2016 02:49:37 +0000 (02:49 +0000)]
Fix yet another dynamic exception spec

llvm-svn: 289357

7 years agoFix more uses of dynamic exception specifications in C++17
Eric Fiselier [Sun, 11 Dec 2016 02:47:36 +0000 (02:47 +0000)]
Fix more uses of dynamic exception specifications in C++17

llvm-svn: 289356

7 years agoFix count_new.hpp to work w/o dynamic exception specifications
Eric Fiselier [Sun, 11 Dec 2016 02:20:17 +0000 (02:20 +0000)]
Fix count_new.hpp to work w/o dynamic exception specifications

llvm-svn: 289355

7 years ago[AVX-512][InstCombine] Add 512-bit vpermilvar intrinsics to InstCombineCalls to match...
Craig Topper [Sun, 11 Dec 2016 01:59:36 +0000 (01:59 +0000)]
[AVX-512][InstCombine] Add 512-bit vpermilvar intrinsics to InstCombineCalls to match 128 and 256-bit.

llvm-svn: 289354

7 years agoWorkaround the removal of dynamic exception specifications in C++17
Eric Fiselier [Sun, 11 Dec 2016 01:35:55 +0000 (01:35 +0000)]
Workaround the removal of dynamic exception specifications in C++17

llvm-svn: 289353

7 years ago[X86] Fix a comment to say 'an FMA' instead of 'a FMA'. NFC
Craig Topper [Sun, 11 Dec 2016 01:28:08 +0000 (01:28 +0000)]
[X86] Fix a comment to say 'an FMA' instead of 'a FMA'. NFC

llvm-svn: 289352

7 years ago[AVX-512] Remove masking from 512-bit vpermil builtins. The backend now has versions...
Craig Topper [Sun, 11 Dec 2016 01:26:52 +0000 (01:26 +0000)]
[AVX-512] Remove masking from 512-bit vpermil builtins. The backend now has versions without masking so wrap it with select.

This will allow the backend to constant fold these to generic shuffle vectors like 128-bit and 256-bit without having to working about handling masking.

llvm-svn: 289351

7 years ago[X86] Remove masking from 512-bit VPERMIL intrinsics in preparation for being able...
Craig Topper [Sun, 11 Dec 2016 01:26:44 +0000 (01:26 +0000)]
[X86] Remove masking from 512-bit VPERMIL intrinsics in preparation for being able to constant fold them in InstCombineCalls like we do for 128/256-bit.

llvm-svn: 289350

7 years ago[AVR] Fix a signed vs unsigned compiler warning
Dylan McKay [Sun, 11 Dec 2016 00:24:13 +0000 (00:24 +0000)]
[AVR] Fix a signed vs unsigned compiler warning

llvm-svn: 289349

7 years ago[X86][InstCombine] Teach InstCombineCalls to turn pshufb intrinsic into a shufflevect...
Craig Topper [Sun, 11 Dec 2016 00:23:50 +0000 (00:23 +0000)]
[X86][InstCombine] Teach InstCombineCalls to turn pshufb intrinsic into a shufflevector if the indices are constant.

llvm-svn: 289348

7 years ago[libc++] Fix support for multibyte thousands_sep and decimal_point in moneypunct_byna...
Eric Fiselier [Sun, 11 Dec 2016 00:20:59 +0000 (00:20 +0000)]
[libc++] Fix support for multibyte thousands_sep and decimal_point in moneypunct_byname and numpunct_byname.

Summary:
The underlying C locales provide the `thousands_sep` and `decimal_point` as strings, possible with more than one character. We currently don't handle this case even for `wchar_t`.

This patch properly converts the mbs -> wide character for `moneypunct_byname<wchar_t>`. For the `moneypunct_byname<char>` case we attempt to narrow the WC and if that fails we also attempt to translate it to some reasonable value. For example we translate U00A0 (non-breaking space) into U0020 (regular space). If none of these conversions succeed then we simply allow the base class to provide a fallback value.

Reviewers: mclow.lists, EricWF

Subscribers: vangyzen, george.burgess.iv, cfe-commits

Differential Revision: https://reviews.llvm.org/D24218

llvm-svn: 289347

7 years ago[AVR] Remove incorrect comment
Dylan McKay [Sat, 10 Dec 2016 23:50:30 +0000 (23:50 +0000)]
[AVR] Remove incorrect comment

This should've been removed in r289323.

llvm-svn: 289346

7 years ago[AVX-512] Remove masking from 512-bit pshufb builtin. The backend now has a version...
Craig Topper [Sat, 10 Dec 2016 23:09:52 +0000 (23:09 +0000)]
[AVX-512] Remove masking from 512-bit pshufb builtin. The backend now has a version without masking so wrap it with select.

This will allow the backend to constant fold these to generic shuffle vectors like 128-bit and 256-bit without having to working about handling masking.

llvm-svn: 289345

7 years ago[X86] Remove masking from 512-bit PSHUFB intrinsics in preparation for being able...
Craig Topper [Sat, 10 Dec 2016 23:09:43 +0000 (23:09 +0000)]
[X86] Remove masking from 512-bit PSHUFB intrinsics in preparation for being able to constant fold it in InstCombineCalls like we do for 128/256-bit.

llvm-svn: 289344

7 years ago[InstCombine] add helper for shift-by-shift folds; NFCI
Sanjay Patel [Sat, 10 Dec 2016 22:16:29 +0000 (22:16 +0000)]
[InstCombine] add helper for shift-by-shift folds; NFCI

These are currently limited to integer types, but we should
be able to extend to splat vectors and possibly general vectors.

llvm-svn: 289343

7 years ago[X86][SSE] Add tests for sign extended vXi64 multiplication
Simon Pilgrim [Sat, 10 Dec 2016 22:02:36 +0000 (22:02 +0000)]
[X86][SSE] Add tests for sign extended vXi64 multiplication

llvm-svn: 289342

7 years ago[X86][SSE] Ensure UNPCK inputs are a consistent value type in LowerHorizontalByteSum
Simon Pilgrim [Sat, 10 Dec 2016 21:16:45 +0000 (21:16 +0000)]
[X86][SSE] Ensure UNPCK inputs are a consistent value type in LowerHorizontalByteSum

llvm-svn: 289341

7 years ago[AVX-512] Remove 128/256 masked vpermil instrinsics and autoupgrade to a select aroun...
Craig Topper [Sat, 10 Dec 2016 21:15:52 +0000 (21:15 +0000)]
[AVX-512] Remove 128/256 masked vpermil instrinsics and autoupgrade to a select around the unmasked avx1 intrinsics.

llvm-svn: 289340

7 years ago[X86][IR] Move the autoupgrading of store intrinsics out of the main nested if/else...
Craig Topper [Sat, 10 Dec 2016 21:15:48 +0000 (21:15 +0000)]
[X86][IR] Move the autoupgrading of store intrinsics out of the main nested if/else chain. This should buy a little more time against the MSVC limit mentioned in PR31034.

The handlers for stores all return at the end of their block so they can be picked off early.

llvm-svn: 289339

7 years ago[AVX-512] Remove 128/256-bit masked vpermilvar builtins and replace with select and...
Craig Topper [Sat, 10 Dec 2016 20:27:39 +0000 (20:27 +0000)]
[AVX-512] Remove 128/256-bit masked vpermilvar builtins and replace with select and the avx unmasked builtins.

llvm-svn: 289338

7 years agoAMDGPU: Fix asan errors when folding operands
Matt Arsenault [Sat, 10 Dec 2016 19:58:00 +0000 (19:58 +0000)]
AMDGPU: Fix asan errors when folding operands

This was failing when trying to fold immediates into operand 1 of a
phi, which only has one statically known operand.

llvm-svn: 289337

7 years ago[X86][SSE] Move ZeroVector creation into the shuffle pattern case where its actually...
Simon Pilgrim [Sat, 10 Dec 2016 19:49:55 +0000 (19:49 +0000)]
[X86][SSE] Move ZeroVector creation into the shuffle pattern case where its actually used.

Also fix the ZeroVector's type - I've no idea how this hasn't caused problems........

llvm-svn: 289336

7 years ago[AVX-512] Add support for lowering (v2i64 (fp_to_sint (v2f32))) to vcvttps2uqq when...
Craig Topper [Sat, 10 Dec 2016 19:35:39 +0000 (19:35 +0000)]
[AVX-512] Add support for lowering (v2i64 (fp_to_sint (v2f32))) to vcvttps2uqq when AVX512DQ and AVX512VL are available.

llvm-svn: 289335

7 years ago[X86] Clarify indentation. NFC
Craig Topper [Sat, 10 Dec 2016 19:35:36 +0000 (19:35 +0000)]
[X86] Clarify indentation. NFC

llvm-svn: 289334

7 years ago[X86] Combine LowerFP_TO_SINT and LowerFP_TO_UINT. They only differ by a single boole...
Craig Topper [Sat, 10 Dec 2016 19:35:33 +0000 (19:35 +0000)]
[X86] Combine LowerFP_TO_SINT and LowerFP_TO_UINT. They only differ by a single boolean flag passed to a helper function. Just check the opcode and create the flag.

llvm-svn: 289333

7 years ago[InstSimplify] improve function name; NFC
Sanjay Patel [Sat, 10 Dec 2016 17:40:47 +0000 (17:40 +0000)]
[InstSimplify] improve function name; NFC

llvm-svn: 289332

7 years ago[mips] Eliminate else-after-return. NFC
Simon Atanasyan [Sat, 10 Dec 2016 17:30:09 +0000 (17:30 +0000)]
[mips] Eliminate else-after-return. NFC

llvm-svn: 289331

7 years agoCreate a TPI stream only when /debugpdb is given.
Rui Ueyama [Sat, 10 Dec 2016 17:23:23 +0000 (17:23 +0000)]
Create a TPI stream only when /debugpdb is given.

Adding type records to TPI stream is too time consuming.
It is reported that linking chrome_child.dll took 5 minutes.

llvm-svn: 289330

7 years ago[SelectionDAG] Add ability for computeKnownBits to peek through bitcasts from 'large...
Simon Pilgrim [Sat, 10 Dec 2016 17:00:00 +0000 (17:00 +0000)]
[SelectionDAG] Add ability for computeKnownBits to peek through bitcasts from 'large element' scalar/vector to 'small element' vector.

Extension to D27129 which already supported bitcasts from 'small element' vector to 'large element' scalar/vector types.

llvm-svn: 289329

7 years agoSimplify parseShowColorsArgs logic, NFC.
Yaron Keren [Sat, 10 Dec 2016 14:55:14 +0000 (14:55 +0000)]
Simplify parseShowColorsArgs logic, NFC.

llvm-svn: 289328

7 years ago[X86][XOP] Add permil2ps buildvector combine test
Simon Pilgrim [Sat, 10 Dec 2016 13:45:08 +0000 (13:45 +0000)]
[X86][XOP] Add permil2ps buildvector combine test

llvm-svn: 289327

7 years ago[AVR] Add a stub README file
Dylan McKay [Sat, 10 Dec 2016 12:08:19 +0000 (12:08 +0000)]
[AVR] Add a stub README file

llvm-svn: 289326

7 years ago[AVR] Fix and clean up the inline assembly tests
Dylan McKay [Sat, 10 Dec 2016 11:49:07 +0000 (11:49 +0000)]
[AVR] Fix and clean up the inline assembly tests

There was a bug where we would hit an assertion if 'Q' was used as a
constraint.

I also removed hardcoded register names to prefer regexes so the tests
don't break when the register allocator changes.

llvm-svn: 289325

7 years ago[AVR] Explicitly set the target in all CodeGen tests
Dylan McKay [Sat, 10 Dec 2016 11:23:16 +0000 (11:23 +0000)]
[AVR] Explicitly set the target in all CodeGen tests

This seems to have caused failures on the buildbot.

llvm-svn: 289324

7 years ago[AVR] Fix an inline asm assertion which would always trigger
Dylan McKay [Sat, 10 Dec 2016 11:18:37 +0000 (11:18 +0000)]
[AVR] Fix an inline asm assertion which would always trigger

It looks like some time in the past, constraint codes were changed from
chars being passed around to enums.

llvm-svn: 289323

7 years ago[AVR] Use the register scavenger when expanding 'LDDW' instructions
Dylan McKay [Sat, 10 Dec 2016 10:51:55 +0000 (10:51 +0000)]
[AVR] Use the register scavenger when expanding 'LDDW' instructions

Summary: This gets rid of the hardcoded 'r0' that was used previously.

Reviewers: asl

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D27567

llvm-svn: 289322

7 years ago[AVR] Support stores to undefined pointers
Dylan McKay [Sat, 10 Dec 2016 10:16:13 +0000 (10:16 +0000)]
[AVR] Support stores to undefined pointers

This would previously trigger an assertion error in AVRISelDAGToDAG.

llvm-svn: 289321

7 years agoFix shared library build
Ismail Donmez [Sat, 10 Dec 2016 09:29:47 +0000 (09:29 +0000)]
Fix shared library build

llvm-svn: 289320

7 years ago[PM] Further broaden this test's regex as both the CGSCC and Function
Chandler Carruth [Sat, 10 Dec 2016 07:59:59 +0000 (07:59 +0000)]
[PM] Further broaden this test's regex as both the CGSCC and Function
inner AM proxies are now being rendered differently.

llvm-svn: 289319

7 years ago[PM] Try to support the new spelling of one of the proxy names that are
Chandler Carruth [Sat, 10 Dec 2016 07:46:51 +0000 (07:46 +0000)]
[PM] Try to support the new spelling of one of the proxy names that are
showing up on the build bots.

llvm-svn: 289318

7 years ago[PM] Support invalidation of inner analysis managers from a pass over the outer IR...
Chandler Carruth [Sat, 10 Dec 2016 06:34:44 +0000 (06:34 +0000)]
[PM] Support invalidation of inner analysis managers from a pass over the outer IR unit.

Summary:
This never really got implemented, and was very hard to test before
a lot of the refactoring changes to make things more robust. But now we
can test it thoroughly and cleanly, especially at the CGSCC level.

The core idea is that when an inner analysis manager proxy receives the
invalidation event for the outer IR unit, it needs to walk the inner IR
units and propagate it to the inner analysis manager for each of those
units. For example, each function in the SCC needs to get an
invalidation event when the SCC gets one.

The function / module interaction is somewhat boring here. This really
becomes interesting in the face of analysis-backed IR units. This patch
effectively handles all of the CGSCC layer's needs -- both invalidating
SCC analysis and invalidating function analysis when an SCC gets
invalidated.

However, this second aspect doesn't really handle the
LoopAnalysisManager well at this point. That one will need some change
of design in order to fully integrate, because unlike the call graph,
the entire function behind a LoopAnalysis's results can vanish out from
under us, and we won't even have a cached API to access. I'd like to try
to separate solving the loop problems into a subsequent patch though in
order to keep this more focused so I've adapted them to the API and
updated the tests that immediately fail, but I've not added the level of
testing and validation at that layer that I have at the CGSCC layer.

An important aspect of this change is that the proxy for the
FunctionAnalysisManager at the SCC pass layer doesn't work like the
other proxies for an inner IR unit as it doesn't directly manage the
FunctionAnalysisManager and invalidation or clearing of it. This would
create an ever worsening problem of dual ownership of this
responsibility, split between the module-level FAM proxy and this
SCC-level FAM proxy. Instead, this patch changes the SCC-level FAM proxy
to work in terms of the module-level proxy and defer to it to handle
much of the updates. It only does SCC-specific invalidation. This will
become more important in subsequent patches that support more complex
invalidaiton scenarios.

Reviewers: jlebar

Subscribers: mehdi_amini, mcrosier, mzolotukhin, llvm-commits

Differential Revision: https://reviews.llvm.org/D27197

llvm-svn: 289317

7 years ago[X86] Use X86ISD::CVTTP2SI and X86ISD::CVTTP2UI for lowering 128-bit cvttps2qq and...
Craig Topper [Sat, 10 Dec 2016 06:02:48 +0000 (06:02 +0000)]
[X86] Use X86ISD::CVTTP2SI and X86ISD::CVTTP2UI for lowering 128-bit cvttps2qq and cvttps2uqq intrinsics since there is a mismatch between number of input and output elements.

Ideally ISD::FP_TO_SINT and ISD::FP_TO_UINT would only be used for cases with the same number of input and output elements.

Similar things have already been done for other convert intrinsics.

llvm-svn: 289316

7 years ago[AVR] Fix a bunch of incorrect assertion messages
Dylan McKay [Sat, 10 Dec 2016 05:48:48 +0000 (05:48 +0000)]
[AVR] Fix a bunch of incorrect assertion messages

These should've been checking whether the immediate is a 6-bit unsigned
integer.

If the immediate was '63', this would cause an assertion error which
shouldn't have occurred.

llvm-svn: 289315

7 years ago[libFuzzer] test cleanup (3)
Kostya Serebryany [Sat, 10 Dec 2016 02:48:42 +0000 (02:48 +0000)]
[libFuzzer] test cleanup (3)

llvm-svn: 289314

7 years ago[libFuzzer] test cleanup (2)
Kostya Serebryany [Sat, 10 Dec 2016 02:47:00 +0000 (02:47 +0000)]
[libFuzzer] test cleanup (2)

llvm-svn: 289313

7 years ago[libFuzzer] test cleanup
Kostya Serebryany [Sat, 10 Dec 2016 02:45:56 +0000 (02:45 +0000)]
[libFuzzer] test cleanup

llvm-svn: 289312

7 years ago[libFuzzer] switch all libFuzzer tests to use -fsanitize-coverage=trace-pc-guard...
Kostya Serebryany [Sat, 10 Dec 2016 02:26:23 +0000 (02:26 +0000)]
[libFuzzer] switch all libFuzzer tests to use -fsanitize-coverage=trace-pc-guard. Support for the previosly used instrumentation will be removed in the following changes

llvm-svn: 289311

7 years ago[libFuzzer] use __sanitizer_get_module_and_offset_for_pc to get the module name while...
Kostya Serebryany [Sat, 10 Dec 2016 01:19:35 +0000 (01:19 +0000)]
[libFuzzer] use __sanitizer_get_module_and_offset_for_pc to get the module name while printing the coverage

llvm-svn: 289310

7 years ago[analyzer] Improve VirtualCallChecker diagnostics and move into optin package.
Devin Coughlin [Sat, 10 Dec 2016 01:16:09 +0000 (01:16 +0000)]
[analyzer] Improve VirtualCallChecker diagnostics and move into optin package.

The VirtualCallChecker is in alpha because its interprocedural diagnostics
represent the call path textually in the diagnostic message rather than with a
path sensitive diagnostic.

This patch turns off the AST-based interprocedural analysis in the checker so
that no call path is needed and improves with diagnostic text. With these
changes, the checker is ready to be moved into the optin package.

Ultimately the right fix is to rewrite this checker to be path sensitive -- but
there is still value in enabling the checker for intraprocedural analysis only
The interprocedural mode can be re-enabled with an -analyzer-config flag.

Differential Revision: https://reviews.llvm.org/D26768

llvm-svn: 289309

7 years ago[clang-format] Another attempt at python 3 compatibility
Vedant Kumar [Sat, 10 Dec 2016 00:54:13 +0000 (00:54 +0000)]
[clang-format] Another attempt at python 3 compatibility

The entries in vim.current.buffer appear to be decoded strings, which
means that python3 won't allow invoking 'decode' on them. Keep the old
behavior when running under python2, but skip the error-inducing decode
step with python3..

llvm-svn: 289308

7 years agoAMDGPU: Fix AMDGPUPromoteAlloca breaking addrspacecasts
Matt Arsenault [Sat, 10 Dec 2016 00:52:50 +0000 (00:52 +0000)]
AMDGPU: Fix AMDGPUPromoteAlloca breaking addrspacecasts

The users of the addrspacecast were having their types incorrectly
changed, producing invalid bitcasts between address spaces.

llvm-svn: 289307

7 years agoAMDGPU: Fix handling of 16-bit immediates
Matt Arsenault [Sat, 10 Dec 2016 00:39:12 +0000 (00:39 +0000)]
AMDGPU: Fix handling of 16-bit immediates

Since 32-bit instructions with 32-bit input immediate behavior
are used to materialize 16-bit constants in 32-bit registers
for 16-bit instructions, determining the legality based
on the size is incorrect. Change operands to have the size
specified in the type.

Also adds a workaround for a disassembler bug that
produces an immediate MCOperand for an operand that
is supposed to be OPERAND_REGISTER.

The assembler appears to accept out of bounds immediates and
truncates them, but this seems to be an issue for 32-bit
already.

llvm-svn: 289306

7 years agoRename find(SymbolVersion) to avoid overloading with find(StringRef).
Rui Ueyama [Sat, 10 Dec 2016 00:34:06 +0000 (00:34 +0000)]
Rename find(SymbolVersion) to avoid overloading with find(StringRef).

llvm-svn: 289293

7 years agoAMDGPU: Fix vintrp disassembly
Matt Arsenault [Sat, 10 Dec 2016 00:29:55 +0000 (00:29 +0000)]
AMDGPU: Fix vintrp disassembly

llvm-svn: 289292

7 years agoAMDGPU: Change vintrp printing to better match sc
Matt Arsenault [Sat, 10 Dec 2016 00:23:12 +0000 (00:23 +0000)]
AMDGPU: Change vintrp printing to better match sc

Some of the immediates need to be printed differently
eventually.

llvm-svn: 289291

7 years ago[ubsan] Treat ObjC's BOOL as if its range is always {0, 1}
Vedant Kumar [Fri, 9 Dec 2016 23:48:18 +0000 (23:48 +0000)]
[ubsan] Treat ObjC's BOOL as if its range is always {0, 1}

On some Apple platforms, the ObjC BOOL type is defined as a signed char.
When performing instrumentation for -fsanitize=bool, we'd like to treat
the range of BOOL like it's always {0, 1}. While we can't change clang's
IRGen for char-backed BOOL's due to ABI compatibility concerns, we can
teach ubsan to catch potential abuses of this type.

rdar://problem/29502773

Differential Revision: https://reviews.llvm.org/D27607

llvm-svn: 289290

7 years agoCOFF: Fix test failure on Windows.
Peter Collingbourne [Fri, 9 Dec 2016 23:34:49 +0000 (23:34 +0000)]
COFF: Fix test failure on Windows.

llvm-svn: 289289

7 years agoBigger-hammer REQUIRES to fix Windows bot.
Paul Robinson [Fri, 9 Dec 2016 23:08:17 +0000 (23:08 +0000)]
Bigger-hammer REQUIRES to fix Windows bot.

llvm-svn: 289288

7 years ago[CUDA,Driver] Added --no-cuda-gpu-arch= option.
Artem Belevich [Fri, 9 Dec 2016 22:59:17 +0000 (22:59 +0000)]
[CUDA,Driver] Added --no-cuda-gpu-arch= option.

This allows us to negate preceding --cuda-gpu-arch=X.
This comes handy when user needs to override default
flags set for them by the build system.

Differential Revision: https://reviews.llvm.org/D27631

llvm-svn: 289287

7 years ago[c++17] P0490R0, NB comment FI 20: allow direct-initialization of decomposition decla...
Richard Smith [Fri, 9 Dec 2016 22:56:20 +0000 (22:56 +0000)]
[c++17] P0490R0, NB comment FI 20: allow direct-initialization of decomposition declarations.

llvm-svn: 289286

7 years agoFix unused variable warnings. NFCI.
Simon Pilgrim [Fri, 9 Dec 2016 22:45:21 +0000 (22:45 +0000)]
Fix unused variable warnings. NFCI.

llvm-svn: 289285

7 years agoFix a bogus warning.
Rafael Espindola [Fri, 9 Dec 2016 22:40:49 +0000 (22:40 +0000)]
Fix a bogus warning.

We first decide that the symbol is global, than that it should have
version foo. Since it was already not the default version, we were
producing a bogus warning.

llvm-svn: 289284

7 years ago[libcxx] [test] Fix string_view tests.
Stephan T. Lavavej [Fri, 9 Dec 2016 22:35:53 +0000 (22:35 +0000)]
[libcxx] [test] Fix string_view tests.

test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp
Passing -1 to size_t triggers signed/unsigned mismatch warnings because it's
a value-modifying conversion. Add static_cast<size_t> to soothe the compiler.
(This file refers to size_t unqualified.)

test/std/strings/string.view/string.view.ops/substr.pass.cpp
Add <algorithm> for std::min() and <stdexcept> for std::out_of_range.

N4618 21.4.2.4 [string.view.access]/1: "Requires: pos < size()."
/4: "[ Note: Unlike basic_string::operator[], basic_string_view::operator[](size())
has undefined behavior instead of returning charT(). -end note ]"

Fixes D27633.

llvm-svn: 289283

7 years ago[AMDGPU, PowerPC, TableGen] Fix some Clang-tidy modernize and Include What You Use...
Eugene Zelenko [Fri, 9 Dec 2016 22:06:55 +0000 (22:06 +0000)]
[AMDGPU, PowerPC, TableGen] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

llvm-svn: 289282

7 years agoSpeculative REQUIRES to fix Windows bot.
Paul Robinson [Fri, 9 Dec 2016 21:59:00 +0000 (21:59 +0000)]
Speculative REQUIRES to fix Windows bot.

llvm-svn: 289281

7 years agoCOFF: New symbol table design.
Peter Collingbourne [Fri, 9 Dec 2016 21:55:24 +0000 (21:55 +0000)]
COFF: New symbol table design.

This ports the ELF linker's symbol table design, introduced in r268178,
to the COFF linker.

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

llvm-svn: 289280

7 years ago[X86] Regenerate test
Simon Pilgrim [Fri, 9 Dec 2016 21:53:12 +0000 (21:53 +0000)]
[X86] Regenerate test

llvm-svn: 289279

7 years ago[ELF] Fix test case thinko from r289152
Meador Inge [Fri, 9 Dec 2016 21:51:37 +0000 (21:51 +0000)]
[ELF] Fix test case thinko from r289152

It was pointed out in a post-commit review that the tests
were structured oddly.  Fixed thusly.

llvm-svn: 289278

7 years agoAdd support for R_X86_64_GOT64.
Rafael Espindola [Fri, 9 Dec 2016 21:46:39 +0000 (21:46 +0000)]
Add support for R_X86_64_GOT64.

llvm-svn: 289277

7 years ago[modules] Add optional out-param to ASTReader::ReadAST for imported submodules.
Graydon Hoare [Fri, 9 Dec 2016 21:45:49 +0000 (21:45 +0000)]
[modules] Add optional out-param to ASTReader::ReadAST for imported submodules.

Summary:
The Swift frontend is acquiring the ability to load non-module PCH files containing
bridging definitions from C/ObjC. As part of this work, it needs to know which submodules
were imported by a PCH in order to wrap them in local Swift modules. This information
is collected by ASTReader::ReadAST in a local vector, but is currently kept private.

The change here is just to make the type of the vector elements public, and provide
an optional out-parameter to the ReadAST method to provide the vector's contents to
a caller after a successful read.

Reviewers: manmanren, rsmith, doug.gregor

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D27580

llvm-svn: 289276

7 years agoRemove special error recovery for ::(id)
Reid Kleckner [Fri, 9 Dec 2016 21:10:43 +0000 (21:10 +0000)]
Remove special error recovery for ::(id)

The code pattern used to implement the token rewriting hack doesn't
interact well with token caching in the pre-processor. As a result,
clang would crash on 'int f(::(id));' while doing a tenative parse of
the contents of the outer parentheses. The original code from PR11852
still doesn't crash the compiler.

This error recovery also often does the wrong thing with member function
pointers. The test case from the original PR doesn't recover the right
way either:
  void S::(*pf)() = S::f; // should be 'void (S::*pf)()'

Instead we were recovering as 'void S::*pf()', which is still wrong.

If we still think that users mistakenly parenthesize identifiers in
nested name specifiers, we should change clang to intentionally parse
that form with an error, rather than doing a token rewrite.

Fixes PR26623, but I think there will be many more bugs like this around
token rewriting in the parser.

Reviewers: rsmith, rtrieu

Differential Revision: https://reviews.llvm.org/D25882

llvm-svn: 289273

7 years agoAMDGPU: Cleanup checks in sext_inreg test
Matt Arsenault [Fri, 9 Dec 2016 21:10:41 +0000 (21:10 +0000)]
AMDGPU: Cleanup checks in sext_inreg test

llvm-svn: 289272

7 years agoCOFF: Support both /lldmap and /lldmap:<file>
Hans Wennborg [Fri, 9 Dec 2016 20:54:44 +0000 (20:54 +0000)]
COFF: Support both /lldmap and /lldmap:<file>

The former option bases the filename on the output name, e.g. if the
link output is a.exe, the map will be written to a.map. This matches the
behaviour of link.exe's /MAP option and is useful for creating a map
file of each executable when building a large project.

Differential Revision: https://reviews.llvm.org/D27595

llvm-svn: 289271

7 years agoCOFF: Move a call to toString() out of the hot path.
Peter Collingbourne [Fri, 9 Dec 2016 20:51:33 +0000 (20:51 +0000)]
COFF: Move a call to toString() out of the hot path.

Profiling revealed that we were spending 5% of our time linking
chrome_child.dll just in this call to toString().

Differential Revision: https://reviews.llvm.org/D27628

llvm-svn: 289270

7 years agoFix LLVM's use of DW_OP_bit_piece in DWARF expressions.
Adrian Prantl [Fri, 9 Dec 2016 20:43:40 +0000 (20:43 +0000)]
Fix LLVM's use of DW_OP_bit_piece in DWARF expressions.

LLVM's use of DW_OP_bit_piece is incorrect and a based on a
misunderstanding of the wording in the DWARF specification. The offset
argument of DW_OP_bit_piece refers to the offset into the location
that is on the top of the DWARF expression stack, and not an offset
into the source variable. This has since also been clarified in the
DWARF specification.

This patch fixes all uses of DW_OP_bit_piece to emit the correct
offset and simplifies the DwarfExpression class to semi-automaticaly
emit empty DW_OP_pieces to adjust the offset of the source variable,
thus simplifying the code using DwarfExpression.

While this is an incompatible bugfix, in practice I don't expect this
to be much of a problem since LLVM's old interpretation and the
correct interpretation of DW_OP_bit_piece differ only when there are
gaps in the fragmented locations of the described variables or if
individual fragments are smaller than a byte. LLDB at least won't
interpret locations with gaps in them because is has no way to present
undefined bits in a variable, and there is a high probability that an
old-form expression will be malformed when interpreted correctly,
because the DW_OP_bit_piece offset will be outside of the location at
the top of the stack.

As a nice side-effect, this patch enables us to use a more efficient
encoding for subregisters: In order to express a sub-register at a
non-zero offset we now use a DW_OP_bit_piece instead of shifting the
value into place manually.

This patch also adds missing test coverage for code paths that weren't
exercised before.

<rdar://problem/29335809>
Differential Revision: https://reviews.llvm.org/D27550

llvm-svn: 289266

7 years agoAdd README describing the intention of test/CodeGen/MIR
Matthias Braun [Fri, 9 Dec 2016 20:16:12 +0000 (20:16 +0000)]
Add README describing the intention of test/CodeGen/MIR

llvm-svn: 289265

7 years ago[libcxx] [test] Add LIBCPP_ASSERT_NOEXCEPT/LIBCPP_ASSERT_NOT_NOEXCEPT, remove an...
Stephan T. Lavavej [Fri, 9 Dec 2016 19:53:08 +0000 (19:53 +0000)]
[libcxx] [test] Add LIBCPP_ASSERT_NOEXCEPT/LIBCPP_ASSERT_NOT_NOEXCEPT, remove an unused variable.

test/support/test_macros.h
For convenience/greppability, add macros for libcxx-specific static_asserts about noexceptness.

(Moving the definitions of ASSERT_NOEXCEPT/ASSERT_NOT_NOEXCEPT isn't technically necessary
because they're macros, but I think it's better style to define stuff before using it.)

test/std/utilities/tuple/tuple.tuple/tuple.apply/apply.pass.cpp
There was a completely unused `TrackedCallable obj;`.

apply() isn't depicted with conditional noexcept in C++17.

test/std/utilities/tuple/tuple.tuple/tuple.apply/make_from_tuple.pass.cpp
Now that we have LIBCPP_ASSERT_NOEXCEPT, use it.

Fixes D27622.

llvm-svn: 289264

7 years agoAMDGPU/SI: Remove XNACK feature from CI
Marek Olsak [Fri, 9 Dec 2016 19:49:58 +0000 (19:49 +0000)]
AMDGPU/SI: Remove XNACK feature from CI

Summary: CI doesn't have XNACK.

Reviewers: tstellarAMD

Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye

Differential Revision: https://reviews.llvm.org/D27175

llvm-svn: 289263

7 years agoAMDGPU/SI: Don't reserve XNACK when it's disabled
Marek Olsak [Fri, 9 Dec 2016 19:49:54 +0000 (19:49 +0000)]
AMDGPU/SI: Don't reserve XNACK when it's disabled

Summary:
This frees 2 additional scalar registers.

These are results from all of my 3 patches combined:

  Polaris:
    Spilled SGPRs: 2231 -> 1517 (-32.00 %)

  Tonga:
    Spilled SGPRs: 3829 -> 2608 (-31.89 %)
    Spilled VGPRs: 100 -> 84 (-16.00 %)

  Tonga even spills SGPRs via VGPRs to scratch. That's a compute shader
  limited to 64 VGPRs.

Reviewers: tstellarAMD

Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye

Differential Revision: https://reviews.llvm.org/D27151

llvm-svn: 289262

7 years agoAMDGPU/SI: Don't reserve FLAT_SCR on non-HSA targets & without stack objects
Marek Olsak [Fri, 9 Dec 2016 19:49:48 +0000 (19:49 +0000)]
AMDGPU/SI: Don't reserve FLAT_SCR on non-HSA targets & without stack objects

Summary: This frees 2 scalar registers.

Reviewers: tstellarAMD

Subscribers: qcolombet, arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye

Differential Revision: https://reviews.llvm.org/D27150

llvm-svn: 289261

7 years agoAMDGPU/SI: Allow using SGPRs 96-101 on VI
Marek Olsak [Fri, 9 Dec 2016 19:49:40 +0000 (19:49 +0000)]
AMDGPU/SI: Allow using SGPRs 96-101 on VI

Summary:
There is no point in setting SGPRS=104, because VI allocates SGPRs
in multiples of 16, so 104 -> 112. That enables us to use all 102 SGPRs
for general purposes.

Reviewers: tstellarAMD

Subscribers: qcolombet, arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye

Differential Revision: https://reviews.llvm.org/D27149

llvm-svn: 289260

7 years agoImprove error message when referencing a non-tag type with a tag
Reid Kleckner [Fri, 9 Dec 2016 19:47:58 +0000 (19:47 +0000)]
Improve error message when referencing a non-tag type with a tag

Other compilers accept invalid code here that we reject, and we need a
better error message to try to convince users that the code is really
incorrect. Consider:
  class Foo {
    typedef MyIterHelper<Foo> iterator;
    friend class iterator;
  };

Previously our wording was "elaborated type refers to a typedef".
"elaborated type" isn't widely known terminology, so the new diagnostic
says "typedef 'iterator' cannot be referenced with class specifier".

Reviewers: rsmith

Differential Revision: https://reviews.llvm.org/D25216

llvm-svn: 289259

7 years agoAdd tests for a couple more DRs.
Richard Smith [Fri, 9 Dec 2016 19:35:45 +0000 (19:35 +0000)]
Add tests for a couple more DRs.

llvm-svn: 289258

7 years agoRemove /Zc:sizedDealloc- from the MSVC build
Reid Kleckner [Fri, 9 Dec 2016 19:20:28 +0000 (19:20 +0000)]
Remove /Zc:sizedDealloc- from the MSVC build

According to the connect bug
(https://connect.microsoft.com/VisualStudio/feedback/details/1351894),
this was only necessary with pre-release versions of MSVC 2015.

Fixes PR23513

llvm-svn: 289257

7 years ago[DWARF] Suppress .loc directives from CFI instructions
Paul Robinson [Fri, 9 Dec 2016 19:15:32 +0000 (19:15 +0000)]
[DWARF] Suppress .loc directives from CFI instructions

Like DBG_VALUE, these emit nothing to the .text section, and sometimes
have no source location specified.  Just ignore them.

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

llvm-svn: 289256

7 years agocxx_dr_status: update to latest issue list and add a couple more tests.
Richard Smith [Fri, 9 Dec 2016 19:11:50 +0000 (19:11 +0000)]
cxx_dr_status: update to latest issue list and add a couple more tests.

llvm-svn: 289255

7 years agoMove .mir tests to appropriate directories
Matthias Braun [Fri, 9 Dec 2016 19:08:15 +0000 (19:08 +0000)]
Move .mir tests to appropriate directories

test/CodeGen/MIR should contain tests that intent to test the MIR
printing or parsing. Tests that test something else should be in
test/CodeGen/TargetName even when they are written in .mir.

As a rule of thumb, only tests using "llc -run-pass none" should be in
test/CodeGen/MIR.

llvm-svn: 289254

7 years ago[DFSAN] Another unstable test in AArch64 breaking bots unnecessarily
Renato Golin [Fri, 9 Dec 2016 19:02:04 +0000 (19:02 +0000)]
[DFSAN] Another unstable test in AArch64 breaking bots unnecessarily

llvm-svn: 289253

7 years agoAdd support for non-zero null pointer for C and OpenCL
Yaxun Liu [Fri, 9 Dec 2016 19:01:11 +0000 (19:01 +0000)]
Add support for non-zero null pointer for C and OpenCL

In amdgcn target, null pointers in global, constant, and generic address space take value 0 but null pointers in private and local address space take value -1. Currently LLVM assumes all null pointers take value 0, which results in incorrectly translated IR. To workaround this issue, instead of emit null pointers in local and private address space, a null pointer in generic address space is emitted and casted to local and private address space.

Tentative definition of global variables with non-zero initializer will have weak linkage instead of common linkage since common linkage requires zero initializer and does not have explicit section to hold the non-zero value.

Virtual member functions getNullPointer and performAddrSpaceCast are added to TargetCodeGenInfo which by default returns ConstantPointerNull and emitting addrspacecast instruction. A virtual member function getNullPointerValue is added to TargetInfo which by default returns 0. Each target can override these virtual functions to get target specific null pointer and the null pointer value for specific address space, and perform specific translations for addrspacecast.

Wrapper functions getNullPointer is added to CodegenModule and getTargetNullPointerValue is added to ASTContext to facilitate getting the target specific null pointers and their values.

This change has no effect on other targets except amdgcn target. Other targets can provide support of non-zero null pointer in a similar way.

This change only provides support for non-zero null pointer for C and OpenCL. Supporting for other languages will be added later incrementally.

Differential Revision: https://reviews.llvm.org/D26196

llvm-svn: 289252