platform/upstream/llvm.git
8 years agoRegisterPressure: Fix default lanemask for missing regunit intervals
Matthias Braun [Fri, 29 Apr 2016 02:44:54 +0000 (02:44 +0000)]
RegisterPressure: Fix default lanemask for missing regunit intervals

In case of missing live intervals for a physical registers
getLanesWithProperty() would report 0 which was not a safe default in
all situations. Add a parameter to pass in a safe default.
No testcase because in-tree targets do not skip computing register unit
live intervals.

Also cleanup the getXXX() functions to not perform the
RequireLiveIntervals checks anymore so we do not even need to return
safe defaults.

llvm-svn: 267977

8 years agoRegisterPressure: Cannot produce dead (subregister) defs anymore
Matthias Braun [Fri, 29 Apr 2016 02:44:48 +0000 (02:44 +0000)]
RegisterPressure: Cannot produce dead (subregister) defs anymore

With the DetectDeadLanes pass in place we cannot run into situations
anymore where defs suddenly become dead.
Also add a missing check so we do not try to add an undef flag to a
physreg (found by visual inspection, no failing test).

llvm-svn: 267976

8 years ago[Parser] Clear the TemplateParamScope bit of the current scope's flag
Akira Hatanaka [Fri, 29 Apr 2016 02:24:14 +0000 (02:24 +0000)]
[Parser] Clear the TemplateParamScope bit of the current scope's flag
if we are parsing a template specialization.

This commit makes changes to clear the TemplateParamScope bit and set
the TemplateParamParent field of the current scope to null if a template
specialization is being parsed.

Before this commit, Sema::ActOnStartOfLambdaDefinition would check
whether the parent template scope had any decls to determine whether
or not a template specialization was being parsed. This wasn't correct
since it couldn't distinguish between a real template specialization and
a template defintion with an unnamed template parameter (only template
parameters with names are added to the scope's decl list). To fix the
bug, this commit changes the code to check the pointer to the parent
template scope rather than the decl list.

rdar://problem/23440346

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

llvm-svn: 267975

8 years agoFix build by casting to the proper int type.
Ivan Krasin [Fri, 29 Apr 2016 02:09:57 +0000 (02:09 +0000)]
Fix build by casting to the proper int type.

Reviewers: eugenis

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

llvm-svn: 267974

8 years agoMove INVOKE tests into test/libcxx sub-tree.
Eric Fiselier [Fri, 29 Apr 2016 01:52:57 +0000 (01:52 +0000)]
Move INVOKE tests into test/libcxx sub-tree.

Testing the concrete implementation of INVOKE means calling the implementation
specific names `__invoke` and `__invoke_constexpr`. For this reason the test
are non-standard. For this reason it's best if the tests live outside of the
`test/std` directory.

llvm-svn: 267973

8 years ago[OPENMP] Enable correct generation of runtime call when target directive is separated...
Carlo Bertolli [Fri, 29 Apr 2016 01:37:30 +0000 (01:37 +0000)]
[OPENMP] Enable correct generation of runtime call when target directive is separated from teams directive by multiple curly brackets

http://reviews.llvm.org/D18474

This patch fixes a bug in code generation of the correct OpenMP runtime library call in presence of target and teams, when target is separated by teams with multiple curly brackets. The current implementation will not be able to see the teams directive inside target and issue a call to tgt_target instead of the correct one tgt_target_teams.

llvm-svn: 267972

8 years ago[llvm-cov] Don't emit 'nan%' in reports
Vedant Kumar [Fri, 29 Apr 2016 01:31:49 +0000 (01:31 +0000)]
[llvm-cov] Don't emit 'nan%' in reports

llvm-svn: 267971

8 years ago[LoopVectorize] Keep hints from original loop on the vector loop
Hal Finkel [Fri, 29 Apr 2016 01:27:40 +0000 (01:27 +0000)]
[LoopVectorize] Keep hints from original loop on the vector loop

We need to keep loop hints from the original loop on the new vector loop.
Failure to do this meant that, for example:

  void foo(int *b) {
  #pragma clang loop unroll(disable)
    for (int i = 0; i < 16; ++i)
      b[i] = 1;
  }

this loop would be unrolled. Why? Because we'd vectorize it, thus dropping the
hints that unrolling should be disabled, and then we'd unroll it.

llvm-svn: 267970

8 years agoPR27549: fix bug that resulted in us giving a translation-unit-scope variable a
Richard Smith [Fri, 29 Apr 2016 01:23:20 +0000 (01:23 +0000)]
PR27549: fix bug that resulted in us giving a translation-unit-scope variable a
mangled name if it happened to be declared in an 'extern "C++"' context. This
also causes us to use the '_ZL' mangling rather than the '_Z' mangling for
internal-linkage entities that are wrapped in a language linkage construct.

llvm-svn: 267969

8 years agoFix possible test breakage for MinGW
Eric Fiselier [Fri, 29 Apr 2016 01:22:16 +0000 (01:22 +0000)]
Fix possible test breakage for MinGW

llvm-svn: 267968

8 years ago[msan] Tests for vector compare intrinsics.
Evgeniy Stepanov [Fri, 29 Apr 2016 01:20:05 +0000 (01:20 +0000)]
[msan] Tests for vector compare intrinsics.

llvm-svn: 267967

8 years ago[msan] Handle vector compare x86 intrinsics.
Evgeniy Stepanov [Fri, 29 Apr 2016 01:19:52 +0000 (01:19 +0000)]
[msan] Handle vector compare x86 intrinsics.

This handles SSE and SSE2 cmp_* and comiXX_* intrinsics.

llvm-svn: 267966

8 years ago[llvm-pdbdump] Try to appease the ASan bot
David Majnemer [Fri, 29 Apr 2016 01:00:17 +0000 (01:00 +0000)]
[llvm-pdbdump] Try to appease the ASan bot

We didn't check that the file was large enough to hold a super block.

llvm-svn: 267965

8 years ago[X86] Use nested switches to vary the operand to helper functions that were previousl...
Craig Topper [Fri, 29 Apr 2016 00:51:30 +0000 (00:51 +0000)]
[X86] Use nested switches to vary the operand to helper functions that were previously called in multiple cases. This seems to help the inliner reduce code. NFC

llvm-svn: 267964

8 years agoFix get_temp_file_name() to compile on Windows. Patch from STL@microsoft.com
Eric Fiselier [Fri, 29 Apr 2016 00:51:24 +0000 (00:51 +0000)]
Fix get_temp_file_name() to compile on Windows. Patch from STL@microsoft.com

llvm-svn: 267963

8 years agoRemove more names of unreferenced parameters. Patch from STL@microsoft.com
Eric Fiselier [Fri, 29 Apr 2016 00:47:16 +0000 (00:47 +0000)]
Remove more names of unreferenced parameters. Patch from STL@microsoft.com

llvm-svn: 267962

8 years agoAdd a return value for nasty_mutex::operator&. Patch from STL@microsoft.com
Eric Fiselier [Fri, 29 Apr 2016 00:45:46 +0000 (00:45 +0000)]
Add a return value for nasty_mutex::operator&. Patch from STL@microsoft.com

llvm-svn: 267961

8 years ago[ASan] [SystemZ] Mark segv_read_write.c as UNSUPPORTED.
Marcin Koscielnicki [Fri, 29 Apr 2016 00:43:20 +0000 (00:43 +0000)]
[ASan] [SystemZ] Mark segv_read_write.c as UNSUPPORTED.

On s390*-linux, sigcontext just doesn't contain any information that could
be used to recover the type of access, so there's no way to fix this, short
of emulating the faulting instruction.

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

llvm-svn: 267960

8 years agoAdd <string> include for streaming operators. Patch from STL@microsoft.com
Eric Fiselier [Fri, 29 Apr 2016 00:39:40 +0000 (00:39 +0000)]
Add <string> include for streaming operators. Patch from STL@microsoft.com

llvm-svn: 267959

8 years agoAdd proper include for unique_ptr. Patch from STL@microsoft.com
Eric Fiselier [Fri, 29 Apr 2016 00:37:56 +0000 (00:37 +0000)]
Add proper include for unique_ptr. Patch from STL@microsoft.com

llvm-svn: 267958

8 years agoAvoid -Wshadow warnings about constructor parameters named after fields
Reid Kleckner [Fri, 29 Apr 2016 00:37:43 +0000 (00:37 +0000)]
Avoid -Wshadow warnings about constructor parameters named after fields

Usually these parameters are used solely to initialize the field in the
initializer list, and there is no real shadowing confusion.

There is a new warning under -Wshadow called
-Wshadow-field-in-constructor-modified. It attempts to find
modifications of such constructor parameters that probably intended to
modify the field.

It has some false negatives, though, so there is another warning group,
-Wshadow-field-in-constructor, which always warns on this special case.
For users who just want the old behavior and don't care about these fine
grained groups, we have a new warning group called -Wshadow-all that
activates everything.

Fixes PR16088.

Reviewers: rsmith

Subscribers: cfe-commits

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

llvm-svn: 267957

8 years ago[Sema] Fix a crash that occurs when a variable template is initialized
Akira Hatanaka [Thu, 28 Apr 2016 23:50:12 +0000 (23:50 +0000)]
[Sema] Fix a crash that occurs when a variable template is initialized
with a generic lambda.

This patch fixes Sema::InstantiateVariableInitializer to switch to the
context of the variable before instantiating its initializer, which is
necessary to set the correct type for VarTemplateSpecializationDecl.

This is the first part of the patch that was reviewed here:
http://reviews.llvm.org/D19175

rdar://problem/23440346

llvm-svn: 267956

8 years ago[llvm-pdbdump] Restore error messages, handle bad block sizes
David Majnemer [Thu, 28 Apr 2016 23:47:27 +0000 (23:47 +0000)]
[llvm-pdbdump] Restore error messages, handle bad block sizes

We lost the ability to report errors, bring it back.  Also, correctly
validate the block size.

llvm-svn: 267955

8 years agoLiveIntervalAnalysis: Remove LiveVariables requirement
Matthias Braun [Thu, 28 Apr 2016 23:42:51 +0000 (23:42 +0000)]
LiveIntervalAnalysis: Remove LiveVariables requirement

This requirement was a huge hack to keep LiveVariables alive because it
was optionally used by TwoAddressInstructionPass and PHIElimination.
However we have AnalysisUsage::addUsedIfAvailable() which we can use in
those passes.

This re-applies r260806 with LiveVariables manually added to PowerPC to
hopefully not break the stage 2 bots this time.

llvm-svn: 267954

8 years ago[llvm-pdbdump] Correctly read data larger than a block
David Majnemer [Thu, 28 Apr 2016 23:24:23 +0000 (23:24 +0000)]
[llvm-pdbdump] Correctly read data larger than a block

A bug was introduced when the code was refactored which resulted in a
bad memory access.

This fixes PR27565.

llvm-svn: 267953

8 years ago[LoopDist] Emit optimization remarks (-Rpass*)
Adam Nemet [Thu, 28 Apr 2016 23:08:32 +0000 (23:08 +0000)]
[LoopDist] Emit optimization remarks (-Rpass*)

I closely followed the precedents set by the vectorizer:

* With -Rpass-missed, the loop is reported with further details pointing
to -Rpass--analysis.

* -Rpass-analysis reports the details why distribution has failed.

* Regardless of -Rpass*, when distribution fails for a loop where
distribution was forced with the pragma, a warning is produced according
to -Wpass-failed.  In this case the analysis info is also printed even
without -Rpass-analysis.

llvm-svn: 267952

8 years ago[LoopDist] Improve debug messages
Adam Nemet [Thu, 28 Apr 2016 23:08:30 +0000 (23:08 +0000)]
[LoopDist] Improve debug messages

The next patch will start using these for -Rpass-analysis so they won't
be internal-only anymore.

Move the 'Skipping; ' prefix that some of the message are using into the
'fail' function.  We don't want to include this prefix in
the -Rpass-analysis report.

llvm-svn: 267951

8 years ago[LoopDist] Add helper to print debug message when distribution fails. NFC
Adam Nemet [Thu, 28 Apr 2016 23:08:27 +0000 (23:08 +0000)]
[LoopDist] Add helper to print debug message when distribution fails.  NFC

This will form the basis to emit optimization remarks (-Rpass*).

llvm-svn: 267950

8 years ago[Inliner] Preserve llvm.mem.parallel_loop_access metadata
Hal Finkel [Thu, 28 Apr 2016 23:00:04 +0000 (23:00 +0000)]
[Inliner] Preserve llvm.mem.parallel_loop_access metadata

When inlining a call site with llvm.mem.parallel_loop_access metadata, this
metadata needs to be propagated to all cloned memory-accessing instructions.
Otherwise, inlining parts of the loop body will invalidate the annotation.

With this functionality, we now vectorize the following as expected:

  void Body(int *res, int *c, int *d, int *p, int i) {
    res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];
  }

  void Test(int *res, int *c, int *d, int *p, int n) {
    int i;

  #pragma clang loop vectorize(assume_safety)
    for (i = 0; i < 1600; i++) {
      Body(res, c, d, p, i);
    }
  }

llvm-svn: 267949

8 years agoDifferential Revision: http://reviews.llvm.org/D19687
Sriraman Tallam [Thu, 28 Apr 2016 22:34:00 +0000 (22:34 +0000)]
Differential Revision: reviews.llvm.org/D19687

Set module flag PIELevel. Simplify code that sets PICLevel flag.

llvm-svn: 267948

8 years agoGuard libc++ specific c.__invariants() tests in LIBCPP_ASSERT macros
Eric Fiselier [Thu, 28 Apr 2016 22:28:23 +0000 (22:28 +0000)]
Guard libc++ specific c.__invariants() tests in LIBCPP_ASSERT macros

llvm-svn: 267947

8 years ago[ASan] Reenable __builtin_setjmp test on PowerPC, disable on SystemZ.
Marcin Koscielnicki [Thu, 28 Apr 2016 22:23:19 +0000 (22:23 +0000)]
[ASan] Reenable __builtin_setjmp test on PowerPC, disable on SystemZ.

Since __builtin_setjmp has been fixed by rL267943, the test now works
on PowerPC.  Enable it.

On the other hand, the SystemZ backend doesn't currently support
__builtin_setjmp.  Disable it.

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

llvm-svn: 267946

8 years agoRead discriminators correctly from object file.
Dehao Chen [Thu, 28 Apr 2016 22:09:37 +0000 (22:09 +0000)]
Read discriminators correctly from object file.

Summary:
This is the follow-up patch for http://reviews.llvm.org/D19436
* Update the discriminator reading algorithm to match the assignment algorithm.
* Add test to cover the new algorithm.

Reviewers: dnovillo, echristo, dblaikie

Subscribers: danielcdh, dblaikie, echristo, llvm-commits, joker.eph

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

llvm-svn: 267945

8 years ago[CodeGen] Remove extra ';'
Marcin Koscielnicki [Thu, 28 Apr 2016 21:49:46 +0000 (21:49 +0000)]
[CodeGen] Remove extra ';'

Squashes a -Wpedantic warning.

llvm-svn: 267944

8 years ago[PowerPC] Fix the EH_SjLj_Setup pseudo.
Marcin Koscielnicki [Thu, 28 Apr 2016 21:24:37 +0000 (21:24 +0000)]
[PowerPC] Fix the EH_SjLj_Setup pseudo.

This instruction is just a control flow marker - it should not
actually exist in the object file.  Unfortunately, nothing catches
it before it gets to AsmPrinter.  If integrated assembler is used,
it's considered to be a normal 4-byte instruction, and emitted as
an all-0 word, crashing the program.  With external assembler,
a comment is emitted.

Fixed by setting Size to 0 and handling it in MCCodeEmitter - this
means the comment will still be emitted if integrated assembler
is not used.

This broke an ASan test, which has been disabled for a long time
as a result (see the discussion on D19657).  We can reenable it
once this lands.

llvm-svn: 267943

8 years ago[clang][AVX512][Builtin] Adding intrinsics for the SAD instruction set.
Michael Zuckerman [Thu, 28 Apr 2016 21:21:08 +0000 (21:21 +0000)]
[clang][AVX512][Builtin] Adding intrinsics for the SAD instruction set.

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

llvm-svn: 267942

8 years ago[CMake] Adding another missing include. NFC.
Chris Bieneman [Thu, 28 Apr 2016 21:16:45 +0000 (21:16 +0000)]
[CMake] Adding another missing include. NFC.

This also works fine today, but will break with my upcoming refactoring.

llvm-svn: 267941

8 years agoFix a bug in llvm-objdump for -private-headers printing the LC_CODE_SIGNATURE Mach...
Kevin Enderby [Thu, 28 Apr 2016 21:07:20 +0000 (21:07 +0000)]
Fix a bug in llvm-objdump for -private-headers printing the LC_CODE_SIGNATURE Mach-O load command.

rdar://25985653

llvm-svn: 267940

8 years ago[RDF] Recognize tail calls in graph creation
Krzysztof Parzyszek [Thu, 28 Apr 2016 20:40:08 +0000 (20:40 +0000)]
[RDF] Recognize tail calls in graph creation

llvm-svn: 267939

8 years agoFix warning in PDB code. NFC
Amaury Sechet [Thu, 28 Apr 2016 20:39:39 +0000 (20:39 +0000)]
Fix warning in PDB code. NFC

llvm-svn: 267938

8 years agoLiveIntervalAnalysis: No need to deal with dead subregister defs anymore.
Matthias Braun [Thu, 28 Apr 2016 20:35:26 +0000 (20:35 +0000)]
LiveIntervalAnalysis: No need to deal with dead subregister defs anymore.

The DetectDeadLaneMask already ensures that we have no dead subregister
definitions making the special handling in LiveIntervalAnalysis
unnecessary. This reverts most of r248335.

llvm-svn: 267937

8 years ago[RDF] Improve handling of inline-asm
Krzysztof Parzyszek [Thu, 28 Apr 2016 20:33:33 +0000 (20:33 +0000)]
[RDF] Improve handling of inline-asm

- Keep implicit defs from inline-asm instructions.
- Treat register references from inline-asm as fixed.

llvm-svn: 267936

8 years agoDelete dead variable.
Rafael Espindola [Thu, 28 Apr 2016 20:29:12 +0000 (20:29 +0000)]
Delete dead variable.

llvm-svn: 267935

8 years agoAdd parentheses to silence -Wparentheses warnings.
Zachary Turner [Thu, 28 Apr 2016 20:26:30 +0000 (20:26 +0000)]
Add parentheses to silence -Wparentheses warnings.

llvm-svn: 267934

8 years ago[clang-tidy] cppcoreguidelines-pro-type-member-init should not complain about static...
Alexander Kornienko [Thu, 28 Apr 2016 20:20:01 +0000 (20:20 +0000)]
[clang-tidy] cppcoreguidelines-pro-type-member-init should not complain about static variables

Summary:
Variables with static storage duration are zero-initialized per
[stmt.dcl]p4 and [basic.start.init]p2.

Reviewers: sbenza, aaron.ballman

Subscribers: michael_miller, flx, cfe-commits

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

llvm-svn: 267933

8 years ago[RDF] Add option to keep dead phi nodes in DFG
Krzysztof Parzyszek [Thu, 28 Apr 2016 20:17:06 +0000 (20:17 +0000)]
[RDF] Add option to keep dead phi nodes in DFG

Dead phi nodes are needed for code motion (such as copy propagation),
where a new use would be placed in a location that would be dominated
by a dead phi. Such a transformation is not legal for copy propagation,
and the existence of the phi would prevent it, but if the phi is not
there, it may appear to be valid.

llvm-svn: 267932

8 years agoUsed llvm_unreached to quite a VC++ compiler warning.
Adrian McCarthy [Thu, 28 Apr 2016 20:14:44 +0000 (20:14 +0000)]
Used llvm_unreached to quite a VC++ compiler warning.

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

llvm-svn: 267931

8 years ago[CMake] [Darwin] Use libtool instead of ar && ranlib
Chris Bieneman [Thu, 28 Apr 2016 20:14:19 +0000 (20:14 +0000)]
[CMake] [Darwin] Use libtool instead of ar && ranlib

Summary: Using libtool instead of ar and ranlib on Darwin shaves a minute off my clang build. This is because on Darwin libtool is optimized to give hints to the kernel about filesystem interactions that allow it to be faster.

Reviewers: bogner, pete

Subscribers: llvm-commits

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

llvm-svn: 267930

8 years agoUpdate llvm-objdump for disassembly of ARM Mach-O files to always include the opcode...
Kevin Enderby [Thu, 28 Apr 2016 20:14:13 +0000 (20:14 +0000)]
Update llvm-objdump for disassembly of ARM Mach-O files to always include the opcode bytes.

As this is the expected behavior of the old darwin otool(1) for ARM Mach-O files.

rdar://25896249

llvm-svn: 267929

8 years agoRead the rest of the DBI substreams, and parse source info.
Zachary Turner [Thu, 28 Apr 2016 20:05:18 +0000 (20:05 +0000)]
Read the rest of the DBI substreams, and parse source info.

We now read out the rest of the substreams from the DBI streams.  One of
these substreams, the FileInfo substream, contains information about which
source files contribute to each module (aka compiland).  This patch
additionally parses out the file information from that substream, and
dumps it in llvm-pdbdump.

Differential Revision: http://reviews.llvm.org/D19634
Reviewed by: ruiu

llvm-svn: 267928

8 years agoThis reverts commit r265505.
Kit Barton [Thu, 28 Apr 2016 20:00:42 +0000 (20:00 +0000)]
This reverts commit r265505.

Revert "[Power9] Implement add-pc, multiply-add, modulo, extend-sign-shift, random number, set bool, and dfp test significance".
This patch has caused a functional regression in SPEC2k6 namd, and a performance regression in mesa-pipe.

llvm-svn: 267927

8 years agoOne more fix for use of invalid PresumedLocs missed by r267914.
Richard Smith [Thu, 28 Apr 2016 19:54:51 +0000 (19:54 +0000)]
One more fix for use of invalid PresumedLocs missed by r267914.

llvm-svn: 267926

8 years ago[Hexagon] Add instruction aliases for vector unsigned compare-equal
Krzysztof Parzyszek [Thu, 28 Apr 2016 19:49:18 +0000 (19:49 +0000)]
[Hexagon] Add instruction aliases for vector unsigned compare-equal

Unsigned compare-equal instructions are mapped to signed compare-equal.

llvm-svn: 267925

8 years ago[analyzer] Add path note for localizability checker.
Devin Coughlin [Thu, 28 Apr 2016 19:44:40 +0000 (19:44 +0000)]
[analyzer] Add path note for localizability checker.

Add a path note indicating the location of the non-localized string
literal in NonLocalizedStringChecker.

rdar://problem/25981525

llvm-svn: 267924

8 years agoXFail TestBitfields.py Python API tests.
Chaoren Lin [Thu, 28 Apr 2016 19:40:19 +0000 (19:40 +0000)]
XFail TestBitfields.py Python API tests.

Summary:
Started failing after rL267895.
Possibly related to http://llvm.org/pr27510.

Reviewers: labath, tfiala

Subscribers: lldb-commits

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

llvm-svn: 267923

8 years agoAMDGPU: Emit error if too much LDS is used
Matt Arsenault [Thu, 28 Apr 2016 19:37:35 +0000 (19:37 +0000)]
AMDGPU: Emit error if too much LDS is used

llvm-svn: 267922

8 years agoUse a single context for lto.
Rafael Espindola [Thu, 28 Apr 2016 19:30:41 +0000 (19:30 +0000)]
Use a single context for lto.

Using multiple context used to be a really big memory saving because we
could free memory from each file while the linker proceeded with the
symbol resolution. We are getting lazier about reading data from the
bitcode, so I was curious if this was still a good tradeoff.

One thing that is a bit annoying is that we still have to copy the
symbol names. The problem is that the names are stored in the Module and
get freed when we move the module bits during linking.

Long term I think the solution is to add a symbol table to the bitcode.
That way IRObject file will not need to use a Module or a Context and we
can drop it while still keeping a StringRef to the names.

This patch is still be an interesting medium term improvement.

When linking llvm-as without debug info this patch is a small speedup:

master: 29.861877513 seconds
patch: 29.814533787 seconds

With debug info the numbers are

master: 34.765181469 seconds
patch: 34.563351584 seconds

The peak memory usage when linking llvm-as with debug info was

master: 599.10MB
patch: 600.13MB
llvm-svn: 267921

8 years agoRemove doInitialization() and doFinalization() member declarations without definitions.
Yaron Keren [Thu, 28 Apr 2016 19:21:30 +0000 (19:21 +0000)]
Remove doInitialization() and doFinalization() member declarations without definitions.
Visual C++ 2015 flags this in the IDE.

llvm-svn: 267919

8 years agoReset the TopRPTracker's position in ScheduleDAGMILive::initQueues
Krzysztof Parzyszek [Thu, 28 Apr 2016 19:17:44 +0000 (19:17 +0000)]
Reset the TopRPTracker's position in ScheduleDAGMILive::initQueues

ScheduleDAGMI::initQueues changes the RegionBegin to the first non-debug
instruction. Since it does not track register pressure, it does not affect
any RP trackers. ScheduleDAGMILive inherits initQueues from ScheduleDAGMI,
and it does reset the TopTPTracker in its schedule method. Any derived,
target-specific scheduler will need to do it as well, but the TopRPTracker
is only exposed as a "const" object to derived classes. Without the ability
to modify the tracker directly, this leaves a derived scheduler with a
potential of having the TopRPTracker out-of-sync with the CurrentTop.

The symptom of the problem:
  void llvm::ScheduleDAGMILive::scheduleMI(llvm::SUnit *, bool):
  Assertion `TopRPTracker.getPos() == CurrentTop && "out of sync"' failed.

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

llvm-svn: 267918

8 years agoSkip scanRelocs for non-alloc sections.
Rui Ueyama [Thu, 28 Apr 2016 18:42:04 +0000 (18:42 +0000)]
Skip scanRelocs for non-alloc sections.

Relocations against sections with no SHF_ALLOC bit are R_ABS relocations.
Currently we are creating Relocations vector for them, but that is wasteful.
This patch is to skip vector construction and to directly apply relocations
in place.

This patch seems to be pretty effective for large executables with debug info.
r266158 (Rafael's patch to change the way how we apply relocations) caused a
temporary performance degradation for such executables, but this patch makes
it even faster than before.

Time to link clang with debug info (output size is 1070 MB):

  before r266158: 15.312 seconds (0%)
  r266158:        17.301 seconds (+13.0%)
  Head:           16.484 seconds (+7.7%)
  w/patch:        13.166 seconds (-14.0%)

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

llvm-svn: 267917

8 years agoAMDGPU: Fix mishandling array allocations when promoting alloca
Matt Arsenault [Thu, 28 Apr 2016 18:38:48 +0000 (18:38 +0000)]
AMDGPU: Fix mishandling array allocations when promoting alloca

The canonical form for allocas is a single allocation of the array type.
In case we see a non-canonical array alloca, make sure we aren't
replacing this with an array N times smaller.

llvm-svn: 267916

8 years agoFix builds broken in r267910.
Eugene Zelenko [Thu, 28 Apr 2016 18:27:35 +0000 (18:27 +0000)]
Fix builds broken in r267910.

llvm-svn: 267915

8 years agoFix use of uninitialized value exposed by r267802. Accessors of an invalid
Richard Smith [Thu, 28 Apr 2016 18:26:32 +0000 (18:26 +0000)]
Fix use of uninitialized value exposed by r267802. Accessors of an invalid
PresumedLoc should not be called.

llvm-svn: 267914

8 years ago[CMake] Updating Apple CMake cache file
Chris Bieneman [Thu, 28 Apr 2016 18:24:29 +0000 (18:24 +0000)]
[CMake] Updating Apple CMake cache file

Changing the Apple CMake cache file to better match the way Apple Clang builds are built.

llvm-svn: 267913

8 years ago[CMake] Adding some missing CMake includes. NFC.
Chris Bieneman [Thu, 28 Apr 2016 18:22:01 +0000 (18:22 +0000)]
[CMake] Adding some missing CMake includes. NFC.

This happens to be working now because the includes exist in another CMake file that is included before this one. That will change with upcoming refactoring.

llvm-svn: 267912

8 years agoAdd "PIE Level" metadata to module flags.
Sriraman Tallam [Thu, 28 Apr 2016 18:15:44 +0000 (18:15 +0000)]
Add "PIE Level" metadata to module flags.

http://reviews.llvm.org/D19671

llvm-svn: 267911

8 years agoFix some Clang-tidy modernize and Include What You Use warnings.
Eugene Zelenko [Thu, 28 Apr 2016 18:04:41 +0000 (18:04 +0000)]
Fix some Clang-tidy modernize and Include What You Use warnings.

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

llvm-svn: 267910

8 years agoMake the test exercise all paths modified in r267746.
Paul Robinson [Thu, 28 Apr 2016 17:52:28 +0000 (17:52 +0000)]
Make the test exercise all paths modified in r267746.

llvm-svn: 267909

8 years ago[PGO] Fix incorrect Twine usage in emitting optimization remarks.
Rong Xu [Thu, 28 Apr 2016 17:49:56 +0000 (17:49 +0000)]
[PGO] Fix incorrect Twine usage in emitting optimization remarks.

Should not store Twine objects to local variables. This is fixed the test
failures with r267815 in VS2015 X64 build.

llvm-svn: 267908

8 years ago[test/asan] Update a test case to work with old Darwin SDK's
Vedant Kumar [Thu, 28 Apr 2016 17:48:35 +0000 (17:48 +0000)]
[test/asan] Update a test case to work with old Darwin SDK's

On Darwin, MAP_ANONYMOUS is a synonym for MAP_ANON. However, some SDK's
don't define MAP_ANONYMOUS. Use MAP_ANON to work around this.

(As a point of interest, the situation is exactly reversed on Linux.)

llvm-svn: 267907

8 years ago[OpenCL] Fix bug in mergeTypes which causes equivalent types treated as different.
Yaxun Liu [Thu, 28 Apr 2016 17:34:57 +0000 (17:34 +0000)]
[OpenCL] Fix bug in mergeTypes which causes equivalent types treated as different.

When comparing unqualified types, canonical types should be used, otherwise equivalent types may be treated as different type.

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

llvm-svn: 267906

8 years agoMinor format change and fixing typos in the comments. NFC.
Rong Xu [Thu, 28 Apr 2016 17:31:22 +0000 (17:31 +0000)]
Minor format change and fixing typos in the comments. NFC.

llvm-svn: 267905

8 years agoDebug info: Apply an artificial debug location to __cyg_profile_func.* calls.
Adrian Prantl [Thu, 28 Apr 2016 17:21:56 +0000 (17:21 +0000)]
Debug info: Apply an artificial debug location to __cyg_profile_func.* calls.
The LLVM Verifier expects all inlinable calls in debuggable functions to
have a location.

rdar://problem/25818489

llvm-svn: 267904

8 years agoRe-apply r267784, r267824 and r267830.
Peter Collingbourne [Thu, 28 Apr 2016 17:09:37 +0000 (17:09 +0000)]
Re-apply r267784, r267824 and r267830.

I have updated the compiler-rt tests.

llvm-svn: 267903

8 years agoUpdate visibility flags for CFI tests.
Peter Collingbourne [Thu, 28 Apr 2016 17:09:09 +0000 (17:09 +0000)]
Update visibility flags for CFI tests.

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

llvm-svn: 267902

8 years ago[Hexagon] Define certain aliases for vector instructions
Krzysztof Parzyszek [Thu, 28 Apr 2016 16:43:16 +0000 (16:43 +0000)]
[Hexagon] Define certain aliases for vector instructions

Specifically:
  Vd = #0   -> Vd = vxor(Vd, Vd)
  Vdd = #0  -> Vdd.w = vsub(Vdd.w, Vdd.w)
  Vdd = Vss -> Vdd = vcombine(Vss.H, Vss.L)

llvm-svn: 267901

8 years ago[mips][atomics] Fix partword atomic binary operation implementation
Simon Dardis [Thu, 28 Apr 2016 16:26:43 +0000 (16:26 +0000)]
[mips][atomics] Fix partword atomic binary operation implementation

Currently Mips::emitAtomicBinaryPartword() does not properly respect the
width of pointers. For MIPS64 this causes the memory address that the ll/sc
sequence uses to be truncated. At runtime this causes a segmentation fault.

This can be fixed by applying similar changes as r266204, so that a full 64bit
pointer is loaded.

Reviewers: dsanders

Differential Review: http://reviews.llvm.org/D19651

llvm-svn: 267900

8 years ago[SLPVectorizer] Extend SLP Vectorizer to deal with aggregates.
Arch D. Robison [Thu, 28 Apr 2016 16:11:45 +0000 (16:11 +0000)]
[SLPVectorizer] Extend SLP Vectorizer to deal with aggregates.

The refactoring portion part was done as r267748.

http://reviews.llvm.org/D14185

llvm-svn: 267899

8 years ago[GVN] Minor code cleanup. NFC.
Chad Rosier [Thu, 28 Apr 2016 16:00:15 +0000 (16:00 +0000)]
[GVN] Minor code cleanup. NFC.

Differential Revision: http://reviews.llvm.org/D18828
Patch by Aditya Kumar!

llvm-svn: 267898

8 years ago[Hexagon] Handle double-vector registers as new-value producers
Krzysztof Parzyszek [Thu, 28 Apr 2016 15:54:48 +0000 (15:54 +0000)]
[Hexagon] Handle double-vector registers as new-value producers

Patch by Colin LeMahieu.

llvm-svn: 267897

8 years agoDebug Info: Restore the pre-r240853 behavior for DWARF2 bitfields.
Adrian Prantl [Thu, 28 Apr 2016 15:37:52 +0000 (15:37 +0000)]
Debug Info: Restore the pre-r240853 behavior for DWARF2 bitfields.

The DWARF2 specification of DW_AT_bit_offset is ambiguous for
little-endian machines, but by restoring to the old behavior
we match what debuggers expect and what other popular compilers
generate.

llvm-svn: 267896

8 years agoDebug info: Support DWARF4 bitfields via DW_AT_data_bit_offset.
Adrian Prantl [Thu, 28 Apr 2016 15:37:48 +0000 (15:37 +0000)]
Debug info: Support DWARF4 bitfields via DW_AT_data_bit_offset.

The DWARF2 specification of DW_AT_bit_offset was written from the perspective of
a big-endian machine with unclear semantics for other systems.  DWARF4
deprecated DW_AT_bit_offset and introduced a new attribute DW_AT_data_bit_offset
that simply counts the number of bits from the beginning of the containing
entity regardless of endianness.

After this patch LLVM emits DW_AT_bit_offset for DWARF 2 or 3 and
DW_AT_data_bit_offset when DWARF 4 or later is requested.

llvm-svn: 267895

8 years agoProvide location information (file name, line number) in TSan reports about global...
Kuba Brecka [Thu, 28 Apr 2016 15:27:10 +0000 (15:27 +0000)]
Provide location information (file name, line number) in TSan reports about global variables.

llvm-svn: 267894

8 years ago[EarlyCSE] Change LoadValue field Value *Data to Instruction *Inst. NFC.
Geoff Berry [Thu, 28 Apr 2016 15:22:37 +0000 (15:22 +0000)]
[EarlyCSE] Change LoadValue field Value *Data to Instruction *Inst. NFC.

Made in preparation for adding MemorySSA support to EarlyCSE.

llvm-svn: 267893

8 years ago[libFuzzer] Improve documentation
Kostya Serebryany [Thu, 28 Apr 2016 15:19:05 +0000 (15:19 +0000)]
[libFuzzer] Improve documentation

Reviewers: kcc

Subscribers: llvm-commits

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

llvm-svn: 267892

8 years ago[RDF] Handle undefined registers in RDF copy propagation
Krzysztof Parzyszek [Thu, 28 Apr 2016 15:09:19 +0000 (15:09 +0000)]
[RDF] Handle undefined registers in RDF copy propagation

When updating the graph, make sure that new uses without reaching defs
are handled correctly.

llvm-svn: 267891

8 years ago[EarlyCSE] Sort includes. NFC.
Geoff Berry [Thu, 28 Apr 2016 14:59:27 +0000 (14:59 +0000)]
[EarlyCSE] Sort includes.  NFC.

Reviewers: mcrosier

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 267890

8 years agoRangify for loops, NFC.
Yaron Keren [Thu, 28 Apr 2016 14:49:44 +0000 (14:49 +0000)]
Rangify for loops, NFC.

llvm-svn: 267889

8 years ago[Inliner] Formatting. NFC.
Chad Rosier [Thu, 28 Apr 2016 14:47:23 +0000 (14:47 +0000)]
[Inliner] Formatting. NFC.

Patch by Aditya Kumar!
Differential Revision: http://reviews.llvm.org/D19047

llvm-svn: 267888

8 years ago[InstCombine] Remove trailing whitespace. NFC.
Ahmed Bougacha [Thu, 28 Apr 2016 14:36:07 +0000 (14:36 +0000)]
[InstCombine] Remove trailing whitespace. NFC.

r267873.

llvm-svn: 267887

8 years agoRename isRelRelative
Rafael Espindola [Thu, 28 Apr 2016 14:34:39 +0000 (14:34 +0000)]
Rename isRelRelative

It was never a particularly good name and is now completely out of date.

llvm-svn: 267886

8 years ago[FIX] Correct assumption simplification
Johannes Doerfert [Thu, 28 Apr 2016 14:32:58 +0000 (14:32 +0000)]
[FIX] Correct assumption simplification

  Assumptions and restrictions can both be simplified with the domain of a
  statement but not the same way. After this patch we will correctly
  distinguish them.

llvm-svn: 267885

8 years agoAdd a test showing that we can gc parts of .eh_frame.
Rafael Espindola [Thu, 28 Apr 2016 14:31:09 +0000 (14:31 +0000)]
Add a test showing that we can gc parts of .eh_frame.

llvm-svn: 267884

8 years agoFix build.
Manuel Klimek [Thu, 28 Apr 2016 14:28:19 +0000 (14:28 +0000)]
Fix build.

llvm-svn: 267883

8 years agoReland r267691 fixing PR27535.
Vassil Vassilev [Thu, 28 Apr 2016 14:13:28 +0000 (14:13 +0000)]
Reland r267691 fixing PR27535.

llvm-svn: 267882

8 years agoAdd accidentally dropped test to r267880.
Tim Northover [Thu, 28 Apr 2016 14:01:49 +0000 (14:01 +0000)]
Add accidentally dropped test to r267880.

Forgot "git add".

llvm-svn: 267881

8 years agoARMv7k: define __ARM_PCS_VFP since we're hard-float.
Tim Northover [Thu, 28 Apr 2016 13:59:55 +0000 (13:59 +0000)]
ARMv7k: define __ARM_PCS_VFP since we're hard-float.

It's a little debateable because we're not truly AAPCS, so I'm
certainly not going to define __ARM_PCS, but __ARM_PCS_VFP seems to be
really an "hard-float" define, which is a useful thing to have.

llvm-svn: 267880

8 years ago[SystemZ] Support Swift calling convention
Bryan Chan [Thu, 28 Apr 2016 13:56:43 +0000 (13:56 +0000)]
[SystemZ] Support Swift calling convention

Summary:
Port rL265324 to SystemZ to allow using the 'swiftcall' attribute on that architecture.

Depends on D19414.

Reviewers: kbarton, rjmccall, uweigand

Subscribers: cfe-commits

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

llvm-svn: 267879

8 years agoFixed mistype in comment. NFC.
George Rimar [Thu, 28 Apr 2016 13:38:10 +0000 (13:38 +0000)]
Fixed mistype in comment. NFC.

llvm-svn: 267878

8 years agoFix spuriously dematerializing reference bug. Fixes PR26612.
Manuel Klimek [Thu, 28 Apr 2016 13:37:45 +0000 (13:37 +0000)]
Fix spuriously dematerializing reference bug. Fixes PR26612.

llvm-svn: 267877