platform/upstream/llvm.git
10 years agoMake the clang-tidy-diff.py test conditional on the presence of Python 2.7. Use the...
Alexander Kornienko [Thu, 26 Jun 2014 16:32:26 +0000 (16:32 +0000)]
Make the clang-tidy-diff.py test conditional on the presence of Python 2.7. Use the python binary from the configuration.

llvm-svn: 211789

10 years agoAdd a Visualizer for VarDecl.
Zachary Turner [Thu, 26 Jun 2014 16:26:42 +0000 (16:26 +0000)]
Add a Visualizer for VarDecl.

Reviewed by: Aaron Ballman

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

llvm-svn: 211788

10 years agoOpenCL 1.1 does not define CL_VERSION_1_2 so use hardcoded number instead
Jeroen Ketema [Thu, 26 Jun 2014 15:26:38 +0000 (15:26 +0000)]
OpenCL 1.1 does not define CL_VERSION_1_2 so use hardcoded number instead

Otherwise the test evaluates to true on OpenCL 1.1 and earlier. Since we
therefore cannot use the CL_VERSION_?_? macros move them to the proper
position in the top-level header.

llvm-svn: 211787

10 years agoPropset the executables for GetProgramPath().
Logan Chien [Thu, 26 Jun 2014 14:38:46 +0000 (14:38 +0000)]
Propset the executables for GetProgramPath().

llvm-svn: 211786

10 years agoImplement the -fuse-ld= option.
Logan Chien [Thu, 26 Jun 2014 14:23:45 +0000 (14:23 +0000)]
Implement the -fuse-ld= option.

This commit implements the -fuse-ld= option, so that the user
can specify -fuse-ld=bfd to use ld.bfd.

This commit re-applies r194328 with some test case changes.
It seems that r194328 was breaking macosx or mingw build
because clang can't find ld.bfd or ld.gold in the given sysroot.
We should use -B to specify the executable search path instead.

Patch originally by David Chisnall.

llvm-svn: 211785

10 years agoFix linux build.
Logan Chien [Thu, 26 Jun 2014 13:56:23 +0000 (13:56 +0000)]
Fix linux build.

* Replace strlcpy with snprintf since strlcpy is not available
  in glibc.

* Replace __LINUX__ with __linux__.

llvm-svn: 211784

10 years agoSilencing a warning about isZExtFree hiding an inherited virtual function. No functio...
Aaron Ballman [Thu, 26 Jun 2014 13:45:47 +0000 (13:45 +0000)]
Silencing a warning about isZExtFree hiding an inherited virtual function. No functional change intended.

llvm-svn: 211783

10 years agoSilence a warning due to a comparison between signed and unsigned.
Andrea Di Biagio [Thu, 26 Jun 2014 13:41:10 +0000 (13:41 +0000)]
Silence a warning due to a comparison between signed and unsigned.

No functional change intended.

llvm-svn: 211782

10 years agoAdd support for ppc64/power8 as a host
Will Schmidt [Thu, 26 Jun 2014 13:37:03 +0000 (13:37 +0000)]
Add support for ppc64/power8 as a host

llvm-svn: 211781

10 years agoUse own class for storing the RejectLogs
Andreas Simbuerger [Thu, 26 Jun 2014 13:36:52 +0000 (13:36 +0000)]
Use own class for storing the RejectLogs

Use a container class to store the reject logs. Delegating most calls to
the internal std::map and add a few convenient shortcuts (e.g.,
hasErrors()).

llvm-svn: 211780

10 years agoadd ppc64/pwr8 as target
Will Schmidt [Thu, 26 Jun 2014 13:36:19 +0000 (13:36 +0000)]
add ppc64/pwr8 as target
includes handling DIR_PWR8 where appropriate
The P7Model Itinerary is currently tied in for use under the P8Model, and will be updated later.

llvm-svn: 211779

10 years agoAdd ppc64/power8 as a target
Will Schmidt [Thu, 26 Jun 2014 13:34:10 +0000 (13:34 +0000)]
Add ppc64/power8 as a target

llvm-svn: 211778

10 years agoAdd diagnostic remark for ReportVariantBasePtr
Andreas Simbuerger [Thu, 26 Jun 2014 13:33:35 +0000 (13:33 +0000)]
Add diagnostic remark for ReportVariantBasePtr

llvm-svn: 211777

10 years agoAdded parsing co-processor names starting with "cr"
Renato Golin [Thu, 26 Jun 2014 13:10:53 +0000 (13:10 +0000)]
Added parsing co-processor names starting with "cr"

Additional compliant GAS names for coprocessor register name
are enabled for all instruction with parameter MCK_CoprocReg:
LDC,LDC2,STC,STC2,CDP,CDP2,MCR,MCR2,MCRR,MCRR2,MRC,MRC2,MRRC,MRRC2

Patch by Andrey Kuharev.

llvm-svn: 211776

10 years agoAdd missing header for _LIBUNWIND_LOG().
Logan Chien [Thu, 26 Jun 2014 12:22:38 +0000 (12:22 +0000)]
Add missing header for _LIBUNWIND_LOG().

llvm-svn: 211775

10 years ago[OPENMP] Initial parsing and sema analysis for 'single' directive.
Alexey Bataev [Thu, 26 Jun 2014 12:05:45 +0000 (12:05 +0000)]
[OPENMP] Initial parsing and sema analysis for 'single' directive.

llvm-svn: 211774

10 years agoFix dangling reference
Andreas Simbuerger [Thu, 26 Jun 2014 11:09:13 +0000 (11:09 +0000)]
Fix dangling reference

llvm-svn: 211773

10 years ago[Driver] Improve the `isPathUnderSysroot()` function. Now it returns a
Simon Atanasyan [Thu, 26 Jun 2014 10:48:52 +0000 (10:48 +0000)]
[Driver] Improve the `isPathUnderSysroot()` function. Now it returns a
correct result even if checking paths: a) symlinks and/or b) contains relative
parts like /dir1/dir2/../dir2.

llvm-svn: 211772

10 years ago[X86] Improve the selection of SSE3/AVX addsub instructions.
Andrea Di Biagio [Thu, 26 Jun 2014 10:45:21 +0000 (10:45 +0000)]
[X86] Improve the selection of SSE3/AVX addsub instructions.

This patch teaches the backend how to canonicalize a shuffle vectors
according to the rule:

 - (shuffle (FADD A, B), (FSUB A, B), Mask) ->
       (shuffle (FSUB A, -B), (FADD A, -B), Mask)

Where 'Mask' is:
  <0,5,2,7>            ;; for v4f32 and v4f64 shuffles.
  <0,3>                ;; for v2f64 shuffles.
  <0,9,2,11,4,13,6,15> ;; for v8f32 shuffles.

In general, ISel only knows how to pattern-match a canonical
'fadd + fsub + blendi' dag node sequence into an ADDSUB instruction.

This new rule allows to convert a non-canonical dag sequence into a
canonical one that will be matched by a single ADDSUB at ISel stage.

The idea of converting a non-canonical ADDSUB into a canonical one by
swapping the first two operands of the shuffle, and then negating the
second operand of the FADD and FSUB, was originally proposed by Hal Finkel.

llvm-svn: 211771

10 years agoSupport for LLVM-style RTTI isa<...>, dyn_cast<...> et al.
Andreas Simbuerger [Thu, 26 Jun 2014 10:19:57 +0000 (10:19 +0000)]
Support for LLVM-style RTTI isa<...>, dyn_cast<...> et al.

llvm-svn: 211770

10 years agoSupport the new DiagnosticRemarks
Andreas Simbuerger [Thu, 26 Jun 2014 10:06:40 +0000 (10:06 +0000)]
Support the new DiagnosticRemarks

Add support for generating optimization remarks after completing the
detection of Scops.
The goal is to provide end-users with useful hints about opportunities that
help to increase the size of the detected Scops in their code.

By default the remark is unspecified and the debug location is empty. Future
patches have to expand on the messages generated.

This patch brings a simple test case for ReportFuncCall to demonstrate the
feature.

Reports all missed opportunities to increase the size/number of valid
Scops:
 clang <...> -Rpass-missed="polly-detect" <...>
 opt <...> -pass-remarks-missed="polly-detect" <...>

Reports beginning and end of all valid Scops:
 clang <...> -Rpass="polly-detect" <...>
 opt <...> -pass-remarks="polly-detect" <...>

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

llvm-svn: 211769

10 years agoThis patch removed duplicate code for matching patterns
Dinesh Dwivedi [Thu, 26 Jun 2014 08:57:33 +0000 (08:57 +0000)]
This patch removed duplicate code for matching patterns
which are now handled in SimplifyUsingDistributiveLaws()
(after r211261)

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

llvm-svn: 211768

10 years ago[OPENMP] Initial parsing and sema analysis for 'section' directive.
Alexey Bataev [Thu, 26 Jun 2014 08:21:58 +0000 (08:21 +0000)]
[OPENMP] Initial parsing and sema analysis for 'section' directive.

llvm-svn: 211767

10 years agoSema: Allow dllimport entities in template args for mingw
David Majnemer [Thu, 26 Jun 2014 07:48:46 +0000 (07:48 +0000)]
Sema: Allow dllimport entities in template args for mingw

Previously dllimport variables inside of template arguments relied on
not using the C++11 codepath when -fms-compatibility was set.

While this allowed us to achieve compatibility with MSVC, it did so at
the expense of MingW.

Instead, try to use the DeclRefExpr we dig out of the template argument.
If it has the dllimport attribute, accept it and skip the C++11
null-pointer check.

llvm-svn: 211766

10 years agoAdded instruction combine to transform few more negative values addition to subtracti...
Dinesh Dwivedi [Thu, 26 Jun 2014 05:40:22 +0000 (05:40 +0000)]
Added instruction combine to transform few more negative values addition to subtraction (Part 2)
This patch enables transforms for

(x + (~(y | c) + 1)   -->   x - (y | c) if c is even

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

llvm-svn: 211765

10 years agoConvert some function arguments to use ArrayRef.
Craig Topper [Thu, 26 Jun 2014 04:58:53 +0000 (04:58 +0000)]
Convert some function arguments to use ArrayRef.

llvm-svn: 211764

10 years agoConvert StringLiteralParser constructor to use ArrayRef instead of a pointer and...
Craig Topper [Thu, 26 Jun 2014 04:58:39 +0000 (04:58 +0000)]
Convert StringLiteralParser constructor to use ArrayRef instead of a pointer and count.

llvm-svn: 211763

10 years agoGlobalOpt: Don't optimize thread_local for initializers
David Majnemer [Thu, 26 Jun 2014 03:02:19 +0000 (03:02 +0000)]
GlobalOpt: Don't optimize thread_local for initializers

Folding a reference to a thread_local variable into another global
variable's initializer is very problematic, there is no relocation that
exists to represent such an access.

llvm-svn: 211762

10 years agoMake test from r211758 portable
Alp Toker [Thu, 26 Jun 2014 02:07:06 +0000 (02:07 +0000)]
Make test from r211758 portable

It turns out the -fblocks option is determined by the default tooling target
and not implied by the other two flags.

llvm-svn: 211761

10 years agoCodeGen: Improve warnings about uninstrumented files when profiling
Justin Bogner [Thu, 26 Jun 2014 01:45:07 +0000 (01:45 +0000)]
CodeGen: Improve warnings about uninstrumented files when profiling

Improve the warning when building with -fprofile-instr-use and a file
appears not to have been profiled at all. This keys on whether a
function is defined in the main file or not to avoid false negatives
when one includes a header with functions that have been profiled.

llvm-svn: 211760

10 years agoReformat RAVs to sync up following recent updates
Alp Toker [Thu, 26 Jun 2014 01:42:30 +0000 (01:42 +0000)]
Reformat RAVs to sync up following recent updates

llvm-svn: 211759

10 years agoRAV: visit copy expressions of captured variables in blocks (ObjC++11)
Alp Toker [Thu, 26 Jun 2014 01:42:24 +0000 (01:42 +0000)]
RAV: visit copy expressions of captured variables in blocks (ObjC++11)

Patch by Mathieu Baudet.

llvm-svn: 211758

10 years agoR600: Fix vector FMA
Matt Arsenault [Thu, 26 Jun 2014 01:28:05 +0000 (01:28 +0000)]
R600: Fix vector FMA

llvm-svn: 211757

10 years agoForward -u to the linker on gnutools toolchains
Reid Kleckner [Thu, 26 Jun 2014 01:08:54 +0000 (01:08 +0000)]
Forward -u to the linker on gnutools toolchains

Summary:
The BSDs and Darwin all forward the whole 'u' group, but gcc only
forwards -u so far as I can tell.  I only forward -u, since that's a
minimal change, and many people object to magically recognizing and
forwarding linker arguments.

Reviewers: chandlerc, joerg

Subscribers: cfe-commits

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

llvm-svn: 211756

10 years agoPatch from Albert J. Wong to make type_traits take advantage of gcc intrinsics in...
Marshall Clow [Thu, 26 Jun 2014 01:07:56 +0000 (01:07 +0000)]
Patch from Albert J. Wong to make type_traits take advantage of gcc intrinsics in 4.7 and later. No functionality change when using clang.

llvm-svn: 211755

10 years agoRemove forward decl of SmallVectorImpl now that we have the header
Reid Kleckner [Thu, 26 Jun 2014 01:03:20 +0000 (01:03 +0000)]
Remove forward decl of SmallVectorImpl now that we have the header

Follow up to r211749.

llvm-svn: 211754

10 years agoDon't build switch tables for dllimport and TLS variables in GEPs
Hans Wennborg [Thu, 26 Jun 2014 00:30:52 +0000 (00:30 +0000)]
Don't build switch tables for dllimport and TLS variables in GEPs

This is a follow-up to r211331, which failed to notice that we were
returning early from ValidLookupTableConstant for GEPs.

llvm-svn: 211753

10 years agoMSVC build fix following r211749
Alp Toker [Thu, 26 Jun 2014 00:25:41 +0000 (00:25 +0000)]
MSVC build fix following r211749

Avoid strndup()

llvm-svn: 211752

10 years agoFix building for iOS
Nick Kledzik [Thu, 26 Jun 2014 00:25:33 +0000 (00:25 +0000)]
Fix building for iOS

llvm-svn: 211751

10 years ago[X86] AVX512: Fix asm syntax for packed vcmp
Adam Nemet [Thu, 26 Jun 2014 00:21:12 +0000 (00:21 +0000)]
[X86] AVX512: Fix asm syntax for packed vcmp

The *_alt defs for vcmp are used by the InstParser (the asm string in the main
def is used by the InstPrinter) .  The former was accepting vector registers
as destination rather than mask registers.

llvm-svn: 211750

10 years agoIntroduce a string_ostream string builder facilty
Alp Toker [Thu, 26 Jun 2014 00:00:48 +0000 (00:00 +0000)]
Introduce a string_ostream string builder facilty

string_ostream is a safe and efficient string builder that combines opaque
stack storage with a built-in ostream interface.

small_string_ostream<bytes> additionally permits an explicit stack storage size
other than the default 128 bytes to be provided. Beyond that, storage is
transferred to the heap.

This convenient class can be used in most places an
std::string+raw_string_ostream pair or SmallString<>+raw_svector_ostream pair
would previously have been used, in order to guarantee consistent access
without byte truncation.

The patch also converts much of LLVM to use the new facility. These changes
include several probable bug fixes for truncated output, a programming error
that's no longer possible with the new interface.

llvm-svn: 211749

10 years agoMinor libc++abi changes to make things build better with gcc.
Nico Weber [Wed, 25 Jun 2014 23:55:37 +0000 (23:55 +0000)]
Minor libc++abi changes to make things build better with gcc.

llvm-svn: 211748

10 years agoFor CrashRecoveryContext::RunSafelyOnThread, propagate Darwin's PRIO_DARWIN_BG to...
Argyrios Kyrtzidis [Wed, 25 Jun 2014 23:54:50 +0000 (23:54 +0000)]
For CrashRecoveryContext::RunSafelyOnThread, propagate Darwin's PRIO_DARWIN_BG to the new thread if it is
set on the calling thread.

This allows libclang's indexing threads to propagate their priority to the clang module building threads.

rdar://17459872

llvm-svn: 211747

10 years agoMake -Wincomplete-umbrella go through the VFS
Ben Langmuir [Wed, 25 Jun 2014 23:53:43 +0000 (23:53 +0000)]
Make -Wincomplete-umbrella go through the VFS

By using vfs::recursive_directory_iterator, this warning will now fire
when some or all of a module's headers are from VFS mappings.

llvm-svn: 211746

10 years agoUpdate libc++abi to use the ARM EHABI unwinder from its libunwind.
Nico Weber [Wed, 25 Jun 2014 23:52:07 +0000 (23:52 +0000)]
Update libc++abi to use the ARM EHABI unwinder from its libunwind.

llvm-svn: 211745

10 years agoFix typo
Michael Liao [Wed, 25 Jun 2014 23:39:08 +0000 (23:39 +0000)]
Fix typo

llvm-svn: 211744

10 years agoLand support for ARM EHABI unwinding for libunwind.
Nico Weber [Wed, 25 Jun 2014 23:39:00 +0000 (23:39 +0000)]
Land support for ARM EHABI unwinding for libunwind.

This was written by:
Albert Wong <ajwong@chromium.org>
Antoine Labour <piman@chromium.org>
Dana Jansen <danakj@chromium.org
Jonathan Roelofs <jonathan@codesourcery.com>
Nico Weber <thakis@chromium.org>

llvm-svn: 211743

10 years agoMake PR20038.cpp test case portable to non-Itanium ABIs
David Blaikie [Wed, 25 Jun 2014 23:19:58 +0000 (23:19 +0000)]
Make PR20038.cpp test case portable to non-Itanium ABIs

The only call in this function is to the dtor, so there's no need to
name a non-portable mangled function name to match it.

llvm-svn: 211742

10 years agoSuppress clang-tidy-diff.py. It is incompatible to py26 due to argparse.
NAKAMURA Takumi [Wed, 25 Jun 2014 23:13:34 +0000 (23:13 +0000)]
Suppress clang-tidy-diff.py. It is incompatible to py26 due to argparse.

llvm-svn: 211741

10 years ago[FastISel][X86] More refactoring of select lowering and XALU folding. NFC.
Juergen Ributzka [Wed, 25 Jun 2014 22:50:59 +0000 (22:50 +0000)]
[FastISel][X86] More refactoring of select lowering and XALU folding. NFC.

llvm-svn: 211740

10 years agoStart landing support for ARM EHABI unwinding.
Nico Weber [Wed, 25 Jun 2014 22:49:13 +0000 (22:49 +0000)]
Start landing support for ARM EHABI unwinding.

The new code will be behind a LIBCXXABI_ARM_EHABI define (so that platforms
that don't want it can continue using e.g. SJLJ). This commit mostly just
adds the LIBCXXABI_ARM_EHABI define.

llvm-svn: 211739

10 years agoRemove REQUIRES lines from portable tests
Alp Toker [Wed, 25 Jun 2014 22:46:44 +0000 (22:46 +0000)]
Remove REQUIRES lines from portable tests

These tests are target-independent and shouldn't ever be suppressed.

llvm-svn: 211738

10 years agoThe includes were sorted. Revert r210578.
Eric Christopher [Wed, 25 Jun 2014 22:36:37 +0000 (22:36 +0000)]
The includes were sorted. Revert r210578.

llvm-svn: 211737

10 years agoDon't allow dllimport variables in constant initializers
Hans Wennborg [Wed, 25 Jun 2014 22:19:48 +0000 (22:19 +0000)]
Don't allow dllimport variables in constant initializers

This is a follow-up to David's r211677. For the following code,
we would end up referring to 'foo' in the initializer for 'arr',
and then fail to link, because 'foo' is dllimport and needs to be
accessed through the __imp_?foo.

  __declspec(dllimport) extern const char foo[];
  const char* f() {
    static const char* const arr[] = { foo };
    return arr[0];
  }

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

llvm-svn: 211736

10 years ago[FastISel][X86] Refactor XALU folding. NFC.
Juergen Ributzka [Wed, 25 Jun 2014 22:17:23 +0000 (22:17 +0000)]
[FastISel][X86] Refactor XALU folding. NFC.

llvm-svn: 211735

10 years agofixed typos in comment
Sanjay Patel [Wed, 25 Jun 2014 22:15:12 +0000 (22:15 +0000)]
fixed typos in comment

llvm-svn: 211734

10 years agorelational: Fix signbit
Aaron Watry [Wed, 25 Jun 2014 21:08:38 +0000 (21:08 +0000)]
relational: Fix signbit

The vector components were mistakenly using () instead of {}, which caused
all but the last vector component to be dropped on the floor.

Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Jeroen Ketema <j.ketema@imperial.ac.uk>
llvm-svn: 211733

10 years agoAdd vfs::recursive_directory_iterator
Ben Langmuir [Wed, 25 Jun 2014 20:25:40 +0000 (20:25 +0000)]
Add vfs::recursive_directory_iterator

For now, this is only used by its unit tests.  It is similar to the API
in llvm::sys::fs::recursive_directory_iterator, but without some of the
more complex features like requesting that the iterator not recurse into
the next directory, for example.

llvm-svn: 211732

10 years agoMention that Phabricator users should subscribe to *-commits
Reid Kleckner [Wed, 25 Jun 2014 20:25:21 +0000 (20:25 +0000)]
Mention that Phabricator users should subscribe to *-commits

This probably explains why a lot of messages get lost for first time
Phabricator users.

llvm-svn: 211731

10 years ago[FastISel][X86] Only fold the cmp into the select when both instructions are in the...
Juergen Ributzka [Wed, 25 Jun 2014 20:06:12 +0000 (20:06 +0000)]
[FastISel][X86] Only fold the cmp into the select when both instructions are in the same basic block.

If the cmp is in a different basic block, then it is possible that not all
operands of that compare have defined registers. This can happen when one of
the operands to the cmp is a load and the load gets folded into the cmp. In
this case FastISel will skip the load instruction and the vreg is never
defined.

llvm-svn: 211730

10 years agoFix silly compilation error.
Zachary Turner [Wed, 25 Jun 2014 18:40:58 +0000 (18:40 +0000)]
Fix silly compilation error.

llvm-svn: 211728

10 years agoMerge the used symbol scanning of MCObjectStreamer and RecordStreamer.
Rafael Espindola [Wed, 25 Jun 2014 18:37:33 +0000 (18:37 +0000)]
Merge the used symbol scanning of MCObjectStreamer and RecordStreamer.

This completes the refactoring of RecordStreamer.

llvm-svn: 211727

10 years agoFix a bug in the IRMemoryMap which generated bogus allocations.
Zachary Turner [Wed, 25 Jun 2014 18:37:19 +0000 (18:37 +0000)]
Fix a bug in the IRMemoryMap which generated bogus allocations.

Previously, only the starting locations of the candidate interval
and the existing interval were compared.  To correctly detect
range intersections, it is necessary to compare the entire range
of both intervals against each other.

Reviewed by: scallanan

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

llvm-svn: 211726

10 years agoMS ABI: Propagate class-level DLL attributes to class template specialization bases...
Hans Wennborg [Wed, 25 Jun 2014 18:25:57 +0000 (18:25 +0000)]
MS ABI: Propagate class-level DLL attributes to class template specialization bases (PR11170)

Consider the following code:

  template <typename T> class Base {};
  class __declspec(dllexport) class Derived : public Base<int> {}

When the base of an exported or imported class is a class template
specialization, MSVC will propagate the dll attribute to the base.
In the example code, Base<int> becomes a dllexported class.

This commit makes Clang do the proopagation when the base hasn't been
instantiated yet, and warns about it being unsupported otherwise.
This is different from MSVC, which allows changing a specialization
back and forth between dllimport and dllexport and seems to let the
last one win. Changing the dll attribute after instantiation would be
hard for us, and doesn't seem to come up in practice, so I think this
is a reasonable limitation to have.

MinGW doesn't do this kind of propagation.

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

llvm-svn: 211725

10 years agoRevert "PR20038: DebugInfo: Inlined call sites where the caller has debug info but...
David Blaikie [Wed, 25 Jun 2014 18:20:54 +0000 (18:20 +0000)]
Revert "PR20038: DebugInfo: Inlined call sites where the caller has debug info but the call itself has no debug location."

This reverts commit r211723.

Breaks the ASan/compiler-rt build... guess I didn't test very far at all
:/.

llvm-svn: 211724

10 years agoPR20038: DebugInfo: Inlined call sites where the caller has debug info but the call...
David Blaikie [Wed, 25 Jun 2014 18:03:10 +0000 (18:03 +0000)]
PR20038: DebugInfo: Inlined call sites where the caller has debug info but the call itself has no debug location.

This situation does bad things when inlined, so I've fixed Clang not to
produce inlinable call sites without locations when the caller has debug
info (in the one case where I could find that this occurred). This
updates the PR20038 test case to be what clang now produces, and readds
the assertion that had to be removed due to this bug.

I've also beefed up the debug info verifier to help diagnose these
issues in the future, and I hope to add checks to the inliner to just
assert-fail if it encounters this situation. If, in the future, we
decide we have to cope with this situation, the right thing to do is
probably to just remove all the DebugLocs from the inlined instructions.

llvm-svn: 211723

10 years agoPR20038: DebugInfo: Call sites without DebugLocs for temporary dtors after a conditional
David Blaikie [Wed, 25 Jun 2014 17:57:34 +0000 (17:57 +0000)]
PR20038: DebugInfo: Call sites without DebugLocs for temporary dtors after a conditional

With && at the top level of an expression, the last thing done when
emitting the expression was an unconditional jump to the cleanup block.
To reduce the amount of stepping, the DebugLoc is omitted from the
unconditional jump. This is done by clearing the IRBuilder's
"CurrentDebugLocation"*. If this is not set to some non-empty value
before the cleanup block is emitted, the cleanups don't get a location
either. If a call without a location is emitted in a function with debug
info, and that call is then inlined - bad things happen. (without a
location for the call site, the inliner would just leave the inlined
DebugLocs as they were - pointing to roots in the original function, not
inlined into the current function)

Follow up commit to LLVM will ensure that breaking the invariants of the
DebugLoc chains by having chains that don't lead to the current function
will fail assertions, so we shouldn't accidentally slip any of these
cases in anymore. Those assertions may reveal further cases that need to
be fixed in clang, though I've tried to test heavily to avoid that.

* See r128471, r128513 for the code that clears the
  CurrentDebugLocation. Simply removing this code or moving the code
  into IRBuilder to apply to all unconditional branches would regress
  desired behavior, unfortunately.

llvm-svn: 211722

10 years agoAdd Rpass-missed and Rpass-analysis reports to the loop vectorizer. The remarks give...
Tyler Nowicki [Wed, 25 Jun 2014 17:50:15 +0000 (17:50 +0000)]
Add Rpass-missed and Rpass-analysis reports to the loop vectorizer. The remarks give the vector width of vectorized loops and a brief analysis of loops that fail to be vectorized. For example, an analysis will be generated for loops containing control flow that cannot be simplified to a select. The optimization remarks also give the debug location of expressions that cannot be vectorized, for example the location of an unvectorizable call.

Reviewed by: Arnold Schwaighofer

llvm-svn: 211721

10 years ago[X86] Always prefer to lower a VECTOR_SHUFFLE into a BLENDI instead of SHUFP (or...
Andrea Di Biagio [Wed, 25 Jun 2014 17:41:58 +0000 (17:41 +0000)]
[X86] Always prefer to lower a VECTOR_SHUFFLE into a BLENDI instead of SHUFP (or VPERM2X128).

This patch teaches method 'LowerVECTOR_SHUFFLE' to give higher precedence to
the check for 'isBlendMask'; the idea is that, when possible, we should firstly
check if a shuffle performs a blend, and in case, try to lower it into a BLENDI
instead of selecting a SHUFP or (worse) a VPERM2X128.

In general:
 - AVX VBLENDPS/D always have better latency and throughput than VPERM2F128;
 - BLENDPS/D instructions tend to always have better 'reciprocal throughput'
   than the equivalent SHUFPS/D;
 - Both BLENDPS/D and SHUFPS/D are often decoded into the same number of
   m-ops; however, a m-op obtained from a BLENDPS/D can be scheduled to more
   than one execution port.

This patch:
 - Moves the check for 'isBlendMask' immediately before the check for
   'isSHUFPMask' within method 'LowerVECTOR_SHUFFLE';
 - Updates existing tests for sse/avx shuffle/blend instructions to verify
   that we select (v)blendps/d when possible (instead of (v)shufps/d or
   vperm2f128).

llvm-svn: 211720

10 years agoFix treatment of types defined in function prototype
Serge Pavlov [Wed, 25 Jun 2014 17:09:41 +0000 (17:09 +0000)]
Fix treatment of types defined in function prototype

Types defined in function prototype are diagnosed earlier in C++ compilation.
They are put into declaration context where the prototype is introduced. Later on,
when FunctionDecl object is created, these types are moved into the function context.

This patch fixes PR19018 and PR18963.

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

llvm-svn: 211718

10 years agoFix indentation.
Juergen Ributzka [Wed, 25 Jun 2014 16:49:37 +0000 (16:49 +0000)]
Fix indentation.

llvm-svn: 211717

10 years agoHeaders: be a bit more careful about inline asm
Saleem Abdulrasool [Wed, 25 Jun 2014 16:48:40 +0000 (16:48 +0000)]
Headers: be a bit more careful about inline asm

Conditionally include x86intrin.h if we are building for x86 or x86_64.
Conditionalise definition of inline assembly routines which use x86 or x86_64
inline assembly. This is needed as clang can target Windows on ARM where these
definitions may be included into user code.

llvm-svn: 211716

10 years agoFix the build.
Rafael Espindola [Wed, 25 Jun 2014 15:47:36 +0000 (15:47 +0000)]
Fix the build.

llvm-svn: 211715

10 years agoMove expression visitation logic up to MCStreamer.
Rafael Espindola [Wed, 25 Jun 2014 15:45:33 +0000 (15:45 +0000)]
Move expression visitation logic up to MCStreamer.

Remove the duplicate from MCRecordStreamer. No functionality change.

llvm-svn: 211714

10 years ago[ASan] When iterating over segments on OSX, treat the segments' initial
Alexander Potapenko [Wed, 25 Jun 2014 15:43:19 +0000 (15:43 +0000)]
[ASan] When iterating over segments on OSX, treat the segments' initial
protection level as their current protection level.
This fixes the UNIMPLEMENTED check that started to fire on OSX after r210649.

llvm-svn: 211713

10 years agoRename loop unrolling and loop vectorizer metadata to have a common prefix.
Eli Bendersky [Wed, 25 Jun 2014 15:42:16 +0000 (15:42 +0000)]
Rename loop unrolling and loop vectorizer metadata to have a common prefix.

[Clang part]

These patches rename the loop unrolling and loop vectorizer metadata
such that they have a common 'llvm.loop.' prefix.  Metadata name
changes:

llvm.vectorizer.* => llvm.loop.vectorizer.*
llvm.loopunroll.* => llvm.loop.unroll.*

This was a suggestion from an earlier review
(http://reviews.llvm.org/D4090) which added the loop unrolling
metadata.

Patch by Mark Heffernan.

llvm-svn: 211712

10 years agoAdd some test files for r211710.
Eli Bendersky [Wed, 25 Jun 2014 15:41:39 +0000 (15:41 +0000)]
Add some test files for r211710.

llvm-svn: 211711

10 years agoRename loop unrolling and loop vectorizer metadata to have a common prefix.
Eli Bendersky [Wed, 25 Jun 2014 15:41:00 +0000 (15:41 +0000)]
Rename loop unrolling and loop vectorizer metadata to have a common prefix.

[LLVM part]

These patches rename the loop unrolling and loop vectorizer metadata
such that they have a common 'llvm.loop.' prefix.  Metadata name
changes:

llvm.vectorizer.* => llvm.loop.vectorizer.*
llvm.loopunroll.* => llvm.loop.unroll.*

This was a suggestion from an earlier review
(http://reviews.llvm.org/D4090) which added the loop unrolling
metadata.

Patch by Mark Heffernan.

llvm-svn: 211710

10 years agoFix = delete in MSVC build from r211705
JF Bastien [Wed, 25 Jun 2014 15:38:02 +0000 (15:38 +0000)]
Fix = delete in MSVC build from r211705

MSVC doesn't support = delete yet, use LLVM_DELETED_FUNCTION instead.

Related to: http://reviews.llvm.org/D3390

llvm-svn: 211709

10 years agoRolling back, as the test fails on one of the buildbots:
Alexander Kornienko [Wed, 25 Jun 2014 15:33:35 +0000 (15:33 +0000)]
Rolling back, as the test fails on one of the buildbots:
  http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/13505/steps/check-all/logs/Clang%20Tools%3A%3Ac-style-casts.cpp

llvm-svn: 211708

10 years agoSimplify the visitation of target expressions. No functionality change.
Rafael Espindola [Wed, 25 Jun 2014 15:29:54 +0000 (15:29 +0000)]
Simplify the visitation of target expressions. No functionality change.

llvm-svn: 211707

10 years agoRandom Number Generator (llvm)
JF Bastien [Wed, 25 Jun 2014 15:21:42 +0000 (15:21 +0000)]
Random Number Generator (llvm)

Provides an abstraction for a random number generator (RNG) that produces a stream of pseudo-random numbers.
The current implementation uses C++11 facilities and is therefore not cryptographically secure.

The RNG is salted with the text of the current command line invocation.
In addition, a user may specify a seed (reproducible builds).

In clang, the seed can be set via

-frandom-seed=X
In the back end, the seed can be set via

-rng-seed=X
This is the llvm part of the patch.
clang part: D3391

URL: http://reviews.llvm.org/D3390
Author: yln

I'm landing this for the second time, it broke Windows bots the first time around.

llvm-svn: 211705

10 years ago[mach-o]: make sure custom sort method is irreflexive.
Tim Northover [Wed, 25 Jun 2014 15:12:55 +0000 (15:12 +0000)]
[mach-o]: make sure custom sort method is irreflexive.

The previous function returned true for "s < s", which could completely mess up
the sorting of symbols within a section.

Unfortunately, I don't think there's a robust way to write a test for this.
Anything I come up with will be making assumptions about the particular
implementation of std::sort.

llvm-svn: 211704

10 years agoApparently, some versions of diff like -U0 more than -u0.
Alexander Kornienko [Wed, 25 Jun 2014 14:56:58 +0000 (14:56 +0000)]
Apparently, some versions of diff like -U0 more than -u0.

llvm-svn: 211703

10 years agoAdd a check to flag the usage of C-style casts (Google Style).
Alexander Kornienko [Wed, 25 Jun 2014 14:52:44 +0000 (14:52 +0000)]
Add a check to flag the usage of C-style casts (Google Style).

Summary:
Add a check to flag the usage of C-style casts, as per Google Style
Guide:
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Casting#Casting

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits

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

llvm-svn: 211702

10 years agoSimplify AddValueSymbols. No functionality change.
Rafael Espindola [Wed, 25 Jun 2014 14:42:14 +0000 (14:42 +0000)]
Simplify AddValueSymbols. No functionality change.

llvm-svn: 211701

10 years ago[msan] Fix bad interaction between with-calls mode and chained origin tracking.
Evgeniy Stepanov [Wed, 25 Jun 2014 14:41:57 +0000 (14:41 +0000)]
[msan] Fix bad interaction between with-calls mode and chained origin tracking.

Origin history should only be recorded for uninitialized values, because it is
meaningless otherwise. This change moves __msan_chain_origin to the runtime
library side and makes it conditional on the corresponding shadow value.

Previous code was correct, but _very_ inefficient.

llvm-svn: 211700

10 years agoDon't leak a file descriptor.
Rafael Espindola [Wed, 25 Jun 2014 14:35:59 +0000 (14:35 +0000)]
Don't leak a file descriptor.

llvm-svn: 211699

10 years agoAdd clang-tidy-diff.py script to run clang-tidy and display warnings on changed lines...
Alexander Kornienko [Wed, 25 Jun 2014 14:09:52 +0000 (14:09 +0000)]
Add clang-tidy-diff.py script to run clang-tidy and display warnings on changed lines only.

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits

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

llvm-svn: 211698

10 years agoCode cleanup.
Logan Chien [Wed, 25 Jun 2014 13:46:17 +0000 (13:46 +0000)]
Code cleanup.

llvm-svn: 211697

10 years agorelational: Implement signbit
Aaron Watry [Wed, 25 Jun 2014 13:29:23 +0000 (13:29 +0000)]
relational: Implement signbit

v2 Changes:
   - use __builtin_signbit instead of shifting by hand
   - significantly improve vector shuffling
   - Works correctly now for signbit(float16) on radeonsi

Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 211696

10 years agoAdd Polly to the ignored trees.
Chandler Carruth [Wed, 25 Jun 2014 13:13:36 +0000 (13:13 +0000)]
Add Polly to the ignored trees.

llvm-svn: 211695

10 years ago[x86] Add intrinsics for the pshufd, pshuflw, and pshufhw instructions.
Chandler Carruth [Wed, 25 Jun 2014 13:12:54 +0000 (13:12 +0000)]
[x86] Add intrinsics for the pshufd, pshuflw, and pshufhw instructions.

llvm-svn: 211694

10 years agoFixing the RST markup for the #pragma loop attribute documentation.
Aaron Ballman [Wed, 25 Jun 2014 12:49:05 +0000 (12:49 +0000)]
Fixing the RST markup for the #pragma loop attribute documentation.

llvm-svn: 211693

10 years agoFixing the position of the supported syntax marker when generating attribute document...
Aaron Ballman [Wed, 25 Jun 2014 12:48:06 +0000 (12:48 +0000)]
Fixing the position of the supported syntax marker when generating attribute documentation.

llvm-svn: 211692

10 years agoRe-apply r211399, "Generate native unwind info on Win64" with a fix to ignore SEH...
NAKAMURA Takumi [Wed, 25 Jun 2014 12:41:52 +0000 (12:41 +0000)]
Re-apply r211399, "Generate native unwind info on Win64" with a fix to ignore SEH pseudo ops in X86 JIT emitter.

--
This patch enables LLVM to emit Win64-native unwind info rather than
DWARF CFI.  It handles all corner cases (I hope), including stack
realignment.

Because the unwind info is not flexible enough to describe stack frames
with a gap of unknown size in the middle, such as the one caused by
stack realignment, I modified register spilling code to place all spills
into the fixed frame slots, so that they can be accessed relative to the
frame pointer.

Patch by Vadim Chugunov!

Reviewed By: rnk

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

llvm-svn: 211691

10 years agoEscaping a literal character to fix an RST warning.
Aaron Ballman [Wed, 25 Jun 2014 12:41:28 +0000 (12:41 +0000)]
Escaping a literal character to fix an RST warning.

llvm-svn: 211690

10 years agoReformat.
NAKAMURA Takumi [Wed, 25 Jun 2014 12:40:56 +0000 (12:40 +0000)]
Reformat.

llvm-svn: 211689

10 years agoAlign with new GCC options for x86 Android
Alexey Volkov [Wed, 25 Jun 2014 12:15:36 +0000 (12:15 +0000)]
Align with new GCC options for x86 Android
32-bit: +ssse3
64-bit: +sse4.2 +popcnt

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

llvm-svn: 211688

10 years agoCHECK-LABEL'ify this test.
James Molloy [Wed, 25 Jun 2014 11:50:56 +0000 (11:50 +0000)]
CHECK-LABEL'ify this test.

llvm-svn: 211687