]> granicus.if.org Git - clang/log
clang
9 years agoInitialize BackendConsumer::Context in constructor.
Yaron Keren [Thu, 25 Dec 2014 12:21:56 +0000 (12:21 +0000)]
Initialize BackendConsumer::Context in constructor.

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

9 years agoInitialize CodeGeneratorImpl::Ctx in constructor.
Yaron Keren [Thu, 25 Dec 2014 11:38:15 +0000 (11:38 +0000)]
Initialize CodeGeneratorImpl::Ctx in constructor.

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

9 years ago[analyzer] Updated progress for memory.ZeroAlloc
Anton Yartsev [Wed, 24 Dec 2014 01:04:38 +0000 (01:04 +0000)]
[analyzer] Updated progress for memory.ZeroAlloc

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

9 years ago[analyzer] +memory.ZeroAlloc
Anton Yartsev [Wed, 24 Dec 2014 00:46:56 +0000 (00:46 +0000)]
[analyzer] +memory.ZeroAlloc

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

9 years agoclang-cl: Various changes to /Zc: handling.
Nico Weber [Tue, 23 Dec 2014 22:55:34 +0000 (22:55 +0000)]
clang-cl: Various changes to /Zc: handling.

* /Zc:trigraphs and /Zc:trigraphs- are now honored
* /Zc:strictStrings is now honored
* /Zc:auto is now honored/ignored (clang does the Right Thing for this already)

Also add a dedicated test for the various /Zc: flags.
clang-cl doesn't always agree with cl.exe on the default values for /Zc flags.
For example, I think clang always behaves as if /Zc:inline is passed, and
warns if the user explicitly passes /Zc:inline-

Fixes PR21974.

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

9 years agoAdd driver flags -ftrigraphs, -fno-trigraphs.
Nico Weber [Tue, 23 Dec 2014 22:32:37 +0000 (22:32 +0000)]
Add driver flags -ftrigraphs, -fno-trigraphs.

-trigraphs is now an alias for -ftrigraphs.  -fno-trigraphs makes it possible
to explicitly disable trigraphs, which couldn't be done before.

  clang -std=c++11 -fno-trigraphs

now builds without GNU extensions, but with trigraphs disabled.  Previously,
trigraphs were only disabled in GNU modes or with -std=c++1z.

Make the new -f flags the cc1 interface too.  This requires changing -trigraphs
to -ftrigraphs in a few cc1 tests.

Related to PR21974.

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

9 years agoRemove unused test input.
Nico Weber [Tue, 23 Dec 2014 19:30:13 +0000 (19:30 +0000)]
Remove unused test input.

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

9 years agoDebug Info: Pass the pointer size into createMemberPointerType().
Adrian Prantl [Tue, 23 Dec 2014 19:11:54 +0000 (19:11 +0000)]
Debug Info: Pass the pointer size into createMemberPointerType().
Paired commit with LLVM.

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

9 years agoThis reverts commit r224668 and r224667.
Rafael Espindola [Tue, 23 Dec 2014 15:57:12 +0000 (15:57 +0000)]
This reverts commit r224668 and r224667.

r224667 broke bootstrap on Fedora 20 X86_64 (at least).

See pr22006 for the details.

r224668 depends on r224667.

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

9 years agoAdd a triple to try and get this test passing on the ARM bots.
Nico Weber [Tue, 23 Dec 2014 01:07:10 +0000 (01:07 +0000)]
Add a triple to try and get this test passing on the ARM bots.

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

9 years agoDisable trigraphs in microsoft mode by default. Matches cl.exe.
Nico Weber [Mon, 22 Dec 2014 18:35:03 +0000 (18:35 +0000)]
Disable trigraphs in microsoft mode by default. Matches cl.exe.

The default value of Opts.Trigraphs now no longer depends solely on the
language input kind, so move the code out of setLangDefaults().  Also make
sure that Opts.MSVCCompat is set before the Trigraph code runs.

Related to PR21974.

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

9 years agoRename test.cc files to test.cpp.
Nico Weber [Mon, 22 Dec 2014 18:13:07 +0000 (18:13 +0000)]
Rename test.cc files to test.cpp.

The lit.cfg files only add .cpp to suffixes, so these tests used to never run,
oops.  (Also tweak to of these tests in minor ways to make the actually pass.)

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

9 years agoAdd test coverage for cc1's trigraph option handling.
Nico Weber [Mon, 22 Dec 2014 17:56:50 +0000 (17:56 +0000)]
Add test coverage for cc1's trigraph option handling.

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

9 years agoSimplify test for rdar://19256338
Fariborz Jahanian [Mon, 22 Dec 2014 17:54:25 +0000 (17:54 +0000)]
Simplify test for rdar://19256338
(from patch r224549).

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

9 years agoMS ABI: Make the string mangling code more concise
David Majnemer [Mon, 22 Dec 2014 06:24:49 +0000 (06:24 +0000)]
MS ABI: Make the string mangling code more concise

No functional change intended.

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

9 years agoWrap to 80 columns. NfC.
Nico Weber [Mon, 22 Dec 2014 05:21:03 +0000 (05:21 +0000)]
Wrap to 80 columns. NfC.

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

9 years agoReapply "Change -save-temps to emit unoptimized bitcode files."
Bob Wilson [Sun, 21 Dec 2014 07:00:00 +0000 (07:00 +0000)]
Reapply "Change -save-temps to emit unoptimized bitcode files."

This reapplies r224503 along with a fix for compiling Fortran by having the
clang driver invoke gcc (see r224546, where it was reverted). I have added
a testcase for that as well.

Original commit message:
It is often convenient to use -save-temps to collect the intermediate
results of a compilation, e.g., when triaging a bug report. Besides the
temporary files for preprocessed source and assembly code, this adds the
unoptimized bitcode files as well.

This adds a new BackendJobAction, which is mostly mechanical, to run after
the CompileJobAction. When not using -save-temps, the BackendJobAction is
combined into one job with the CompileJobAction, similar to the way the
integrated assembler is handled. I've implemented this entirely as a
driver change, so under the hood, it is just using -disable-llvm-optzns
to get the unoptimized bitcode.

Based in part on a patch by Steven Wu.
rdar://problem/18909437

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

9 years agoFrontend: Fix typo in comments.
Logan Chien [Sat, 20 Dec 2014 08:51:22 +0000 (08:51 +0000)]
Frontend: Fix typo in comments.

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

9 years agoFix a bunch of integer template argument problems in template type diffing.
Richard Trieu [Sat, 20 Dec 2014 03:03:32 +0000 (03:03 +0000)]
Fix a bunch of integer template argument problems in template type diffing.

Reverts most of the changes from r168005.  Since template arguments have proper
conversions now, no extending of integers is needed.  Further, since the
integers are the correct size now, use APSInt::operator== instead of
APSInt::hasSameValue since operator== will check the size and signness match.

Prior to one comparison of APSInt's, check that both are valid.  Previous, one
could be uninitialized.  Also changed APInt to APSInt in GetInt.  This
occassionally produced a sign flip, which will now be caught by operator==.

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

9 years agoFix for PR21758
Richard Trieu [Sat, 20 Dec 2014 02:42:08 +0000 (02:42 +0000)]
Fix for PR21758

When a non-type template argument expression needs a conversion to change it
into the argument type, preserve that information by remaking the
TemplateArgument with an expression that has those conversions.  Also a small
fix to template type diffing to handle the extra conversions in some cases.

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

9 years agoRemoving an outdated FIXME; try block attributes are parsed with the rest of the...
Aaron Ballman [Sat, 20 Dec 2014 01:54:07 +0000 (01:54 +0000)]
Removing an outdated FIXME; try block attributes are parsed with the rest of the statement attributes (as per the standard), and function-try-blocks may not have attributes. NFC.

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

9 years agoDriver: hoist an assertion
Saleem Abdulrasool [Fri, 19 Dec 2014 23:56:31 +0000 (23:56 +0000)]
Driver: hoist an assertion

Remove an unnecessary conditional, hoisting the assertion.  Minor style
tweaks/reflowing.  NFC.

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

9 years agoDriver: refactor a local variable
Saleem Abdulrasool [Fri, 19 Dec 2014 23:56:28 +0000 (23:56 +0000)]
Driver: refactor a local variable

Pull out a getToolChain() into a local variable to share the call across to all
the uses.  NFC.

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

9 years agoDon't drop attributes when checking explicit specializations.
Nico Weber [Fri, 19 Dec 2014 23:52:45 +0000 (23:52 +0000)]
Don't drop attributes when checking explicit specializations.

Consider a template class with attributes on a method, and an explicit
specialization of that method:

    template <int>
    struct A {
      void foo() final;
    };

    template <>
    void A<0>::foo() {}

In this example, the attribute is `final`, but it might also be an
__attribute__((visibility("foo"))), noreturn, inline, etc. clang's current
behavior is to strip all attributes, which for some attributes is wrong
(the snippet above allows a subclass of A<0> to override the final method, for
example) and for others disagrees with gcc.

So stop dropping attributes. r95845 added this code without a test case, and
r176728 added the code for dropping attributes on parameters (with tests, but
they still pass).

As an additional wrinkle, do drop dllimport and dllexport, since that's how
these two attributes work. (This is covered by existing tests.)

Fixes PR21942.

The approach is by Richard Smith, initial analysis and typing was done by me.

With this, clang also matches GCC and EDG on all attributes Richard tested.

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

9 years agoTweak the assert in ModuleBuilder from r224533 (PR21989)
Hans Wennborg [Fri, 19 Dec 2014 23:35:11 +0000 (23:35 +0000)]
Tweak the assert in ModuleBuilder from r224533 (PR21989)

Turns out there will be left-over deferred inline methods if there have
been errors, because in that case HandleTopLevelDecl bails out early.

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

9 years agoDR1048: drop top-level cv-qualifiers when deducing the return type of a
Richard Smith [Fri, 19 Dec 2014 22:10:51 +0000 (22:10 +0000)]
DR1048: drop top-level cv-qualifiers when deducing the return type of a
lambda-expression in C++11, to match the C++14 rules.

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

9 years agoAllow to disable all sanitizers with "-fno-sanitize=all" option.
Alexey Samsonov [Fri, 19 Dec 2014 18:41:43 +0000 (18:41 +0000)]
Allow to disable all sanitizers with "-fno-sanitize=all" option.

Summary:
This patch adds "all" sanitizer group. A shortcut "-fno-sanitize=all"
can be used to disable all sanitizers for a given source file.

"-fsanitize=all" option makes no sense, and will produce an error.

This group can also be useful when we add "-fsanitize-recover=<list>"
options (patch in http://reviews.llvm.org/D6302), as it would allow
to conveniently enable/disable recovery for all specified sanitizers.

Test Plan: regression test suite

Reviewers: kcc, rsmith

Subscribers: cfe-commits

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

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

9 years agoAdded a fixit to remove empty parens from a C++11 attribute argument list when we...
Aaron Ballman [Fri, 19 Dec 2014 18:37:22 +0000 (18:37 +0000)]
Added a fixit to remove empty parens from a C++11 attribute argument list when we diagnose this as an error.

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

9 years agoFix an address space id reset with array decay's
Pekka Jaaskelainen [Fri, 19 Dec 2014 18:04:27 +0000 (18:04 +0000)]
Fix an address space id reset with array decay's
implicit conversion.

The issue was produced with OpenCL C code that
called a function with a constant string literal
argument.

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

9 years agoUse ObjCMultipleMethodNames to match the option.
Fariborz Jahanian [Fri, 19 Dec 2014 16:55:51 +0000 (16:55 +0000)]
Use ObjCMultipleMethodNames to match the option.

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

9 years agoAttributes accepting an EnumArgument are allowed to pass a string literal, or an...
Aaron Ballman [Fri, 19 Dec 2014 16:42:04 +0000 (16:42 +0000)]
Attributes accepting an EnumArgument are allowed to pass a string literal, or an identifier. VariadicEnumArguments now behave consistently instead of only accepting a string literal.

This change affects the only attribute accepting a variadic enumeration: callable_when.

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

9 years agoPutting unevaluated expression warnings, and evaluated typeid warnings, under their...
Aaron Ballman [Fri, 19 Dec 2014 14:56:49 +0000 (14:56 +0000)]
Putting unevaluated expression warnings, and evaluated typeid warnings, under their own warning flags. Amends r224465.

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

9 years ago[Sanitizer] Get rid of parseArgument helper function. NFC.
Alexey Samsonov [Fri, 19 Dec 2014 02:35:16 +0000 (02:35 +0000)]
[Sanitizer] Get rid of parseArgument helper function. NFC.

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

9 years agoFix layering violation, Lex shouldn't know about Decl
David Majnemer [Fri, 19 Dec 2014 02:13:56 +0000 (02:13 +0000)]
Fix layering violation, Lex shouldn't know about Decl

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

9 years agoPR21969: Improve diagnostics for a conversion function that has any pieces of a
Richard Smith [Fri, 19 Dec 2014 02:07:47 +0000 (02:07 +0000)]
PR21969: Improve diagnostics for a conversion function that has any pieces of a
declared return type (including a trailing-return-type in C++14).

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

9 years agoCorrect delayed typos in the operand to typeof expressions.
Kaelyn Takata [Fri, 19 Dec 2014 01:28:40 +0000 (01:28 +0000)]
Correct delayed typos in the operand to typeof expressions.

Fixes PR21947.

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

9 years agoFix a typo.
Adrian Prantl [Fri, 19 Dec 2014 01:02:11 +0000 (01:02 +0000)]
Fix a typo.

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

9 years ago[c Sema]. Patch fixes pointer-bool-conversion warning on C code
Fariborz Jahanian [Thu, 18 Dec 2014 23:14:51 +0000 (23:14 +0000)]
[c Sema]. Patch fixes pointer-bool-conversion warning on C code
when source range is incorrect causing the warning to be
issued when it should not because expression is in a macro.
rdar://19256338

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

9 years agoRevert "Change -save-temps to emit unoptimized bitcode files."
Reid Kleckner [Thu, 18 Dec 2014 23:07:04 +0000 (23:07 +0000)]
Revert "Change -save-temps to emit unoptimized bitcode files."

This reverts commit r224503.

It broke compilation of fortran through the Clang driver. Previously
`clang -c t.f` would invoke `gcc t.f` and `clang -cc1as`, but now it
tries to call `clang -cc1 t.f` which fails for obvious reasons.

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

9 years ago[CMake] Add check-asan-dynamic command to external compiler-rt setup.
Alexey Samsonov [Thu, 18 Dec 2014 21:40:39 +0000 (21:40 +0000)]
[CMake] Add check-asan-dynamic command to external compiler-rt setup.

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

9 years agoObjective-C. Provide group name for warning
Fariborz Jahanian [Thu, 18 Dec 2014 19:41:11 +0000 (19:41 +0000)]
Objective-C. Provide group name for warning
on multiple selector names found during lookup.
rdar://19265296

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

9 years agoModuleBuilder: assert that all deferred inline method defs get handled
Hans Wennborg [Thu, 18 Dec 2014 19:19:00 +0000 (19:19 +0000)]
ModuleBuilder: assert that all deferred inline method defs get handled

While we're here, also move the declaration of DeferredInlineMethodDefinitions
closer to the other member vars and make it a SmallVector. NFC.

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

9 years agoRevert "Don't build invalid AST nodes during recovery"
Reid Kleckner [Thu, 18 Dec 2014 18:17:42 +0000 (18:17 +0000)]
Revert "Don't build invalid AST nodes during recovery"

This reverts commit r224451. It caused us to reject some valid existing
code.

This code appears to run in non-error cases as well as error cases. If
the scope of a DependentScopeDeclRefExpr is still incomplete it probably
means we still have more instantiation to do.

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

9 years ago[Objective-C]. Patch to unify code generation for ObjCMsgSend and ObjCBoxedExpr.
Fariborz Jahanian [Thu, 18 Dec 2014 17:13:56 +0000 (17:13 +0000)]
[Objective-C]. Patch to unify code generation for ObjCMsgSend and ObjCBoxedExpr.
Patch by Alex Denisov. NFC.

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

9 years agoCorrection to -mfu=neon-vfpv4 to pass the correct backend feature name
Richard Barton [Thu, 18 Dec 2014 16:31:18 +0000 (16:31 +0000)]
Correction to -mfu=neon-vfpv4 to pass the correct backend feature name

Change-Id: I4dbfe1d97670fc4e626368ef1f91fc008778dfca

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

9 years agoEnabling this test again on mingw. The problem seems to happen when
Yaron Keren [Thu, 18 Dec 2014 12:13:14 +0000 (12:13 +0000)]
Enabling this test again on mingw. The problem seems to happen when
two identical module.modulemap are available on the include path and
so should be fixed in the mingw driver include dies, when we'll have it.

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

9 years agoclang-format: Fix incorrect detection of ObjC "in" keyword.
Daniel Jasper [Thu, 18 Dec 2014 12:11:01 +0000 (12:11 +0000)]
clang-format: Fix incorrect detection of ObjC "in" keyword.

Before:
  for (auto v : in [1]) { ..

After:
  for (auto v : in[1]) { ..

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

9 years agoFixed warnings on redefine keywords and reserved ids.
Serge Pavlov [Thu, 18 Dec 2014 11:14:21 +0000 (11:14 +0000)]
Fixed warnings on redefine keywords and reserved ids.

Repared support for warnings -Wkeyword-macro and -Wreserved-id-macro.
The warning -Wkeyword-macro now is not issued in patterns that are used
in configuration scripts:

    #define inline

also for 'const', 'extern' and 'static'. If macro repalcement is identical
to macro name, the warning also is not issued:

    #define volatile volatile

And finally if macro replacement is also a keyword identical to the replaced
one but decorated with leading/trailing underscores:

    #define inline __inline
    #define inline __inline__
    #define inline _inline // in MSVC compatibility mode

Warning -Wreserved-id-macro is off by default, it could help catching
things like:

    #undef __cplusplus

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

9 years agoParse: Don't parse after the eof has been consumed
David Majnemer [Thu, 18 Dec 2014 09:57:31 +0000 (09:57 +0000)]
Parse: Don't parse after the eof has been consumed

ParseCXXNonStaticMemberInitializer stashes away all the tokens for the
initializer and an additional EOF token to denote where the initializer
ends.  However, it is possible for ParseLexedMemberInitializer to get
its hands on the "real" EOF token; since the two tokens are
indistinguishable, we end up consuming the EOF and descend into madness.

Instead, make it possible to tell which EOF token we are looking at.

This fixes PR21872.

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

9 years agoFix for PR21915: assert on multidimensional VLA in function arguments.
Alexey Bataev [Thu, 18 Dec 2014 06:54:53 +0000 (06:54 +0000)]
Fix for PR21915: assert on multidimensional VLA in function arguments.
Fixed assertion on type checking for arguments and parameters on function call if arguments are pointers to VLA
Differential Revision: http://reviews.llvm.org/D6655

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

9 years agoChange -save-temps to emit unoptimized bitcode files.
Bob Wilson [Thu, 18 Dec 2014 06:08:26 +0000 (06:08 +0000)]
Change -save-temps to emit unoptimized bitcode files.

It is often convenient to use -save-temps to collect the intermediate
results of a compilation, e.g., when triaging a bug report. Besides the
temporary files for preprocessed source and assembly code, this adds the
unoptimized bitcode files as well.

This adds a new BackendJobAction, which is mostly mechanical, to run after
the CompileJobAction. When not using -save-temps, the BackendJobAction is
combined into one job with the CompileJobAction, similar to the way the
integrated assembler is handled. I've implemented this entirely as a
driver change, so under the hood, it is just using -disable-llvm-optzns
to get the unoptimized bitcode.

Based in part on a patch by Steven Wu.
rdar://problem/18909437

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

9 years agoUpdate for llvm front end change and use the TargetOptions struct
Eric Christopher [Thu, 18 Dec 2014 02:23:27 +0000 (02:23 +0000)]
Update for llvm front end change and use the TargetOptions struct
for ABI.

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

9 years agoMake sure that arm-linux-gnu is still the apcs-gnu ABI when we
Eric Christopher [Thu, 18 Dec 2014 02:08:55 +0000 (02:08 +0000)]
Make sure that arm-linux-gnu is still the apcs-gnu ABI when we
use clang -cc1 matching the front end and backend. Fix up a couple
of tests that were testing aapcs for arm-linux-gnu.

The test that removes the aapcs abi calling convention removes
them because the default triple matches what the backend uses
for the calling convention there and so it doesn't need to be
explicitly stated - see the code in TargetInfo.cpp.

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

9 years agoReinstate aapcs as the default arm abi.
Eric Christopher [Thu, 18 Dec 2014 02:08:51 +0000 (02:08 +0000)]
Reinstate aapcs as the default arm abi.

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

9 years agoCGDebugInfo: Use DIBuilder API for self-referencing DICompositeTypes
Duncan P. N. Exon Smith [Thu, 18 Dec 2014 00:48:56 +0000 (00:48 +0000)]
CGDebugInfo: Use DIBuilder API for self-referencing DICompositeTypes

Use new `DIBuilder` API from LLVM r224482 to mutate `DICompositeType`s,
rather than changing them directly.  This allows `DIBuilder` to track
otherwise orphaned cycles when `CollectContainingType()` creates a
self-reference.

Fixes PR21941.

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

9 years agoFix diagnostic for static methods referencing fields from using decls
Reid Kleckner [Thu, 18 Dec 2014 00:42:51 +0000 (00:42 +0000)]
Fix diagnostic for static methods referencing fields from using decls

Previously we thought the instance member was a function, not a field,
and we'd say something silly like:
  t.cpp:4:27: error: call to non-static member function without an object argument
    static int f() { return n; }
                            ^

Noticed in PR21923.

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

9 years ago[Objective-C]. Modern property getters have side-effects.
Fariborz Jahanian [Thu, 18 Dec 2014 00:30:54 +0000 (00:30 +0000)]
[Objective-C]. Modern property getters have side-effects.
So, place warning about property getter should not be used for side-effect
under its own group so warning can be turned off.
rdar://19137815

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

9 years agoFix a function that only calls itself. The const_cast needs to remove the
Richard Trieu [Thu, 18 Dec 2014 00:06:45 +0000 (00:06 +0000)]
Fix a function that only calls itself.  The const_cast needs to remove the
const so that the other overloaded function will be called.

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

9 years agoInstrProf: Simplify/reduce state in CoverageMapping (NFC)
Justin Bogner [Wed, 17 Dec 2014 23:55:04 +0000 (23:55 +0000)]
InstrProf: Simplify/reduce state in CoverageMapping (NFC)

This state object makes things harder to reason about and isn't really
useful, since we can just emit the mappings before the state changes
rather than holding on to it.

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

9 years agoRevert "Put static local variables of inline functions in the function comdat."
Rafael Espindola [Wed, 17 Dec 2014 23:49:22 +0000 (23:49 +0000)]
Revert "Put static local variables of inline functions in the function comdat."

This reverts commit r224369.

Thanks to Reid Kleckner for pointing out that we need a bigger gun to fix this
case.

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

9 years agoDon't assume friended C++ method decls have qualifiers
Reid Kleckner [Wed, 17 Dec 2014 23:40:46 +0000 (23:40 +0000)]
Don't assume friended C++ method decls have qualifiers

There are a few cases where unqualified lookup can find C++ methods.
Unfortunately, none of them seem to have illegal access paths, so I
can't excercise the diagnostic source range code that I am changing
here.

Fixes PR21851, which was a crash on valid.

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

9 years agoAdding a -Wunused-value warning for expressions with side effects used in an unevalua...
Aaron Ballman [Wed, 17 Dec 2014 21:57:17 +0000 (21:57 +0000)]
Adding a -Wunused-value warning for expressions with side effects used in an unevaluated expression context, such as sizeof(), or decltype(). Also adds a similar warning when the expression passed to typeid() *is* evaluated, since it is equally likely that the user would expect the expression operand to be unevaluated in that case.

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

9 years ago[sanitizer] allow -fsanitize-coverage=N w/ -fsanitize=leak, clang part
Kostya Serebryany [Wed, 17 Dec 2014 21:46:33 +0000 (21:46 +0000)]
[sanitizer] allow -fsanitize-coverage=N w/ -fsanitize=leak, clang part

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

9 years ago[c++1z] Fixes for generalized non-type template argument support: check for
Richard Smith [Wed, 17 Dec 2014 20:42:37 +0000 (20:42 +0000)]
[c++1z] Fixes for generalized non-type template argument support: check for
exact type match for deduced template arguments, and be sure to produce correct
canonical TemplateArgument representations to enable correct redeclaration
matching.

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

9 years agoDestroy the diagnostic client first in ~DiagnosticEngine
Reid Kleckner [Wed, 17 Dec 2014 20:23:11 +0000 (20:23 +0000)]
Destroy the diagnostic client first in ~DiagnosticEngine

Add a comment and a test to ~DiagnosticEngine about the ordering
requirements on the teardown of DiagnosticConsumer. This could also be
accomplished by rearranging the fields of ~DiagnosticEngine, but I felt
that this was a better, more explicit solution.

This fixes PR21911, an issue that occurred after the unique_ptr
migration in r222193.

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

9 years agoThis test does not pass for -target i686-pc-windows-gnu (-mingw32)
Yaron Keren [Wed, 17 Dec 2014 20:12:29 +0000 (20:12 +0000)]
This test does not pass for -target i686-pc-windows-gnu (-mingw32)
when clang is built with mingw-w64 4.9.1 or according to
http://llvm.org/PR20995  , mingw-w64 4.7.2 as well.

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

9 years agoDon't build invalid AST nodes during recovery
Reid Kleckner [Wed, 17 Dec 2014 19:34:15 +0000 (19:34 +0000)]
Don't build invalid AST nodes during recovery

A DependentScopeDeclRefExpr should always have a nested name specifier.
During template instantiation, if we found that the named context was
incomplete, we would previously build a DependentScopeDeclRefExpr with
an empty qualifier.

This error recovery path has been asserting for some time. The other
error codepaths use ExprError, so we can do the same.

Fixes PR21864.

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

9 years agoSupport constant evaluation for member calls on std::initializer_list
Richard Smith [Wed, 17 Dec 2014 19:24:30 +0000 (19:24 +0000)]
Support constant evaluation for member calls on std::initializer_list
temporaries.

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

9 years agoRevert "DebugInfo: Generalize debug info location handling"
David Blaikie [Wed, 17 Dec 2014 18:02:04 +0000 (18:02 +0000)]
Revert "DebugInfo: Generalize debug info location handling"

Fails an ASan bootstrap - I'll try to reproduce locally & sort that out
before recommitting.

This reverts commit r224385.

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

9 years agoBasic: clean up bleeding whitespace
Saleem Abdulrasool [Wed, 17 Dec 2014 17:52:33 +0000 (17:52 +0000)]
Basic: clean up bleeding whitespace

Whitespace cleanup.  NFC.

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

9 years agoCodeGen: implement __emit intrinsic
Saleem Abdulrasool [Wed, 17 Dec 2014 17:52:30 +0000 (17:52 +0000)]
CodeGen: implement __emit intrinsic

For MSVC compatibility, add the `__emit' builtin. This is used in the Windows
SDK headers, and must therefore be implemented as a builtin rather than an
intrinsic.

The `__emit' builtin provides a mechanism to emit a 16-bit opcode instruction
into the stream. The value must be a compile time constant expression. No
guarantees are made about the CPU and memory states after the execution of the
instruction.

Due to the unchecked nature of the builtin, only support this on Windows on ARM.

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

9 years agoRevert r224433, r224371 is good enough for now.
Joerg Sonnenberger [Wed, 17 Dec 2014 17:14:11 +0000 (17:14 +0000)]
Revert r224433, r224371 is good enough for now.

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

9 years agoRangify for loop, NFC.
Yaron Keren [Wed, 17 Dec 2014 16:56:54 +0000 (16:56 +0000)]
Rangify for loop, NFC.

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

9 years agoDisable the keyword-as-macro warning for now until the noise level is
Joerg Sonnenberger [Wed, 17 Dec 2014 16:25:45 +0000 (16:25 +0000)]
Disable the keyword-as-macro warning for now until the noise level is
reduced.

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

9 years agos/ScheduleKind/SchedKind/ in \param. [-Wdocumentation]
NAKAMURA Takumi [Wed, 17 Dec 2014 14:47:06 +0000 (14:47 +0000)]
s/ScheduleKind/SchedKind/ in \param. [-Wdocumentation]

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

9 years agoExclude printLineState() in -Asserts. [-Wunused-function]
NAKAMURA Takumi [Wed, 17 Dec 2014 14:46:56 +0000 (14:46 +0000)]
Exclude printLineState() in -Asserts. [-Wunused-function]

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

9 years ago[mips] Always clobber $1 for MIPS inline asm.
Toma Tabacu [Wed, 17 Dec 2014 12:02:58 +0000 (12:02 +0000)]
[mips] Always clobber $1 for MIPS inline asm.

Summary:
Because GCC doesn't use $1 for code generation, inline assembly code can use $1 without having to add it to the clobbers list.

LLVM, on the other hand, does not shy away from using $1, and this can cause conflicts with inline assembly which assumes GCC-like code generation.

A solution to this problem is to make Clang automatically clobber $1 for all MIPS inline assembly.
This is not the optimal solution, but it seems like a necessary compromise, for now.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: cfe-commits

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

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

9 years agoTeach compile_commands.json test that windows-gnu is the new name for mingw32.
Yaron Keren [Wed, 17 Dec 2014 11:04:07 +0000 (11:04 +0000)]
Teach compile_commands.json test that windows-gnu is the new name for mingw32.

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

9 years agoTeach lit.cfg to recognize -windows-gnu in addition to -mingw32.
Yaron Keren [Wed, 17 Dec 2014 09:55:15 +0000 (09:55 +0000)]
Teach lit.cfg to recognize -windows-gnu in addition to -mingw32.

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

9 years agoclang-format: Fix incorrect calculation of token lenghts.
Daniel Jasper [Wed, 17 Dec 2014 09:11:08 +0000 (09:11 +0000)]
clang-format: Fix incorrect calculation of token lenghts.

This led, e.g. to break JavaScript regex literals too early.

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

9 years agoSema: Don't dyn_cast a null pointer in CheckUsingDeclQualifier
David Majnemer [Wed, 17 Dec 2014 02:41:36 +0000 (02:41 +0000)]
Sema: Don't dyn_cast a null pointer in CheckUsingDeclQualifier

This code was written with the intent that a pointer could be null but
we dyn_cast'd it anyway.  Change the dyn_cast to a dyn_cast_or_null.

This fixes PR21933.

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

9 years agoParse: Consume tokens more carefully in CheckForLParenAfterColonColon
David Majnemer [Wed, 17 Dec 2014 01:39:22 +0000 (01:39 +0000)]
Parse: Consume tokens more carefully in CheckForLParenAfterColonColon

We would consume the lparen even if it wasn't followed by an identifier
or a star-identifier pair.

This fixes PR21815.

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

9 years agoAdd missing testcase from r224388.
Richard Smith [Wed, 17 Dec 2014 01:08:39 +0000 (01:08 +0000)]
Add missing testcase from r224388.

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

9 years ago[CallGraph] Make sure the edges are not missed due to re-declarations
Anna Zaks [Wed, 17 Dec 2014 00:34:07 +0000 (00:34 +0000)]
[CallGraph] Make sure the edges are not missed due to re-declarations

A patch by Daniel DeFreez!

We were previously dropping edges on re-declarations. Store the
canonical declarations in the graph to ensure that different
references to the same function end up reflected with the same call graph
node.

(Note, this might lead to performance fluctuation because call graph
is used to determine the function analysis order.)

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

9 years agoPR21909: Don't try (and crash) to generate debug info for explicit instantiations...
David Blaikie [Tue, 16 Dec 2014 23:49:18 +0000 (23:49 +0000)]
PR21909: Don't try (and crash) to generate debug info for explicit instantiations of explicit specializations.

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

9 years agoDR1684: a constexpr member function need not be a member of a literal class type.
Richard Smith [Tue, 16 Dec 2014 23:12:52 +0000 (23:12 +0000)]
DR1684: a constexpr member function need not be a member of a literal class type.

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

9 years agoTry typo correction on all initialization arguments and be less
Kaelyn Takata [Tue, 16 Dec 2014 23:07:00 +0000 (23:07 +0000)]
Try typo correction on all initialization arguments and be less
pessimistic about when to do so.

This also fixes PR21905 as the initialization argument was no longer
viewed as being type dependent due to the TypoExpr being type-cast.

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

9 years agoDebugInfo: Generalize debug info location handling
David Blaikie [Tue, 16 Dec 2014 22:49:17 +0000 (22:49 +0000)]
DebugInfo: Generalize debug info location handling

This is a more scalable (fixed in mostly one place, rather than many
places that will need constant improvement/maintenance) solution to
several commits I've made recently to increase source fidelity for
subexpressions.

This resetting had to be done at the DebugLoc level (not the
SourceLocation level) to preserve scoping information (if the resetting
was done with CGDebugInfo::EmitLocation, it would've caused the tail end
of an expression's codegen to end up in a potentially different scope
than the start, even though it was at the same source location). The
drawback to this is that it might leave CGDebugInfo out of sync. Ideally
CGDebugInfo shouldn't have a duplicate sense of the current
SourceLocation, but for now it seems it does... - I don't think I'm
going to tackle removing that just now.

I expect this'll probably cause some more buildbot fallout & I'll
investigate that as it comes up.

Also these sort of improvements might be starting to show a weakness/bug
in LLVM's line table handling: we don't correctly emit is_stmt for
statements, we just put it on every line table entry. This means one
statement split over multiple lines appears as multiple 'statements' and
two statements on one line (without column info) are treated as one
statement.

I don't think we have any IR representation of statements that would
help us distinguish these cases and identify the beginning of each
statement - so that might be something we need to add (possibly to the
lexical scope chain - a scope for each statement). This does cause some
problems for GDB and possibly other DWARF consumers.

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

9 years agoLook at whether TransformTypos returned a different Expr instead of looking at the...
Nick Lewycky [Tue, 16 Dec 2014 22:02:06 +0000 (22:02 +0000)]
Look at whether TransformTypos returned a different Expr instead of looking at the number of uncorrected typos before and after. Correcting one typo may produce an expression with another TypoExpr in it, leading to matching counts even though a typo was corrected.

Fixes PR21925!

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

9 years agoFix handling of invalid -O options.
Rafael Espindola [Tue, 16 Dec 2014 21:57:03 +0000 (21:57 +0000)]
Fix handling of invalid -O options.

We were checking the value after truncating it to a bitfield.

Thanks to Yunzhong Gao for noticing it.

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

9 years agoFix typo in comment. NFC.
Nick Lewycky [Tue, 16 Dec 2014 21:48:39 +0000 (21:48 +0000)]
Fix typo in comment. NFC.

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

9 years agoAdd a new flag, -fspell-checking-limit=<number> to control how many times we'll do...
Nick Lewycky [Tue, 16 Dec 2014 21:39:02 +0000 (21:39 +0000)]
Add a new flag, -fspell-checking-limit=<number> to control how many times we'll do spell checking. Note that spell checking will change the produced AST, so we don't automatically change this value when someone sets -ferror-limit=. With this, merge test typo-correction-pt2.cpp into typo-correction.cpp.

Remove Sema::UnqualifiedTyposCorrected, a cache of corrected typos. It would only cache typo corrections that didn't provide ValidateCandidate of which there were few left, and it had a bug when we had the same identifier spelled wrong twice. See the last two tests in typo-correction.cpp for cases this fires.

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

9 years agoMove -Wkeyword-macro into -pedantic, remove -Wreserved-id-macro.
Nico Weber [Tue, 16 Dec 2014 21:16:10 +0000 (21:16 +0000)]
Move -Wkeyword-macro into -pedantic, remove -Wreserved-id-macro.

As discussed on the post-commit review thread for r224012, -Wkeyword-macro fires
mostly on headers trying to set up portable defines and doesn't find much bad
stuff in practice.  But [macro.names]p2 does disallow defining or undefining
keywords, override and final, and alignas, so keep the warning but move it
into -pedantic.

-Wreserved-id-macro warns on

    #define __need_size_t

which is more or less public api for glibc headers. Since this warning isn't
motivated by a standard, remove it.

(See also r223114 for a previous follow-up to r224012.)

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

9 years agoPut static local variables of inline functions in the function comdat.
Rafael Espindola [Tue, 16 Dec 2014 21:00:30 +0000 (21:00 +0000)]
Put static local variables of inline functions in the function comdat.

The variable (and the GV) is only ever used if the function is. Putting it
in the function's comdat make it easier for the linker to discard them.

The motivating example is

struct S {
  static const int x;
};
// const int S::x = 42;
inline const int *f() {
  static const int y = S::x;
  return &y;
}
const int *g() { return f(); }

With S::x commented out, _ZZ1fvE1y is a variable with a guard variable
that is initialized by f.

With S::x present, _ZZ1fvE1y is a constant.

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

9 years agoConsider calls from implict host device functions as valid in SemaCUDA.
Jacques Pienaar [Tue, 16 Dec 2014 20:12:38 +0000 (20:12 +0000)]
Consider calls from implict host device functions as valid in SemaCUDA.

In SemaCUDA all implicit functions were considered host device, this led to
errors such as the following code snippet failing to compile:

struct Copyable {
  const Copyable& operator=(const Copyable& x) { return *this; }
};

struct Simple {
  Copyable b;
};

void foo() {
  Simple a, b;

  a = b;
}

Above the implicit copy assignment operator was inferred as host device but
there was only a host assignment copy defined which is an error in device
compilation mode.

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

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

9 years agoRenamed RefersToEnclosingLocal bitfield to RefersToCapturedVariable.
Alexey Bataev [Tue, 16 Dec 2014 08:01:48 +0000 (08:01 +0000)]
Renamed RefersToEnclosingLocal bitfield to RefersToCapturedVariable.
Bitfield RefersToEnclosingLocal of Stmt::DeclRefExprBitfields renamed to RefersToCapturedVariable to reflect latest changes introduced in commit 224323. Also renamed method Expr::refersToEnclosingLocal() to Expr::refersToCapturedVariable() and comments for constant arguments.
No functional changes.

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

9 years ago[OPENMP] Bugfix for processing of global variables in OpenMP regions.
Alexey Bataev [Tue, 16 Dec 2014 07:00:22 +0000 (07:00 +0000)]
[OPENMP] Bugfix for processing of global variables in OpenMP regions.
Currently, if global variable is marked as a private OpenMP variable, the compiler crashes in debug version or generates incorrect code in release version. It happens because in the OpenMP region the original global variable is used instead of the generated private copy. It happens because currently globals variables are not captured in the OpenMP region.
This patch adds capturing of global variables iff private copy of the global variable must be used in the OpenMP region.
Differential Revision: http://reviews.llvm.org/D6259

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

9 years agoSema: Don't crash converting to bool from _Atomic
David Majnemer [Tue, 16 Dec 2014 06:31:17 +0000 (06:31 +0000)]
Sema: Don't crash converting to bool from _Atomic

Turning our _Atomic L-value into an R-value removes its _Atomic-ness.
However, we didn't update our 'FromType' which made
ScalarTypeToBooleanCastKind think we were trying to pass it a
non-scalar.

This fixes PR21836.

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

9 years agoImprove handling of value dependent expressions in __attribute__((enable_if)), both...
Nick Lewycky [Tue, 16 Dec 2014 06:12:01 +0000 (06:12 +0000)]
Improve handling of value dependent expressions in __attribute__((enable_if)), both in the condition expression and at the call site. Fixes PR20988!

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

9 years agoAST: Fix the linkage of static vars in fn template specializations
David Majnemer [Tue, 16 Dec 2014 04:52:14 +0000 (04:52 +0000)]
AST: Fix the linkage of static vars in fn template specializations

We that static variables in function template specializations were
externally visible.  The manglers assumed that externally visible static
variables were numbered in Sema.  We would end up mangling static
variables in the same specialization with the same mangling number which
would give all of them the same name.

This fixes PR21904.

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