platform/upstream/llvm.git
8 years agoMake RecursiveASTVisitor visit lambda capture initialization expressions
Martin Bohme [Mon, 1 Aug 2016 12:15:46 +0000 (12:15 +0000)]
Make RecursiveASTVisitor visit lambda capture initialization expressions

Summary:
Lambda capture initializations are part of the explicit source code and
therefore should be visited by default but, so far, RecursiveASTVisitor does not
visit them.

This appears to be an oversight. Because the lambda body needs custom handling
(calling TraverseLambdaBody()), the DEF_TRAVERSE_STMT for LambdaExpr sets
ShouldVisitChildren to false but then neglects to visit the lambda capture
initializations. This patch adds code to visit the expressions associated with
lambda capture initializations.

Reviewers: klimek

Subscribers: cfe-commits

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

llvm-svn: 277342

8 years ago[X86] Use implicit masking of SHLD/SHRD shift double instructions
Simon Pilgrim [Mon, 1 Aug 2016 12:11:43 +0000 (12:11 +0000)]
[X86] Use implicit masking of SHLD/SHRD shift double instructions

Similar to the regular shift instructions, SHLD/SHRD only use the bottom bits of the shift value

llvm-svn: 277341

8 years ago[clang-tidy] remove trailing whitespaces and retab
Kirill Bobyrev [Mon, 1 Aug 2016 12:06:18 +0000 (12:06 +0000)]
[clang-tidy] remove trailing whitespaces and retab

llvm-svn: 277340

8 years ago[clang-tidy] Prepare modernize-loop-convert for upcoming changes in D22566
Martin Bohme [Mon, 1 Aug 2016 11:29:17 +0000 (11:29 +0000)]
[clang-tidy] Prepare modernize-loop-convert for upcoming changes in D22566

Summary:
D22566 will change RecursiveASTVisitor so that it descends into the initialization expressions for lambda captures.

modernize-loop-convert needs to be prepared for this so that it does not interpret these initialization expressions as invalid uses of the loop variable. The change has no ill effects without D22566 in place, i.e. the change does not depend on D22566.

Reviewers: klimek

Subscribers: cfe-commits

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

llvm-svn: 277339

8 years ago[analyzer] Fix execution permissions for the scan-build-py scripts.
Artem Dergachev [Mon, 1 Aug 2016 10:55:59 +0000 (10:55 +0000)]
[analyzer] Fix execution permissions for the scan-build-py scripts.

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

llvm-svn: 277338

8 years agoFixed test check ordering issue on windows buildbots
Simon Pilgrim [Mon, 1 Aug 2016 10:40:15 +0000 (10:40 +0000)]
Fixed test check ordering issue on windows buildbots

llvm-svn: 277337

8 years agoChanges related to new implementation of tooling::Replacements as class.
Eric Liu [Mon, 1 Aug 2016 10:16:39 +0000 (10:16 +0000)]
Changes related to new implementation of tooling::Replacements as class.

Summary: See http://reviews.llvm.org/D21748 for details.

Reviewers: djasper, klimek

Subscribers: cfe-commits

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

llvm-svn: 277336

8 years agoImplement tooling::Replacements as a class.
Eric Liu [Mon, 1 Aug 2016 10:16:37 +0000 (10:16 +0000)]
Implement tooling::Replacements as a class.

Summary:
- Implement clang::tooling::Replacements as a class to provide interfaces to
  control how replacements for a single file are combined and provide guarantee
  on the order of replacements being applied.
- tooling::Replacements only contains replacements for the same file now.
  Use std::map<std::string, tooling::Replacements> to represent multi-file
  replacements.
- Error handling for the interface change will be improved in followup patches.

Reviewers: djasper, klimek

Subscribers: cfe-commits

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

llvm-svn: 277335

8 years agoAllow .exe extension to ld to fix test with mingw.
Yaron Keren [Mon, 1 Aug 2016 10:14:54 +0000 (10:14 +0000)]
Allow .exe extension to ld to fix test with mingw.

llvm-svn: 277334

8 years agoFixed MSVC out of range shift warning
Simon Pilgrim [Mon, 1 Aug 2016 09:40:38 +0000 (09:40 +0000)]
Fixed MSVC out of range shift warning

llvm-svn: 277333

8 years ago[SimplifyCFG] Fix nasty RAUW bug from r277325
James Molloy [Mon, 1 Aug 2016 09:34:48 +0000 (09:34 +0000)]
[SimplifyCFG] Fix nasty RAUW bug from r277325

Using RAUW was wrong here; if we have a switch transform such as:
  18 -> 6 then
  6 -> 0

If we use RAUW, while performing the second transform the  *transformed* 6
from the first will be also replaced, so we end up with:
  18 -> 0
  6 -> 0

Found by clang stage2 bootstrap; testcase added.

llvm-svn: 277332

8 years ago[AArch64] Return the correct size for TLSDESC_CALLSEQ
Diana Picus [Mon, 1 Aug 2016 08:38:49 +0000 (08:38 +0000)]
[AArch64] Return the correct size for TLSDESC_CALLSEQ

The branch relaxation pass is computing the wrong offsets because it assumes
TLSDESC_CALLSEQ eats up 4 bytes, when in fact it is lowered to an instruction
sequence taking up 16 bytes. This can become a problem in huge files with lots
of TLS accesses, as it may slowly move branch targets out of the range computed
by the branch relaxation pass.

Fixes PR24234 https://llvm.org/bugs/show_bug.cgi?id=24234

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

llvm-svn: 277331

8 years ago[AVX-512] Fix a test missed in r277327.
Craig Topper [Mon, 1 Aug 2016 08:15:30 +0000 (08:15 +0000)]
[AVX-512] Fix a test missed in r277327.

llvm-svn: 277330

8 years ago[SimplifyCFG] Try and pacify buildbots after r277325
James Molloy [Mon, 1 Aug 2016 08:09:55 +0000 (08:09 +0000)]
[SimplifyCFG] Try and pacify buildbots after r277325

It looks like the two independent parts of the rotate operation (a lshr and shl) are being reordered on some bots. Add CHECK-DAGs to account for this.

llvm-svn: 277329

8 years agoscan-build: Add an option to show the description in the list of defect
Sylvestre Ledru [Mon, 1 Aug 2016 08:04:45 +0000 (08:04 +0000)]
scan-build: Add an option to show the description in the list of defect

Summary:
This patch adds an option //--show-description// to add the defect description to the list of defect. This helps to get a better understanding of the defect without opening the page.

For example, this is used for Firefox:
https://people.mozilla.org/~sledru/reports/fx-scan-build/

Reviewers: rizsotto.mailinglist, zaks.anna

Subscribers: cfe-commits

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

llvm-svn: 277328

8 years ago[AVX-512] Fix duplicate column in AVX512 execution dependency table that was preventi...
Craig Topper [Mon, 1 Aug 2016 07:55:33 +0000 (07:55 +0000)]
[AVX-512] Fix duplicate column in AVX512 execution dependency table that was preventing VMOVDQU32/VMOVDQA32 from being recognized. Fix a bug in the code that stops execution dependency fix from turning operations on 32-bit integer element types into operations on 64-bit integer element types.

llvm-svn: 277327

8 years ago[X86] Regenerate a test to pick up shuffle comments that were added at some point.
Craig Topper [Mon, 1 Aug 2016 07:55:24 +0000 (07:55 +0000)]
[X86] Regenerate a test to pick up shuffle comments that were added at some point.

llvm-svn: 277326

8 years ago[SimplifyCFG] Range reduce switches
James Molloy [Mon, 1 Aug 2016 07:45:11 +0000 (07:45 +0000)]
[SimplifyCFG] Range reduce switches

If a switch is sparse and all the cases (once sorted) are in arithmetic progression, we can extract the common factor out of the switch and create a dense switch. For example:

    switch (i) {
    case 5: ...
    case 9: ...
    case 13: ...
    case 17: ...
    }

can become:

    if ( (i - 5) % 4 ) goto default;
    switch ((i - 5) / 4) {
    case 0: ...
    case 1: ...
    case 2: ...
    case 3: ...
    }

or even better:

   switch ( ROTR(i - 5, 2) {
   case 0: ...
   case 1: ...
   case 2: ...
   case 3: ...
   }

The division and remainder operations could be costly so we only do this if the factor is a power of two, and emit a right-rotate instead of a divide/remainder sequence. Dense switches can be lowered significantly better than sparse switches and can even be transformed into lookup tables.

llvm-svn: 277325

8 years ago[asan] Reduce flakiness of heavy recovery mode tests.
Maxim Ostapenko [Mon, 1 Aug 2016 07:24:36 +0000 (07:24 +0000)]
[asan] Reduce flakiness of heavy recovery mode tests.

When we run halt_on_error-torture.cc with 10 threads and 20 iterations with halt_on_error=false:suppress_equal_pcs=false, we write 200 reports to 10.txt file and sometimes have collisions.
We have CHECK-COLLISION check that greps 'AddressSanitizer: nested bug in the same thread, aborting' message in 10.txt, but it doesn't contain this line.
If I don't redirect stderr > 10.txt 'AddressSanitizer: nested bug in the same thread, aborting' is printed to my screen as expected.
Same happens for halt_on_error_suppress_equal_pcs.cc and halt_on_error-torture.cc. This happens because of kernel bug: https://lkml.org/lkml/2014/2/17/324
Furtunately, we can fix these tests by implicitly setting O_APPEND for opened files (use >> instead of > for stderr redirection).

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

llvm-svn: 277324

8 years ago[mips] Clang generates unaligned offset for MSA instruction st.d
Hrvoje Varga [Mon, 1 Aug 2016 06:46:20 +0000 (06:46 +0000)]
[mips] Clang generates unaligned offset for MSA instruction st.d
Differential Revision: https://reviews.llvm.org/D19475

llvm-svn: 277323

8 years ago[AArch64] Register passes so they can be run by llc
Diana Picus [Mon, 1 Aug 2016 05:56:57 +0000 (05:56 +0000)]
[AArch64] Register passes so they can be run by llc

Initialize all AArch64-specific passes in the TargetMachine so they can be run
by llc. This can lead to conflicts in opt with some command line options that
share the same name as the pass, so I took this opportunity to do some cleanups:
* rename all relevant command line options from "aarch64-blah" to
  "aarch64-enable-blah" and update the tests accordingly
* run clang-format on their declarations
* move all these declarations to a common place (the TargetMachine) as opposed
  to having them scattered around (AArch64BranchRelaxation and
  AArch64AddressTypePromotion were the only offenders)

llvm-svn: 277322

8 years ago[AVX-512] Teach X86InstrInfo::getLargestLegalSuperClass to inflate to FR32X/FR64X...
Craig Topper [Mon, 1 Aug 2016 05:31:50 +0000 (05:31 +0000)]
[AVX-512] Teach X86InstrInfo::getLargestLegalSuperClass to inflate to FR32X/FR64X if AVX512 is supported and VR128X/VR256X if VLX is supported.

Had to update a stack folding test to clobber the other 16 registers since this now made them get used instead of spilling.

llvm-svn: 277321

8 years ago[AVX512] Replace scalar fp arithmetic intrinsics with native IR in an AVX512 test...
Craig Topper [Mon, 1 Aug 2016 04:29:16 +0000 (04:29 +0000)]
[AVX512] Replace scalar fp arithmetic intrinsics with native IR in an AVX512 test. The intrinsics aren't lowered to AVX512 instructions.

The intrinsics really should be removed and autoupgraded.

llvm-svn: 277320

8 years ago[AVX-512] Use FR32X/FR64X/VR128X/VR256X register classes in addRegisterClass if AVX51...
Craig Topper [Mon, 1 Aug 2016 04:29:13 +0000 (04:29 +0000)]
[AVX-512] Use FR32X/FR64X/VR128X/VR256X register classes in addRegisterClass if AVX512(for FR32X/FR64) or VLX(for VR128X/VR256) is supported. This is a minimal requirement to be able to allocate all 32 registers.

llvm-svn: 277319

8 years ago[X86] Move mask register handling into the main switch of getLoadStoreRegOpcode....
Craig Topper [Mon, 1 Aug 2016 04:29:11 +0000 (04:29 +0000)]
[X86] Move mask register handling into the main switch of getLoadStoreRegOpcode. No functional change intended.

llvm-svn: 277318

8 years agoRevert r277313 and r277314.
Sean Silva [Mon, 1 Aug 2016 04:16:09 +0000 (04:16 +0000)]
Revert r277313 and r277314.

They seem to trigger an LSan failure:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/15140/steps/check-llvm%20asan/logs/stdio

Revert "Add the tests for r277313"

This reverts commit r277314.

Revert "CodeExtractor : Add ability to preserve profile data."

This reverts commit r277313.

llvm-svn: 277317

8 years agoMove this test to x86-specific directory.
Sean Silva [Mon, 1 Aug 2016 03:22:05 +0000 (03:22 +0000)]
Move this test to x86-specific directory.

No bots have yelled yet, but this test references an x86 intrinsic.
Also, it invokes llc on x86 IR.

Fixup to r277315.

llvm-svn: 277316

8 years agoFix - CodeExtractor : Inherit Target Dependent Attributes from the parent function.
Sean Silva [Mon, 1 Aug 2016 03:15:32 +0000 (03:15 +0000)]
Fix - CodeExtractor : Inherit Target Dependent Attributes from the parent function.

When extracting a set of blocks make sure to inherit all of the target
dependent attributes to make sure that the function will be valid for
lowering. One example is the "target-features" attribute for x86, if the
extracted region has functionality that relies on a specific feature it
will fail to be lowered.
This also allows for extracted functions to be valid for inlining, at
least back into the parent function, as the target attributes are tested
when inlining for compatibility.

Patch by River Riddle!

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

llvm-svn: 277315

8 years agoAdd the tests for r277313
Sean Silva [Mon, 1 Aug 2016 03:04:34 +0000 (03:04 +0000)]
Add the tests for r277313

Forgot to `git add` them.

llvm-svn: 277314

8 years agoCodeExtractor : Add ability to preserve profile data.
Sean Silva [Mon, 1 Aug 2016 02:59:26 +0000 (02:59 +0000)]
CodeExtractor : Add ability to preserve profile data.

Added ability to estimate the entry count of the extracted function and
the branch probabilities of the exit branches.

Patch by River Riddle!

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

llvm-svn: 277313

8 years agoFix a bug in lit var def: remove extra space
Xinliang David Li [Mon, 1 Aug 2016 01:54:40 +0000 (01:54 +0000)]
Fix a bug in lit var def: remove extra space

llvm-svn: 277312

8 years ago[X86][SSE] Regenerate frem tests
Simon Pilgrim [Sun, 31 Jul 2016 21:59:23 +0000 (21:59 +0000)]
[X86][SSE] Regenerate frem tests

llvm-svn: 277311

8 years ago[X86][SSE] Regenerate fpext tests
Simon Pilgrim [Sun, 31 Jul 2016 21:55:33 +0000 (21:55 +0000)]
[X86][SSE] Regenerate fpext tests

llvm-svn: 277310

8 years agoFix the MemorySSA updating API to enable people to create memory accesses before...
Daniel Berlin [Sun, 31 Jul 2016 21:08:20 +0000 (21:08 +0000)]
Fix the MemorySSA updating API to enable people to create memory accesses before removing old ones

llvm-svn: 277309

8 years agoComment fixes to MemorySSA.h
Daniel Berlin [Sun, 31 Jul 2016 21:08:10 +0000 (21:08 +0000)]
Comment fixes to MemorySSA.h

llvm-svn: 277308

8 years agoAdd more gcc compatibility names to clang's cpuid.h
Dimitry Andric [Sun, 31 Jul 2016 20:23:23 +0000 (20:23 +0000)]
Add more gcc compatibility names to clang's cpuid.h

Summary:
Some cpuid bit defines are named slightly different from how gcc's
cpuid.h calls them.

Define a few more compatibility names to appease software built for gcc:

* `bit_PCLMUL`      alias of `bit_PCLMULQDQ`
* `bit_SSE4_1`      alias of `bit_SSE41`
* `bit_SSE4_2`      alias of `bit_SSE42`
* `bit_AES`         alias of `bit_AESNI`
* `bit_CMPXCHG8B`   alias of `bit_CX8`

While here, add the misssing 29th bit, `bit_F16C` (which is how gcc
calls this bit).

Reviewers: joerg, rsmith

Subscribers: bruno, cfe-commits

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

llvm-svn: 277307

8 years ago[X86] Simplify code for determing GR or FR reg classes by querying for super classes...
Craig Topper [Sun, 31 Jul 2016 20:20:08 +0000 (20:20 +0000)]
[X86] Simplify code for determing GR or FR reg classes by querying for super classes instead of manually listing individual classes.

llvm-svn: 277306

8 years ago[AVX512] Always use EVEX encodings for 128/256-bit move instructions in getLoadStoreR...
Craig Topper [Sun, 31 Jul 2016 20:20:05 +0000 (20:20 +0000)]
[AVX512] Always use EVEX encodings for 128/256-bit move instructions in getLoadStoreRegOpcode if VLX is supported.

llvm-svn: 277305

8 years ago[AVX512] Add VLX packed move instructions to the execution dependency fix pass and...
Craig Topper [Sun, 31 Jul 2016 20:20:01 +0000 (20:20 +0000)]
[AVX512] Add VLX packed move instructions to the execution dependency fix pass and update tests.

llvm-svn: 277304

8 years ago[AVX512] Move FR32X/FR64X handling in getLoadStoreRegOpcode into the main switch...
Craig Topper [Sun, 31 Jul 2016 20:19:55 +0000 (20:19 +0000)]
[AVX512] Move FR32X/FR64X handling in getLoadStoreRegOpcode into the main switch. No functional change intended.

llvm-svn: 277303

8 years ago[AVX512] Stop treating VR512 specially in getLoadStoreRegOpcode and use the regular...
Craig Topper [Sun, 31 Jul 2016 20:19:53 +0000 (20:19 +0000)]
[AVX512] Stop treating VR512 specially in getLoadStoreRegOpcode and use the regular switch which already tried to handle it, but was unreachable. This has the added benefit of enabling aligned loads/stores if the stack is aligned.

llvm-svn: 277302

8 years ago[AVX512] Add X86::VR512RegClassID to X86RegisterInfo::getLargestLegalSuperClass.
Craig Topper [Sun, 31 Jul 2016 20:19:50 +0000 (20:19 +0000)]
[AVX512] Add X86::VR512RegClassID to X86RegisterInfo::getLargestLegalSuperClass.

llvm-svn: 277301

8 years agoFix ASan alloca_constant_size.cc test on FreeBSD.
Dimitry Andric [Sun, 31 Jul 2016 20:16:59 +0000 (20:16 +0000)]
Fix ASan alloca_constant_size.cc test on FreeBSD.

On FreeBSD <alloca.h> does not exist: alloca(3) is defined in <stdlib.h>
instead.

llvm-svn: 277300

8 years ago[X86] Improve 64-bit shifts on 32-bit targets (PR14593)
Simon Pilgrim [Sun, 31 Jul 2016 19:50:45 +0000 (19:50 +0000)]
[X86] Improve 64-bit shifts on 32-bit targets (PR14593)

As discussed on PR14593, this patch adds support for lowering to SHLD/SHRD from the patterns generated by DAGTypeLegalizer::ExpandShiftWithKnownAmountBit.

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

llvm-svn: 277299

8 years ago[COFF] Expose iterators for ImportAddressTableRVA
David Majnemer [Sun, 31 Jul 2016 19:40:02 +0000 (19:40 +0000)]
[COFF] Expose iterators for ImportAddressTableRVA

Patch by Bandzi Michal!

llvm-svn: 277298

8 years agoXFAIL one sanitizer symbolizer test for FreeBSD
Dimitry Andric [Sun, 31 Jul 2016 19:27:46 +0000 (19:27 +0000)]
XFAIL one sanitizer symbolizer test for FreeBSD

Summary:
Due to a QoI issuse in FreeBSD's libcxxrt-based demangler, one sanitizer
symbolizer test consistently appears to fail:

    Value of: DemangleSwiftAndCXX("foo")
      Actual: "float"
    Expected: "foo"

This is because libcxxrt's __cxa_demangle() incorrectly demangles the "foo"
identifier to "float".  It should return an error instead.

For now, XFAIL this particular test for FreeBSD, until we can fix libcxxrt
properly (which might take some time to coordinate with upstream).

Reviewers: rnk, zaks.anna, emaste

Subscribers: emaste, llvm-commits, kubabrecka

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

llvm-svn: 277297

8 years ago[COFF] Remove a duplicate import_directory_table_entry definition
David Majnemer [Sun, 31 Jul 2016 19:25:21 +0000 (19:25 +0000)]
[COFF] Remove a duplicate import_directory_table_entry definition

We had import_directory_table_entry and
coff_import_directory_table_entry, remove one.  Also, factor out the
logic which determins if a descriptor is a terminator.

llvm-svn: 277296

8 years ago[bugpoint] Add a -Os option
David Majnemer [Sun, 31 Jul 2016 19:25:16 +0000 (19:25 +0000)]
[bugpoint] Add a -Os option

llvm-svn: 277295

8 years ago[compiler-rt] Add support for interception redirect exports.
Etienne Bergeron [Sun, 31 Jul 2016 17:56:26 +0000 (17:56 +0000)]
[compiler-rt] Add support for interception redirect exports.

Summary:
On windows, an export can be redirected to an other DLL.
This patch is adding the required support to the internal
GetProcAddress implementation.

This case was encountered by instrumenting chromium (win 64-bits)
using this GN configuration:
```
is_component_build = true
is_debug = false
enable_nacl = false
is_clang = true
is_asan = true
clang_base_path = "d:\src\llvm\ninja64"
clang_use_chrome_plugins = false
clang_version = "4.0.0"
```

The operating system is win7 (x64).
Visual Studio: 2015 Professional

Reviewers: rnk

Subscribers: llvm-commits, chrisha

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

llvm-svn: 277294

8 years ago[X86] Add tests for the lowering SHLD/SHRD from manual pattern similar to those gener...
Simon Pilgrim [Sun, 31 Jul 2016 17:51:37 +0000 (17:51 +0000)]
[X86] Add tests for the lowering SHLD/SHRD from manual pattern similar to those generated by ExpandShiftWithKnownAmountBit

Test for add(v,v) as well as shl(v,1)

llvm-svn: 277293

8 years ago[AVX-512] Don't let ExeDependencyFix pass convert VPANDD/Q to VPANDPS/PD unless DQI...
Craig Topper [Sun, 31 Jul 2016 17:15:07 +0000 (17:15 +0000)]
[AVX-512] Don't let ExeDependencyFix pass convert VPANDD/Q to VPANDPS/PD unless DQI instructions are supported. Same for ANDN, OR, and XOR.

Thanks to Igor Breger for pointing out my mistake.

llvm-svn: 277292

8 years ago[X86] Add tests for the lowering SHLD/SHRD from manual patterns
Simon Pilgrim [Sun, 31 Jul 2016 17:11:49 +0000 (17:11 +0000)]
[X86] Add tests for the lowering SHLD/SHRD from manual patterns

As discussed on D23000

llvm-svn: 277291

8 years agoFixed "copy-paste" mistake from revision 255245.
Amjad Aboud [Sun, 31 Jul 2016 14:41:50 +0000 (14:41 +0000)]
Fixed "copy-paste" mistake from revision 255245.

llvm-svn: 277290

8 years agoAVX-512: Removed AssertZext node before TRUNCATE
Elena Demikhovsky [Sun, 31 Jul 2016 06:48:01 +0000 (06:48 +0000)]
AVX-512: Removed AssertZext node before TRUNCATE
Removed AssertZext node, which was inserted between X86ISD::SETCC and "truncate to i1".

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

llvm-svn: 277289

8 years ago[ADT] Add 'consume_front' and 'consume_back' methods to StringRef which
Chandler Carruth [Sun, 31 Jul 2016 02:19:13 +0000 (02:19 +0000)]
[ADT] Add 'consume_front' and 'consume_back' methods to StringRef which
are very handy when parsing text.

They are essentially a combination of startswith and a self-modifying
drop_front, or endswith and drop_back respectively.

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

llvm-svn: 277288

8 years ago[NFC] Rearrange an example-file so the c++14 specific example is on top.
Faisal Vali [Sun, 31 Jul 2016 01:19:17 +0000 (01:19 +0000)]
[NFC] Rearrange an example-file so the c++14 specific example is on top.

This makes it easier to add C++1z examples to the bottom, just before the #endif.

llvm-svn: 277287

8 years agoReapply r276069 with workaround for MSVC 2013
Hubert Tong [Sat, 30 Jul 2016 22:33:34 +0000 (22:33 +0000)]
Reapply r276069 with workaround for MSVC 2013

llvm-svn: 277286

8 years ago[HexagonConstPropagation] Remove dead code.
Davide Italiano [Sat, 30 Jul 2016 22:07:21 +0000 (22:07 +0000)]
[HexagonConstPropagation] Remove dead code.

llvm-svn: 277285

8 years ago[HexagonBitSimplify] Remove dead code.
Davide Italiano [Sat, 30 Jul 2016 22:07:18 +0000 (22:07 +0000)]
[HexagonBitSimplify] Remove dead code.

llvm-svn: 277284

8 years ago[ARMConstantIslandPass] Remove dead code.
Davide Italiano [Sat, 30 Jul 2016 22:07:15 +0000 (22:07 +0000)]
[ARMConstantIslandPass] Remove dead code.

llvm-svn: 277283

8 years ago[Support] Add doxygen @code tags to example code in Error comments.
Lang Hames [Sat, 30 Jul 2016 21:34:04 +0000 (21:34 +0000)]
[Support] Add doxygen @code tags to example code in Error comments.

llvm-svn: 277282

8 years ago[SLPVectorizer][X86] Added vXi8/vXi16 sitofp/uitofp tests
Simon Pilgrim [Sat, 30 Jul 2016 21:01:34 +0000 (21:01 +0000)]
[SLPVectorizer][X86] Added vXi8/vXi16 sitofp/uitofp tests

Dropped useless 2i32-2f32 test

llvm-svn: 277281

8 years agoStrip trailing whitespace
Simon Pilgrim [Sat, 30 Jul 2016 20:53:21 +0000 (20:53 +0000)]
Strip trailing whitespace

llvm-svn: 277280

8 years ago[X86] Use peekThroughOneUseBitcasts helper function
Simon Pilgrim [Sat, 30 Jul 2016 20:51:26 +0000 (20:51 +0000)]
[X86] Use peekThroughOneUseBitcasts helper function

llvm-svn: 277279

8 years ago[X86][SSE] Regenerate vshift tests
Simon Pilgrim [Sat, 30 Jul 2016 20:28:02 +0000 (20:28 +0000)]
[X86][SSE] Regenerate vshift tests

llvm-svn: 277278

8 years agoCorrecting some sphinx formatting issues so that the attribute documentation builds...
Aaron Ballman [Sat, 30 Jul 2016 20:20:03 +0000 (20:20 +0000)]
Correcting some sphinx formatting issues so that the attribute documentation builds again.

llvm-svn: 277277

8 years ago[Profile] Add a new test case
Xinliang David Li [Sat, 30 Jul 2016 20:12:00 +0000 (20:12 +0000)]
[Profile] Add a new test case

The end-end test checks that cs-profile counter update
is obtained as expected.

llvm-svn: 277276

8 years ago[SLPVectorizer][X86] Added SITOFP/UITOFP vectorization tests
Simon Pilgrim [Sat, 30 Jul 2016 18:43:30 +0000 (18:43 +0000)]
[SLPVectorizer][X86] Added SITOFP/UITOFP vectorization tests

llvm-svn: 277275

8 years ago[X86][AVX] Added signum example test functions from PR13248
Simon Pilgrim [Sat, 30 Jul 2016 16:29:19 +0000 (16:29 +0000)]
[X86][AVX] Added signum example test functions from PR13248

These are good examples of missed combine opportunities with zero/all bit vector compare results

llvm-svn: 277274

8 years ago[analyzer] Update APIs taking user-facing strings.
Devin Coughlin [Sat, 30 Jul 2016 16:16:51 +0000 (16:16 +0000)]
[analyzer] Update APIs taking user-facing strings.

Add new APIs that require localized strings and remove two APIs that were
incorrectly marked as requiring a user-facing string.

A patch by Kulpreet Chilana!

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

llvm-svn: 277273

8 years ago[X86][X87] Add vector arithmetic tests for targets with sse disabled
Simon Pilgrim [Sat, 30 Jul 2016 16:01:30 +0000 (16:01 +0000)]
[X86][X87] Add vector arithmetic tests for targets with sse disabled

To make sure the X86_64 target isn't doing anything stupid

llvm-svn: 277272

8 years ago[X86][SSE] Let 64-bit targets use the fast 2i32-2f32 UINT_TO_FP conversion as well...
Simon Pilgrim [Sat, 30 Jul 2016 14:06:59 +0000 (14:06 +0000)]
[X86][SSE] Let 64-bit targets use the fast 2i32-2f32 UINT_TO_FP conversion as well as 32-bit

The 2i32-2i64 legalization means that we can use the slightly quicker double bits + fptrunc approach for the same results

llvm-svn: 277271

8 years agoTrailingObjects::FixedSizeStorage constexpr fixes + tests
Hubert Tong [Sat, 30 Jul 2016 14:01:00 +0000 (14:01 +0000)]
TrailingObjects::FixedSizeStorage constexpr fixes + tests

Summary:
This change fixes issues with `LLVM_CONSTEXPR` functions and
`TrailingObjects::FixedSizeStorage`. In particular, some of the
functions marked `LLVM_CONSTEXPR` used by `FixedSizeStorage` were not
implemented such that they evaluate successfully as part of a constant
expression despite constant arguments.

This change also implements a more traditional template-meta path to
accommodate MSVC, and adds unit tests for `FixedSizeStorage`.

Drive-by fix: the access control for members of `TrailingObjectsImpl` is
tightened.

Reviewers: faisalv, rsmith, aaron.ballman

Subscribers: cfe-commits

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

llvm-svn: 277270

8 years agoMathExtras.h: add LLVM_CONSTEXPR where simple
Hubert Tong [Sat, 30 Jul 2016 13:38:51 +0000 (13:38 +0000)]
MathExtras.h: add LLVM_CONSTEXPR where simple

Summary:
This change adds `LLVM_CONSTEXPR` to functions selected as follows:
- the body is already valid under C++11 for a `constexpr` function,
- the evaluation of the function, given constant arguments, will not
  fail during the evaluation of a constant expression, and
- the above properties are easily verifiable at a glance.

Note: the evaluation of the function cannot fail if the instantiation
triggers a static assertion failure.

Reviewers: faisalv, rsmith, aaron.ballman

Subscribers: cfe-commits

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

llvm-svn: 277269

8 years ago[Hexagon] Perform bit arithmetic on unsigned to avoid accidentally shifting negative...
Benjamin Kramer [Sat, 30 Jul 2016 13:25:37 +0000 (13:25 +0000)]
[Hexagon] Perform bit arithmetic on unsigned to avoid accidentally shifting negative values.

Found by ubsan.

llvm-svn: 277268

8 years agoUpdate modulemap for Msf -> MSF rename.
Benjamin Kramer [Sat, 30 Jul 2016 12:05:17 +0000 (12:05 +0000)]
Update modulemap for Msf -> MSF rename.

llvm-svn: 277267

8 years ago[X86] Fix lifetime of SMRange temporaries.
Benjamin Kramer [Sat, 30 Jul 2016 11:31:24 +0000 (11:31 +0000)]
[X86] Fix lifetime of SMRange temporaries.

Found by asan -fsanitize-address-use-after-scope.

llvm-svn: 277266

8 years ago[AMDGPU] Fix lifetime of SmallVector temporaries.
Benjamin Kramer [Sat, 30 Jul 2016 11:31:16 +0000 (11:31 +0000)]
[AMDGPU] Fix lifetime of SmallVector temporaries.

Found by asan -fsanitize-address-use-after-scope.

llvm-svn: 277265

8 years agoAdd missing prefixes.
Roman Gareev [Sat, 30 Jul 2016 11:15:00 +0000 (11:15 +0000)]
Add missing prefixes.

llvm-svn: 277264

8 years agoExtend the jscop interface to allow the user to declare new arrays and to reference...
Roman Gareev [Sat, 30 Jul 2016 09:25:51 +0000 (09:25 +0000)]
Extend the jscop interface to allow the user to declare new arrays and to reference these arrays from access expressions

Extend the jscop interface to allow the user to export arrays. It is required
that already existing arrays of the list of arrays correspond to arrays
of the SCoP. Each array that is appended to the list will be newly created.
Furthermore, we allow the user to modify access expressions to reference
any array in case it has the same element type.

Reviewed-by: Tobias Grosser <tobias@grosser.es>
Differential Revision: https://reviews.llvm.org/D22828

llvm-svn: 277263

8 years ago[clang-tidy] add check cppcoreguidelines-special-member-functions
Jonathan Coe [Sat, 30 Jul 2016 08:58:54 +0000 (08:58 +0000)]
[clang-tidy] add check cppcoreguidelines-special-member-functions

Summary:
Check for classes that violate the rule of five and zero as specified in CppCoreGuidelines:

"If a class defines or deletes a default operation then it should define or delete them all."

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c21-if-you-define-or-delete-any-default-operation-define-or-delete-them-all.

Reviewers: alexfh, sbenza, aaron.ballman

Subscribers: Prazek, Eugene.Zelenko, cfe-commits, ericLemanissier, nemanjai

Projects: #clang-tools-extra

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

llvm-svn: 277262

8 years ago[c-index-test] Make sure to check that clang_Cursor_getNumTemplateArguments did not...
Argyrios Kyrtzidis [Sat, 30 Jul 2016 02:20:21 +0000 (02:20 +0000)]
[c-index-test] Make sure to check that clang_Cursor_getNumTemplateArguments did not return -1.

llvm-svn: 277261

8 years agoAMDGPU: Fix shouldConvertConstantLoadToIntImm behavior
Matt Arsenault [Sat, 30 Jul 2016 01:40:36 +0000 (01:40 +0000)]
AMDGPU: Fix shouldConvertConstantLoadToIntImm behavior

This should really be true for any immediate, not just
inline ones.

llvm-svn: 277260

8 years agoAMDGPU: Set s_setpc_b64 as a terminator
Matt Arsenault [Sat, 30 Jul 2016 01:40:34 +0000 (01:40 +0000)]
AMDGPU: Set s_setpc_b64 as a terminator

llvm-svn: 277259

8 years agoAMDGPU: Remove unused pattern
Matt Arsenault [Sat, 30 Jul 2016 01:40:30 +0000 (01:40 +0000)]
AMDGPU: Remove unused pattern

llvm-svn: 277258

8 years ago[Orc] Add support for updating stub targets to CompileOnDemandLayer.
Lang Hames [Sat, 30 Jul 2016 00:57:54 +0000 (00:57 +0000)]
[Orc] Add support for updating stub targets to CompileOnDemandLayer.

This makes it possible to implement re-optimization on top of the
CompileOnDemandLayer.

Test case to come in a future patch: This will need an execution test, and
execution tests require a full working stack. The best option is to plumb this
API up to the C Bindings stack and add a C bindings test for this.

Patch by Sean Ogden. Thanks Sean!

llvm-svn: 277257

8 years agoFix VS2013 build of CGOpenMPRuntime.cpp
Hans Wennborg [Sat, 30 Jul 2016 00:41:37 +0000 (00:41 +0000)]
Fix VS2013 build of CGOpenMPRuntime.cpp

It seems the compiler was getting confused by the in-class initializers
in local struct MapInfo, so moving those to a default constructor
instead.

llvm-svn: 277256

8 years agoRemove dead ctor.
Rui Ueyama [Sat, 30 Jul 2016 00:13:30 +0000 (00:13 +0000)]
Remove dead ctor.

llvm-svn: 277255

8 years agoRemove empty DebugInfo/Msf dirs. It seems these were left over from
Hans Wennborg [Sat, 30 Jul 2016 00:08:45 +0000 (00:08 +0000)]
Remove empty DebugInfo/Msf dirs. It seems these were left over from
the renaming from 'Msf' to 'MSF' in r277213.

llvm-svn: 277254

8 years agoRemove trailing whitespace.
Rui Ueyama [Fri, 29 Jul 2016 23:48:09 +0000 (23:48 +0000)]
Remove trailing whitespace.

llvm-svn: 277253

8 years agoDAG: avoid duplicated truncating for sign extended operand
Weiming Zhao [Fri, 29 Jul 2016 23:33:48 +0000 (23:33 +0000)]
DAG: avoid duplicated truncating for sign extended operand

Summary:
When performing cmp for EQ/NE and the operand is sign extended, we can
avoid the truncaton if the bits to be tested are no less than origianl
bits.

Reviewers: eli.friedman

Subscribers: eli.friedman, aemerson, nemanjai, t.p.northover, llvm-commits

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

llvm-svn: 277252

8 years ago[Support] Add storage specifier for MachO::NListType.
Lang Hames [Fri, 29 Jul 2016 23:17:53 +0000 (23:17 +0000)]
[Support] Add storage specifier for MachO::NListType.

This should fix UB warnings from the sanitizer bots: LLD performs bit
manipulations on enums of this type, and these are UB if the underlying
storage type isn't specified.

llvm-svn: 277251

8 years ago[Perf-Helper] Add logging for dtrace commands
Chris Bieneman [Fri, 29 Jul 2016 22:48:17 +0000 (22:48 +0000)]
[Perf-Helper] Add logging for dtrace commands

Logging the dtrace command into the top of the dtrace log is useful when debugging why the order file generation is flaky.

llvm-svn: 277234

8 years agoGlobalISel: translate "unreachable" (into nothing)
Tim Northover [Fri, 29 Jul 2016 22:41:55 +0000 (22:41 +0000)]
GlobalISel: translate "unreachable" (into nothing)

Easiest instruction ever!

llvm-svn: 277225

8 years agoGlobalISel: support translation of intrinsic calls.
Tim Northover [Fri, 29 Jul 2016 22:32:36 +0000 (22:32 +0000)]
GlobalISel: support translation of intrinsic calls.

These come in two variants for now: G_INTRINSIC and G_INTRINSIC_W_SIDE_EFFECTS.
We may decide to split the latter up with finer-grained restrictions later, if
necessary.

llvm-svn: 277224

8 years agoThink this will fix issues with the error messages generated for malformed-archives...
Kevin Enderby [Fri, 29 Jul 2016 22:32:02 +0000 (22:32 +0000)]
Think this will fix issues with the error messages generated for malformed-archives.test
in r277177 and added back this test which was deleted in r277196 while
I tracked down these problems.

Changed from constructing Twine's to std::string's as Twine's don't work
across statements.  Also removed a few unneeded Twine() constructions.

Fix the write_escaped() calls to not pass the unintended second argument
fixing the warning on the ld-x86_64-win7 bot.

llvm-svn: 277223

8 years ago[LinkerScript] Filler can have a decimal value.
Davide Italiano [Fri, 29 Jul 2016 22:21:28 +0000 (22:21 +0000)]
[LinkerScript] Filler can have a decimal value.

llvm-svn: 277222

8 years agoRemove unused variable.
Eric Christopher [Fri, 29 Jul 2016 22:11:11 +0000 (22:11 +0000)]
Remove unused variable.

Fixes PR28761.

llvm-svn: 277221

8 years ago[Hexagon] Referencify MachineInstr in HexagonInstrInfo, NFC
Krzysztof Parzyszek [Fri, 29 Jul 2016 21:49:42 +0000 (21:49 +0000)]
[Hexagon] Referencify MachineInstr in HexagonInstrInfo, NFC

llvm-svn: 277220

8 years ago[X86] Match PSADBW in straight-line code
Michael Kuperstein [Fri, 29 Jul 2016 21:45:51 +0000 (21:45 +0000)]
[X86] Match PSADBW in straight-line code

Up until now, we only had code to match PSADBW patterns that look like what
comes out of the loop vectorizer - a partial reduction inside the loop body
that gets fed into a horizontal operation in a different basic block.

This adds support for straight-line patterns, like those generated by the
SLP vectorizer.

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

llvm-svn: 277219