]> granicus.if.org Git - clang/log
clang
9 years ago[OPENMP] Drop type qualifiers from private variables.
Alexey Bataev [Tue, 14 Jul 2015 10:32:29 +0000 (10:32 +0000)]
[OPENMP] Drop type qualifiers from private variables.

If the variable is marked as private in OpenMP construct, the reference to this variable should not keep type qualifiers for the original variable. Private copy is not volatile or constant, so we can use unqualified type for private copy.

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

9 years agoClasses inside lambdas are local not nested.
Serge Pavlov [Tue, 14 Jul 2015 10:02:10 +0000 (10:02 +0000)]
Classes inside lambdas are local not nested.

If a lambda used as default argument in a method declaration contained
a local class, that class was incorrectly recognized as nested class.
In this case compiler tried to postpone parsing of this class until
the enclosing class is finished, which caused crashes in some cases.

This change fixes PR13987.

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

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

9 years agoTweak clang/test/PCH/chain-openmp-threadprivate.cpp to satisfy i686-win32.
NAKAMURA Takumi [Tue, 14 Jul 2015 09:45:28 +0000 (09:45 +0000)]
Tweak clang/test/PCH/chain-openmp-threadprivate.cpp to satisfy i686-win32.

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

9 years agoFix for clang memcpyizer bugs 23911 and 23924 (patch by Denis Zobnin)
Alexey Bataev [Tue, 14 Jul 2015 07:55:48 +0000 (07:55 +0000)]
Fix for clang memcpyizer bugs 23911 and 23924 (patch by Denis Zobnin)

The fix is to remove duplicate copy-initialization of the only memcpy-able struct member and to correct the address of aggregately initialized members in destructors' calls during stack unwinding (in order to obtain address of struct member by using GEP instead of 'bitcast').
Differential Revision: http://reviews.llvm.org/D10990

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

9 years agoFix test for Visual C++ link.exe.
Yaron Keren [Tue, 14 Jul 2015 06:01:14 +0000 (06:01 +0000)]
Fix test for Visual C++ link.exe.

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

9 years agoFix test for Visual C++.
Yaron Keren [Tue, 14 Jul 2015 05:58:56 +0000 (05:58 +0000)]
Fix test for Visual C++.

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

9 years agoAdd support for -fuse-ld= in the mingw toolchain driver.
Yaron Keren [Tue, 14 Jul 2015 05:23:34 +0000 (05:23 +0000)]
Add support for -fuse-ld= in the mingw toolchain driver.
We will still default to ld until such a time lld become a
stable release. lld supports arm NT under the machine name "thumb2pe".

http://reviews.llvm.org/D11088

Patch by Martell Malone
Reviewed by Reid Kleckner

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

9 years agoMark clang/test/PCH/chain-openmp-threadprivate.cpp as REQUIRES:tls.
NAKAMURA Takumi [Tue, 14 Jul 2015 04:00:18 +0000 (04:00 +0000)]
Mark clang/test/PCH/chain-openmp-threadprivate.cpp as REQUIRES:tls.

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

9 years agoclang/test/lit.cfg: Introduce the feature "tls", for targeting cygwin.
NAKAMURA Takumi [Tue, 14 Jul 2015 03:57:11 +0000 (03:57 +0000)]
clang/test/lit.cfg: Introduce the feature "tls", for targeting cygwin.

Thread local storage is not implemented for targeting cygwin.

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

9 years agoAdd file missed from r242105.
Richard Smith [Tue, 14 Jul 2015 02:40:33 +0000 (02:40 +0000)]
Add file missed from r242105.

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

9 years ago[modules] When diagnosing errors in module map files found by 'extern module' declara...
Richard Smith [Tue, 14 Jul 2015 02:06:01 +0000 (02:06 +0000)]
[modules] When diagnosing errors in module map files found by 'extern module' declarations, show how we got to that module map file.

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

9 years agoRemove a completely redundant initialization of llvm::TimePassesIsEnabled,
Adrian Prantl [Tue, 14 Jul 2015 01:04:40 +0000 (01:04 +0000)]
Remove a completely redundant initialization of llvm::TimePassesIsEnabled,
which is actually the variable backing up the llvm -time-passes command
line argument.
llvm::TimePassesIsEnabled is actually being initialized in CodeGenAction.

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

9 years agoBasic code generation for MSan use-after-dtor.
Evgeniy Stepanov [Tue, 14 Jul 2015 00:34:50 +0000 (00:34 +0000)]
Basic code generation for MSan use-after-dtor.

Under the -fsanitize-memory-use-after-dtor (disabled by default) insert
an MSan runtime library call at the end of every destructor.

Patch by Naomi Musgrave.

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

9 years agoExtend -ftime-report to give more information about time spent reading module files.
Richard Smith [Tue, 14 Jul 2015 00:26:00 +0000 (00:26 +0000)]
Extend -ftime-report to give more information about time spent reading module files.

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

9 years ago[OpenMP] Add REQUIRES pragma to threadprivate regression tests.
Samuel Antao [Tue, 14 Jul 2015 00:09:50 +0000 (00:09 +0000)]
[OpenMP] Add REQUIRES pragma to threadprivate regression tests.

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

9 years ago[Intrin.h] Use __ATOMIC_SEQ_CST instead of '5'
David Majnemer [Mon, 13 Jul 2015 23:39:37 +0000 (23:39 +0000)]
[Intrin.h] Use __ATOMIC_SEQ_CST instead of '5'

No functionality change is intended.

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

9 years ago[Intrin.h] Make the variable names more consistent
David Majnemer [Mon, 13 Jul 2015 23:38:56 +0000 (23:38 +0000)]
[Intrin.h] Make the variable names more consistent

No functionality change intended.

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

9 years ago[cuda] Driver changes to compile and stitch together host and device-side CUDA code.
Artem Belevich [Mon, 13 Jul 2015 23:27:56 +0000 (23:27 +0000)]
[cuda] Driver changes to compile and stitch together host and device-side CUDA code.

  NOTE: reverts r242077 to reinstate r242058, r242065, 242067
        and includes fix for OS X test failures.

  - Changed driver pipeline to compile host and device side of CUDA
    files and incorporate results of device-side compilation into host
    object file.

  - Added a test for cuda pipeline creation in clang driver.

  New clang options:
  --cuda-host-only   - Do host-side compilation only.
  --cuda-device-only - Do device-side compilation only.

  --cuda-gpu-arch=<ARCH> - specify GPU architecture for device-side
    compilation. E.g. sm_35, sm_30. Default is sm_20. May be used more
    than once in which case one device-compilation will be done per
    unique specified GPU architecture.

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

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

9 years ago[OpenMP] Add TLS-based implementation for threadprivate directive.
Samuel Antao [Mon, 13 Jul 2015 22:54:53 +0000 (22:54 +0000)]
[OpenMP] Add TLS-based implementation for threadprivate directive.

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

9 years agoThis reverts commit r242058, r242065, r242067.
Rafael Espindola [Mon, 13 Jul 2015 22:26:30 +0000 (22:26 +0000)]
This reverts commit r242058,  r242065,  r242067.

The tests were failing on OS X.

Revert "[cuda] Driver changes to compile and stitch together host and device-side CUDA code."
Revert "Fixed regex to properly match '64' in the test case."
Revert "clang/test/Driver/cuda-options.cu REQUIRES clang-driver, at least."

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

9 years agoclang/test/Driver/cuda-options.cu REQUIRES clang-driver, at least.
NAKAMURA Takumi [Mon, 13 Jul 2015 21:18:53 +0000 (21:18 +0000)]
clang/test/Driver/cuda-options.cu REQUIRES clang-driver, at least.

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

9 years agoFixed regex to properly match '64' in the test case.
Artem Belevich [Mon, 13 Jul 2015 20:49:50 +0000 (20:49 +0000)]
Fixed regex to properly match '64' in the test case.

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

9 years agoMove class into an anonymous namespace. NFC.
Benjamin Kramer [Mon, 13 Jul 2015 20:42:13 +0000 (20:42 +0000)]
Move class into an anonymous namespace. NFC.

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

9 years ago[cuda] Driver changes to compile and stitch together host and device-side CUDA code.
Artem Belevich [Mon, 13 Jul 2015 20:21:06 +0000 (20:21 +0000)]
[cuda] Driver changes to compile and stitch together host and device-side CUDA code.

  - Changed driver pipeline to compile host and device side of CUDA
    files and incorporate results of device-side compilation into host
    object file.

  - Added a test for cuda pipeline creation in clang driver.

  New clang options:
  --cuda-host-only   - Do host-side compilation only.
  --cuda-device-only - Do device-side compilation only.

  --cuda-gpu-arch=<ARCH> - specify GPU architecture for device-side
    compilation. E.g. sm_35, sm_30. Default is sm_20. May be used more
    than once in which case one device-compilation will be done per
    unique specified GPU architecture.

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

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

9 years ago[Modules] Allow missing header before a missing requirement
Ben Langmuir [Mon, 13 Jul 2015 19:48:52 +0000 (19:48 +0000)]
[Modules] Allow missing header before a missing requirement

And make the module unavailable without breaking any parent modules.

If there's a missing requirement after we've already seen a missing
header, still update the IsMissingRequiement bit correctly.  Also,
diagnose missing requirements before missing headers, since the
existence of the header is moot if there are missing requirements.

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

9 years agoclang-cl: For files setting output names, mention which flags they belong to.
Nico Weber [Mon, 13 Jul 2015 18:54:56 +0000 (18:54 +0000)]
clang-cl: For files setting output names, mention which flags they belong to.

It always takes me a while to figure out how to say "preprocess to file
foo.txt" with clang-cl. With this, it might be easier.
http://reviews.llvm.org/D10890

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

9 years agoUpdate documentation for unroll pragmas on loops with runtime trip counts.
Mark Heffernan [Mon, 13 Jul 2015 18:31:37 +0000 (18:31 +0000)]
Update documentation for unroll pragmas on loops with runtime trip counts.

This change updates the documentation for the loop unrolling pragma behavior
change in r242047. Specifically, with that change "#pragma unroll" will not
unroll loops with a runtime trip count.

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

9 years agoclang-format: Print token type name instead of number in -debug output
Birunthan Mohanathas [Mon, 13 Jul 2015 16:19:34 +0000 (16:19 +0000)]
clang-format: Print token type name instead of number in -debug output

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

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

9 years agoSupport alternate attribute spelling __enable_if__
Ulrich Weigand [Mon, 13 Jul 2015 14:13:01 +0000 (14:13 +0000)]
Support alternate attribute spelling __enable_if__

Attribute names usually support an alternate spelling that uses double
underscores before and after the attribute name, like e.g. attribute
((__aligned__)) for attribute ((aligned)). This is necessary to allow
use of attributes in system headers without polluting the name space.

However, for attribute ((enable_if)) that alternate spelling does not
work correctly. This is because of code in Parser::ParseGNUAttributeArgs
(ParseDecl.cpp) that specifically checks for the "enable_if" spelling
without allowing the alternate spelling.

Similar code in ParseDecl.cpp uses the normalizeAttrName helper to allow
both spellings. This patch adds use of that helper for the "enable_if"
check as well, which fixes attribute ((__enable_if__)).

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

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

9 years agoUpdate comment
Ulrich Weigand [Mon, 13 Jul 2015 11:52:14 +0000 (11:52 +0000)]
Update comment

As noticed by David Majnemer, update an out-of-date comment in
CGClass.cpp after the r241916 commit.

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

9 years agoSet the linkage before setting the visibility.
Rafael Espindola [Mon, 13 Jul 2015 06:07:58 +0000 (06:07 +0000)]
Set the linkage before setting the visibility.

Otherwise the visibility setting code would not know that a given
function was available_externally.

Fixes PR24097.

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

9 years agoIntrin.h: Don't invade the program's namespace
David Majnemer [Mon, 13 Jul 2015 02:53:23 +0000 (02:53 +0000)]
Intrin.h: Don't invade the program's namespace

The program is permitted to have stuff like '#define x' in it so avoid
using identifiers not reserved for the implementation.

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

9 years agoIntrin.h: Clean up our atomic intrinsics
David Majnemer [Mon, 13 Jul 2015 02:53:19 +0000 (02:53 +0000)]
Intrin.h: Clean up our atomic intrinsics

Three things:
- The atomic intrinsics mandate memory barriers, let's start emitting
  some.
- We don't need to manually create RMW operations, we can just do
  __atomic_fetch_foo instead of performing __atomic_foo_fetch and
  undoing foo.
- Don't use inline assembly, we don't need it for these intrinsics.

This fixes PR24101.

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

9 years agoFix clang/unittests/ASTMatchers/Dynamic/Makefile. clangDynamicASTMatchers should...
NAKAMURA Takumi [Mon, 13 Jul 2015 00:52:19 +0000 (00:52 +0000)]
Fix clang/unittests/ASTMatchers/Dynamic/Makefile. clangDynamicASTMatchers should be linked in advance of clangAST and clangASTMatchers.

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

9 years agoMinor simplification, no functionality change.
Richard Smith [Sun, 12 Jul 2015 23:51:20 +0000 (23:51 +0000)]
Minor simplification, no functionality change.

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

9 years ago[modules] Improve performance when there is a local declaration of an entity
Richard Smith [Sun, 12 Jul 2015 23:43:21 +0000 (23:43 +0000)]
[modules] Improve performance when there is a local declaration of an entity
before the first imported declaration.

We don't need to track all formerly-canonical declarations of an entity; it's sufficient to track those ones for which no other formerly-canonical declaration was imported into the same module. We call those ones "key declarations", and use them as our starting points for collecting redeclarations and performing namespace lookups.

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

9 years ago[Sema] If lvalue to rvalue reference cast is valid don't emit diagnostic.
Davide Italiano [Sun, 12 Jul 2015 22:10:56 +0000 (22:10 +0000)]
[Sema] If lvalue to rvalue reference cast is valid don't emit diagnostic.

In the test, y1 is not reference compatible to y2 and we currently assume
the cast is ill-formed so we emit a diagnostic. Instead, in order to honour
the standard, if y1 it's not reference-compatible to y2 then it can't be
converted using a static_cast, and a reinterpret_cast should be tried instead.
Richard Smith provided the correct interpretation of the standard and
explanation about the subtle difference between "can't be cast" and "the cast
is ill-formed". The former applies in this case.

PR: 23802

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

9 years agoTweak libclang's users, c-arcmt-test, c-index-test and libclangTests to satisfy LDFLA...
NAKAMURA Takumi [Sun, 12 Jul 2015 12:17:55 +0000 (12:17 +0000)]
Tweak libclang's users, c-arcmt-test, c-index-test and libclangTests to satisfy LDFLAGS=-static.

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

9 years agoReformat Makefile.
NAKAMURA Takumi [Sun, 12 Jul 2015 12:14:39 +0000 (12:14 +0000)]
Reformat Makefile.

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

9 years agoclang-format: Add Mozilla brace breaking style
Birunthan Mohanathas [Sun, 12 Jul 2015 03:13:54 +0000 (03:13 +0000)]
clang-format: Add Mozilla brace breaking style

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

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

9 years agoclang-format: Extend vim integration so that a line range can be passed in.
Daniel Jasper [Sat, 11 Jul 2015 06:46:26 +0000 (06:46 +0000)]
clang-format: Extend vim integration so that a line range can be passed in.

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

9 years agoSema: Allow null names to be passed in to isAcceptableTagRedeclaration
Justin Bogner [Fri, 10 Jul 2015 23:05:47 +0000 (23:05 +0000)]
Sema: Allow null names to be passed in to isAcceptableTagRedeclaration

It's possible for TagRedeclarations to involve decls without a name,
ie, anonymous enums. We hit some undefined behaviour if we bind these
null names to the reference here.

We never dereference the name, so it's harmless if it's null - make it
a pointer to allow that.

Fixes the Modules/submodules-merge-defs.cpp test under ubsan.

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

9 years ago[modules] When checking the include guard for a header, check whether it's
Richard Smith [Fri, 10 Jul 2015 22:27:17 +0000 (22:27 +0000)]
[modules] When checking the include guard for a header, check whether it's
visible in the module we're considering entering. Previously we assumed that if
we knew the include guard for a modular header, we'd already parsed it, but
that need not be the case if a header is present in the current module and one
of its dependencies; the result of getting this wrong was that the current
module's submodule for the header would end up empty.

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

9 years agoDisable C++ EH by default for clang-cl and MSVC environments
Reid Kleckner [Fri, 10 Jul 2015 22:25:44 +0000 (22:25 +0000)]
Disable C++ EH by default for clang-cl and MSVC environments

We don't need any more bug reports from users telling us that MSVC-style
C++ exceptions are broken. Developers and adventurous users can still
test the existing functionality by passing along -fexceptions to either
clang or clang-cl.

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

9 years ago[analyzer] When forced to fake a block type, do it correctly.
Jordan Rose [Fri, 10 Jul 2015 21:41:59 +0000 (21:41 +0000)]
[analyzer] When forced to fake a block type, do it correctly.

BlockDecl has a poor AST representation because it doesn't carry its type
with it. Instead, the containing BlockExpr has the full type. This almost
never matters for the analyzer, but if the block decl contains static
local variables we need to synthesize a region to put them in, and this
region will necessarily not have the right type.

Even /that/ doesn't matter, unless

(1) the block calls the function or method containing the block, and
(2) the value of the block expr is used in some interesting way.

In this case, we actually end up needing the type of the block region,
and it will be set to our synthesized type. It turns out we've been doing
a terrible job faking that type -- it wasn't a block pointer type at all.
This commit fixes that to at least guarantee a block pointer type, using
the signature written by the user if there is one.

This is not really a correct answer because the block region's type will
/still/ be wrong, but further efforts to make this right in the analyzer
would probably be silly. We should just change the AST.

rdar://problem/21698099

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

9 years ago[MS ABI] Don't generates code for unreferenced inline definitions of library builtins
David Majnemer [Fri, 10 Jul 2015 20:55:38 +0000 (20:55 +0000)]
[MS ABI] Don't generates code for unreferenced inline definitions of library builtins

We should only consider declarations which were written, implicit
declarations shouldn't be considered.

This fixes PR24084.

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

9 years ago[modules] Fix "prefer own module over others" rule when selecting a module for a...
Richard Smith [Fri, 10 Jul 2015 20:09:49 +0000 (20:09 +0000)]
[modules] Fix "prefer own module over others" rule when selecting a module for a header to work in the presence of module hierarchy.

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

9 years agoAdd an experimental flag -fsanitize-memory-use-after-dtor.
Evgeniy Stepanov [Fri, 10 Jul 2015 20:07:16 +0000 (20:07 +0000)]
Add an experimental flag -fsanitize-memory-use-after-dtor.

This flag will enable detection of use-after-destructor (but before
memory deallocation) bugs. No actual functionality yet.

https://code.google.com/p/address-sanitizer/issues/detail?id=73

Patch by Naomi Musgrave.

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

9 years agoChanged Driver::getToolChain() to use Triple as an argument.
Artem Belevich [Fri, 10 Jul 2015 19:47:55 +0000 (19:47 +0000)]
Changed Driver::getToolChain() to use Triple as an argument.

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

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

9 years ago[inlineasm] Attach readonly and readnone to inline-asm instructions.
Akira Hatanaka [Fri, 10 Jul 2015 18:44:40 +0000 (18:44 +0000)]
[inlineasm] Attach readonly and readnone to inline-asm instructions.

Previously, clang/llvm treated inline-asm instructions conservatively,
choosing not to eliminate the instructions or hoisting them out of a loop
even when it was safe to do so. This commit makes changes to attach a
readonly or readnone attribute to an inline-asm instruction, which enables
passes such as LICM and EarlyCSE to move or optimize away the instruction.

rdar://problem/11358192

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

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

9 years agoTeach clang that -no-pthread is a valid command line option
Yaron Keren [Fri, 10 Jul 2015 18:42:13 +0000 (18:42 +0000)]
Teach clang that -no-pthread is a valid command line option

The winpthreads library in mingw-w64 passes -no-pthread when building
since pthreads is not available to build itself and pthreads it is linked
by default. clang does not link to pthreads by default but did error on
unknown -no-pthread option thus stopping the winpthreads build.

http://reviews.llvm.org/D11087

Patch by Martell Malone.

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

9 years agoRefactor PPC ABI handling to accept and silently ignore -mabi=altivec.
Eric Christopher [Fri, 10 Jul 2015 18:25:54 +0000 (18:25 +0000)]
Refactor PPC ABI handling to accept and silently ignore -mabi=altivec.

All of the ABIs we support are altivec style anyhow and so the option
doesn't make much sense with the modern ABIs. We could make this a more
noisy ignore, but it would break builds for projects that just pass
it along by default because of historical reasons.

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

9 years agoFix a couple of typos: specifc->specific.
Eric Christopher [Fri, 10 Jul 2015 18:25:52 +0000 (18:25 +0000)]
Fix a couple of typos: specifc->specific.

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

9 years agoFactor PGO and coverage flag processing out of Clang::ConstructJob
Diego Novillo [Fri, 10 Jul 2015 18:00:07 +0000 (18:00 +0000)]
Factor PGO and coverage flag processing out of Clang::ConstructJob

The function is massively large and GCC is emitting stack overflow
errors when building it (stack, as counted by the compiler, grows to
more than 16Kb).

The new flag processing logic added in r241825 took it over the limit.

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

9 years agoRespect alignment of nested bitfields
Ulrich Weigand [Fri, 10 Jul 2015 17:30:00 +0000 (17:30 +0000)]
Respect alignment of nested bitfields

tools/clang/test/CodeGen/packed-nest-unpacked.c contains this test:

struct XBitfield {
  unsigned b1 : 10;
  unsigned b2 : 12;
  unsigned b3 : 10;
};
struct YBitfield {
  char x;
  struct XBitfield y;
} __attribute((packed));
struct YBitfield gbitfield;

unsigned test7() {
  // CHECK: @test7
  // CHECK: load i32, i32* getelementptr inbounds (%struct.YBitfield, %struct.YBitfield* @gbitfield, i32 0, i32 1, i32 0), align 4
  return gbitfield.y.b2;
}

The "align 4" is actually wrong.  Accessing all of "gbitfield.y" as a single
i32 is of course possible, but that still doesn't make it 4-byte aligned as
it remains packed at offset 1 in the surrounding gbitfield object.

This alignment was changed by commit r169489, which also introduced changes
to bitfield access code in CGExpr.cpp.  Code before that change used to take
into account *both* the alignment of the field to be accessed within the
current struct, *and* the alignment of that outer struct itself; this logic
was removed by the above commit.

Neglecting to consider both values can cause incorrect code to be generated
(I've seen an unaligned access crash on SystemZ due to this bug).

In order to always use the best known alignment value, this patch removes
the CGBitFieldInfo::StorageAlignment member and replaces it with a
StorageOffset member specifying the offset from the start of the surrounding
struct to the bitfield's underlying storage.  This offset can then be combined
with the best-known alignment for a bitfield access lvalue to determine the
alignment to use when accessing the bitfield's storage.

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

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

9 years agoAdd a missing dependency to unittests/Frontend.
Adrian Prantl [Fri, 10 Jul 2015 15:47:36 +0000 (15:47 +0000)]
Add a missing dependency to unittests/Frontend.
PR24067.

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

9 years agoThe test case still runs on non-ppc targets. Added -target triple.
Nemanja Ivanovic [Fri, 10 Jul 2015 14:11:38 +0000 (14:11 +0000)]
The test case still runs on non-ppc targets. Added -target triple.

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

9 years agoclang-format: [JS] Assign proper penalties when breaking a type annotation
Daniel Jasper [Fri, 10 Jul 2015 13:39:26 +0000 (13:39 +0000)]
clang-format: [JS] Assign proper penalties when breaking a type annotation

Before:
  class Test {
    aaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa:
                         aaaaaaaaaaaaaaaaaaaaaaaa): aaaaaaaaaaaaaaaaaaaaaa {}
  }

After:
  class Test {
    aaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa):
        aaaaaaaaaaaaaaaaaaaaaa {}
  }

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

9 years agoAdd missing builtins to altivec.h for ABI compliance (vol. 3)
Nemanja Ivanovic [Fri, 10 Jul 2015 13:11:34 +0000 (13:11 +0000)]
Add missing builtins to altivec.h for ABI compliance (vol. 3)

This patch corresponds to review:
http://reviews.llvm.org/D10972

Fix for the handling of dependent features that are enabled by default
on some CPU's (such as -mvsx, -mpower8-vector).

Also provides a number of new interfaces or fixes existing ones in
altivec.h.

Changed signatures to conform to ABI:
vector short vec_perm(vector signed short, vector signed short, vector unsigned char)
vector int vec_perm(vector signed int, vector signed int, vector unsigned char)
vector long long vec_perm(vector signed long long, vector signed long long, vector unsigned char)
vector signed char vec_sld(vector signed char, vector signed char, const int)
vector unsigned char vec_sld(vector unsigned char, vector unsigned char, const int)
vector bool char vec_sld(vector bool char, vector bool char, const int)
vector unsigned short vec_sld(vector unsigned short, vector unsigned short, const int)
vector signed short vec_sld(vector signed short, vector signed short, const int)
vector signed int vec_sld(vector signed int, vector signed int, const int)
vector unsigned int vec_sld(vector unsigned int, vector unsigned int, const int)
vector float vec_sld(vector float, vector float, const int)
vector signed char vec_splat(vector signed char, const int)
vector unsigned char vec_splat(vector unsigned char, const int)
vector bool char vec_splat(vector bool char, const int)
vector signed short vec_splat(vector signed short, const int)
vector unsigned short vec_splat(vector unsigned short, const int)
vector bool short vec_splat(vector bool short, const int)
vector pixel vec_splat(vector pixel, const int)
vector signed int vec_splat(vector signed int, const int)
vector unsigned int vec_splat(vector unsigned int, const int)
vector bool int vec_splat(vector bool int, const int)
vector float vec_splat(vector float, const int)

Added a VSX path to:
vector float vec_round(vector float)

Added interfaces:
vector signed char vec_eqv(vector signed char, vector signed char)
vector signed char vec_eqv(vector bool char, vector signed char)
vector signed char vec_eqv(vector signed char, vector bool char)
vector unsigned char vec_eqv(vector unsigned char, vector unsigned char)
vector unsigned char vec_eqv(vector bool char, vector unsigned char)
vector unsigned char vec_eqv(vector unsigned char, vector bool char)
vector signed short vec_eqv(vector signed short, vector signed short)
vector signed short vec_eqv(vector bool short, vector signed short)
vector signed short vec_eqv(vector signed short, vector bool short)
vector unsigned short vec_eqv(vector unsigned short, vector unsigned short)
vector unsigned short vec_eqv(vector bool short, vector unsigned short)
vector unsigned short vec_eqv(vector unsigned short, vector bool short)
vector signed int vec_eqv(vector signed int, vector signed int)
vector signed int vec_eqv(vector bool int, vector signed int)
vector signed int vec_eqv(vector signed int, vector bool int)
vector unsigned int vec_eqv(vector unsigned int, vector unsigned int)
vector unsigned int vec_eqv(vector bool int, vector unsigned int)
vector unsigned int vec_eqv(vector unsigned int, vector bool int)
vector signed long long vec_eqv(vector signed long long, vector signed long long)
vector signed long long vec_eqv(vector bool long long, vector signed long long)
vector signed long long vec_eqv(vector signed long long, vector bool long long)
vector unsigned long long vec_eqv(vector unsigned long long, vector unsigned long long)
vector unsigned long long vec_eqv(vector bool long long, vector unsigned long long)
vector unsigned long long vec_eqv(vector unsigned long long, vector bool long long)
vector float vec_eqv(vector float, vector float)
vector float vec_eqv(vector bool int, vector float)
vector float vec_eqv(vector float, vector bool int)
vector double vec_eqv(vector double, vector double)
vector double vec_eqv(vector bool long long, vector double)
vector double vec_eqv(vector double, vector bool long long)
vector bool long long vec_perm(vector bool long long, vector bool long long, vector unsigned char)
vector double vec_round(vector double)
vector double vec_splat(vector double, const int)
vector bool long long vec_splat(vector bool long long, const int)
vector signed long long vec_splat(vector signed long long, const int)
vector unsigned long long vec_splat(vector unsigned long long,
vector bool int vec_sld(vector bool int, vector bool int, const int)
vector bool short vec_sld(vector bool short, vector bool short, const int)

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

9 years agoTweak a couple of -fprofile tests in clang/test to accept backslash in path.
NAKAMURA Takumi [Fri, 10 Jul 2015 13:11:08 +0000 (13:11 +0000)]
Tweak a couple of -fprofile tests in clang/test to accept backslash in path.

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

9 years agoTry to fix the test harder, it still fails on windows for unknown reasons.
Benjamin Kramer [Fri, 10 Jul 2015 13:04:41 +0000 (13:04 +0000)]
Try to fix the test harder, it still fails on windows for unknown reasons.

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

9 years agoReapply test for r241811 with a fix for msvc compat mode.
Benjamin Kramer [Fri, 10 Jul 2015 11:37:54 +0000 (11:37 +0000)]
Reapply test for r241811 with a fix for msvc compat mode.

Delayed template parsing interferes with code completion, just distable it for
this test. This reverts r241811.

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

9 years agoRespect alignment when loading up a coerced function argument
Ulrich Weigand [Fri, 10 Jul 2015 11:31:43 +0000 (11:31 +0000)]
Respect alignment when loading up a coerced function argument

Code in CGCall.cpp that loads up function arguments that need to be
coerced to a different type may in some cases ignore the fact that
the source of the argument is not naturally aligned. This may cause
incorrect code to be generated. In some places in CreateCoercedLoad,
we already have setAlignment calls to address this, but I ran into one
where it was missing, causing wrong code generation on SystemZ.

However, in that location, we do not actually know what alignment of
the source location we can rely on; the callers do not pass anything
to this routine. This is already an issue in other places in
CreateCoercedLoad; and the same problem exists for CreateCoercedStore.

To avoid pessimising code, and to fix the FIXMEs already in place,
this patch also adds an alignment argument to the CreateCoerced*
routines and uses it instead of forcing an alignment of 1. The
callers are changed to pass in the best information they have.

This actually requires changes in a number of existing test cases
since we now get better alignment in many places.

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

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

9 years agoRe-use a single SmallString instance to reduce the stack frame size
Daniel Jasper [Fri, 10 Jul 2015 08:25:54 +0000 (08:25 +0000)]
Re-use a single SmallString instance to reduce the stack frame size

In certain builds (msan), this can otherwise exceed the stack frame
limit set for certain environments.

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

9 years agoRemove test that tests referring to the current working directory. You
Daniel Jasper [Fri, 10 Jul 2015 05:57:23 +0000 (05:57 +0000)]
Remove test that tests referring to the current working directory. You
cannot assume that the current working directory is writable in all test
environments. I don't know a better way to write this test of hand, lets
discuss. Possibly, a better option would be to put these together with
other test testing the driver directly.

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

9 years agoRevert test lines added in r241811, "[CodeCompletion] Don't crash on member inits...
NAKAMURA Takumi [Fri, 10 Jul 2015 03:09:19 +0000 (03:09 +0000)]
Revert test lines added in r241811, "[CodeCompletion] Don't crash on member inits of templated constructors.", for now.

It doesn't pass for targeting MS mode.

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

9 years agoDriver: Make all of -f{,no-}sanitize{,-recover,-trap} core options.
Peter Collingbourne [Fri, 10 Jul 2015 02:17:22 +0000 (02:17 +0000)]
Driver: Make all of -f{,no-}sanitize{,-recover,-trap} core options.

This allows them to be used from clang-cl.

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

9 years agoRe-enable 32-bit SEH after the alignment fix
Reid Kleckner [Fri, 10 Jul 2015 00:16:25 +0000 (00:16 +0000)]
Re-enable 32-bit SEH after the alignment fix

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

9 years ago[Static Analyzer] Basic per checker command line option validation.
Gabor Horvath [Thu, 9 Jul 2015 21:43:45 +0000 (21:43 +0000)]
[Static Analyzer] Basic per checker command line option validation.

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

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

9 years agoCFI: Emit correct bit set information if RTTI is disabled under MS ABI.
Peter Collingbourne [Thu, 9 Jul 2015 19:56:14 +0000 (19:56 +0000)]
CFI: Emit correct bit set information if RTTI is disabled under MS ABI.

We were previously creating bit set entries at virtual table offset
sizeof(void*) unconditionally under the Microsoft C++ ABI. This is incorrect
if RTTI data is disabled; in that case the "address point" is at offset
0. This change modifies bit set emission to take into account whether RTTI
data is being emitted.

Also make a start on a blacklisting scheme for records.

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

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

9 years agoRename ModuleContainerGenerator to PCHContainergenerator for consistency
Adrian Prantl [Thu, 9 Jul 2015 19:46:39 +0000 (19:46 +0000)]
Rename ModuleContainerGenerator to PCHContainergenerator for consistency
and re-clang-format (NFC).

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

9 years agoAdd GCC-compatible flags -fprofile-generate and -fprofile-use.
Diego Novillo [Thu, 9 Jul 2015 17:23:53 +0000 (17:23 +0000)]
Add GCC-compatible flags -fprofile-generate and -fprofile-use.

This patch adds support for specifying where the profile is emitted in a
way similar to GCC. These flags are used to specify directories instead
of filenames. When -fprofile-generate=DIR is used, the compiler will
generate code to write to <DIR>/default.profraw.

The patch also adds a couple of extensions: LLVM_PROFILE_FILE can still be
used to override the directory and file name to use and -fprofile-use
accepts both directories and filenames.

To simplify the set of flags used in the backend, all the flags get
canonicalized to -fprofile-instr-{generate,use} when passed to the
backend. The decision to use a default name for the profile is done
in the driver.

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

9 years ago[Driver] semi-annual ubuntu version bump.
Benjamin Kramer [Thu, 9 Jul 2015 15:31:17 +0000 (15:31 +0000)]
[Driver] semi-annual ubuntu version bump.

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

9 years ago[CodeCompletion] Don't crash on member inits of templated constructors.
Benjamin Kramer [Thu, 9 Jul 2015 15:31:10 +0000 (15:31 +0000)]
[CodeCompletion] Don't crash on member inits of templated constructors.

Also fixes a crash (on invalid) member functions with a colon
initializer. PR23948.

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

9 years agoAdd clang_free to libclang to free memory allocated in libclang.
Yaron Keren [Thu, 9 Jul 2015 07:53:23 +0000 (07:53 +0000)]
Add clang_free to libclang to free memory allocated in libclang.

One of the problems libclang tests has running under Windows is memory
allocated in libclang.dll but being freed in the test executable, possibly
by a different memory manager. This patch exposes a new export function,
clang_free(), used to free any allocated memory with the same libclang.dll
memory manager that allocated the memory.

http://reviews.llvm.org/D10949

Reviewed by Reid Kleckner, Douglas Gregor.

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

9 years agoDriver: Include the driver arguments in crash reports
Justin Bogner [Thu, 9 Jul 2015 06:58:31 +0000 (06:58 +0000)]
Driver: Include the driver arguments in crash reports

Similarly to r231989, the driver arguments can be quite helpful in
diagnosing a crash.

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

9 years agoRevert r241770 and add Basic to the dependencies of clang-check instead.
Adrian Prantl [Thu, 9 Jul 2015 02:53:05 +0000 (02:53 +0000)]
Revert r241770 and add Basic to the dependencies of clang-check instead.
PR24067.

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

9 years agoMove the definition of ~PCHContainerOperations from Basic into Frontend.
Adrian Prantl [Thu, 9 Jul 2015 01:01:52 +0000 (01:01 +0000)]
Move the definition of ~PCHContainerOperations from Basic into Frontend.

Fixes PR24067.

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

9 years agoDisable 32-bit SEH, again
Reid Kleckner [Wed, 8 Jul 2015 23:57:03 +0000 (23:57 +0000)]
Disable 32-bit SEH, again

Move the diagnostic back to codegen so that we can compile ATL on the
self-host bot. We don't actually end up emitting code for the __try, so
the diagnostic won't be hit.

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

9 years agoDeclObjC: Move computing the type of self into a separate function (NFC).
Adrian Prantl [Wed, 8 Jul 2015 22:15:59 +0000 (22:15 +0000)]
DeclObjC: Move computing the type of self into a separate function (NFC).
This function will be used for emitting debug info.

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

9 years ago[modules] Fix merging support for forward-declared enums with fixed underlying types...
Richard Smith [Wed, 8 Jul 2015 21:49:31 +0000 (21:49 +0000)]
[modules] Fix merging support for forward-declared enums with fixed underlying types. A visible declaration is enough to make the type complete, but not enough to make the definition visible.

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

9 years agoCleanup the doxygen comments in CGDebugInfo.cpp according to the coding
Adrian Prantl [Wed, 8 Jul 2015 21:18:34 +0000 (21:18 +0000)]
Cleanup the doxygen comments in CGDebugInfo.cpp according to the coding
standards. Remove several hilariously out-of-date and redundant comments
and move the non-redundant ones into the header file.

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

9 years ago[modules] Fix crash when writing an update record for a redeclaration of an empty...
Richard Smith [Wed, 8 Jul 2015 21:15:32 +0000 (21:15 +0000)]
[modules] Fix crash when writing an update record for a redeclaration of an empty namespace.

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

9 years agoCodeGen: Fix off-by-one error in CFI class identification function for MS ABI.
Peter Collingbourne [Wed, 8 Jul 2015 21:08:08 +0000 (21:08 +0000)]
CodeGen: Fix off-by-one error in CFI class identification function for MS ABI.

We were previously ignoring classes laid out at offset zero.

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

9 years agoDriver: enable support for -fsanitize=cfi on Windows.
Peter Collingbourne [Wed, 8 Jul 2015 21:08:05 +0000 (21:08 +0000)]
Driver: enable support for -fsanitize=cfi on Windows.

There are known issues, but the current implementation is good enough for
the check-cfi test suite.

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

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

9 years agoCleanup the doxygen comments in CGDebugInfo.h according to the coding
Adrian Prantl [Wed, 8 Jul 2015 20:53:55 +0000 (20:53 +0000)]
Cleanup the doxygen comments in CGDebugInfo.h according to the coding
standards and clang-format the file.

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

9 years agoFix the spelling of Objective-C.
Adrian Prantl [Wed, 8 Jul 2015 20:53:53 +0000 (20:53 +0000)]
Fix the spelling of Objective-C.

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

9 years agoRemove unused diagnostics. NFC.
Benjamin Kramer [Wed, 8 Jul 2015 19:10:43 +0000 (19:10 +0000)]
Remove unused diagnostics. NFC.

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

9 years ago[Driver] print-multi-os-directory is unsupported.
Davide Italiano [Wed, 8 Jul 2015 18:49:41 +0000 (18:49 +0000)]
[Driver] print-multi-os-directory is unsupported.

Until somebody writes the code for it, be loud about the fact that
it's not implemented yet.

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

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

9 years ago[Static Analyzer] Make the paths relative from the project root when generating refer...
Gabor Horvath [Wed, 8 Jul 2015 18:39:31 +0000 (18:39 +0000)]
[Static Analyzer] Make the paths relative from the project root when generating reference results in the test suite.

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

9 years agoAST: Avoid reading an unitialized value
Justin Bogner [Wed, 8 Jul 2015 18:32:26 +0000 (18:32 +0000)]
AST: Avoid reading an unitialized value

Desugar doesn't necessarily initialize ShouldAKA, but as of r241542 it
may read it. Fix the misuse of the API and initialize this before
passing it in.

Found by ubsan.

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

9 years ago[SEH] Re-enable SEH on x86 Windows after r241699
Reid Kleckner [Wed, 8 Jul 2015 18:27:10 +0000 (18:27 +0000)]
[SEH] Re-enable SEH on x86 Windows after r241699

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

9 years agoUpdate PCHInternals.rst to document PCH wrapped in object file containers.
Adrian Prantl [Wed, 8 Jul 2015 16:52:51 +0000 (16:52 +0000)]
Update PCHInternals.rst to document PCH wrapped in object file containers.

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

9 years agoRevert "Fix a linker issue with clang-check on Linux."
Adrian Prantl [Wed, 8 Jul 2015 15:57:42 +0000 (15:57 +0000)]
Revert "Fix a linker issue with clang-check on Linux."

This reverts commit r241636 as it turned out to be unnecessary.

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

9 years ago[CMake] clang-check: Prune redundant libdeps introduced in r241653.
NAKAMURA Takumi [Wed, 8 Jul 2015 14:13:27 +0000 (14:13 +0000)]
[CMake] clang-check: Prune redundant libdeps introduced in r241653.

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

9 years ago[MIPS] Add support for direct-to-nacl in Clang
Petar Jovanovic [Wed, 8 Jul 2015 13:07:31 +0000 (13:07 +0000)]
[MIPS] Add support for direct-to-nacl in Clang

For Mips direct-to-nacl, the goal is to be close to le32 front-end and
use Mips32EL backend. This patch defines new NaClMips32ELTargetInfo and
modifies it slightly to be close to le32. It also adds necessary parts,
inline with ARM and X86.

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

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

9 years ago[EH] Fix for clang bug 24005 - no cleanup for array of memcpy-able objects in struct...
Alexey Bataev [Wed, 8 Jul 2015 07:31:02 +0000 (07:31 +0000)]
[EH] Fix for clang bug 24005 - no cleanup for array of memcpy-able objects in struct (patch by Denis Zobnin)

The fix is to emit cleanup for arrays of memcpy-able objects in struct if an exception is thrown later during copy-construction.
Differential Revision: http://reviews.llvm.org/D10989

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

9 years agoRevert "parser: wordsmith diagnostic message" and "parser: diagnose empty attribute...
David Majnemer [Wed, 8 Jul 2015 05:55:00 +0000 (05:55 +0000)]
Revert "parser: wordsmith diagnostic message" and "parser: diagnose empty attribute blocks"

This reverts commit r239846 and r239879.  They caused clang's
-fms-extensions behavior to incorrectly parse lambdas and includes a
testcase to ensure we don't regress again.

This issue was found in PR24027.

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

9 years ago[CodeGen] Correctly handle base classes which are passed in memory
David Majnemer [Wed, 8 Jul 2015 05:14:29 +0000 (05:14 +0000)]
[CodeGen] Correctly handle base classes which are passed in memory

We didn't correctly process the case where a base class is classified as
MEMORY.  This would cause us to trip over an assertion.

This fixes PR24020.

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

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

9 years ago[CodeGen] Don't crash classifying a union of an AVX vector and an int
David Majnemer [Wed, 8 Jul 2015 05:07:05 +0000 (05:07 +0000)]
[CodeGen] Don't crash classifying a union of an AVX vector and an int

We forgot to run postMerge after decided that the union had to be
classified as MEMORY.  This left us with Lo == MEMORY and Hi == SSEUp
which is an invalid combination.

This fixes PR24021.

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

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