platform/upstream/llvm.git
8 years agoExplicitly test BitstreamReader::setArtificialByteLimit, NFC
Duncan P. N. Exon Smith [Mon, 28 Mar 2016 20:39:41 +0000 (20:39 +0000)]
Explicitly test BitstreamReader::setArtificialByteLimit, NFC

Explicitly check that artificial byte limit is rounded correctly by
exposing BitstreamReader::Size through a new accessor, getSizeIfKnown.

The original code for rounding (from r264547) wasn't obviously correct,
and even though r264623 cleaned it up (by calling llvm::alignTo) I think
it's worth testing.

llvm-svn: 264650

8 years agoHandle section vs global name conflict.
Evgeniy Stepanov [Mon, 28 Mar 2016 20:36:28 +0000 (20:36 +0000)]
Handle section vs global name conflict.

This is a fix for PR26941.

When there is both a section and a global definition with the same
name, the global wins.

Section symbols are not added to the symbol table; section references
are left undefined and fixed up in the object writer unless they've
been satisfied by some other definition.

llvm-svn: 264649

8 years agodocs: Update Ninja link, also fix link syntax.
Nico Weber [Mon, 28 Mar 2016 20:32:38 +0000 (20:32 +0000)]
docs: Update Ninja link, also fix link syntax.

llvm-svn: 264648

8 years ago[analyzer] Nullability: Don't warn along paths where null returned from non-null.
Devin Coughlin [Mon, 28 Mar 2016 20:30:25 +0000 (20:30 +0000)]
[analyzer] Nullability: Don't warn along paths where null returned from non-null.

Change the nullability checker to not warn along paths where null is returned from
a method with a non-null return type, even when the diagnostic for this return
has been suppressed. This prevents warning from methods with non-null return types
that inline methods that themselves return nil but that suppressed the diagnostic.

Also change the PreconditionViolated state component to be called "InvariantViolated"
because it is set when a post-condition is violated, as well.

rdar://problem/25393539

llvm-svn: 264647

8 years agoRemove accidentally duplicated test
Duncan P. N. Exon Smith [Mon, 28 Mar 2016 20:30:15 +0000 (20:30 +0000)]
Remove accidentally duplicated test

This was identical to setArtificialByteLimitNotWordBoundary.

llvm-svn: 264646

8 years ago[asan] Support dead code stripping on Mach-O platforms
Ryan Govostes [Mon, 28 Mar 2016 20:28:57 +0000 (20:28 +0000)]
[asan] Support dead code stripping on Mach-O platforms

On OS X El Capitan and iOS 9, the linker supports a new section
attribute, live_support, which allows dead stripping to remove dead
globals along with the ASAN metadata about them.

With this change __asan_global structures are emitted in a new
__DATA,__asan_globals section on Darwin.

Additionally, there is a __DATA,__asan_liveness section with the
live_support attribute. Each entry in this section is simply a tuple
that binds together the liveness of a global variable and its ASAN
metadata structure. Thus the metadata structure will be alive if and
only if the global it references is also alive.

Review: http://reviews.llvm.org/D16737
llvm-svn: 264645

8 years ago[asan] Add runtime support for __asan_(un)register_image_globals
Ryan Govostes [Mon, 28 Mar 2016 20:28:17 +0000 (20:28 +0000)]
[asan] Add runtime support for __asan_(un)register_image_globals

This change introduces routines that register and unregister all
instrumented globals in a loaded executable image.

These routines are only implemented on Darwin, where globals metadata
is expected to be placed in the __DATA,__asan_globals section.

Review: http://reviews.llvm.org/D16841
llvm-svn: 264644

8 years agoRevert "Reapply "[PGO] Fix name encoding for ObjC-like functions""
Vedant Kumar [Mon, 28 Mar 2016 20:20:40 +0000 (20:20 +0000)]
Revert "Reapply "[PGO] Fix name encoding for ObjC-like functions""

This reverts commit r264641 to investigate why c-general.test is failing
on the bots.

llvm-svn: 264643

8 years agoPaper over the Windows-only enum initialization test failure until the bug is fixed
Reid Kleckner [Mon, 28 Mar 2016 20:13:55 +0000 (20:13 +0000)]
Paper over the Windows-only enum initialization test failure until the bug is fixed

llvm-svn: 264642

8 years agoReapply "[PGO] Fix name encoding for ObjC-like functions"
Vedant Kumar [Mon, 28 Mar 2016 20:12:07 +0000 (20:12 +0000)]
Reapply "[PGO] Fix name encoding for ObjC-like functions"

Function names in ObjC can have spaces in them. This interacts poorly
with name compression, which uses spaces to separate PGO names. Fix the
issue by using a different separator and update a test.

I chose "\01" as the separator because 1) it's non-printable, 2) we
strip it from PGO names, and 3) it's the next natural choice once "\00"
is discarded (that one's overloaded).

This reverts the revert commit beaf3d18. What's changed?

- I fixed up the covmap-V2 binary format tests using a linux VM.
- I updated the expected counts in instrprof-comdat.h to account for
  the fact that there have been bugfixes to clang coverage.
- I added an assert to make sure we don't get bitten by this again.

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

llvm-svn: 264641

8 years ago[tsan] Fix a crash when exiting the main thread (e.g. dispatch_main)
Kuba Brecka [Mon, 28 Mar 2016 19:36:25 +0000 (19:36 +0000)]
[tsan] Fix a crash when exiting the main thread (e.g. dispatch_main)

This patch fixes the custom ThreadState destruction on OS X to avoid crashing when dispatch_main calls pthread_exit which quits the main thread.

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

llvm-svn: 264627

8 years ago[libprofile] Make this test not depend on previous runs.
Sean Silva [Mon, 28 Mar 2016 19:34:22 +0000 (19:34 +0000)]
[libprofile] Make this test not depend on previous runs.

llvm-svn: 264626

8 years ago[libprofile] Make this test a bit more specific
Sean Silva [Mon, 28 Mar 2016 19:25:19 +0000 (19:25 +0000)]
[libprofile] Make this test a bit more specific

llvm-svn: 264625

8 years agoSimplify how we represent relocation iterators.
Rafael Espindola [Mon, 28 Mar 2016 19:23:51 +0000 (19:23 +0000)]
Simplify how we represent relocation iterators.

Instead of using a bit to detect if they are "dynamic", just look at
sh_link.

This is a simplification on its own, and will help with using
llvm-objdump in dynamic objects.

llvm-svn: 264624

8 years agoUse 'alignTo' instead of re-inventing it. NFC
Douglas Katzman [Mon, 28 Mar 2016 19:23:23 +0000 (19:23 +0000)]
Use 'alignTo' instead of re-inventing it. NFC

llvm-svn: 264623

8 years agoThis file was accidentally committed with bad line endings. Fixed...
Mike Spertus [Mon, 28 Mar 2016 19:08:27 +0000 (19:08 +0000)]
This file was accidentally committed with bad line endings. Fixed...

llvm-svn: 264621

8 years agoSubmitted new file with wrong line endings. Correcting...
Mike Spertus [Mon, 28 Mar 2016 19:06:17 +0000 (19:06 +0000)]
Submitted new file with wrong line endings. Correcting...

llvm-svn: 264620

8 years agoProfile summary cleanup.
Easwaran Raman [Mon, 28 Mar 2016 18:58:05 +0000 (18:58 +0000)]
Profile summary cleanup.

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

llvm-svn: 264619

8 years agoFix builds on Windows broken in r264598.
Eugene Zelenko [Mon, 28 Mar 2016 18:54:58 +0000 (18:54 +0000)]
Fix builds on Windows broken in r264598.

llvm-svn: 264618

8 years ago[STATS] Missing check for MIC in config-ix.cmake
Jonathan Peyton [Mon, 28 Mar 2016 18:53:10 +0000 (18:53 +0000)]
[STATS] Missing check for MIC in config-ix.cmake

llvm-svn: 264616

8 years ago[PGO] Update r264612 to use C-style comment
Adam Nemet [Mon, 28 Mar 2016 18:47:44 +0000 (18:47 +0000)]
[PGO] Update r264612 to use C-style comment

llvm-svn: 264615

8 years ago[PGO] Update r264611 to use C-style comment
Adam Nemet [Mon, 28 Mar 2016 18:45:30 +0000 (18:45 +0000)]
[PGO] Update r264611 to use C-style comment

llvm-svn: 264614

8 years ago[PGO] Comment how function pointers for indirect calls are mapped to function names
Adam Nemet [Mon, 28 Mar 2016 18:29:36 +0000 (18:29 +0000)]
[PGO] Comment how function pointers for indirect calls are mapped to function names

Summary:
Hopefully this will make it easier for the next person to figure all
this out...

Reviewers: bogner, davidxl

Subscribers: llvm-commits

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

llvm-svn: 264612

8 years ago[PGO] Comment how function pointers for indirect calls are mapped to function names
Adam Nemet [Mon, 28 Mar 2016 18:27:44 +0000 (18:27 +0000)]
[PGO] Comment how function pointers for indirect calls are mapped to function names

Summary:
Hopefully this will make it easier for the next person to figure all
this out...

Reviewers: bogner, davidxl

Subscribers: llvm-commits

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

llvm-svn: 264611

8 years agoConvert to Unix line endings due to previous commit error.
Mike Spertus [Mon, 28 Mar 2016 18:24:22 +0000 (18:24 +0000)]
Convert to Unix line endings due to previous commit error.

llvm-svn: 264610

8 years agodos2unix CMakeLists.txt
Reid Kleckner [Mon, 28 Mar 2016 18:19:32 +0000 (18:19 +0000)]
dos2unix CMakeLists.txt

The sign now reads "0 days since the last line ending confusion"

llvm-svn: 264609

8 years agoMIRParser: Add %subreg.xxx syntax for subregister index operands
Matthias Braun [Mon, 28 Mar 2016 18:18:46 +0000 (18:18 +0000)]
MIRParser: Add %subreg.xxx syntax for subregister index operands

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

llvm-svn: 264608

8 years agoCodeGen: Correct specification of PHI nodes
Matthias Braun [Mon, 28 Mar 2016 18:18:41 +0000 (18:18 +0000)]
CodeGen: Correct specification of PHI nodes

They do have a def machine operand.

Fixing the definition is necessary for an upcoming patch.

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

llvm-svn: 264607

8 years ago[AArch64] Do not lower scalar sdiv/udiv to a shifts + mul sequence when optimizing...
Haicheng Wu [Mon, 28 Mar 2016 18:17:07 +0000 (18:17 +0000)]
[AArch64] Do not lower scalar sdiv/udiv to a shifts + mul sequence when optimizing for minsize

Mimic what x86 does when optimizing sdiv/udiv for minsize.

llvm-svn: 264606

8 years agoRevert "[SimlifyCFG] Prevent passes from destroying canonical loop structure, especia...
Reid Kleckner [Mon, 28 Mar 2016 18:07:40 +0000 (18:07 +0000)]
Revert "[SimlifyCFG] Prevent passes from destroying canonical loop structure, especially for nested loops"

This reverts commit r264596.

It does not compile.

llvm-svn: 264604

8 years agoUse VS2015 Project Support for Natvis to eliminate the need to manually install clang...
Mike Spertus [Mon, 28 Mar 2016 18:03:37 +0000 (18:03 +0000)]
Use VS2015 Project Support for Natvis to eliminate the need to manually install clang native visualizer

This is the clang equivalent to llvm commit 264601. When using Visual Studio 2015, cmake now puts the native visualizers in llvm.sln, so the developer automatically sees custom visualizations.
Much thanks to ariccio who provided extensive help on this change. (manual installation still needed on VS2013).

llvm-svn: 264603

8 years agoForgot to commit this file in revision 264601
Mike Spertus [Mon, 28 Mar 2016 17:59:40 +0000 (17:59 +0000)]
Forgot to commit this file in revision 264601

llvm-svn: 264602

8 years agoUse VS2015 Project Support for Natvis to eliminate the need to manually install natvi...
Mike Spertus [Mon, 28 Mar 2016 17:58:38 +0000 (17:58 +0000)]
Use VS2015 Project Support for Natvis to eliminate the need to manually install natvis files

When using Visual Studio 2015, cmake now puts the native visualizers in llvm.sln, so the developer automatically sees custom visualizations.
Much thanks to ariccio who provided extensive help on this change. (manual installation still needed on VS2013)

llvm-svn: 264601

8 years ago[PowerPC] On the A2, popcnt[dw] are very slow
Hal Finkel [Mon, 28 Mar 2016 17:52:08 +0000 (17:52 +0000)]
[PowerPC] On the A2, popcnt[dw] are very slow

The A2 cores support the popcntw/popcntd instructions, but they're microcoded,
and slower than our default software emulation. Specifically, popcnt[dw] take
approximately 74 cycles, whereas our software emulation takes only 24-28
cycles.

I've added a new target feature to indicate a slow popcnt[dw], instead of just
removing the existing target feature from the a2/a2q processor models, because:
  1. This allows us to return more accurate information via the TTI interface
     (I recognize that this currently makes no practical difference)
  2. Is hopefully easier to understand (it allows the core's features to match
     its manual while still having the desired effect).

llvm-svn: 264600

8 years agoRemove else after return
David Blaikie [Mon, 28 Mar 2016 17:45:48 +0000 (17:45 +0000)]
Remove else after return

llvm-svn: 264599

8 years agoFix Clang-tidy modernize-deprecated-headers warnings in some files; other minor fixes.
Eugene Zelenko [Mon, 28 Mar 2016 17:40:08 +0000 (17:40 +0000)]
Fix Clang-tidy modernize-deprecated-headers warnings in some files; other minor fixes.

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

llvm-svn: 264598

8 years agoWindows: Shrink sizeof(MacroInfo) from 256 to 248, MacroDirective 24 to 16
Nico Weber [Mon, 28 Mar 2016 17:28:06 +0000 (17:28 +0000)]
Windows: Shrink sizeof(MacroInfo) from 256 to 248, MacroDirective 24 to 16

In the Microsoft ABI, only bitfields with identical types get packed together,
so use consistently use one of the two instead of a mix.
Saves 457kB when parsing windows.h.

No intended behavior change.

llvm-svn: 264597

8 years ago[SimlifyCFG] Prevent passes from destroying canonical loop structure, especially...
Hyojin Sung [Mon, 28 Mar 2016 17:22:25 +0000 (17:22 +0000)]
[SimlifyCFG] Prevent passes from destroying canonical loop structure, especially for nested loops

When eliminating or merging almost empty basic blocks, the existence of non-trivial PHI nodes
is currently used to recognize potential loops of which the block is the header and keep the block.
However, the current algorithm fails if the loops' exit condition is evaluated only with volatile
values hence no PHI nodes in the header. Especially when such a loop is an outer loop of a nested
loop, the loop is collapsed into a single loop which prevent later optimizations from being
applied (e.g., transforming nested loops into simplified forms and loop vectorization).

The patch augments the existing PHI node-based check by adding a pre-test if the BB actually
belongs to a set of loop headers and not eliminating it if yes.

llvm-svn: 264596

8 years ago[llvm-readobj] NFC Replace case by macros for PT_* enums
Hemant Kulkarni [Mon, 28 Mar 2016 17:20:23 +0000 (17:20 +0000)]
[llvm-readobj] NFC Replace case by macros for PT_* enums

llvm-svn: 264595

8 years ago[PGO] Don't set the function hotness attribute when populating counters
Rong Xu [Mon, 28 Mar 2016 17:08:56 +0000 (17:08 +0000)]
[PGO] Don't set the function hotness attribute when populating counters

Don't set the function hotness attribute on the fly. This changes the CFG
branch probability of the caller function, which leads to inconsistent BB
ordering. This patch moves the attribute setting to a separated loop after
 the counts in all functions are populated.

Fixes PR27024 - PGO instrumentation profile data is not reflected in correct
basic blocks.

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

llvm-svn: 264594

8 years agoIntroduce MachineFunctionProperties and the AllVRegsAllocated property
Derek Schuff [Mon, 28 Mar 2016 17:05:30 +0000 (17:05 +0000)]
Introduce MachineFunctionProperties and the AllVRegsAllocated property

MachineFunctionProperties represents a set of properties that a MachineFunction
can have at particular points in time. Existing examples of this idea are
MachineRegisterInfo::isSSA() and MachineRegisterInfo::tracksLiveness() which
will eventually be switched to use this mechanism.
This change introduces the AllVRegsAllocated property; i.e. the property that
all virtual registers have been allocated and there are no VReg operands
left.

With this mechanism, passes can declare that they require a particular property
to be set, or that they set or clear properties by implementing e.g.
MachineFunctionPass::getRequiredProperties(). The MachineFunctionPass base class
verifies that the requirements are met, and handles the setting and clearing
based on the delcarations. Passes can also directly query and update the current
properties of the MF if they want to have conditional behavior.

This change annotates the target-independent post-regalloc passes; future
changes will also annotate target-specific ones.

Reviewers: qcolombet, hfinkel

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

llvm-svn: 264593

8 years agodocs: Fix section header committed in r264575
Tobias Grosser [Mon, 28 Mar 2016 17:00:14 +0000 (17:00 +0000)]
docs: Fix section header committed in r264575

Ensure the length of the header underline matches the length of the header.
This prevents SPHINX from erroring on this file and consequently not updating
the documentation.

Also, make this its own point not belonging to the 'increased applicability'
section.

llvm-svn: 264592

8 years ago[llvm-size] Implement --common option
Hemant Kulkarni [Mon, 28 Mar 2016 16:48:10 +0000 (16:48 +0000)]
[llvm-size] Implement --common option

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

llvm-svn: 264591

8 years agoRevert "[PGO] Fix name encoding for ObjC-like functions"
Vedant Kumar [Mon, 28 Mar 2016 16:14:07 +0000 (16:14 +0000)]
Revert "[PGO] Fix name encoding for ObjC-like functions"

This reverts commit r264587. Reverting to investigate 6 unexpected
failures on the ppc bot:

http://lab.llvm.org:8011/builders/clang-ppc64be-linux/builds/2822

llvm-svn: 264590

8 years agoAMDGPU/SI: Limit load clustering to 16 bytes instead of 4 instructions
Tom Stellard [Mon, 28 Mar 2016 16:10:13 +0000 (16:10 +0000)]
AMDGPU/SI: Limit load clustering to 16 bytes instead of 4 instructions

Summary:
This helps prevent load clustering from drastically increasing register
pressure by trying to cluster 4 SMRDx8 loads together.  The limit of 16
bytes was chosen, because it seems like that was the original intent
of setting the limit to 4 instructions, but more analysis could show
that a different limit is better.

This fixes yields small decreases in register usage with shader-db, but
also helps avoid a large increase in register usage when lane mask
tracking is enabled in the machine scheduler, because lane mask tracking
enables more opportunities for load clustering.

shader-db stats:

2379 shaders in 477 tests
Totals:
SGPRS: 49744 -> 48600 (-2.30 %)
VGPRS: 34120 -> 34076 (-0.13 %)
Code Size: 1282888 -> 1283184 (0.02 %) bytes
LDS: 28 -> 28 (0.00 %) blocks
Scratch: 495616 -> 492544 (-0.62 %) bytes per wave
Max Waves: 6843 -> 6853 (0.15 %)
Wait states: 0 -> 0 (0.00 %)

Reviewers: nhaehnle, arsenm

Subscribers: arsenm, llvm-commits

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

llvm-svn: 264589

8 years ago[SimplifyLibCalls] Transform printf("%s", "a") -> putchar('a').
Davide Italiano [Mon, 28 Mar 2016 15:54:01 +0000 (15:54 +0000)]
[SimplifyLibCalls] Transform printf("%s", "a") -> putchar('a').

llvm-svn: 264588

8 years ago[PGO] Fix name encoding for ObjC-like functions
Vedant Kumar [Mon, 28 Mar 2016 15:52:08 +0000 (15:52 +0000)]
[PGO] Fix name encoding for ObjC-like functions

Function names in ObjC can have spaces in them. This interacts poorly
with name compression, which uses spaces to separate PGO names. Fix the
issue by using a different separator and update a test.

I chose "\01" as the separator because 1) it's non-printable, 2) we
strip it from PGO names, and 3) it's the next natural choice once "\00"
is discarded (that one's overloaded).

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

llvm-svn: 264587

8 years ago[Coverage] Strip <unknown> from PGO names if no filenames are available
Vedant Kumar [Mon, 28 Mar 2016 15:49:08 +0000 (15:49 +0000)]
[Coverage] Strip <unknown> from PGO names if no filenames are available

Patch suggested by David Li!

llvm-svn: 264586

8 years ago[LTO] Internalize symbols.
Davide Italiano [Mon, 28 Mar 2016 15:44:21 +0000 (15:44 +0000)]
[LTO] Internalize symbols.

IPO doesn't work very well across symbols referenced
by others TUs. The linker here tries to evaluate
which symbols are safe to internalize and switches
their linkage.

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

llvm-svn: 264585

8 years ago[Hexagon] Improve handling of unaligned vector loads and stores
Krzysztof Parzyszek [Mon, 28 Mar 2016 15:43:03 +0000 (15:43 +0000)]
[Hexagon] Improve handling of unaligned vector loads and stores

llvm-svn: 264584

8 years agoNFC: skip FenceInst up-front in AtomicExpandPass.
James Y Knight [Mon, 28 Mar 2016 15:05:30 +0000 (15:05 +0000)]
NFC: skip FenceInst up-front in AtomicExpandPass.

llvm-svn: 264583

8 years agoReduce size of DefinitionData from 120 to 96 bytes on Windows.
Nico Weber [Mon, 28 Mar 2016 14:55:24 +0000 (14:55 +0000)]
Reduce size of DefinitionData from 120 to 96 bytes on Windows.

In the Microsoft ABI, only bitfields with identical types get
packed together, so use unsigned consistently instead of a
bool / unsigned mix.

No intended behavior change.

llvm-svn: 264582

8 years ago[Hexagon] Only use restore functions for single register at -Oz
Krzysztof Parzyszek [Mon, 28 Mar 2016 14:52:21 +0000 (14:52 +0000)]
[Hexagon] Only use restore functions for single register at -Oz

llvm-svn: 264581

8 years ago[Hexagon] Speed up frame lowering when no optimizations are enabled
Krzysztof Parzyszek [Mon, 28 Mar 2016 14:42:03 +0000 (14:42 +0000)]
[Hexagon] Speed up frame lowering when no optimizations are enabled

- Do not optimize stack slots in optnone functions.
- Get aligned-base register from HexagonMachineFunctionInfo instead of
  looking for ALIGNA instruction in the function's body.

llvm-svn: 264580

8 years agoSparc: silently ignore .proc assembler directive
Douglas Katzman [Mon, 28 Mar 2016 14:00:11 +0000 (14:00 +0000)]
Sparc: silently ignore .proc assembler directive

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

llvm-svn: 264579

8 years ago[lanai] Add Lanai backend.
Jacques Pienaar [Mon, 28 Mar 2016 13:09:54 +0000 (13:09 +0000)]
[lanai] Add Lanai backend.

Add the Lanai backend to lib/Target.

General Lanai backend discussion on llvm-dev thread "[RFC] Lanai backend" (http://lists.llvm.org/pipermail/llvm-dev/2016-February/095118.html).

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

llvm-svn: 264578

8 years agoRevert "[OPENMP] Allow runtime insert its own code inside OpenMP regions."
Alexey Bataev [Mon, 28 Mar 2016 12:58:34 +0000 (12:58 +0000)]
Revert "[OPENMP] Allow runtime insert its own code inside OpenMP regions."

Reverting because of failed tests.

llvm-svn: 264577

8 years ago[OPENMP] Allow runtime insert its own code inside OpenMP regions.
Alexey Bataev [Mon, 28 Mar 2016 12:52:58 +0000 (12:52 +0000)]
[OPENMP] Allow runtime insert its own code inside OpenMP regions.

Solution unifies interface of RegionCodeGenTy type to allow insert
runtime-specific code before/after main codegen action defined in
CGStmtOpenMP.cpp file. Runtime should not define its own RegionCodeGenTy
for general OpenMP directives, but must be allowed to insert its own
 (required) code to support target specific codegen.

llvm-svn: 264576

8 years agoAdd fine-grain dependences analysis to release notes.
Hongbin Zheng [Mon, 28 Mar 2016 12:41:49 +0000 (12:41 +0000)]
Add fine-grain dependences analysis to release notes.

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

llvm-svn: 264575

8 years ago[CLANG][avx512][BUILTIN] Adding fixupimm{pd|ps|sd|ss}
Michael Zuckerman [Mon, 28 Mar 2016 12:23:09 +0000 (12:23 +0000)]
[CLANG][avx512][BUILTIN] Adding fixupimm{pd|ps|sd|ss}
getexp{sd|ss} getmant{sd|ss} kunpck{di|si} loada{pd|ps} loaddqu{di|hi|qi|si} max{sd|ss} min{sd|ss} kmov16 builtins to clang

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

llvm-svn: 264574

8 years ago[SROA] Fix typo in comment
Hal Finkel [Mon, 28 Mar 2016 11:23:21 +0000 (11:23 +0000)]
[SROA] Fix typo in comment

llvm-svn: 264573

8 years agoC++11 is required, remove some preprocessor checks for it
Hal Finkel [Mon, 28 Mar 2016 11:13:03 +0000 (11:13 +0000)]
C++11 is required, remove some preprocessor checks for it

We require C++11 to build, so remove a few remaining preprocessor checks for
'__cplusplus >= 201103L'. This should always be true.

llvm-svn: 264572

8 years agoFix-up for OS X test failure after r264451 ("Add memset, memmove, and memcpy to the...
Kuba Brecka [Mon, 28 Mar 2016 10:21:35 +0000 (10:21 +0000)]
Fix-up for OS X test failure after r264451 ("Add memset, memmove, and memcpy to the common interceptors")

llvm-svn: 264571

8 years agoRevert "[OPENMP] Allow runtime insert its own code inside OpenMP regions."
Alexey Bataev [Mon, 28 Mar 2016 10:12:03 +0000 (10:12 +0000)]
Revert "[OPENMP] Allow runtime insert its own code inside OpenMP regions."

This reverts commit 3ee791165100607178073f14531a0dc90c622b36.

llvm-svn: 264570

8 years ago[OPENMP] Allow runtime insert its own code inside OpenMP regions.
Alexey Bataev [Mon, 28 Mar 2016 09:53:43 +0000 (09:53 +0000)]
[OPENMP] Allow runtime insert its own code inside OpenMP regions.

Solution unifies interface of RegionCodeGenTy type to allow insert
runtime-specific code before/after main codegen action defined in
CGStmtOpenMP.cpp file. Runtime should not define its own RegionCodeGenTy
for general OpenMP directives, but must be allowed to insert its own
  (required) code to support target specific codegen.

llvm-svn: 264569

8 years ago[Power9] Implement new altivec instructions: bcd* series
Chuang-Yu Cheng [Mon, 28 Mar 2016 09:04:23 +0000 (09:04 +0000)]
[Power9] Implement new altivec instructions: bcd* series

This patch implements the following altivec instructions:

- Decimal Convert From/to National/Zoned/Signed-QWord:
    bcdcfn. bcdcfz. bcdctn. bcdctz. bcdcfsq. bcdctsq.

- Decimal Copy-Sign/Set-Sign:
    bcdcpsgn. bcdsetsgn.

- Decimal Shift/Unsigned-Shift/Shift-and-Round:
    bcds. bcdus. bcdsr.

- Decimal (Unsigned) Truncate:
    bcdtrunc. bcdutrunc.

Total 13 instructions

Thanks Amehsan's advice! Thanks Kit's great help!
Reviewers: hal, nemanja, kbarton, tjablin, amehsan

http://reviews.llvm.org/D17838

llvm-svn: 264568

8 years ago[Power9] Implement new vsx instructions: insert, extract, test data class, min/max...
Chuang-Yu Cheng [Mon, 28 Mar 2016 08:34:28 +0000 (08:34 +0000)]
[Power9] Implement new vsx instructions: insert, extract, test data class, min/max, reverse, permute, splat

This change implements the following vsx instructions:

- Scalar Insert/Extract
    xsiexpdp xsiexpqp xsxexpdp xsxsigdp xsxexpqp xsxsigqp

- Vector Insert/Extract
    xviexpdp xviexpsp xvxexpdp xvxexpsp xvxsigdp xvxsigsp
    xxextractuw xxinsertw

- Scalar/Vector Test Data Class
    xststdcdp xststdcsp xststdcqp
    xvtstdcdp xvtstdcsp

- Maximum/Minimum
    xsmaxcdp xsmaxjdp
    xsmincdp xsminjdp

- Vector Byte-Reverse/Permute/Splat
    xxbrd xxbrh xxbrq xxbrw
    xxperm xxpermr
    xxspltib

30 instructions

Thanks Nemanja for invaluable discussion! Thanks Kit's great help!
Reviewers: hal, nemanja, kbarton, tjablin, amehsan

http://reviews.llvm.org/D16842

llvm-svn: 264567

8 years agoAVX-512: Fixed ICMP instruction selection for i1 operands
Elena Demikhovsky [Mon, 28 Mar 2016 07:47:58 +0000 (07:47 +0000)]
AVX-512: Fixed ICMP instruction selection for i1 operands

ICMP instruction selection fails on SKX and KNL for i1 operand.
I use XOR to resolve:
(A == B) is equivalent to (A xor B) == 0

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

llvm-svn: 264566

8 years ago[Power9] Implement new vsx instructions: quad-precision move, fp-arithmetic
Chuang-Yu Cheng [Mon, 28 Mar 2016 07:38:01 +0000 (07:38 +0000)]
[Power9] Implement new vsx instructions: quad-precision move, fp-arithmetic

This change implements the following vsx instructions:

- quad-precision move
    xscpsgnqp, xsabsqp, xsnegqp, xsnabsqp

- quad-precision fp-arithmetic
    xsaddqp(o) xsdivqp(o) xsmulqp(o) xssqrtqp(o) xssubqp(o)
    xsmaddqp(o) xsmsubqp(o) xsnmaddqp(o) xsnmsubqp(o)

22 instructions

Thanks Nemanja and Kit for careful review and invaluable discussion!
Reviewers: hal, nemanja, kbarton, tjablin, amehsan

http://reviews.llvm.org/D16110

llvm-svn: 264565

8 years agoP0138R2: Allow direct-list-initialization of an enumeration from an integral
Richard Smith [Mon, 28 Mar 2016 06:08:37 +0000 (06:08 +0000)]
P0138R2: Allow direct-list-initialization of an enumeration from an integral
value that can convert to the enum's underlying type.

llvm-svn: 264564

8 years agoclang-tidy: Fix broken buildbot
Richard Thomson [Mon, 28 Mar 2016 04:15:41 +0000 (04:15 +0000)]
clang-tidy: Fix broken buildbot

VS 2013 does not support char16_t or char32_t

llvm-svn: 264563

8 years agoFix serialization/deserialization for __uuidof
David Majnemer [Mon, 28 Mar 2016 03:19:50 +0000 (03:19 +0000)]
Fix serialization/deserialization for __uuidof

I broke this back in r264529 because I forgot to serialize the UuidAttr
member.  Fix this by replacing the UuidAttr with a StringRef which is
properly serialized and deserialized.

llvm-svn: 264562

8 years agollvm/test/Transforms/FunctionImport/funcimport.ll: -stats REQUIRES +Asserts.
NAKAMURA Takumi [Mon, 28 Mar 2016 02:14:49 +0000 (02:14 +0000)]
llvm/test/Transforms/FunctionImport/funcimport.ll: -stats REQUIRES +Asserts.

llvm-svn: 264561

8 years agoR_AARCH64_PREL64 is relative.
Rafael Espindola [Mon, 28 Mar 2016 01:31:11 +0000 (01:31 +0000)]
R_AARCH64_PREL64 is relative.

llvm-svn: 264560

8 years ago[Coverage] Fix the way we load "<unknown>:func" records
Vedant Kumar [Mon, 28 Mar 2016 01:16:12 +0000 (01:16 +0000)]
[Coverage] Fix the way we load "<unknown>:func" records

When emitting coverage mappings for functions with local linkage and an
unknown filename, we use "<unknown>:func" for the PGO function name. The
problem is that we don't strip "<unknown>" from the name when loading
coverage data, like we do for other file names. Fix that and add a test.

llvm-svn: 264559

8 years agoBitcodeWriter: Replace dead code with an assertion, NFC
Duncan P. N. Exon Smith [Mon, 28 Mar 2016 00:03:12 +0000 (00:03 +0000)]
BitcodeWriter: Replace dead code with an assertion, NFC

The caller of ValueEnumerator::EnumerateOperandType never sends in
metadata.  Assert that, and remove the unnecessary logic.

llvm-svn: 264558

8 years agoBitcodeWriter: Reuse writeMetadataRecords, NFC
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:59:32 +0000 (23:59 +0000)]
BitcodeWriter: Reuse writeMetadataRecords, NFC

Change writeFunctionMetadata to call writeMetadataRecords.  For now
there's no functionality change, but makes it easy to serialize other
types of metadata in the function block in the future.

llvm-svn: 264557

8 years agoBitcodeWriter: Rename some functions for consistency, NFC
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:56:04 +0000 (23:56 +0000)]
BitcodeWriter: Rename some functions for consistency, NFC

To match writeMetadataRecords, writeNamedMetadata and
writeMetadataStrings, change:

    WriteModuleMetadata        => writeModuleMetadata
    WriteFunctionLocalMetadata => writeFunctionMetadata
    Write##CLASS               => write##CLASS

The only major change is "FunctionLocal" => "Function".  The point is to
be less specific, in preparation for emitting normal metadata records
inside function metadata blocks (currently we only emit
`LocalAsMetadata` there).

llvm-svn: 264556

8 years agoBitcodeWriter: Split out writeMetadataRecords, NFC
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:53:30 +0000 (23:53 +0000)]
BitcodeWriter: Split out writeMetadataRecords, NFC

Besides being a nice cleanup, this is preparation for reusing the code
in function metadata blocks.

llvm-svn: 264555

8 years agoBitcodeWriter: Restructure WriteFunctionLocalMetadata, NFC
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:38:36 +0000 (23:38 +0000)]
BitcodeWriter: Restructure WriteFunctionLocalMetadata, NFC

Use an early return to simplify logic.

llvm-svn: 264554

8 years agoBitcode: Fix MSVC bot failure from r264549
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:36:55 +0000 (23:36 +0000)]
Bitcode: Fix MSVC bot failure from r264549

make_unique => llvm::make_unique

llvm-svn: 264553

8 years agoBitcodeWriter: Simplify tracking of function-local metadata, NFC
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:22:31 +0000 (23:22 +0000)]
BitcodeWriter: Simplify tracking of function-local metadata, NFC

We don't really need a separate vector here; instead, point at a range
inside the main MDs array.  This matches how r264551 references the
ranges of strings and non-strings.

llvm-svn: 264552

8 years agoReapply ~"Bitcode: Collect all MDString records into a single blob"
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:17:54 +0000 (23:17 +0000)]
Reapply ~"Bitcode: Collect all MDString records into a single blob"

Spiritually reapply commit r264409 (reverted in r264410), albeit with a
bit of a redesign.

Firstly, avoid splitting the big blob into multiple chunks of strings.

r264409 imposed an arbitrary limit to avoid a massive allocation on the
shared 'Record' SmallVector.  The bug with that commit only reproduced
when there were more than "chunk-size" strings.  A test for this would
have been useless long-term, since we're liable to adjust the chunk-size
in the future.

Thus, eliminate the motivation for chunk-ing by storing the string sizes
in the blob.  Here's the layout:

    vbr6: # of strings
    vbr6: offset-to-blob
    blob:
       [vbr6]: string lengths
       [char]: concatenated strings

Secondly, make the output of llvm-bcanalyzer readable.

I noticed when debugging r264409 that llvm-bcanalyzer was outputting a
massive blob all in one line.  Past a small number, the strings were
impossible to split in my head, and the lines were way too long.  This
version adds support in llvm-bcanalyzer for pretty-printing.

    <STRINGS abbrevid=4 op0=3 op1=9/> num-strings = 3 {
      'abc'
      'def'
      'ghi'
    }

From the original commit:

Inspired by Mehdi's similar patch, http://reviews.llvm.org/D18342, this
should (a) slightly reduce bitcode size, since there is less record
overhead, and (b) greatly improve reading speed, since blobs are super
cheap to deserialize.

llvm-svn: 264551

8 years agoBitcodeWriter: Simplify and test writing blobs, NFC
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:04:04 +0000 (23:04 +0000)]
BitcodeWriter: Simplify and test writing blobs, NFC

Split helper out of EmitRecordWithAbbrevImpl called emitBlob to reduce
code duplication, and add a few tests for it.

No functionality change intended.

llvm-svn: 264550

8 years agoSupport: Implement StreamingMemoryObject::getPointer
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:00:59 +0000 (23:00 +0000)]
Support: Implement StreamingMemoryObject::getPointer

The implementation is fairly obvious.  This is preparation for using
some blobs in bitcode.

For clarity (and perhaps future-proofing?), I moved the call to
JumpToBit in BitstreamCursor::readRecord ahead of calling
MemoryObject::getPointer, since JumpToBit can theoretically (a) read
bytes, which (b) invalidates the blob pointer.

This isn't strictly necessary the two memory objects we have:

  - The return of RawMemoryObject::getPointer is valid until the memory
    object is destroyed.

  - StreamingMemoryObject::getPointer is valid until the next chunk is
    read from the stream.  Since the JumpToBit call is only going ahead
    to a word boundary, we'll never load another chunk.

However, reordering makes it clear by inspection that the blob returned
by BitstreamCursor::readRecord will be valid.

I added some tests for StreamingMemoryObject::getPointer and
BitstreamCursor::readRecord.

llvm-svn: 264549

8 years agoSupport: Move StreamingMemoryObject{,Test}.cpp, NFC
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 22:55:19 +0000 (22:55 +0000)]
Support: Move StreamingMemoryObject{,Test}.cpp, NFC

Change the filename to indicate this is a test, rename the tests, move
them into an anonymous namespace, and rename some variables.  All to
match our usual style before making further changes.

llvm-svn: 264548

8 years agoBitcode: Add SimpleBitstreamCursor::setArtificialByteLimit
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 22:49:32 +0000 (22:49 +0000)]
Bitcode: Add SimpleBitstreamCursor::setArtificialByteLimit

Allow users of SimpleBitstreamCursor to limit the number of bytes
available to the cursor.  This is preparation for instantiating a cursor
that isn't allowed to load more bytes from a StreamingMemoryObject (just
move around the ones already-loaded).

llvm-svn: 264547

8 years agoBitcode: Add SimpleBitstreamCursor::getPointerToByte, etc.
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 22:45:25 +0000 (22:45 +0000)]
Bitcode: Add SimpleBitstreamCursor::getPointerToByte, etc.

Add API to SimpleBitstreamCursor to allow users to translate between
byte addresses and pointers.

  - jumpToPointer: move the bit position to a particular pointer.
  - getPointerToByte: get the pointer for a particular byte.
  - getPointerToBit: get the pointer for the byte of the current bit.
  - getCurrentByteNo: convenience function for assertions and tests.

Mainly adds unit tests (getPointerToBit/Byte already has a use), but
also preparation for eventually using jumpToPointer.

llvm-svn: 264546

8 years agoBitcode: Split out SimpleBitstreamCursor
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 22:40:55 +0000 (22:40 +0000)]
Bitcode: Split out SimpleBitstreamCursor

Split out SimpleBitstreamCursor from BitstreamCursor, which is a
lower-level cursor with no knowledge of bitcode blocks, abbreviations,
or records.  It just knows how to read bits and navigate the stream.

This is mainly organizational, to separate the API for manipulating raw
bits from that for bitcode concepts like Record and Block.

llvm-svn: 264545

8 years agoRevert "isPodLike: more precise"
JF Bastien [Sun, 27 Mar 2016 20:50:05 +0000 (20:50 +0000)]
Revert "isPodLike: more precise"

This reverts commit c45f2afac5d6855a4804456a0f718563dc47ada0.

Looks like it may be causing a failure, I'll revert for now.

                 from
lib/CodeGen/AsmPrinter/DwarfDebug.cpp:14:
/usr/include/c++/4.9.2/bits/stl_pair.h: In instantiation of
                 'std::pair<_T1, _T2>& std::pair<_T1,
                 _T2>::operator=(const std::pair<_T1, _T2>&) [with _T1 =
                 std::unique_ptr<llvm::DwarfTypeUnit>; _T2 = const
                 llvm::DICompositeType*]':

/usr/include/c++/4.9.2/bits/stl_pair.h:160:8: error: use of deleted
function 'std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp,
_Dp>::operator=(const std::unique_ptr<_Tp, _Dp>&) [with _Tp =
llvm::DwarfTypeUnit; _Dp = std::default_delete<llvm::DwarfTypeUnit>]'
  first = __p.first;
        ^

llvm-svn: 264544

8 years agoworkaround for an IR variable named %.
Sanjay Patel [Sun, 27 Mar 2016 20:44:35 +0000 (20:44 +0000)]
workaround for an IR variable named %.

(which SimplifyCFG can produce...)

llvm-svn: 264543

8 years agoadd scrubber for excessive leading whitespace
Sanjay Patel [Sun, 27 Mar 2016 20:43:02 +0000 (20:43 +0000)]
add scrubber for excessive leading whitespace

llvm-svn: 264542

8 years agoisPodLike: more precise
JF Bastien [Sun, 27 Mar 2016 20:32:21 +0000 (20:32 +0000)]
isPodLike: more precise

I tried to use isPodLike in:
  http://reviews.llvm.org/D18483

That failed because !is_class is too strict on platforms which don't yet
have is_trivially_copyable. This update tries to make isPodLike smarter
for platforms which don't have is_trivially_copyable, and AFAICT it
Should Just Work on all of them. I'll revert if the bots disagree with
me.

I'll also rename isPodLike to isTriviallyCopyable if this all works out,
since that's what the standard calls it now and one day we'll be rid of
isPodLike.

llvm-svn: 264541

8 years ago[modules] When encoding SourceLocations in bitcode, rotate the 'is macro' flag
Richard Smith [Sun, 27 Mar 2016 20:13:24 +0000 (20:13 +0000)]
[modules] When encoding SourceLocations in bitcode, rotate the 'is macro' flag
bit from the top bit to the bottom bit, so that we don't need 6 VBR6 hunks for
each macro location. Reduces libstdc++ module size by about 1%.

llvm-svn: 264540

8 years agoclang-tidy: Add check modernize-raw-string-literal
Richard Thomson [Sun, 27 Mar 2016 16:43:44 +0000 (16:43 +0000)]
clang-tidy: Add check modernize-raw-string-literal

llvm-svn: 264539

8 years agoUse DAG check to try to appease bot
Teresa Johnson [Sun, 27 Mar 2016 15:36:43 +0000 (15:36 +0000)]
Use DAG check to try to appease bot

Try to appease
http://bb.pgr.jp/builders/cmake-llvm-x86_64-linux/builds/34772. This was
the only check that didn't use DAG and it wasn't found.

llvm-svn: 264538

8 years ago[ThinLTO] Add optional import message and statistics
Teresa Johnson [Sun, 27 Mar 2016 15:27:30 +0000 (15:27 +0000)]
[ThinLTO] Add optional import message and statistics

Summary:
Add a statistic to count the number of imported functions. Also, add a
new -print-imports option to emit a trace of imported functions, that
works even for an NDEBUG build.

Note that emitOptimizationRemark does not work for the above printing as
it expects a Function object and DebugLoc, neither of which we have
with summary-based importing.

This is part 2 of D18487, the first part was committed separately as
r264536.

Reviewers: joker.eph

Subscribers: llvm-commits, joker.eph

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

llvm-svn: 264537

8 years ago[ThinLTO] Don't try to import alias unless aliasee can be imported
Teresa Johnson [Sun, 27 Mar 2016 15:01:11 +0000 (15:01 +0000)]
[ThinLTO] Don't try to import alias unless aliasee can be imported

With r264503, aliases are now being added to the GlobalsToImport set
even when their aliasees can't be imported due to their linkage type.
While the importing worked correctly (the aliases imported as
declarations) due to the logic in doImportAsDefinition, there is no
point to adding them to the GlobalsToImport set.

Additionally, with D18487 it was resulting in incorrectly printing a
message indicating that the alias was imported.

To avoid this, delay adding aliases to the GlobalsToImport set until
after the linkage type of the aliasee is checked.

This patch is part of D18487.

llvm-svn: 264536

8 years agoFixing the non-x86 build by removing dependence on kmp_cpuid_t
Hal Finkel [Sun, 27 Mar 2016 13:24:09 +0000 (13:24 +0000)]
Fixing the non-x86 build by removing dependence on kmp_cpuid_t

The problem is that the definition of kmp_cpuinfo_t contains:

  char       name [3*sizeof (kmp_cpuid_t)]; // CPUID(0x80000002,0x80000003,0x80000004)

and kmp_cpuid_t is only defined when compiling for x86.

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

llvm-svn: 264535

8 years agoEncapsulate a couple of on-disk structures a little more.
Richard Smith [Sun, 27 Mar 2016 07:28:06 +0000 (07:28 +0000)]
Encapsulate a couple of on-disk structures a little more.

llvm-svn: 264534