]> granicus.if.org Git - clang/log
clang
10 years agoRemove a broken attempt to cope with someone #undef'ing __has_include_next.
Richard Smith [Wed, 19 Feb 2014 22:53:42 +0000 (22:53 +0000)]
Remove a broken attempt to cope with someone #undef'ing __has_include_next.
This was broken because __has_include_next(...) would not be valid in a
preprocessor condition if __has_include_next is not defined.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201731 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoHook up NetBSD/sparc and NetBSD/sparc64 as and ld invocations.
Joerg Sonnenberger [Wed, 19 Feb 2014 22:40:18 +0000 (22:40 +0000)]
Hook up NetBSD/sparc and NetBSD/sparc64 as and ld invocations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201730 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTeach Clang to provide ::max_align_t in C11 and C++11 modes.
Chandler Carruth [Wed, 19 Feb 2014 22:35:01 +0000 (22:35 +0000)]
Teach Clang to provide ::max_align_t in C11 and C++11 modes.

This definition is not chosen idly. There is an unfortunate reality with
max_align_t -- the specific nature of its definition leaks into the ABI
almost immediately. Because it is part of C11 and C++11 it becomes
essential for it to match with other systems on that ABI. There is an
effort to discourage any further use of this construct as a consequence
-- using max_align_t introduces an immediate ABI problem. We can never
update it to have larger alignment even as the microarchitecture changes
to necessitate higher alignment. =/

The particular definition here exactly matches the ABI of GCC's chosen
::max_align_t definition, for better or worse. This was written with the
help of Richard Smith who was decoding the exact ABI implications of the
selected definition in GCC. Notably, in-register arguments are impacted
by the particular definition chosen. =/

No one is under the illusion that this is a "good" or "useful"
definition of max_align_t, and we are working with the standards
committee to specify a more useful interface to address this need.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201729 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoGC now unused variable.
Joerg Sonnenberger [Wed, 19 Feb 2014 22:17:01 +0000 (22:17 +0000)]
GC now unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201728 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUse a switch for the architecture specific logic in
Joerg Sonnenberger [Wed, 19 Feb 2014 22:16:19 +0000 (22:16 +0000)]
Use a switch for the architecture specific logic in
netbsd::Assemble::ConstructJob.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201725 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMS ABI: Let non-virtual method overloads participate in vftable ordering
Reid Kleckner [Wed, 19 Feb 2014 22:06:10 +0000 (22:06 +0000)]
MS ABI: Let non-virtual method overloads participate in vftable ordering

In the Microsoft ABI, the vftable is laid out as if all methods in every
overload set were declared in reverse order of declaration at the point
of declaration of the first overload in the set.

Previously we only considered virtual methods in an overload set, but
MSVC includes non-virtual methods for ordering purposes.

Fixes PR18902.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201722 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-cl: Pass /Z7 when we fallback to cl with debug info enabled
Reid Kleckner [Wed, 19 Feb 2014 22:05:59 +0000 (22:05 +0000)]
clang-cl: Pass /Z7 when we fallback to cl with debug info enabled

Clang itself only emits CodeView line tables, so it seems more
consistent to ask cl.exe for the same format.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201721 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRefactor -KPIC handling for as invocation.
Joerg Sonnenberger [Wed, 19 Feb 2014 21:58:52 +0000 (21:58 +0000)]
Refactor -KPIC handling for as invocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201719 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMoving the documentation for the ARM interrupt attribute into AttrDocs.
Aaron Ballman [Wed, 19 Feb 2014 21:12:23 +0000 (21:12 +0000)]
Moving the documentation for the ARM interrupt attribute into AttrDocs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201716 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMoving the documentation for the clang::fallthrough attribute into AttrDocs.
Aaron Ballman [Wed, 19 Feb 2014 20:56:51 +0000 (20:56 +0000)]
Moving the documentation for the clang::fallthrough attribute into AttrDocs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201715 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdded a documentation category for statement attributes so that things like clang...
Aaron Ballman [Wed, 19 Feb 2014 20:55:42 +0000 (20:55 +0000)]
Added a documentation category for statement attributes so that things like clang::fallthrough can be documented.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201714 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSome of these headings had the incorrect number of "underlines" and so would get...
Aaron Ballman [Wed, 19 Feb 2014 20:43:58 +0000 (20:43 +0000)]
Some of these headings had the incorrect number of "underlines" and so would get warnings when generating the content from Sphinx. No functional changes intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201713 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMoving the documentation for the availability attribute into AttrDocs.
Aaron Ballman [Wed, 19 Feb 2014 20:39:48 +0000 (20:39 +0000)]
Moving the documentation for the availability attribute into AttrDocs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201712 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoOnly print the selected multilib when something is actually found on the host.
Yunzhong Gao [Wed, 19 Feb 2014 19:06:58 +0000 (19:06 +0000)]
Only print the selected multilib when something is actually found on the host.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201709 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[analyzer] Extend IdenticalExprChecker to check logical and bitwise expressions.
Jordan Rose [Wed, 19 Feb 2014 17:44:16 +0000 (17:44 +0000)]
[analyzer] Extend IdenticalExprChecker to check logical and bitwise expressions.

IdenticalExprChecker now warns if any expressions in a logical or bitwise
chain (&&, ||, &, |, or ^) are the same. Unlike the previous patch, this
actually checks all subexpressions against each other (an O(N^2) operation,
but N is likely to be small).

Patch by Daniel Fahlgren!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201702 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[analyzer] Extend IdenticalExprChecker to check the two branches of an if.
Jordan Rose [Wed, 19 Feb 2014 17:44:11 +0000 (17:44 +0000)]
[analyzer] Extend IdenticalExprChecker to check the two branches of an if.

This extends the checks for identical expressions to handle identical
statements, and compares the consequent and alternative ("then" and "else")
branches of an if-statement to see if they are identical, treating a single
statement surrounded by braces as equivalent to one without braces.

This does /not/ check subsequent branches in an if/else chain, let alone
branches that are not consecutive. This may improve in a future patch, but
it would certainly take more work.

Patch by Daniel Fahlgren!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201701 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoReduce verbosity in the virtual file system using LLVM.h
Ben Langmuir [Wed, 19 Feb 2014 16:36:49 +0000 (16:36 +0000)]
Reduce verbosity in the virtual file system using LLVM.h

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201696 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUpdated tutorial code according to the changes in r197139.
Alexander Kornienko [Wed, 19 Feb 2014 16:11:38 +0000 (16:11 +0000)]
Updated tutorial code according to the changes in r197139.

Thanks to Konrad Kleine for reporting the inconsistency!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201693 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix some test issues in VirtualFileSystemTest
Ben Langmuir [Wed, 19 Feb 2014 15:58:49 +0000 (15:58 +0000)]
Fix some test issues in VirtualFileSystemTest

Use camel-case names, remove some dead code, and fix a copy-and-pasted test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201691 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMoving the documentation for the objc_requires_super attribute into AttrDocs.
Aaron Ballman [Wed, 19 Feb 2014 15:45:13 +0000 (15:45 +0000)]
Moving the documentation for the objc_requires_super attribute into AttrDocs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201687 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMoving the documentation for the objc_method_family attribute into AttrDocs.
Aaron Ballman [Wed, 19 Feb 2014 15:38:02 +0000 (15:38 +0000)]
Moving the documentation for the objc_method_family attribute into AttrDocs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201686 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove typo from r201618
Ben Langmuir [Wed, 19 Feb 2014 15:36:37 +0000 (15:36 +0000)]
Remove typo from r201618

Fixes PR18895

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201685 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMoving the documentation for the overloadable attribute into AttrDocs.
Aaron Ballman [Wed, 19 Feb 2014 14:53:20 +0000 (14:53 +0000)]
Moving the documentation for the overloadable attribute into AttrDocs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201678 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMoving the documentation for the enable_if attribute into AttrDocs. Removed the ...
Aaron Ballman [Wed, 19 Feb 2014 14:48:31 +0000 (14:48 +0000)]
Moving the documentation for the enable_if attribute into AttrDocs. Removed the "clang introduces" phrase for style consistency, but otherwise the documentation is identical.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201677 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAArch64: look up EmitAArch64Scalar support before calling.
Tim Northover [Wed, 19 Feb 2014 11:55:06 +0000 (11:55 +0000)]
AArch64: look up EmitAArch64Scalar support before calling.

This fixes one immediate bug where an expression with side-effects
could be emitted twice during a NEON call.

It also prepares the way for folding CodeGen for many of the SISD
intrinsics into a table, reducing code size and hopefully increasing
performance eventually ("binary search + few switch cases" should be
better than "lots of switch cases").

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201667 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM & AArch64: move struct definition outside function.
Tim Northover [Wed, 19 Feb 2014 10:56:23 +0000 (10:56 +0000)]
ARM & AArch64: move struct definition outside function.

Apparently it's not True C++.

rdar://problem/16035743 still.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201663 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd FreeBSD ARM EABI hard-float support
Renato Golin [Wed, 19 Feb 2014 10:44:07 +0000 (10:44 +0000)]
Add FreeBSD ARM EABI hard-float support

Patch by Andrew Turner.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201662 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM NEON: add vcvtX (with rounding mode) intrinsics to v8 ARM.
Tim Northover [Wed, 19 Feb 2014 10:37:13 +0000 (10:37 +0000)]
ARM NEON: add vcvtX (with rounding mode) intrinsics to v8 ARM.

These instructions (well, the f32 ones) are supported on 32-bit ARMv8, not just
AArch64. Now that the arm_neon.td refactoring is complete, adding them is
surprisingly simple.

rdar://problem/16035743

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201661 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM NEON: use more flexible TableGen field for defs.
Tim Northover [Wed, 19 Feb 2014 10:37:09 +0000 (10:37 +0000)]
ARM NEON: use more flexible TableGen field for defs.

We used to have special handling for isCrypto and isA64 bits in the
NeonEmitter.cpp file (it knew the former was predicated on __ARM_FEATURE_CRYPTO
and the latter on __aarch64__ and went through various contortions to make sure
the correct intrinsics were emitted under the correct guard.

This is ugly and has obvious scalability problems (e.g. vcvtX intrinsics are
needed, which are ARMv8 only but available on both, yet another category). This
patch moves the #if predicate into the arm_neon.td file directly and makes
NeonEmitter.cpp agnostic about what goes in there.

It also deduplicates arm_neon.td so that each desired intrinsic is mentioned in
just one place (necessary because of the new mechanism for creating
arm_neon.h).

rdar://problem/16035743

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201660 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM & AArch64: merge the semantic checking of NEON intrinsics
Tim Northover [Wed, 19 Feb 2014 10:37:05 +0000 (10:37 +0000)]
ARM & AArch64: merge the semantic checking of NEON intrinsics

There are two kinds of automatically generated tests for NEON intrinsics, both
of which can be merged without adversely affecting users.

1. We check that a valid kind of __builtin_neon_XYZ overload is requested (e.g.
   we're not asking for a float32x4_t version when it only accepts integers. Since
   the __builtin_neon_XYZ intrinsics should only be used in arm_neon.h, relaxing
   this test and permitting AArch64 types for AArch32 should not cause a problem.
   The extra arm_neon.h definitions should be #ifdefed out anyway.
2. We check that intrinsics which take immediates are actually given
   compile-time constants within range. Since all NEON intrinsics should be
   backwards compatible, these tests should be identical on AArch64 and AArch32
   anyway.

This patch, therefore, merges the separate AArch64 and 32-bit checks.

rdar://problem/16035743

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201659 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agolibclang: ensure clang_createTranslationUnit2 always initializes *TU
Dmitri Gribenko [Wed, 19 Feb 2014 10:24:00 +0000 (10:24 +0000)]
libclang: ensure clang_createTranslationUnit2 always initializes *TU

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201657 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[analyzer] post analyzer build checker-276
Ted Kremenek [Wed, 19 Feb 2014 08:09:22 +0000 (08:09 +0000)]
[analyzer] post analyzer build checker-276

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201648 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[analyzer] Move checker alpha.osx.cocoa.MissingSuperCall out of alpha category.
Ted Kremenek [Wed, 19 Feb 2014 05:28:39 +0000 (05:28 +0000)]
[analyzer] Move checker alpha.osx.cocoa.MissingSuperCall out of alpha category.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201640 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAttempt to appease C++11 buildbots
Ben Langmuir [Wed, 19 Feb 2014 04:17:47 +0000 (04:17 +0000)]
Attempt to appease C++11 buildbots

Explicit operator bool doesn't not play nicely with gtest assertion
macros (i.e. it performs as advertised and I wish that gtest subverted
it for me).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201639 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPass VFS from CompilerInstance to FileManager
Ben Langmuir [Wed, 19 Feb 2014 03:34:59 +0000 (03:34 +0000)]
Pass VFS from CompilerInstance to FileManager

This change was somehow missed from r201618

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201636 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd an OverlayFileSystem class
Ben Langmuir [Wed, 19 Feb 2014 03:29:17 +0000 (03:29 +0000)]
Add an OverlayFileSystem class

Provides a way to merge multiple vfs::FileSystem objects into a single
filesystem.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201635 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove gunk from cxx_dr_status.html
David Majnemer [Wed, 19 Feb 2014 03:21:27 +0000 (03:21 +0000)]
Remove gunk from cxx_dr_status.html

Accidentally piped the stdout from make_cxx_dr_status into
cxx_dr_status.html

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201634 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRegenerate DR status page.
David Majnemer [Wed, 19 Feb 2014 03:03:21 +0000 (03:03 +0000)]
Regenerate DR status page.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201632 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoImplement DR577
David Majnemer [Wed, 19 Feb 2014 03:00:56 +0000 (03:00 +0000)]
Implement DR577

DR18 previously forebode typedefs to be used as parameter types if they
were of type 'void'.  DR577 allows 'void' to be used as a function
parameter type regardless from where it came.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201631 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoCIndex: initialise TU
Saleem Abdulrasool [Wed, 19 Feb 2014 02:56:55 +0000 (02:56 +0000)]
CIndex: initialise TU

TU is not guaranteed to be initialised in all cases.  In particular if CIdx or
ast_filename is NULL (or if &TU is NULL), then clang_createTranslationUnit2 will
not initialise the out parameter out_TU.  This is followed by an assertion check
which may perform a branch based on unitialised memory.

Caught by scan-build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201628 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove dead code.
Rafael Espindola [Wed, 19 Feb 2014 02:14:40 +0000 (02:14 +0000)]
Remove dead code.

Clang never produces a linker private object, so this code is dead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201627 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-cl /fallback: turn the note into a warning
Hans Wennborg [Wed, 19 Feb 2014 02:10:19 +0000 (02:10 +0000)]
clang-cl /fallback: turn the note into a warning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201626 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove a C++11ism.
Richard Smith [Wed, 19 Feb 2014 01:08:24 +0000 (01:08 +0000)]
Remove a C++11ism.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201621 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPR13110: Add a -Wignored-qualifiers warning when ignoring a const, volatile, or
Richard Smith [Wed, 19 Feb 2014 00:13:27 +0000 (00:13 +0000)]
PR13110: Add a -Wignored-qualifiers warning when ignoring a const, volatile, or
_Atomic qualifier applied to a reference type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201620 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoInitial implementation of virtual file system
Ben Langmuir [Wed, 19 Feb 2014 00:10:30 +0000 (00:10 +0000)]
Initial implementation of virtual file system

This adds the minimum virtual file system support to start migrating
FileManager onto the VFS.

Originally discussed here:
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-February/035188.html

Differential Revision: http://llvm-reviews.chandlerc.com/D2745

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201618 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd missing test file for r201615
Reid Kleckner [Tue, 18 Feb 2014 23:57:59 +0000 (23:57 +0000)]
Add missing test file for r201615

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201617 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix false positives in -Wmsvc-include by continuing header search
Reid Kleckner [Tue, 18 Feb 2014 23:49:24 +0000 (23:49 +0000)]
Fix false positives in -Wmsvc-include by continuing header search

This makes Clang and LLVM -Wmsvc-include clean.

I believe the correct behavior here is to avoid updating the cache when
we find the header via MSVC's search rules.

Differential Revision: http://llvm-reviews.chandlerc.com/D2733

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201615 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix the Driver/cl-fallback.c test
Hans Wennborg [Tue, 18 Feb 2014 23:25:20 +0000 (23:25 +0000)]
Fix the Driver/cl-fallback.c test

On machines that have cl.exe on PATH, the note will print the full path.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201613 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMS ABI: Remove nv adjustment from direct vdtor calls and prologues
Reid Kleckner [Tue, 18 Feb 2014 22:51:52 +0000 (22:51 +0000)]
MS ABI: Remove nv adjustment from direct vdtor calls and prologues

Summary:
Generally the vector deleting dtor, which we model as a vtable thunk,
takes care of non-virtual adjustment and delegates to the other
destructor variants.  The other non-complete destructor variants assume
that 'this' on entry points to the virtual base subobject that first
declared the virtual destructor.

We need to change the adjustment in both the prologue and the vdtor call
setup.

Reviewers: timurrrr

CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2821

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201612 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMore tests for r201536.
Richard Smith [Tue, 18 Feb 2014 22:47:10 +0000 (22:47 +0000)]
More tests for r201536.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201610 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoExperiment with making -Wunreachable-code more immediately useful by restricting...
Ted Kremenek [Tue, 18 Feb 2014 22:12:10 +0000 (22:12 +0000)]
Experiment with making -Wunreachable-code more immediately useful by restricting warnings to those issued in the main file.

This warning has a whole bunch of known false positives, much of them due
to code that is "sometimes unreachable".  This can caused by code that
is conditionally generated by the preprocessor, branches that are defined
in terms of architecture-specific details (e.g., the size of a type), and
so on.  While these are all good things to address one by one, the reality
is that this warning has received little love lately.  By restricting
its purvue, we can focus on the top issues effecting main files, which
should be smaller, and then gradually widen the scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201607 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-cl /fallback: emit a note when falling back
Hans Wennborg [Tue, 18 Feb 2014 21:42:51 +0000 (21:42 +0000)]
clang-cl /fallback: emit a note when falling back

This makes it a lot easier to see what's going on from the output.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201604 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: Avoid unnecessarily looking up the context when the declaration is already...
David Blaikie [Tue, 18 Feb 2014 20:52:05 +0000 (20:52 +0000)]
DebugInfo: Avoid unnecessarily looking up the context when the declaration is already built.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201602 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUpdated documentation for Thread Safety Analysis.
DeLesley Hutchins [Tue, 18 Feb 2014 19:42:01 +0000 (19:42 +0000)]
Updated documentation for Thread Safety Analysis.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201598 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-cl: support -v
Hans Wennborg [Tue, 18 Feb 2014 19:29:31 +0000 (19:29 +0000)]
clang-cl: support -v

It doesn't conflict with any cl.exe options and it's useful for debugging.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201597 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix testcase to actually check what it was supposed to, and make it a bit more robust.
Richard Smith [Tue, 18 Feb 2014 18:35:57 +0000 (18:35 +0000)]
Fix testcase to actually check what it was supposed to, and make it a bit more robust.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201591 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAttempting to fix the build bot due to some missing text in the ast dump.
Aaron Ballman [Tue, 18 Feb 2014 17:56:41 +0000 (17:56 +0000)]
Attempting to fix the build bot due to some missing text in the ast dump.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201590 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-cl: Parse the /d2Zi+ flag (PR18728)
Hans Wennborg [Tue, 18 Feb 2014 17:49:01 +0000 (17:49 +0000)]
clang-cl: Parse the /d2Zi+ flag (PR18728)

This is an undocumented, but reportedly widely used flag.
We don't support it, but should be able to parse it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201588 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMissed updating this test case with r201585 -- the lockable attribute is now internal...
Aaron Ballman [Tue, 18 Feb 2014 17:46:17 +0000 (17:46 +0000)]
Missed updating this test case with r201585 -- the lockable attribute is now internally represented by CapabilityAttr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201587 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoIn some cases (for example, the Firefox build system), the CLANG_CXX variable is...
Sylvestre Ledru [Tue, 18 Feb 2014 17:45:06 +0000 (17:45 +0000)]
In some cases (for example, the Firefox build system), the CLANG_CXX variable is defined but empty.
Extend the test (like it is done in scan-build) to check also if the variable
is empty or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201586 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDeLesley Hutchins (who wrote the original thread-safety attribute functionality)...
Aaron Ballman [Tue, 18 Feb 2014 17:36:50 +0000 (17:36 +0000)]
DeLesley Hutchins (who wrote the original thread-safety attribute functionality) and I have agreed to start migrating from lock-specific terminology to "capability"-specific terminology. This opens the door for future threading-related analysis passes so that a common nomenclature can be used.

The following attributes have been (silently) deprecated, with their replacements listed:

lockable => capability
exclusive_locks_required => requires_capability
shared_locks_required => requires_shared_capability
locks_excluded => requires_capability

There are no functional changes intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201585 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove trailing spaces (no other change). Bikeshed #2
Sylvestre Ledru [Tue, 18 Feb 2014 17:21:45 +0000 (17:21 +0000)]
Remove trailing spaces (no other change). Bikeshed #2

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201584 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[analyzer] Teach CastSizeChecker about flexible array members.
Jordan Rose [Tue, 18 Feb 2014 17:06:30 +0000 (17:06 +0000)]
[analyzer] Teach CastSizeChecker about flexible array members.

...as well as fake flexible array members: structs that end in arrays with
length 0 or 1.

Patch by Daniel Fahlgren!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201583 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd files that I forgot to svn add in 201578.
Dmitri Gribenko [Tue, 18 Feb 2014 15:29:17 +0000 (15:29 +0000)]
Add files that I forgot to svn add in 201578.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201579 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agolibclang: fix a bug in processing invalid arguments, introduced in r201249
Dmitri Gribenko [Tue, 18 Feb 2014 15:20:02 +0000 (15:20 +0000)]
libclang: fix a bug in processing invalid arguments, introduced in r201249

Recommit r201346, reverted in r201373.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201578 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMS ABI: Refactor extended qualifiers
David Majnemer [Tue, 18 Feb 2014 14:20:10 +0000 (14:20 +0000)]
MS ABI: Refactor extended qualifiers

Extended qualifiers can appear in many places, refactor the code so it's
more reusable.  Add tests in areas where we've increased compatibility.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201574 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove trailing spaces (no other change)
Sylvestre Ledru [Tue, 18 Feb 2014 12:59:51 +0000 (12:59 +0000)]
Remove trailing spaces (no other change)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201570 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMS ABI: Add support for mangling __restrict
David Majnemer [Tue, 18 Feb 2014 12:58:35 +0000 (12:58 +0000)]
MS ABI: Add support for mangling __restrict

Pointer types in the MSVC ABI are a bit awkward, the width of the
pointer is considered a kind of CVR qualifier.

Restrict is handled similarly to const and volatile but is mangled after
the pointer width qualifier.

This fixes PR18880.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201569 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPR18876: The special-case rule that ignores the destruction of a top-level
Richard Smith [Tue, 18 Feb 2014 03:51:47 +0000 (03:51 +0000)]
PR18876: The special-case rule that ignores the destruction of a top-level
temporary in a decltype expression only applies if that temporary was created
by a function call, not by a function-style cast or other flavour of
expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201542 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix a non-error diagnostic that had an err_ name. Also move it from Warning to
Richard Smith [Tue, 18 Feb 2014 00:45:50 +0000 (00:45 +0000)]
Fix a non-error diagnostic that had an err_ name. Also move it from Warning to
ExtWarn, since it's an extension.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201540 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPR18839: 'extern "C++"' also adds an implicit 'extern', not just 'extern "C"'.
Richard Smith [Mon, 17 Feb 2014 23:34:47 +0000 (23:34 +0000)]
PR18839: 'extern "C++"' also adds an implicit 'extern', not just 'extern "C"'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201537 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPR18870: Parse language linkage specifiers properly if the string-literal is
Richard Smith [Mon, 17 Feb 2014 23:25:27 +0000 (23:25 +0000)]
PR18870: Parse language linkage specifiers properly if the string-literal is
spelled in an interesting way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201536 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPR18855: Add support for UCNs and UTF-8 encoding within ud-suffixes.
Richard Smith [Mon, 17 Feb 2014 21:52:30 +0000 (21:52 +0000)]
PR18855: Add support for UCNs and UTF-8 encoding within ud-suffixes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201532 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoChange PGO instrumentation to compute counts in a separate AST traversal.
Bob Wilson [Mon, 17 Feb 2014 19:21:09 +0000 (19:21 +0000)]
Change PGO instrumentation to compute counts in a separate AST traversal.

Previously, we made one traversal of the AST prior to codegen to assign
counters to the ASTs and then propagated the count values during codegen. This
patch now adds a separate AST traversal prior to codegen for the
-fprofile-instr-use option to propagate the count values. The counts are then
saved in a map from which they can be retrieved during codegen.

This new approach has several advantages:

1. It gets rid of a lot of extra PGO-related code that had previously been
added to codegen.

2. It fixes a serious bug. My original implementation (which was mailed to the
list but never committed) used 3 counters for every loop. Justin improved it to
move 2 of those counters into the less-frequently executed breaks and continues,
but that turned out to produce wrong count values in some cases. The solution
requires visiting a loop body before the condition so that the count for the
condition properly includes the break and continue counts. Changing codegen to
visit a loop body first would be a fairly invasive change, but with a separate
AST traversal, it is easy to control the order of traversal. I've added a
testcase (provided by Justin) to make sure this works correctly.

3. It improves the instrumentation overhead, reducing the number of counters for
a loop from 3 to 1. We no longer need dedicated counters for breaks and
continues, since we can just use the propagated count values when visiting
breaks and continues.

To make this work, I needed to make a change to the way we count case
statements, going back to my original approach of not including the fall-through
in the counter values. This was necessary because there isn't always an AST node
that can be used to record the fall-through count. Now case statements are
handled the same as default statements, with the fall-through paths branching
over the counter increments.  While I was at it, I also went back to using this
approach for do-loops -- omitting the fall-through count into the loop body
simplifies some of the calculations and make them behave the same as other
loops. Whenever we start using this instrumentation for coverage, we'll need
to add the fall-through counts into the counter values.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201528 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSome nitpicky comment fixes for "i.e." and "e.g." abbreviations.
Bob Wilson [Mon, 17 Feb 2014 19:21:03 +0000 (19:21 +0000)]
Some nitpicky comment fixes for "i.e." and "e.g." abbreviations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201527 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix some minor whitespace issues.
Bob Wilson [Mon, 17 Feb 2014 19:20:59 +0000 (19:20 +0000)]
Fix some minor whitespace issues.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201526 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[analyzer] Improved checker naming in CFG dump.
Anton Yartsev [Mon, 17 Feb 2014 18:25:34 +0000 (18:25 +0000)]
[analyzer] Improved checker naming in CFG dump.

This implements FIXME from Checker.cpp (FIXME: We want to return the package + name of the checker here.) and replaces hardcoded checker names with the new ones obtained via getCheckName().getName().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201525 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoForcing it to be an error when there is no Documentation list specified for an attrib...
Aaron Ballman [Mon, 17 Feb 2014 18:23:02 +0000 (18:23 +0000)]
Forcing it to be an error when there is no Documentation list specified for an attribute. This is a bit of a (harmless) hack, but the FIXME explains why and when this hack can be removed. It's a justified hack because this prevents attribute authors from forgetting to add documentation when they add a new attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201524 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "Debug info: Make DWARF4 the default for Darwin, too."
Adrian Prantl [Mon, 17 Feb 2014 17:40:52 +0000 (17:40 +0000)]
Revert "Debug info: Make DWARF4 the default for Darwin, too."

I'm holding this change to give maintainers of Darwin buildbots more time
to update their toolchains.

This reverts commit r201375.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201520 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoThe default assignment operator could not be generated by all of the bots, but it...
Aaron Ballman [Mon, 17 Feb 2014 16:18:32 +0000 (16:18 +0000)]
The default assignment operator could not be generated by all of the bots, but it's required by std::vector to operate properly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201518 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemoving a C++11'ism to also fix the build bots.
Aaron Ballman [Mon, 17 Feb 2014 15:59:37 +0000 (15:59 +0000)]
Removing a C++11'ism to also fix the build bots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201517 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFixing build bot breakage due to using a local type as a template argument.
Aaron Ballman [Mon, 17 Feb 2014 15:36:08 +0000 (15:36 +0000)]
Fixing build bot breakage due to using a local type as a template argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201516 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoImplements a declarative approach to documenting individual attributes in Clang via...
Aaron Ballman [Mon, 17 Feb 2014 15:27:10 +0000 (15:27 +0000)]
Implements a declarative approach to documenting individual attributes in Clang via a Documentation tablegen class. Also updates the internals manual with information about how to use this new, required, documentation feature.

This patch adds some very, very sparse initial documentation for some attributes. Additional effort from attribute authors is greatly appreciated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201515 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix gcc warning about C++ style comments.
Patrik Hagglund [Mon, 17 Feb 2014 11:54:08 +0000 (11:54 +0000)]
Fix gcc warning about C++ style comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201512 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDarwin: remove buggy assertion
Tim Northover [Mon, 17 Feb 2014 11:12:04 +0000 (11:12 +0000)]
Darwin: remove buggy assertion

We later emit a proper error in the situations where this would trigger, so
there's no need to check.

rdar://problem/16040604

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201508 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: Don't wrap "const" etc. of function declarations.
Daniel Jasper [Mon, 17 Feb 2014 07:57:46 +0000 (07:57 +0000)]
clang-format: Don't wrap "const" etc. of function declarations.

Generally people seem to prefer wrapping the first function parameter
over wrapping the trailing tokens "const", "override" and "final". This
does not extend to function-like annotations and probably not to other
non-standard annotations.

Before:
  void someLongFunction(int SomeLongParameter)
      const { ... }

After:
  void someLongFunction(
      int SomeLongParameter) const { ... }

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201504 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang/unittests/AST,ASTMatchers: Remove _MSC_VER.
NAKAMURA Takumi [Sun, 16 Feb 2014 10:16:09 +0000 (10:16 +0000)]
clang/unittests/AST,ASTMatchers: Remove _MSC_VER.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201485 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agocheck-clang: Introduce the feature "non-ms-sdk" to suppress Driver/nostdincxx.cpp...
NAKAMURA Takumi [Sun, 16 Feb 2014 10:15:57 +0000 (10:15 +0000)]
check-clang: Introduce the feature "non-ms-sdk" to suppress Driver/nostdincxx.cpp on msvc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201484 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agocheck-clang: Introduce the feature "dw2" to suppress CodeGenCXX/debug-info-namespace...
NAKAMURA Takumi [Sun, 16 Feb 2014 10:15:46 +0000 (10:15 +0000)]
check-clang: Introduce the feature "dw2" to suppress CodeGenCXX/debug-info-namespace.cpp with *-win32.

FIXME: Could we add itanium triple here?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201483 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoIntroduce the feature "can-remove-opened-file" to suppress tests. [PR18856]
NAKAMURA Takumi [Sun, 16 Feb 2014 10:15:34 +0000 (10:15 +0000)]
Introduce the feature "can-remove-opened-file" to suppress tests. [PR18856]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201482 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUse -target instead of ignored -arch to fix x86_64 builders
Nico Rieck [Sun, 16 Feb 2014 08:18:13 +0000 (08:18 +0000)]
Use -target instead of ignored -arch to fix x86_64 builders

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201480 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove useless XPASS
Nico Rieck [Sun, 16 Feb 2014 07:29:55 +0000 (07:29 +0000)]
Remove useless XPASS

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201478 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix broken CHECK lines
Nico Rieck [Sun, 16 Feb 2014 07:29:41 +0000 (07:29 +0000)]
Fix broken CHECK lines

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201477 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFileCheck's -LABEL cannot be combined with -NOT or -DAG
Nico Rieck [Sun, 16 Feb 2014 07:28:50 +0000 (07:28 +0000)]
FileCheck's -LABEL cannot be combined with -NOT or -DAG

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201476 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix broken RUN lines
Nico Rieck [Sun, 16 Feb 2014 07:28:32 +0000 (07:28 +0000)]
Fix broken RUN lines

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201475 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: imported_decl/using declarations at namespace scope
David Blaikie [Sat, 15 Feb 2014 21:03:07 +0000 (21:03 +0000)]
DebugInfo: imported_decl/using declarations at namespace scope

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201470 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[Sema] Fix assertion hit while trying to do constant evaluation for a dependent expre...
Argyrios Kyrtzidis [Sat, 15 Feb 2014 18:53:57 +0000 (18:53 +0000)]
[Sema] Fix assertion hit while trying to do constant evaluation for a dependent expression
inside a GNU statement expression.

rdar://16064952

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201468 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMS ABI: Remove a useless FileCheck line
David Majnemer [Sat, 15 Feb 2014 07:02:11 +0000 (07:02 +0000)]
MS ABI: Remove a useless FileCheck line

1. CHECK-NOT-LABEL is not valid FileCheck.
2. This test would not trigger the CHECK-NOT-LABEL even if 'interface' is
   replaced with 'struct'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201462 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove test inputs into the Inputs directory (improvement/fix to r201419)
David Blaikie [Sat, 15 Feb 2014 05:09:38 +0000 (05:09 +0000)]
Move test inputs into the Inputs directory (improvement/fix to r201419)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201458 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPGO: fix a bug in parsing pgo data.
Manman Ren [Sat, 15 Feb 2014 01:29:02 +0000 (01:29 +0000)]
PGO: fix a bug in parsing pgo data.

When a function has a single counter, we will offset the pointer by 1 when
parsing the next function. If a function has multiple counters, we are
okay after skipping rest of the counters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201456 91177308-0d34-0410-b5e6-96231b3b80d8