]> granicus.if.org Git - clang/log
clang
9 years agoAllow -target= and --target options
Renato Golin [Tue, 10 Mar 2015 13:58:33 +0000 (13:58 +0000)]
Allow -target= and --target options

Using clang as a cross-compiler with the 'target' option could be confusing
for those inexperienced in the realm of cross compiling.

This patch would allow the use of all these four variants of the target option:
-target <triple>
--target <triple>
-target=<triple>
--target=<triple>

Patch by Gabor Ballabas.

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

9 years agoTeach raw_ostream to accept SmallString.
Yaron Keren [Tue, 10 Mar 2015 07:33:23 +0000 (07:33 +0000)]
Teach raw_ostream to accept SmallString.

Saves adding .str() call to any raw_ostream << SmallString usage
and a small step towards making .str() consistent in the ADTs by
removing one of the SmallString::str() use cases, discussion at

http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20141013/240026.html

I'll update the Phabricator patch http://reviews.llvm.org/D6372
for review of the Twine SmallString support, it's more complex
than this one.

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

9 years ago[OPENMP] Initial codegen for 'omp task' directive.
Alexey Bataev [Tue, 10 Mar 2015 07:28:44 +0000 (07:28 +0000)]
[OPENMP] Initial codegen for 'omp task' directive.
The task region is emmitted in several steps:

Emit a call to kmp_task_t *__kmpc_omp_task_alloc(ident_t *, kmp_int32 gtid, kmp_int32 flags, size_t sizeof_kmp_task_t, size_t sizeof_shareds, kmp_routine_entry_t *task_entry).
Here task_entry is a pointer to the function:
kmp_int32 .omp_task_entry.(kmp_int32 gtid, kmp_task_t *tt) {
    TaskFunction(gtid, tt->part_id, tt->shareds);
      return 0;
}
Copy a list of shared variables to field shareds of the resulting structure kmp_task_t returned by the previous call (if any).
Copy a pointer to destructions function to field destructions of the resulting structure kmp_task_t.
Emit a call to kmp_int32 __kmpc_omp_task(ident_t *, kmp_int32 gtid, kmp_task_t *new_task), where new_task is a resulting structure from previous items.
Differential Revision: http://reviews.llvm.org/D7560

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

9 years ago[OPENMP] Fixed tests for non-debug builds. NFC.
Alexey Bataev [Tue, 10 Mar 2015 05:28:46 +0000 (05:28 +0000)]
[OPENMP] Fixed tests for non-debug builds. NFC.

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

9 years ago[OPENMP] Improved code for generating debug info + generation of all OpenMP regions...
Alexey Bataev [Tue, 10 Mar 2015 05:15:26 +0000 (05:15 +0000)]
[OPENMP] Improved code for generating debug info + generation of all OpenMP regions in termination scope
Patch adds proper generation of debug info for all OpenMP regions. Also, all OpenMP regions are generated in a termination scope, because standard does not allow to throw exceptions out of structured blocks, associated with the OpenMP regions
Differential Revision: http://reviews.llvm.org/D7935

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

9 years agoRevert "[OPENMP] Improved code for generating debug info + generation of all OpenMP...
Rafael Espindola [Tue, 10 Mar 2015 04:40:21 +0000 (04:40 +0000)]
Revert "[OPENMP] Improved code for generating debug info + generation of all OpenMP regions in termination scope Patch adds proper generation of debug info for all OpenMP regions. Also, all OpenMP regions are generated in a termination scope, because standard does not allow to throw exceptions out of structured blocks, associated with the OpenMP regions Differential Revision: http://reviews.llvm.org/D7935"

This reverts commit r231752.

It was failing to link with cmake:

lib64/libclangCodeGen.a(CGOpenMPRuntime.cpp.o):/home/espindola/llvm/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp:function clang::CodeGen::InlinedOpenMPRegionRAII::~InlinedOpenMPRegionRAII(): error: undefined reference to 'clang::CodeGen::EHScopeStack::popTerminate()'
clang-3.7: error: linker command failed with exit code 1 (use -v to see invocation)

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

9 years ago[OPENMP] Improved code for generating debug info + generation of all OpenMP regions...
Alexey Bataev [Tue, 10 Mar 2015 04:22:11 +0000 (04:22 +0000)]
[OPENMP] Improved code for generating debug info + generation of all OpenMP regions in termination scope
Patch adds proper generation of debug info for all OpenMP regions. Also, all OpenMP regions are generated in a termination scope, because standard does not allow to throw exceptions out of structured blocks, associated with the OpenMP regions
Differential Revision: http://reviews.llvm.org/D7935

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

9 years ago[modules] Don't bother looking up a declaration to merge into if we're not
Richard Smith [Tue, 10 Mar 2015 02:57:50 +0000 (02:57 +0000)]
[modules] Don't bother looking up a declaration to merge into if we're not
actually loading a formerly-canonical declaration.

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

9 years agoUpdate for LLVM API change: getOrEnforceKnownAlignment() requires a DataLayout
Mehdi Amini [Tue, 10 Mar 2015 02:36:43 +0000 (02:36 +0000)]
Update for LLVM API change: getOrEnforceKnownAlignment() requires a DataLayout

From: Mehdi Amini <mehdi.amini@apple.com>

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

9 years agoPR21687: when adding a redeclaration of a function with an implicit exception
Richard Smith [Tue, 10 Mar 2015 02:00:53 +0000 (02:00 +0000)]
PR21687: when adding a redeclaration of a function with an implicit exception
specification, update all prior declarations if the new one has an explicit
exception specification and the prior ones don't.

Patch by Vassil Vassilev! Some minor tweaking and test case by me.

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

9 years ago[modules] Don't clobber a destructor's operator delete when adding another one;
Richard Smith [Tue, 10 Mar 2015 01:41:22 +0000 (01:41 +0000)]
[modules] Don't clobber a destructor's operator delete when adding another one;
move the operator delete updating into a separate update record so we can cope
with updating another module's destructor's operator delete.

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

9 years ago[modules] This check is run before we resolve the header, not after, so just
Richard Smith [Tue, 10 Mar 2015 00:19:04 +0000 (00:19 +0000)]
[modules] This check is run before we resolve the header, not after, so just
check that private headers are in a list matching the role. (We can't perform
the opposite checks for non-private headers because we infer those.)

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

9 years ago[modules] Don't assert if the same header is named as both a public and a
Richard Smith [Mon, 9 Mar 2015 23:46:50 +0000 (23:46 +0000)]
[modules] Don't assert if the same header is named as both a public and a
private header within the same module.

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

9 years agoSuppress a couple of tests, clang/test/CodeGen/catch-undef-behavior.c and one, for...
NAKAMURA Takumi [Mon, 9 Mar 2015 22:32:03 +0000 (22:32 +0000)]
Suppress a couple of tests, clang/test/CodeGen/catch-undef-behavior.c and one, for -Asserts for now. They were introduced in r231711.

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

9 years ago[UBSan] Split -fsanitize=shift into -fsanitize=shift-base and -fsanitize=shift-exponent.
Alexey Samsonov [Mon, 9 Mar 2015 21:50:19 +0000 (21:50 +0000)]
[UBSan] Split -fsanitize=shift into -fsanitize=shift-base and -fsanitize=shift-exponent.

This is a recommit of r231150, reverted in r231409. Turns out
that -fsanitize=shift-base check implementation only works if the
shift exponent is valid, otherwise it contains undefined behavior
itself.

Make sure we check that exponent is valid before we proceed to
check the base. Make sure that we actually report invalid values
of base or exponent if -fsanitize=shift-base or
-fsanitize=shift-exponent is specified, respectively.

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

9 years agoARM: use ABI-specified alignment for byval parameters.
Tim Northover [Mon, 9 Mar 2015 21:40:42 +0000 (21:40 +0000)]
ARM: use ABI-specified alignment for byval parameters.

When passing a type with large alignment byval, we were specifying the type's
alignment rather than the alignment that the backend is actually capable of
producing (ABIAlign).

This would be OK (if odd) assuming the backend dealt with it prooperly,
unfortunately it doesn't and trying to pass types with "byval align 16" can
cause it to set fp incorrectly and trash the stack during the prologue. I'll be
fixing that in a separate patch, but Clang should still be emitting IR that's
as close to its intent as possible.

rdar://20059039

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

9 years ago[PATCH Sema Objective-C]. Patch to warn on missing designated initializer
Fariborz Jahanian [Mon, 9 Mar 2015 20:39:51 +0000 (20:39 +0000)]
[PATCH Sema Objective-C]. Patch to warn on missing designated initializer
override where at least a declaration of a designated initializer is in a super
class and not necessarily in the current class. rdar://19653785.

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

9 years agoRoll functions back into namespaces, msvc has problems with name lookup outside of it.
Benjamin Kramer [Mon, 9 Mar 2015 17:00:48 +0000 (17:00 +0000)]
Roll functions back into namespaces, msvc has problems with name lookup outside of it.

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

9 years agoCorrect doxygen for matcher macros that require a body. NFC.
Alexander Kornienko [Mon, 9 Mar 2015 16:57:49 +0000 (16:57 +0000)]
Correct doxygen for matcher macros that require a body. NFC.

http://reviews.llvm.org/D8146

Patch by Richard Thomson!

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

9 years agoMake helper functions static. NFC.
Benjamin Kramer [Mon, 9 Mar 2015 16:47:52 +0000 (16:47 +0000)]
Make helper functions static. NFC.

Found by -Wmissing-prototypes.

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

9 years agoMake helper functions static
Benjamin Kramer [Mon, 9 Mar 2015 15:03:32 +0000 (15:03 +0000)]
Make helper functions static

NFC.

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

9 years agoTooling: Hide implementation details
Benjamin Kramer [Mon, 9 Mar 2015 15:03:26 +0000 (15:03 +0000)]
Tooling: Hide implementation details

NFC.

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

9 years agoInheritViz: Hide implementation details
Benjamin Kramer [Mon, 9 Mar 2015 15:03:20 +0000 (15:03 +0000)]
InheritViz: Hide implementation details

NFC.

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

9 years agoHide away implementation details of the ThreadSafetyAnalysis in anonymous namespaces
Benjamin Kramer [Mon, 9 Mar 2015 14:19:54 +0000 (14:19 +0000)]
Hide away implementation details of the ThreadSafetyAnalysis in anonymous namespaces

NFC.

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

9 years agoFix a menu issue. patch by Vassil Vassilev
Sylvestre Ledru [Mon, 9 Mar 2015 09:09:55 +0000 (09:09 +0000)]
Fix a menu issue. patch by Vassil Vassilev

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

9 years agoclang-format: Don't remove newline if macro ends in access specifier.
Daniel Jasper [Mon, 9 Mar 2015 08:13:55 +0000 (08:13 +0000)]
clang-format: Don't remove newline if macro ends in access specifier.

I.e.:

  #define A public:

  // The new line before this line would be removed.
  int a;

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

9 years agoWarn when jumping out of a __finally block via goto.
Nico Weber [Mon, 9 Mar 2015 04:27:56 +0000 (04:27 +0000)]
Warn when jumping out of a __finally block via goto.

This only warns on direct gotos and indirect gotos with a unique label
(`goto *&&label;`).  Jumping out ith a true indirect goto is already an error.

This isn't O(1), but goto statements are less common than continue, break, and
return.  Also, the GetDeepestCommonScope() call in the same function does the
same amount of work, so this isn't worse than what's there in a complexity
sense, and it should be pretty fast in practice.

This is the last piece that was missing in r231623.

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

9 years agoFix a theoretical bug when ParseCompoundStatement() returns StmtError.
Nico Weber [Mon, 9 Mar 2015 03:17:15 +0000 (03:17 +0000)]
Fix a theoretical bug when ParseCompoundStatement() returns StmtError.

ParseCompoundStatement() currently never returns StmtError, but if it did,
Sema would keep the __finally scope on its stack indefinitely.  Explicitly
add an error callback that clears it.

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

9 years agoWarn when jumping out of a __finally block via continue, break, return, __leave.
Nico Weber [Mon, 9 Mar 2015 02:47:59 +0000 (02:47 +0000)]
Warn when jumping out of a __finally block via continue, break, return, __leave.

Since continue, break, return are much more common than __finally, this tries
to keep the work for continue, break, return O(1).  Sema keeps a stack of active
__finally scopes (to do this, ActOnSEHFinally() is split into
ActOnStartSEHFinally() and ActOnFinishSEHFinally()), and the various jump
statements then check if the current __finally scope (if present) is deeper
than then destination scope of the jump.

The same warning for goto statements is still missing.

This is the moral equivalent of MSVC's C4532.

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

9 years agoFix typo in comment.
Nico Weber [Mon, 9 Mar 2015 02:34:29 +0000 (02:34 +0000)]
Fix typo in comment.

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

9 years agoWrap to 80 columns. No behavior change.
Nico Weber [Mon, 9 Mar 2015 02:33:32 +0000 (02:33 +0000)]
Wrap to 80 columns. No behavior change.

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

9 years agoSimplify boolean expressions in clang with clang-tidy
David Blaikie [Mon, 9 Mar 2015 02:02:07 +0000 (02:02 +0000)]
Simplify boolean expressions in clang with clang-tidy

Patch by Richard (legalize at xmission dot com).

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

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

9 years agoProperly initialize the parser_crash debug token.
Benjamin Kramer [Sun, 8 Mar 2015 19:28:24 +0000 (19:28 +0000)]
Properly initialize the parser_crash debug token.

Found by msan.

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

9 years agoFix the MSVC build.
Benjamin Kramer [Sun, 8 Mar 2015 18:20:22 +0000 (18:20 +0000)]
Fix the MSVC build.

Type traits are hard.

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

9 years agoMake Token a real POD type.
Benjamin Kramer [Sun, 8 Mar 2015 18:11:59 +0000 (18:11 +0000)]
Make Token a real POD type.

We copy them around a lot and skip construction in favor of startToken,
make the default construction trivial to reflect that.

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

9 years agoMake constant static variables const so they can go into a read-only section
Benjamin Kramer [Sun, 8 Mar 2015 16:06:46 +0000 (16:06 +0000)]
Make constant static variables const so they can go into a read-only section

NFC.

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

9 years ago[Rewrite] Make RewriteBuffer accessible on its own, and add a unit test for it.
Argyrios Kyrtzidis [Sun, 8 Mar 2015 04:00:33 +0000 (04:00 +0000)]
[Rewrite] Make RewriteBuffer accessible on its own, and add a unit test for it.

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

9 years ago[Rewrite] Move RewriteBuffer into its own header.
Argyrios Kyrtzidis [Sun, 8 Mar 2015 04:00:28 +0000 (04:00 +0000)]
[Rewrite] Move RewriteBuffer into its own header.

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

9 years agoASTMatchers: Make AST_POLYMORPHIC_SUPPORTED_TYPES a variadic macro
Benjamin Kramer [Sat, 7 Mar 2015 20:38:15 +0000 (20:38 +0000)]
ASTMatchers: Make AST_POLYMORPHIC_SUPPORTED_TYPES a variadic macro

C++11 finally allows us to use this C99 feature.

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

9 years agoWrap to 80 columns. No behavior change.
Nico Weber [Sat, 7 Mar 2015 19:52:39 +0000 (19:52 +0000)]
Wrap to 80 columns. No behavior change.

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

9 years agoReapply r231508 "CodeGen: Emit constant temporaries into read-only globals."
Benjamin Kramer [Sat, 7 Mar 2015 13:37:13 +0000 (13:37 +0000)]
Reapply r231508 "CodeGen: Emit constant temporaries into read-only globals."

I disabled putting the new global into the same COMDAT as the function for now.
There's a fundamental problem when we inline references to the global but still
have the global in a COMDAT linked to the inlined function. Since this is only
an optimization there may be other versions of the COMDAT around that are
missing the new global and hell breaks loose at link time.

I hope the chromium build doesn't break this time :)

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

9 years agoMuch like we silence warnings about -flto in many cases to facilitate
Chandler Carruth [Sat, 7 Mar 2015 10:01:29 +0000 (10:01 +0000)]
Much like we silence warnings about -flto in many cases to facilitate
simplicity in build systems, silence '-stdlib=libc++' when linking. Even
if we're not linking C++ code per-se, we may be passing this flag so
that when we are linking C++ code we pick up the desired standard
library. While most build systems already provide separate C and C++
compile flags, many conflate link flags. Sadly, CMake is among them
causing this warning in a libc++ selfhost.

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

9 years ago[analyzer] RetainCountChecker: CF properties are always manually retain-counted.
Jordan Rose [Sat, 7 Mar 2015 05:47:24 +0000 (05:47 +0000)]
[analyzer] RetainCountChecker: CF properties are always manually retain-counted.

In theory we could assume a CF property is stored at +0 if there's not a custom
setter, but that's not really worth the complexity. What we do know is that a
CF property can't have ownership attributes, and so we shouldn't assume anything
about the ownership of the ivar.

rdar://problem/20076963

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

9 years ago[analyzer] Remove unused type (addition to r231540: "Revert changes from r229593")
Anton Yartsev [Sat, 7 Mar 2015 01:57:31 +0000 (01:57 +0000)]
[analyzer] Remove unused type (addition to r231540: "Revert changes from r229593")

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

9 years agoRevert r231508 "CodeGen: Emit constant temporaries into read-only globals."
Hans Wennborg [Sat, 7 Mar 2015 00:46:19 +0000 (00:46 +0000)]
Revert r231508 "CodeGen: Emit constant temporaries into read-only globals."

This broke the Chromium build. Links were failing with messages like:

obj/dbus/libdbus_test_support.a(obj/dbus/dbus_test_support.mock_object_proxy.o):../../dbus/mock_object_proxy.cc:function dbus::MockObjectProxy::Detach(): warning: relocation refers to discarded section
/usr/local/google/work/chromium/src/third_party/binutils/Linux_x64/Release/bin/ld.gold: error: treating warnings as errors

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

9 years ago[analyzer] Revert changes from r229593; an enhancement is under discussion
Anton Yartsev [Sat, 7 Mar 2015 00:31:53 +0000 (00:31 +0000)]
[analyzer] Revert changes from r229593; an enhancement is under discussion

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

9 years agoReplace Sema's map of locally-scoped extern "C" declarations with a DeclContext
Richard Smith [Sat, 7 Mar 2015 00:04:49 +0000 (00:04 +0000)]
Replace Sema's map of locally-scoped extern "C" declarations with a DeclContext
of extern "C" declarations. This is simpler and vastly more efficient for
modules builds (we no longer need to load *all* extern "C" declarations to
determine if we have a redeclaration).

No functionality change intended.

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

9 years agoUnbreak build bots
David Majnemer [Fri, 6 Mar 2015 23:56:30 +0000 (23:56 +0000)]
Unbreak build bots

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

9 years agoMS ABI: Stick throw-related data into the .xdata section
David Majnemer [Fri, 6 Mar 2015 23:45:23 +0000 (23:45 +0000)]
MS ABI: Stick throw-related data into the .xdata section

This is a little nicer as it keeps the contents of .xdata away from
normal .rdata; we expect .xdata to be far colder than .rdata.

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

9 years agoMS ABI: Correctly generate throw-info for pointer to const qual types
David Majnemer [Fri, 6 Mar 2015 23:45:20 +0000 (23:45 +0000)]
MS ABI: Correctly generate throw-info for pointer to const qual types

We didn't create type info based on the unqualified pointee type,
causing RTTI mismatches.

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

9 years agoCodeGen: Emit constant temporaries into read-only globals.
Benjamin Kramer [Fri, 6 Mar 2015 20:00:03 +0000 (20:00 +0000)]
CodeGen: Emit constant temporaries into read-only globals.

Instead of creating a copy on the stack just stash them in a private
constant global. This saves both the copying overhead and the stack
space, and gives the optimizer more room to constant fold.

This tries to make array temporaries more similar to regular arrays,
they can't use the same logic because a temporary has no VarDecl to be
bound to so we roll our own version here.

The original use case for this optimization was code like
  for (int i : {1, 2, 3, 4, 5, 6, 7, 8, 10})
    foo(i);
where without this patch (assuming that the loop is not unrolled) we
would alloca an array on the stack, copy the 10 values over and
iterate on that. With this patch we put the array in .text use it
directly. Apart from that case this helps on virtually any passing of
a constant std::initializer_list as a function argument.

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

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

9 years agoMS ABI: Insert copy-constructors into the CatchableType
David Majnemer [Fri, 6 Mar 2015 18:53:55 +0000 (18:53 +0000)]
MS ABI: Insert copy-constructors into the CatchableType

Find all unambiguous public classes of the exception object's class type
and reference all of their copy constructors.  Yes, this is not
conforming but it is necessary in order to implement their ABI.  This is
because the copy constructor is actually referenced by the metadata
describing which catch handlers are eligible to handle the exception
object.

N.B.  This doesn't yet handle the copy constructor closure case yet,
that work is ongoing.

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

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

9 years agoSema: The i8 suffix should yield a literal of type char
David Majnemer [Fri, 6 Mar 2015 18:04:22 +0000 (18:04 +0000)]
Sema: The i8 suffix should yield a literal of type char

We would make i8 literals turn into signed char instead of char.  This
is incompatible with MSVC.

This fixes PR22824.

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

9 years agoSema: We can use delegating ctors now. NFC.
Benjamin Kramer [Fri, 6 Mar 2015 16:36:50 +0000 (16:36 +0000)]
Sema: We can use delegating ctors now. NFC.

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

9 years agoFix isOverride() for the case of a dependent typed base class.
Samuel Benzaquen [Fri, 6 Mar 2015 16:24:47 +0000 (16:24 +0000)]
Fix isOverride() for the case of a dependent typed base class.

The method decl is not marked as overriding any other method decls
until the template is instantiated.
Use the override attribute as another signal.

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

9 years agoRemoving code that is unused after r231424; NFC.
Aaron Ballman [Fri, 6 Mar 2015 14:24:53 +0000 (14:24 +0000)]
Removing code that is unused after r231424; NFC.

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

9 years agoUse delegating ctors to reduce code duplication. NFC.
Benjamin Kramer [Fri, 6 Mar 2015 14:15:57 +0000 (14:15 +0000)]
Use delegating ctors to reduce code duplication. NFC.

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

9 years agoclang-format: Slightly change indentation rules in for loops.
Daniel Jasper [Fri, 6 Mar 2015 10:57:12 +0000 (10:57 +0000)]
clang-format: Slightly change indentation rules in for loops.

There was already a TODO to double-check whether the extra indenation
makes sense. A slightly different case reveals that it is actively harmful:

  for (int i = 0; i < aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||
                      bbbbbbbbbbbbbbbbbbbb < ccccccccccccccc;
       ++i) {
  }

Here (and it is probably not a totally infrequent case, it just works out that
"i < " is four spaces and so the four space extra indentation makes the
operator precedence confusing. So, this will now instead be formatted
as:

  for (int i = 0; i < aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||
                  bbbbbbbbbbbbbbbbbbbb < ccccccccccccccc;
       ++i) {
  }

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

9 years agoSilence C4715 'not all control paths return a value' warnings.
Yaron Keren [Fri, 6 Mar 2015 07:49:14 +0000 (07:49 +0000)]
Silence C4715 'not all control paths return a value' warnings.

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

9 years agoDon't crash on non-public referenced dtors in toplevel classes.
Nico Weber [Fri, 6 Mar 2015 06:01:06 +0000 (06:01 +0000)]
Don't crash on non-public referenced dtors in toplevel classes.

Fixes PR22793, a bug that caused self-hosting to fail after the innocuous
r231254. See the bug for details.

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

9 years agoAdd a download link to the web page (PR22764)
Hans Wennborg [Fri, 6 Mar 2015 00:13:55 +0000 (00:13 +0000)]
Add a download link to the web page (PR22764)

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

9 years ago[modules] Rework merging of redeclaration chains on module import.
Richard Smith [Thu, 5 Mar 2015 23:24:12 +0000 (23:24 +0000)]
[modules] Rework merging of redeclaration chains on module import.

We used to save out and eagerly load a (potentially huge) table of merged
formerly-canonical declarations when we loaded each module. This was extremely
inefficient in the presence of large amounts of merging, and didn't actually
save any merging lookup work, because we still needed to perform name lookup to
check that our merged declaration lists were complete. This also resulted in a
loss of laziness -- even if we only needed an early declaration of an entity, we
would eagerly pull in all declarations that had been merged into it regardless.

We now store the relevant fragments of the table within the declarations
themselves. In detail:

 * The first declaration of each entity within a module stores a list of first
   declarations from imported modules that are merged into it.
 * Loading that declaration pre-loads those other entities, so that they appear
   earlier within the redeclaration chain.
 * The name lookup tables list the most recent local lookup result, if there
   is one, or all directly-imported lookup results if not.

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

9 years ago[PATCH] Patch to fix the AST for vector splat from any
Fariborz Jahanian [Thu, 5 Mar 2015 23:06:09 +0000 (23:06 +0000)]
[PATCH] Patch to fix the AST for vector splat from any
arithmetic type to a vector so that the arithmatic type
matches the vector element type. Without which it crashes
in Code Gen. rdar://20000762

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

9 years agoRevert "[UBSan] Split -fsanitize=shift into -fsanitize=shift-base and -fsanitize...
Alexey Samsonov [Thu, 5 Mar 2015 21:57:35 +0000 (21:57 +0000)]
Revert "[UBSan] Split -fsanitize=shift into -fsanitize=shift-base and -fsanitize=shift-exponent."

It's not that easy. If we're only checking -fsanitize=shift-base we
still need to verify that exponent has sane value, otherwise
UBSan-inserted checks for base will contain undefined behavior
themselves.

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

9 years agoClang side change following r231392.
Zachary Turner [Thu, 5 Mar 2015 19:15:09 +0000 (19:15 +0000)]
Clang side change following r231392.

Changes call to PrintStackTrace(FILE*) to call
PrintStackTrace(raw_ostream&)

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

9 years agoRecommit "[IAS] Teach -cc1as about the 'target-abi' option."
Toma Tabacu [Thu, 5 Mar 2015 13:39:14 +0000 (13:39 +0000)]
Recommit "[IAS] Teach -cc1as about the 'target-abi' option."

Added a REQUIRES for the Mips target.
Also, switched to using plain CHECKs, at the suggestion of Eric Christopher.

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

9 years ago[test] Expand a bit on the test case from r231251. NFC.
Argyrios Kyrtzidis [Thu, 5 Mar 2015 03:12:33 +0000 (03:12 +0000)]
[test] Expand a bit on the test case from r231251. NFC.

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

9 years agoFix msvc-link.c test for environments with link.exe on PATH
Hans Wennborg [Thu, 5 Mar 2015 02:26:58 +0000 (02:26 +0000)]
Fix msvc-link.c test for environments with link.exe on PATH

Patch by Michael Edwards!

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

9 years agoMS ABI: Implement support for throwing a C++ exception
David Majnemer [Thu, 5 Mar 2015 00:46:22 +0000 (00:46 +0000)]
MS ABI: Implement support for throwing a C++ exception

Throwing a C++ exception, under the MS ABI, is implemented using three
components:
- ThrowInfo structure which contains information like CV qualifiers,
  what destructor to call and a pointer to the CatchableTypeArray.
- In a significant departure from the Itanium ABI, copying by-value
  occurs in the runtime and not at the catch site.  This means we need
  to enumerate all possible types that this exception could be caught as
  and encode the necessary information to convert from the exception
  object's type to the catch handler's type.  This includes complicated
  derived to base conversions and the execution of copy-constructors.

N.B. This implementation doesn't support the execution of a
copy-constructor from within the runtime for now.  Adding support for
that functionality is quite difficult due to things like default
argument expressions which may evaluate arbitrary code hiding in the
copy-constructor's parameters.

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

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

9 years agoGive some obj-c rewriter tests that use MS pragmas a triple as a speculative fix
Reid Kleckner [Thu, 5 Mar 2015 00:04:18 +0000 (00:04 +0000)]
Give some obj-c rewriter tests that use MS pragmas a triple as a speculative fix

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

9 years agoTemporary XFAILs for Hexagon
Rick Foos [Wed, 4 Mar 2015 23:40:38 +0000 (23:40 +0000)]
Temporary XFAILs for Hexagon

Summary: Temporary XFAIL's until patches done.

Reviewers: echristo, adasgupt, colinl

Reviewed By: colinl

Subscribers: llvm-commits

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

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

9 years agoImplement section pragma feedback on r205810
Reid Kleckner [Wed, 4 Mar 2015 23:39:17 +0000 (23:39 +0000)]
Implement section pragma feedback on r205810

Mostly short-circuits some conditionals.  Adds target validation of
sections passed to these pragmas.

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

9 years ago[analyzer] Bug fix: do not report leaks for alloca()
Anton Yartsev [Wed, 4 Mar 2015 23:18:21 +0000 (23:18 +0000)]
[analyzer] Bug fix: do not report leaks for alloca()

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

9 years agoPass -dll to link.exe when building with -shared (PR22697)
Hans Wennborg [Wed, 4 Mar 2015 23:16:21 +0000 (23:16 +0000)]
Pass -dll to link.exe when building with -shared (PR22697)

And start building a test for non-clang-cl link.exe invocations.

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

9 years agoFix the clang self-host -Werror build
David Blaikie [Wed, 4 Mar 2015 22:15:41 +0000 (22:15 +0000)]
Fix the clang self-host -Werror build

Sorry about the breakage.

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

9 years agoAdd Clang support for PPC cryptography builtins
Nemanja Ivanovic [Wed, 4 Mar 2015 21:48:22 +0000 (21:48 +0000)]
Add Clang support for PPC cryptography builtins
Review: http://reviews.llvm.org/D7951

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

9 years agoFix test/CodeGen/builtins.c for platforms that don't lower sjlj
Reid Kleckner [Wed, 4 Mar 2015 19:24:16 +0000 (19:24 +0000)]
Fix test/CodeGen/builtins.c for platforms that don't lower sjlj

Opt in Win64 to supporting sjlj lowering. We have the backend lowering,
so I think this was just an oversight because WinX86_64TargetCodeGenInfo
doesn't inherit from X86_64TargetCodeGenInfo.

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

9 years agoTry to fix the build after removing DataLayoutPass
Reid Kleckner [Wed, 4 Mar 2015 19:10:41 +0000 (19:10 +0000)]
Try to fix the build after removing DataLayoutPass

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

9 years ago[analyzer] Individual configuration options can be specified for checkers.
Gabor Horvath [Wed, 4 Mar 2015 17:59:34 +0000 (17:59 +0000)]
[analyzer] Individual configuration options can be specified for checkers.

Reviewed by: Anna Zaks

Original patch by: Aleksei Sidorin

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

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

9 years agoNew ObjC warning: circular containers.
Alex Denisov [Wed, 4 Mar 2015 17:55:52 +0000 (17:55 +0000)]
New ObjC warning: circular containers.

This commit adds new warning to prevent user from creating 'circular containers'.

Mutable collections from NSFoundation allows user to add collection to itself, e.g.:

NSMutableArray *a = [NSMutableArray new];
[a addObject:a];

The code above leads to really weird behaviour (crashes, 'endless' recursion) and
retain cycles (collection retains itself) if ARC enabled.

Patch checks the following collections:
  - NSMutableArray,
  - NSMutableDictionary,
  - NSMutableSet,
  - NSMutableOrderedSet,
  - NSCountedSet.

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

9 years ago[Modules] Fix crash in Preprocessor::getLastMacroWithSpelling().
Argyrios Kyrtzidis [Wed, 4 Mar 2015 16:03:07 +0000 (16:03 +0000)]
[Modules] Fix crash in Preprocessor::getLastMacroWithSpelling().

Macro names that got undefined inside a module may not have their MacroInfo set.

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

9 years agoRevert "[IAS] Teach -cc1as about the 'target-abi' option."
Daniel Jasper [Wed, 4 Mar 2015 15:02:22 +0000 (15:02 +0000)]
Revert "[IAS] Teach -cc1as about the 'target-abi' option."

This reverts commit 0e41c8faeff75614cf4627533331d780ba3db030.

This is breaking buildbots:
http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_check/4668/

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

9 years agoPrevent test from writing files.
Daniel Jasper [Wed, 4 Mar 2015 15:02:17 +0000 (15:02 +0000)]
Prevent test from writing files.

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

9 years agoAdjust the changes from r230255 to bail out if the backend can't lower
Joerg Sonnenberger [Wed, 4 Mar 2015 14:25:35 +0000 (14:25 +0000)]
Adjust the changes from r230255 to bail out if the backend can't lower
__builtin_setjmp/__builtin_longjmp and don't fall back to the libc
functions.

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

9 years ago[IAS] Teach -cc1as about the 'target-abi' option.
Toma Tabacu [Wed, 4 Mar 2015 14:24:25 +0000 (14:24 +0000)]
[IAS] Teach -cc1as about the 'target-abi' option.

Summary:
When using the IAS from clang, the 'target-abi' option gets passed to cc1as, but cc1as doesn't know about it and gives an "unknown argument" error.

This is fixed by adding the 'CC1AsOption' flag to the 'target-abi' option in CC1Options.td.

Reviewers: atanasyan, echristo, dsanders

Reviewed By: dsanders

Subscribers: cfe-commits

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

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

9 years agoMove one more diagnostic into the new -Wformat-pedantic group.
Daniel Jasper [Wed, 4 Mar 2015 14:18:20 +0000 (14:18 +0000)]
Move one more diagnostic into the new -Wformat-pedantic group.

This was apparently overlooked in r231211.

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

9 years agoAT.isValid() should come before AT.matchesType()
Seth Cantrell [Wed, 4 Mar 2015 05:58:08 +0000 (05:58 +0000)]
AT.isValid() should come before AT.matchesType()

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

9 years agoAdd a format warning for "%p" with non-void* args
Seth Cantrell [Wed, 4 Mar 2015 03:12:10 +0000 (03:12 +0000)]
Add a format warning for "%p" with non-void* args

GCC -pedantic produces a format warning when the "%p" specifier is used with
arguments that are not void*. It's useful for portability to be able to
catch such warnings with clang as well. The warning is off by default in
both gcc and with this patch. This patch enables it either when extensions
are disabled with -pedantic, or with the specific flag -Wformat-pedantic.

The C99 and C11 specs do appear to require arguments corresponding to 'p'
specifiers to be void*: "If any argument is not the correct type for the
corresponding conversion specification, the behavior is undefined."
[7.19.6.1 p9], and of the 'p' format specifier "The argument shall be a
pointer to void." [7.19.6.1 p8]

Both printf and scanf format checking are covered.

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

9 years agoTypePrinter print __restrict if not in C99 mode
Jacques Pienaar [Tue, 3 Mar 2015 23:58:09 +0000 (23:58 +0000)]
TypePrinter print __restrict if not in C99 mode

restrict is a keyword in C99 but not in C++ while clang accepts __restrict for C++ code. Modify the TypePrinter to print __restrict when not processing C99 code.

Printing restrict in C++ was problematic as printing the argument of
  int f(int * __restrict a) { ... }
resulted in
  int *restrict a
which is incorrect.

http://reviews.llvm.org/D8048

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

9 years agoTry to unbreak the Windows buildbots.
Filipe Cabecinhas [Tue, 3 Mar 2015 23:36:57 +0000 (23:36 +0000)]
Try to unbreak the Windows buildbots.

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

9 years ago[analyzer] unix.Malloc: preserve AllocaRegion bound to __builtin_alloca().
Anton Yartsev [Tue, 3 Mar 2015 22:58:46 +0000 (22:58 +0000)]
[analyzer] unix.Malloc: preserve AllocaRegion bound to __builtin_alloca().

Binding __builtin_alloca() return value to the symbolic value kills previous binding to a AllocaRegion established by the core.BuiltinFunctions checker. Other checkers may rely upon this information. Rollback handling of __builtin_alloca() to the way prior to r229850.

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

9 years agoDebugInfo: Remove useless test
Duncan P. N. Exon Smith [Tue, 3 Mar 2015 22:18:24 +0000 (22:18 +0000)]
DebugInfo: Remove useless test

This test doesn't provide any value (it just checks that the frontend
produces exactly one compile unit), and it certainly isn't doing what
the comment says.  Noticed via IRC review of my update to it in r231083.

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

9 years ago[UBSan] Split -fsanitize=shift into -fsanitize=shift-base and -fsanitize=shift-exponent.
Alexey Samsonov [Tue, 3 Mar 2015 22:15:35 +0000 (22:15 +0000)]
[UBSan] Split -fsanitize=shift into -fsanitize=shift-base and -fsanitize=shift-exponent.

-fsanitize=shift is now a group that includes both these checks, so
exisiting users should not be affected.

This change introduces two new UBSan kinds that sanitize only left-hand
side and right-hand side of shift operation. In practice, invalid
exponent value (negative or too large) tends to cause more portability
problems, including inconsistencies between different compilers, crashes
and inadequeate results on non-x86 architectures etc. That is,
-fsanitize=shift-exponent failures should generally be addressed first.

As a bonus, this change simplifies CodeGen implementation for emitting left
shift (separate checks for base and exponent are now merged by the
existing generic logic in EmitCheck()), and LLVM IR for these checks
(the number of basic blocks is reduced).

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

9 years ago[Sanitizers] Use uint64_t for bitmask of enabled sanitizers.
Alexey Samsonov [Tue, 3 Mar 2015 22:15:32 +0000 (22:15 +0000)]
[Sanitizers] Use uint64_t for bitmask of enabled sanitizers.

The total number of sanitizers and sanitizer groups will soon
reach 32.

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

9 years agoFix program name in "clang -help"
Sumanth Gundapaneni [Tue, 3 Mar 2015 20:43:12 +0000 (20:43 +0000)]
Fix program name in "clang -help"

With out this patch,
"clang -help" prints "USAGE: clang-3 [options] <inputs>".
It should either print
USAGE: clang [options] <inputs>
or

USAGE: clang-3.7 [options] <inputs>
With this patch, on Linux, it prints
USAGE: clang-3.7 [options] <inputs>

On Windows, it prints
USAGE: clang.exe [options] <inputs>

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

9 years ago[PowerPC]Activate "vector bool long long" (and alternate spellings) as a valid type...
Bill Seurer [Tue, 3 Mar 2015 20:08:43 +0000 (20:08 +0000)]
[PowerPC]Activate "vector bool long long" (and alternate spellings) as a valid type for Altivec support for Power.

There are two test case updates for very basic testing. While I was editing cxx-altivec.cpp I also updated it to better match some other changes in altivec.c.

Note: "vector bool long" was not also added because its use is considered deprecated.

http://reviews.llvm.org/D7235

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

9 years agoSplit catch IRgen into ItaniumCXXABI and MicrosoftCXXABI
Reid Kleckner [Tue, 3 Mar 2015 19:21:04 +0000 (19:21 +0000)]
Split catch IRgen into ItaniumCXXABI and MicrosoftCXXABI

Use llvm.eh.begincatch for Microsoft-style catches.

This moves lots of CGException code into ItaniumCXXABI. Sorry for the
blame pain.

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

9 years agoDisable the right RUN line
Reid Kleckner [Tue, 3 Mar 2015 18:36:38 +0000 (18:36 +0000)]
Disable the right RUN line

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

9 years agoDisabled the other test from r231086 (like in r231087) since it also had problems
Filipe Cabecinhas [Tue, 3 Mar 2015 18:32:38 +0000 (18:32 +0000)]
Disabled the other test from r231086 (like in r231087) since it also had problems

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

9 years agoSupport __attribute__((availability)) on Android.
Dan Albert [Tue, 3 Mar 2015 18:28:38 +0000 (18:28 +0000)]
Support __attribute__((availability)) on Android.

Reviewers: srhines

Reviewed By: srhines

Subscribers: cfe-commits

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

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