platform/upstream/llvm.git
8 years agoAdd a missing return to the move assignment operator for
Chandler Carruth [Fri, 4 Nov 2016 07:16:33 +0000 (07:16 +0000)]
Add a missing return to the move assignment operator for
SequenceNumberManager.

Sadly, we don't have any unittests for this class because it is
a private class. Since it seems to have a nice isolated and testable
interface, it'd be great to extract it to a detail namespace and write
unit tests for it as then we could catch issues. I'll probably pester
Lang about that or some alternative refactoring.

This was noticed by PVS-Studio.

llvm-svn: 285990

8 years agoRemove dead code trying to handle when the amount of data read is
Chandler Carruth [Fri, 4 Nov 2016 07:10:24 +0000 (07:10 +0000)]
Remove dead code trying to handle when the amount of data read is
insufficient to populate the expected struct. Prior to this we already
bailed out of the routine when this situation comes up, so none of this
code had any effect.

If someone wants to bring it back to handle these cases, fixing the
earlier conditions and adding the necessary test cases that actually
exercises it, they can always revert this and go from there.

Both of these were noticed by PVS-Studio due to the identical (dead)
condition.

llvm-svn: 285989

8 years agoOnly log the visit of a return instruction if we in fact found a return
Chandler Carruth [Fri, 4 Nov 2016 06:59:50 +0000 (06:59 +0000)]
Only log the visit of a return instruction if we in fact found a return
instruction.

This avoids dereferencing null in the debug logging if the instruction
was not in fact a return instruction. This potential bug was found by
PVS-Studio.

This actually fixes the last of the "dereferenced a pointer before
checking it for null" reports in the recent PVS-Studio run. However,
there are quite a few reports of this nature that I did not do anything
to fix because they are pretty glaring false positives. They usually
took the form of quite clear correlated checks or a check made in
a separate function. I've even added asserts anywhere this correlation
wasn't pretty obvious and fundamental to the code.

llvm-svn: 285988

8 years agoHoist check for TLI above all of the attempts to use it (including one
Chandler Carruth [Fri, 4 Nov 2016 06:54:00 +0000 (06:54 +0000)]
Hoist check for TLI above all of the attempts to use it (including one
of which that is hidden inside a separate function call) and helpfully
before building expensive transaction infrastructure. This will avoid
crashing when running CGP in a generic mode if we ever managed to hit
this case.

Note that I spent some time looking at alternatives. CGP is actually
used without a TM or TLI in order to do some target-independent testing.
Further, all of the neighboring optimization techniques actually have
some paths that are effective even in the absence of TLI so this seemed
the correct scope at which to check and bypass logic. It still isn't
clear that long-term support for missing TM/TLI is the right
cost/benefit tradeoff for CGP -- we seem to get relatively little for it
and the code is just littered with checks (and assumptions which
I suspect are still missing some checks).

This at least fixes the potential bug in this code spotted by
PVS-Studio, so we've got that going for us. ;]

llvm-svn: 285987

8 years ago[python bindings] Expose CXCursor_FriendDecl as CursorKind.FRIEND_DECL
Olivier Goffart [Fri, 4 Nov 2016 06:50:59 +0000 (06:50 +0000)]
[python bindings] Expose CXCursor_FriendDecl as CursorKind.FRIEND_DECL

CXCursor_FriendDecl was added in r285984

llvm-svn: 285986

8 years agoAdd some more asserts to clearly indicate that there are special cases
Chandler Carruth [Fri, 4 Nov 2016 06:32:57 +0000 (06:32 +0000)]
Add some more asserts to clearly indicate that there are special cases
which guarantee pointers are not null. These all seem to have useful
properties and correlations to document, in one case we even had it in
a comment but now it will also be an assert.

This should prevent PVS-Studio from incorrectly claiming that there are
a bunch of potential bugs here. But I feel really strongly that the
PVS-Studio warnings that pointed at this code have a far too high
false-positive rate to be entirely useful. These are just places where
there did seem to be a useful invariant to document and verify with an
assert. Several other places in the code were already correct and
already have perfectly clear code documenting and validating their
invariants, but still ran afoul of PVS-Studio.

llvm-svn: 285985

8 years ago[index] Expose FriendDecl
Olivier Goffart [Fri, 4 Nov 2016 06:29:27 +0000 (06:29 +0000)]
[index] Expose FriendDecl

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

llvm-svn: 285984

8 years agoDelete a trivially true check for a variable 'S' being null.
Chandler Carruth [Fri, 4 Nov 2016 06:16:09 +0000 (06:16 +0000)]
Delete a trivially true check for a variable 'S' being null.

The exact same test guards entry into the loop in which this test
occurs, and there is nothing inside the loop that assigns to the
variable, so it has already been checked for null.

This was flagged by PVS-Studio as well, but the report is actually wrong
-- this is not a case where we dereference a variable prior to testing
it for null, this is a case where we have a redundant test for null
after we already performed the exact same test.

llvm-svn: 285983

8 years agoAdd an assert to further check the invariant that a null pointer
Chandler Carruth [Fri, 4 Nov 2016 06:11:54 +0000 (06:11 +0000)]
Add an assert to further check the invariant that a null pointer
corresponds to another argument being valid.

This makes it clear that the code is correct despite the PVS-Studio
report that a pointer might be dereferenced prior to being checked for
whether it is null. It likely is also enough for static analyzers to not
flag the code.

llvm-svn: 285982

8 years agoEnhancement to test for -ast-print
Serge Pavlov [Fri, 4 Nov 2016 06:09:23 +0000 (06:09 +0000)]
Enhancement to test for -ast-print

Present tests for the functionality provided by command lime option
`-ast-print` check only absence of crash. This change tries to make
testing better, - the output produced by the compiler is compiled again
with option `-print-ast` and both outputs are compared. Such test at
least checks that the output is valid code. This change fixes only the
test for pure C.

This is recommit of r285882.

llvm-svn: 285981

8 years agoRemove no-op checks for a null CodeCompleter. We have already
Chandler Carruth [Fri, 4 Nov 2016 06:06:50 +0000 (06:06 +0000)]
Remove no-op checks for a null CodeCompleter. We have already
dereferenced the pointer at this point, and these routines are
exclusively called after the parser encounters a code completion token.
Other code completion routines called at that point do not check for
null either, so this is clearly the current invariant expected in the
code.

This fixes another PVS-Studio found issue.

llvm-svn: 285980

8 years agoDo not print enum underlying type if language is not C++11
Serge Pavlov [Fri, 4 Nov 2016 06:03:34 +0000 (06:03 +0000)]
Do not print enum underlying type if language is not C++11

Output generated by option '-ast-print' must not contains enum
base type specifications if source language does not include C++11.

llvm-svn: 285979

8 years agoFix typo
Xinliang David Li [Fri, 4 Nov 2016 03:00:52 +0000 (03:00 +0000)]
Fix typo

llvm-svn: 285978

8 years agoAdded a couple more odd dot patterns that we got out
Jim Ingham [Fri, 4 Nov 2016 01:47:59 +0000 (01:47 +0000)]
Added a couple more odd dot patterns that we got out
of clang.

llvm-svn: 285977

8 years agoRemove POLLY_LINK_LIBS, it is not used
Hongbin Zheng [Fri, 4 Nov 2016 00:32:32 +0000 (00:32 +0000)]
Remove POLLY_LINK_LIBS, it is not used

llvm-svn: 285976

8 years agoX86: Move a non-null assert to before the pointer is dereferenced
Justin Bogner [Thu, 3 Nov 2016 23:55:36 +0000 (23:55 +0000)]
X86: Move a non-null assert to before the pointer is dereferenced

llvm-svn: 285975

8 years agoDon't access the process in expressions w/o checking that
Jim Ingham [Thu, 3 Nov 2016 23:42:09 +0000 (23:42 +0000)]
Don't access the process in expressions w/o checking that
the process exists.

I also added some tests that crash before this fix, and work correctly after.

<rdar://problem/29083321>

llvm-svn: 285974

8 years ago[lit] Remove TODO
Brian Gesiak [Thu, 3 Nov 2016 23:41:49 +0000 (23:41 +0000)]
[lit] Remove TODO

Summary:
Instead of keeping track of TODOs for lit in a file checked into source
control, use LLVM's bug tracker. The TODOs have been migrated to the
following bugs:

* https://llvm.org/bugs/show_bug.cgi?id=30666
* https://llvm.org/bugs/show_bug.cgi?id=30667
* https://llvm.org/bugs/show_bug.cgi?id=30668
* https://llvm.org/bugs/show_bug.cgi?id=30669
* https://llvm.org/bugs/show_bug.cgi?id=30670
* https://llvm.org/bugs/show_bug.cgi?id=30671

Reviewers: ddunbar, beanz, echristo, delcypher

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 285973

8 years agoSink all of the code relying on the MachO MachineModuleInfo to live
Chandler Carruth [Thu, 3 Nov 2016 23:33:46 +0000 (23:33 +0000)]
Sink all of the code relying on the MachO MachineModuleInfo to live
behind the test that the MachineModuleInfo analysis was
actually available and can be used.

While the MachO bits may well be reasonable to assume in the darwin
assembly printer, the analysis isn't constructively guaranteed anywhere
I could find so it seems safest to avoid crashing here.

This issue was found with PVS-Studio. Pretty sure the Clang Static
Anaylzer flags similar issues but we've probably never pointed it at
this code effectively.

llvm-svn: 285972

8 years agoRemove the unused POLLY_LINK_LIBS for linking polly into clang
Hongbin Zheng [Thu, 3 Nov 2016 22:02:40 +0000 (22:02 +0000)]
Remove the unused POLLY_LINK_LIBS for linking polly into clang

llvm-svn: 285971

8 years ago[Support] Fix a segfault in llvm::Expected.
Lang Hames [Thu, 3 Nov 2016 22:01:47 +0000 (22:01 +0000)]
[Support] Fix a segfault in llvm::Expected.

This fixes a mismatch between the declared error_type and the type used with
the placement new that initializes the field.

Patch by Yichao Yu.

llvm-svn: 285970

8 years ago[Cortex-M0] Atomic lowering
Weiming Zhao [Thu, 3 Nov 2016 21:49:08 +0000 (21:49 +0000)]
[Cortex-M0] Atomic lowering

Summary: ARMv6m supports dmb etc fench instructions but not ldrex/strex etc. So for some atomic load/store, LLVM should inline instructions instead of lowering to __sync_ calls.

Reviewers: rengolin, efriedma, t.p.northover, jmolloy

Subscribers: efriedma, aemerson, llvm-commits

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

llvm-svn: 285969

8 years agoAlways use parallel_for_each because it falls back to std::for_each.
Rui Ueyama [Thu, 3 Nov 2016 21:28:19 +0000 (21:28 +0000)]
Always use parallel_for_each because it falls back to std::for_each.

If multi-threading is disabled, parallel_for_each will automatically
fall back to std::for_each, so we don't have to do that ourselves.

llvm-svn: 285968

8 years agoAdd support for the ARM_THREAD_STATE64 and
Kevin Enderby [Thu, 3 Nov 2016 20:51:28 +0000 (20:51 +0000)]
Add support for the ARM_THREAD_STATE64 and
in llvm-objdump for Mach-O files add the printing of the
ARM_THREAD_STATE64 in the same format as
otool-classic(1) on darwin.

To do this the 64-bit ARM general tread state
needed to be defined in include/llvm/Support/MachO.h .

rdar://28985800

llvm-svn: 285967

8 years agoSimplify now that this is only used for global symbols.
Rafael Espindola [Thu, 3 Nov 2016 20:48:57 +0000 (20:48 +0000)]
Simplify now that this is only used for global symbols.

llvm-svn: 285966

8 years agoNow that the ELFFile constructor does nothing, create it when needed.
Rafael Espindola [Thu, 3 Nov 2016 20:44:50 +0000 (20:44 +0000)]
Now that the ELFFile constructor does nothing, create it when needed.

This avoids duplicating the buffer in InputFile.

llvm-svn: 285965

8 years agoNFC - Test commit.
Tony Jiang [Thu, 3 Nov 2016 20:32:21 +0000 (20:32 +0000)]
NFC - Test commit.

Delete an empty line at the end of README.txt file.

llvm-svn: 285964

8 years agoUpdate for llvm change.
Rafael Espindola [Thu, 3 Nov 2016 20:17:25 +0000 (20:17 +0000)]
Update for llvm change.

llvm-svn: 285962

8 years agoDon't error in the ELFFile constructor.
Rafael Espindola [Thu, 3 Nov 2016 20:16:53 +0000 (20:16 +0000)]
Don't error in the ELFFile constructor.

All error checking now happens when the information is needed. The
only thing left is the minimum size of the buffer and that can be just
a precondition. I will add an ErrorOr create method in a followup
commit.

Also don't store a pointer to the Header, since it is just a trivial
cast.

llvm-svn: 285961

8 years agoAdd debug info support for C++11 inline namespaces.
Adrian Prantl [Thu, 3 Nov 2016 19:42:14 +0000 (19:42 +0000)]
Add debug info support for C++11 inline namespaces.

<rdar://problem/18616046>

llvm-svn: 285960

8 years agoAdd DWARF debug info support for C++11 inline namespaces.
Adrian Prantl [Thu, 3 Nov 2016 19:42:02 +0000 (19:42 +0000)]
Add DWARF debug info support for C++11 inline namespaces.
This implements the DWARF 5 DW_AT_export_symbols feature:
http://dwarfstd.org/ShowIssue.php?issue=141212.1

<rdar://problem/18616046>

llvm-svn: 285959

8 years ago[libFuzzer] fix -error_exitcode=N, now with a test
Kostya Serebryany [Thu, 3 Nov 2016 19:31:18 +0000 (19:31 +0000)]
[libFuzzer] fix -error_exitcode=N, now with a test

llvm-svn: 285958

8 years ago[ADT] IntervalMap: fix setStart and setStop
Michael LeMay [Thu, 3 Nov 2016 19:14:46 +0000 (19:14 +0000)]
[ADT] IntervalMap: fix setStart and setStop

Summary:
These functions currently require that the new closed interval has a length of
at least 2.  They also currently permit empty half-open intervals.  This patch
defines nonEmpty in each traits structure and uses it to correct the
implementations of setStart and setStop.

Reviewers: stoklund, chandlerc

Subscribers: llvm-commits

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

llvm-svn: 285957

8 years agoUpdate for llvm change.
Rafael Espindola [Thu, 3 Nov 2016 19:07:44 +0000 (19:07 +0000)]
Update for llvm change.

llvm-svn: 285956

8 years agoRemove the last use of report_fatal_error from ELF.h.
Rafael Espindola [Thu, 3 Nov 2016 19:07:15 +0000 (19:07 +0000)]
Remove the last use of report_fatal_error from ELF.h.

llvm-svn: 285955

8 years agoImprove obvious-most-derived-type devirtualization:
Richard Smith [Thu, 3 Nov 2016 18:55:18 +0000 (18:55 +0000)]
Improve obvious-most-derived-type devirtualization:

  * if the base is produced by a series of derived-to-base conversions, check
    the expression inside them when looking for an expression with a known
    dynamic type
  * step past MaterializeTemporaryExprs when checking for a known dynamic type
  * when checking for a known dynamic type, treat all class prvalues as having
    a known dynamic type after skipping all relevant rvalue subobject
    adjustments
  * treat callees formed by pointer-to-member access for a non-reference member
    type like callees formed by member access.

llvm-svn: 285954

8 years agoPDB: Fix some APIs to avoid use-after-frees
Justin Bogner [Thu, 3 Nov 2016 18:28:04 +0000 (18:28 +0000)]
PDB: Fix some APIs to avoid use-after-frees

The buffer is already owned by the PDBFile for all of these APIs, so
don't pass it in separately.

llvm-svn: 285953

8 years agoSimplify by directly using this->Symbols. NFC.
Rui Ueyama [Thu, 3 Nov 2016 18:20:08 +0000 (18:20 +0000)]
Simplify by directly using this->Symbols. NFC.

llvm-svn: 285952

8 years agoAdd error handling to getEntry.
Rafael Espindola [Thu, 3 Nov 2016 18:05:33 +0000 (18:05 +0000)]
Add error handling to getEntry.

Issue found by inspection.

llvm-svn: 285951

8 years agoInstead of resetting the pointer, or releasing it which was the previous
Chandler Carruth [Thu, 3 Nov 2016 18:03:14 +0000 (18:03 +0000)]
Instead of resetting the pointer, or releasing it which was the previous
code, let's just assert that the DiagonsticEngine doesn't own the client
because our constructor took ownership of it and has a std::unique_ptr
that handles deleting it. This seems much more clear -- the release was
harmless but confusing as if there were some memory there it would have
leaked, and the reset was harmless but confusing as if there were some
memory there it would have been double-freed. But in both cases there
was nothing there.

llvm-svn: 285950

8 years agoAdd [<chars>] to the glob matcher to eliminate use of llvm::Regex.
Rui Ueyama [Thu, 3 Nov 2016 17:57:38 +0000 (17:57 +0000)]
Add [<chars>] to the glob matcher to eliminate use of llvm::Regex.

Previously, it didn't support the character class, so we couldn't
eliminate the use fo llvm::Regex. Now that it is supported, we
can remove compileGlobPattern, which converts a glob pattern to
a regex.

This patch contains optimization for exact/prefix/suffix matches.

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

llvm-svn: 285949

8 years agoAMDGPU/SI: Re add VIInstructions.td to unbreak bots
Tom Stellard [Thu, 3 Nov 2016 17:56:46 +0000 (17:56 +0000)]
AMDGPU/SI: Re add VIInstructions.td to unbreak bots

This file is unused as of r285939, but we need to keep it around
for bots that don't do full rebuilds.   We should be able to delete this
again in a few days.

llvm-svn: 285948

8 years agofixed typo in comment
Andrey Churbanov [Thu, 3 Nov 2016 17:48:46 +0000 (17:48 +0000)]
fixed typo in comment

llvm-svn: 285947

8 years agoUsing release to free memory is at best confusing -- one would expect
Chandler Carruth [Thu, 3 Nov 2016 17:42:32 +0000 (17:42 +0000)]
Using release to free memory is at best confusing -- one would expect
that its result is in fact used. Instead, use reset.

This was pointed out by PVS-Studio.

llvm-svn: 285946

8 years agoRemove a redundant condition found by PVS-Studio.
Chandler Carruth [Thu, 3 Nov 2016 17:42:02 +0000 (17:42 +0000)]
Remove a redundant condition found by PVS-Studio.

Filed http://llvm.org/PR30897 to teach Clang to warn on this kind of
stuff.

llvm-svn: 285945

8 years agoReplace another report_fatal_error with an ErrorOr.
Rafael Espindola [Thu, 3 Nov 2016 17:37:28 +0000 (17:37 +0000)]
Replace another report_fatal_error with an ErrorOr.

llvm-svn: 285944

8 years agoAdd RenderScriptScriptGroup to the Xcode project
Enrico Granata [Thu, 3 Nov 2016 17:33:11 +0000 (17:33 +0000)]
Add RenderScriptScriptGroup to the Xcode project

llvm-svn: 285943

8 years agoReplace a report_fatal_error with an ErrorOr.
Rafael Espindola [Thu, 3 Nov 2016 17:28:33 +0000 (17:28 +0000)]
Replace a report_fatal_error with an ErrorOr.

llvm-svn: 285942

8 years agoAdd support to the ObjC type scavenger for finding types via debug info
Enrico Granata [Thu, 3 Nov 2016 17:25:27 +0000 (17:25 +0000)]
Add support to the ObjC type scavenger for finding types via debug info

llvm-svn: 285941

8 years agoDelete dead code.
Rafael Espindola [Thu, 3 Nov 2016 17:18:31 +0000 (17:18 +0000)]
Delete dead code.

llvm-svn: 285940

8 years agoAMDGPU: Add VI i16 support
Tom Stellard [Thu, 3 Nov 2016 17:13:50 +0000 (17:13 +0000)]
AMDGPU: Add VI i16 support

Patch By: Wei Ding

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

llvm-svn: 285939

8 years agoFix spelling mistake.
Akira Hatanaka [Thu, 3 Nov 2016 17:11:28 +0000 (17:11 +0000)]
Fix spelling mistake.

llvm-svn: 285938

8 years agoDelete some dead code and add a missing "0x" prefix to a hex string in
Chandler Carruth [Thu, 3 Nov 2016 17:11:11 +0000 (17:11 +0000)]
Delete some dead code and add a missing "0x" prefix to a hex string in
llvm-readobj.

Another bug caught by PVS-Studio.

It'd be nice to actually have a test for this, but I found it by
inspection from PVS-Studio.

llvm-svn: 285937

8 years agoDelete a dead store found by PVS-Studio.
Chandler Carruth [Thu, 3 Nov 2016 17:01:38 +0000 (17:01 +0000)]
Delete a dead store found by PVS-Studio.

Quite sad we still aren't really using aggressive dead code warnings
from Clang that we could potentially use to catch this and so many other
things.

llvm-svn: 285936

8 years agoDelete dead code.
Rafael Espindola [Thu, 3 Nov 2016 16:58:27 +0000 (16:58 +0000)]
Delete dead code.

llvm-svn: 285935

8 years agoFixed column shift when formatting line containing bit shift operators
Malcolm Parsons [Thu, 3 Nov 2016 16:57:30 +0000 (16:57 +0000)]
Fixed column shift when formatting line containing bit shift operators

Summary:
During clang-format source lexing >> and << operators are split and
treated as two less/greater operators but column position of following
tokens was not adjusted accordingly.

Fixes PR26887

Patch by PaweÅ‚ Å»ukowski.

Reviewers: djasper

Subscribers: malcolm.parsons, mprobst, klimek, cfe-commits

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

llvm-svn: 285934

8 years agoChange how we store the symbol table.
Rafael Espindola [Thu, 3 Nov 2016 16:55:44 +0000 (16:55 +0000)]
Change how we store the symbol table.

Instead of remembering a raw Elf_Shdr, store the symbol table proper
and the index of the first non local.

This moves error handling upfront and simplifies it.

llvm-svn: 285933

8 years agoAdd lower level versions of some functions.
Rafael Espindola [Thu, 3 Nov 2016 16:51:44 +0000 (16:51 +0000)]
Add lower level versions of some functions.

This adds versions of getSectionIndex, getSection and getSymbol that
instead of a Elf_Shdr take the content of that section.

llvm-svn: 285932

8 years agoMake this test Windows-only (try to placate buildbots).
Davide Italiano [Thu, 3 Nov 2016 16:43:10 +0000 (16:43 +0000)]
Make this test Windows-only (try to placate buildbots).

llvm-svn: 285931

8 years agoFix a bug found by inspection by PVS-Studio.
Chandler Carruth [Thu, 3 Nov 2016 16:39:25 +0000 (16:39 +0000)]
Fix a bug found by inspection by PVS-Studio.

This condition is trivially always true prior to the change. The comment
at the call site makes it clear that we expect *all* of these to be '=',
'S', or 'I' so fix the code.

We have a bug I will update to track the fact that Clang doesn't warn on
this: http://llvm.org/PR13101

llvm-svn: 285930

8 years agoMove function out of line. NFC.
Rafael Espindola [Thu, 3 Nov 2016 16:24:35 +0000 (16:24 +0000)]
Move function out of line. NFC.

llvm-svn: 285929

8 years agoInline function into only use.
Rafael Espindola [Thu, 3 Nov 2016 16:10:39 +0000 (16:10 +0000)]
Inline function into only use.

llvm-svn: 285928

8 years agovim: special case the CHECK prefix
Saleem Abdulrasool [Thu, 3 Nov 2016 15:56:06 +0000 (15:56 +0000)]
vim: special case the CHECK prefix

A large number of tests in the LLVM tree use the default (CHECK) prefix
to indicate checked expressions via FileCheck.  Highlight it as a
special comment.  Although this wont get all the instances of the
checked patters, it is strictly better than the current state.

llvm-svn: 285927

8 years agoInitialize the StringTable early and do it only once.
Rafael Espindola [Thu, 3 Nov 2016 15:43:47 +0000 (15:43 +0000)]
Initialize the StringTable early and do it only once.

llvm-svn: 285926

8 years agoRename the version of ConstructJob for multiple outputs to ConstructJobMultipleOutputs.
Samuel Antao [Thu, 3 Nov 2016 15:41:50 +0000 (15:41 +0000)]
Rename the version of ConstructJob for multiple outputs to ConstructJobMultipleOutputs.

It was causing trouble with the GCC bots.

llvm-svn: 285925

8 years ago[ScopInfo] Fix isl object leak.
Michael Kruse [Thu, 3 Nov 2016 15:19:41 +0000 (15:19 +0000)]
[ScopInfo] Fix isl object leak.

Fix return from function without releasing isl objects, which was introduced
in r269055.

llvm-svn: 285924

8 years ago[Sema] Avoid instantiating templates only when UncompilableErrorOccurred
Akira Hatanaka [Thu, 3 Nov 2016 15:04:58 +0000 (15:04 +0000)]
[Sema] Avoid instantiating templates only when UncompilableErrorOccurred
and FatalErrorOccurred are both set.

This fixes a crash that occurs when a warning promoted to a fatal error
leaves the AST in an incomplete state, and then later CFG analysis is
run on the incomplete AST.

rdar://problem/28558923

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

llvm-svn: 285923

8 years agoDelete dead code.
Rafael Espindola [Thu, 3 Nov 2016 15:01:12 +0000 (15:01 +0000)]
Delete dead code.

llvm-svn: 285922

8 years agoReturn existing error code.
Rafael Espindola [Thu, 3 Nov 2016 14:53:25 +0000 (14:53 +0000)]
Return existing error code.

Should fix the -Werror bots.

llvm-svn: 285921

8 years agoMove a free function out of ELFFile.
Rafael Espindola [Thu, 3 Nov 2016 14:41:17 +0000 (14:41 +0000)]
Move a free function out of ELFFile.

llvm-svn: 285920

8 years ago[AMDGPU][CodeGen] To improve CGEMM performance: combine LDS reads.
Alexander Timofeev [Thu, 3 Nov 2016 14:37:13 +0000 (14:37 +0000)]
[AMDGPU][CodeGen] To improve CGEMM performance: combine LDS reads.

hange explores the fact that LDS reads may be reordered even if access
the same location.

Prior the change, algorithm immediately stops as soon as any memory
access encountered between loads that are expected to be merged
together. Although, Read-After-Read conflict cannot affect execution
correctness.

Improves hcBLAS CGEMM manually loop-unrolled kernels performance by 44%.
Also improvement expected on any massive sequences of reads from LDS.

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

llvm-svn: 285919

8 years agoUse the getSectionIndex from llvm.
Rafael Espindola [Thu, 3 Nov 2016 14:26:25 +0000 (14:26 +0000)]
Use the getSectionIndex from llvm.

llvm-svn: 285918

8 years agoRefactor creation of X86ISD::SETCC nodes to a helper function. NFC.
Zvi Rackover [Thu, 3 Nov 2016 14:25:24 +0000 (14:25 +0000)]
Refactor creation of X86ISD::SETCC nodes to a helper function. NFC.

llvm-svn: 285917

8 years agoDAGCombiner: fix use-after-free when merging consecutive stores
Nicolai Haehnle [Thu, 3 Nov 2016 14:25:04 +0000 (14:25 +0000)]
DAGCombiner: fix use-after-free when merging consecutive stores

Summary:
Have MergeConsecutiveStores explicitly return information about the stores
that were merged, so that we can safely determine whether the starting
node has been freed.

Reviewers: chandlerc, bogner, niravd

Subscribers: llvm-commits

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

llvm-svn: 285916

8 years agoSplit out a getSectionIndex.
Rafael Espindola [Thu, 3 Nov 2016 14:24:53 +0000 (14:24 +0000)]
Split out a getSectionIndex.

That code is currently duplicated in lld.

llvm-svn: 285915

8 years agoUse existing ELFObj function. NFC.
Rafael Espindola [Thu, 3 Nov 2016 14:17:53 +0000 (14:17 +0000)]
Use existing ELFObj function. NFC.

llvm-svn: 285913

8 years agoRevert "[Thumb] Teach ISel how to lower compares of AND bitmasks efficiently"
James Molloy [Thu, 3 Nov 2016 14:08:01 +0000 (14:08 +0000)]
Revert "[Thumb] Teach ISel how to lower compares of AND bitmasks efficiently"

This reverts commit r285893. It caused (probably) http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/83 .

llvm-svn: 285912

8 years agoUpdate for llvm change.
Rafael Espindola [Thu, 3 Nov 2016 13:58:26 +0000 (13:58 +0000)]
Update for llvm change.

llvm-svn: 285911

8 years agoreplace a report_fatal_error with a ErrorOr.
Rafael Espindola [Thu, 3 Nov 2016 13:58:15 +0000 (13:58 +0000)]
replace a report_fatal_error with a ErrorOr.

llvm-svn: 285910

8 years agoSupport for Python 3 in libclang python bindings
Jonathan Coe [Thu, 3 Nov 2016 13:55:34 +0000 (13:55 +0000)]
Support for Python 3 in libclang python bindings

Summary:
Python bindings tests now pass in Python 3.

`map` in Python 3 is lazily evaluated so the method by which functions are registered needed updating.

Strings are unicode in Python 3 not UTF-8, I've tried to create an new c_types-like class (c_string_p) to automate the conversion.

String conversions made explicit where required.

Reviewers: eliben, nemanjai, skalinichev, compnerd

Subscribers: mgorny, cfe-commits

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

llvm-svn: 285909

8 years ago[CMake] Make CMAKE_INSTALL_RPATH work again
John Brawn [Thu, 3 Nov 2016 13:55:04 +0000 (13:55 +0000)]
[CMake] Make CMAKE_INSTALL_RPATH work again

r285714 made it so that when CMAKE_INSTALL_RPATH is set _install_rpath is not
set, but that means INSTALL_RPATH gets set to an empty string which isn't what
we want. Fix this by setting INSTALL_RPATH only when _install_rpath is set.

llvm-svn: 285908

8 years ago[clang-tidy] Ignore forward declarations without definitions in the same translation...
Jonathan Coe [Thu, 3 Nov 2016 13:52:09 +0000 (13:52 +0000)]
[clang-tidy] Ignore forward declarations without definitions in the same translation unit in readability-identifier-naming

Summary: This change ensures that forward declarations of classes are not considered for identifier naming checks within a translation unit.

Reviewers: alexfh, aaron.ballman

Subscribers: mgehre

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

llvm-svn: 285907

8 years agoUpdate for llvm change.
Rafael Espindola [Thu, 3 Nov 2016 13:43:51 +0000 (13:43 +0000)]
Update for llvm change.

llvm-svn: 285906

8 years agoReplace a report_fatal_error with an ErrorOr.
Rafael Espindola [Thu, 3 Nov 2016 13:43:30 +0000 (13:43 +0000)]
Replace a report_fatal_error with an ErrorOr.

llvm-svn: 285905

8 years agoPass the section table around instead of recomputing it.
Rafael Espindola [Thu, 3 Nov 2016 13:24:29 +0000 (13:24 +0000)]
Pass the section table around instead of recomputing it.

llvm-svn: 285904

8 years agoSplit getStringTableForSymtab.
Rafael Espindola [Thu, 3 Nov 2016 13:22:51 +0000 (13:22 +0000)]
Split getStringTableForSymtab.

For use in cases where we already have the section table.

llvm-svn: 285903

8 years ago[Renderscript] Add commands for scriptgroup interaction.
Aidan Dodds [Thu, 3 Nov 2016 13:20:37 +0000 (13:20 +0000)]
[Renderscript] Add commands for scriptgroup interaction.

This commit hooks the nofity function that signals script group
compilation.  By tracking scriptgroups compiled at runtine, users
are able to place breakpoints by script group name.  Breakpoints
will be placed on the kernels forming the group.

llvm-svn: 285902

8 years ago[clang-tidy] Handle data() in readability-redundant-string-cstr
Malcolm Parsons [Thu, 3 Nov 2016 12:56:48 +0000 (12:56 +0000)]
[clang-tidy] Handle data() in readability-redundant-string-cstr

Summary:
std::string::data() and std::string::c_str() are equivalent.
Enhance the readability-redundant-string-cstr check to also handle
calls to data().

Reviewers: etienneb, alexfh, aaron.ballman

Subscribers: cfe-commits

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

llvm-svn: 285901

8 years ago[ELF] - Accept both "-" and "--" for Ttext/Tdata/Tbss options.
George Rimar [Thu, 3 Nov 2016 12:49:25 +0000 (12:49 +0000)]
[ELF] - Accept both "-" and "--" for Ttext/Tdata/Tbss options.

llvm-svn: 285900

8 years agoRemove redundant calls to std::string::data()
Malcolm Parsons [Thu, 3 Nov 2016 12:25:51 +0000 (12:25 +0000)]
Remove redundant calls to std::string::data()

Reviewers: aaron.ballman, mehdi_amini, dblaikie

Subscribers: klimek, cfe-commits

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

llvm-svn: 285899

8 years agoSplit getSHNDXTable in two.
Rafael Espindola [Thu, 3 Nov 2016 12:23:41 +0000 (12:23 +0000)]
Split getSHNDXTable in two.

Some clients already have the section table available.

llvm-svn: 285898

8 years agoWe already have the sections, pass them to getSHNDXTable.
Rafael Espindola [Thu, 3 Nov 2016 12:21:00 +0000 (12:21 +0000)]
We already have the sections, pass them to getSHNDXTable.

llvm-svn: 285897

8 years ago[ELF] Do not create interworking thunks for undefined weak references.
Peter Smith [Thu, 3 Nov 2016 11:49:23 +0000 (11:49 +0000)]
[ELF] Do not create interworking thunks for undefined weak references.

An undefined weak reference is given an address of 0 this will
incorrectly trigger the creation of a Thumb to ARM interworking Thunk
if there is a Thumb branch instruction to the symbol. This results in
an error as Thunks only make sense to defined or shared symbols.

We prevent this by detecting an undefined symbol and not creating a thunk
for it.

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

llvm-svn: 285896

8 years agoUse globMatch() instead of llvm::regex in linker scripts
Eugene Leviant [Thu, 3 Nov 2016 10:54:58 +0000 (10:54 +0000)]
Use globMatch() instead of llvm::regex in linker scripts

This can speed up lld up to 5 times when linking applications
with large number of sections and using linker script.

Differential revision: https://reviews.llvm.org/D26241

llvm-svn: 285895

8 years agoLink lldb-mi only to the llvm components it uses
Pavel Labath [Thu, 3 Nov 2016 10:52:17 +0000 (10:52 +0000)]
Link lldb-mi only to the llvm components it uses

Summary:
liblldb does not re-export the llvm library contained within, so lldb-mi needs to
manage its own dependencies. Right now it only uses the llvm support library.

Reviewers: beanz, zturner, tfiala, clayborg, abidh

Subscribers: ki.stfu, mgorny, lldb-commits

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

llvm-svn: 285894

8 years ago[Thumb] Teach ISel how to lower compares of AND bitmasks efficiently
James Molloy [Thu, 3 Nov 2016 10:18:20 +0000 (10:18 +0000)]
[Thumb] Teach ISel how to lower compares of AND bitmasks efficiently

This recommits r281323, which was backed out for two reasons. One, a selfhost failure, and two, it apparently caused Chromium failures. Actually, the latter was a red herring. The log has expired from the former, but I suspect that was a red herring too (actually caused by another problematic patch of mine). Therefore reapplying, and will watch the bots like a hawk.

For the common pattern (CMPZ (AND x, #bitmask), #0), we can do some more efficient instruction selection if the bitmask is one consecutive sequence of set bits (32 - clz(bm) - ctz(bm) == popcount(bm)).

1) If the bitmask touches the LSB, then we can remove all the upper bits and set the flags by doing one LSLS.
2) If the bitmask touches the MSB, then we can remove all the lower bits and set the flags with one LSRS.
3) If the bitmask has popcount == 1 (only one set bit), we can shift that bit into the sign bit with one LSLS and change the condition query from NE/EQ to MI/PL (we could also implement this by shifting into the carry bit and branching on BCC/BCS).
4) Otherwise, we can emit a sequence of LSLS+LSRS to remove the upper and lower zero bits of the mask.

1-3 require only one 16-bit instruction and can elide the CMP. 4 requires two 16-bit instructions but can elide the CMP and doesn't require materializing a complex immediate, so is also a win.

llvm-svn: 285893

8 years agoFix Timer unit test
Pavel Labath [Thu, 3 Nov 2016 10:07:47 +0000 (10:07 +0000)]
Fix Timer unit test

I did not take into account that the output of the Dump function will be
non-deterministic. Fix that by increasing of the times, this also makes the test
check that the dump function sorts the output.

llvm-svn: 285892

8 years agoRemove TimeSpecTimeout class
Pavel Labath [Thu, 3 Nov 2016 09:29:56 +0000 (09:29 +0000)]
Remove TimeSpecTimeout class

the class is unused.

llvm-svn: 285891

8 years agoRefactor Timer class
Pavel Labath [Thu, 3 Nov 2016 09:14:09 +0000 (09:14 +0000)]
Refactor Timer class

Summary:
While removing TimeValue from this class I noticed a lot of room for small
simplifications here. Main are:
  - instead of complicated start-stop dances to compute own time, each Timer
    just starts the timer once, and keeps track of the durations of child
    timers. Then the own time can be computed at the end by subtracting the two
    values.
  - remove double accounting in TimerStack - the stack object already knows the
    number of timers.
The interface does not lend itself well to unit testing, but I have added a
couple of tests which can (and did) catch any obvious errors.

Reviewers: tberghammer, clayborg

Subscribers: mgorny, lldb-commits

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

llvm-svn: 285890

8 years agoReverted r285882 (Enhancement to test for -ast-print)
Serge Pavlov [Thu, 3 Nov 2016 08:58:44 +0000 (08:58 +0000)]
Reverted r285882 (Enhancement to test for -ast-print)

It broke buildbot on Windows.

llvm-svn: 285889