]> granicus.if.org Git - clang/log
clang
11 years ago[analyzer] Don't include Clang headers inside a namespace.
Jordan Rose [Tue, 27 Aug 2013 16:59:26 +0000 (16:59 +0000)]
[analyzer] Don't include Clang headers inside a namespace.

Found by Gabor Kozar!

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

11 years agoWarn that -O4 is the same as -O3.
Rafael Espindola [Tue, 27 Aug 2013 16:58:15 +0000 (16:58 +0000)]
Warn that -O4 is the same as -O3.

We error on -O5 and higher. While it is tempting to do the same for -O4, I
agree with Jordan Rose: we should warn for a release at least first.

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

11 years agoRevert "Add support for eachOf/allOf/anyOf variadic matchers in the dynamic layer."
Samuel Benzaquen [Tue, 27 Aug 2013 16:55:22 +0000 (16:55 +0000)]
Revert "Add support for eachOf/allOf/anyOf variadic matchers in the dynamic layer."

Summary:
This reverts commit 3b082a3c72324aa3363b5184731740534c6b9a2b.

It breaks the build in c++11 mode.

Reviewers: klimek

CC: cfe-commits, revane
Differential Revision: http://llvm-reviews.chandlerc.com/D1533

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

11 years agoAdd support for eachOf/allOf/anyOf variadic matchers in the dynamic layer.
Samuel Benzaquen [Tue, 27 Aug 2013 16:04:53 +0000 (16:04 +0000)]
Add support for eachOf/allOf/anyOf variadic matchers in the dynamic layer.

Summary:
Add support for eachOf/allOf/anyOf variadic matchers in the dynamic layer.
These function require some late binding behavior for the type conversions, thus changes in VariadicValue's MatcherList.

Reviewers: klimek

CC: cfe-commits, revane
Differential Revision: http://llvm-reviews.chandlerc.com/D1531

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

11 years agoAdding a vector version of clang::tooling::shiftedCodePosition().
Edwin Vane [Tue, 27 Aug 2013 15:44:26 +0000 (15:44 +0000)]
Adding a vector version of clang::tooling::shiftedCodePosition().

During the transition of clang::tooling::Replacements from std::set to
std::vector, functions such as clang::tooling::applyAllReplacements() have been
duplicated to take a std::vector<Replacement>. Applying this same temporary
duplication to clang::tooling::shiftedCodePosition().

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

11 years agoRewrite eachOf/allOf/anyOf to use a variadic operator.
Samuel Benzaquen [Tue, 27 Aug 2013 15:11:16 +0000 (15:11 +0000)]
Rewrite eachOf/allOf/anyOf to use a variadic operator.

Summary:
Rewrite eachOf/allOf/anyOf to use a variadic operator, instead of hand-written calls to Polymorphic matchers.
This simplifies their definition and future changes to add them to the dynamic registry.

Reviewers: klimek

CC: cfe-commits, revane
Differential Revision: http://llvm-reviews.chandlerc.com/D1427

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

11 years agoclang-format: Format segments of builder-type calls one per line.
Daniel Jasper [Tue, 27 Aug 2013 14:24:43 +0000 (14:24 +0000)]
clang-format: Format segments of builder-type calls one per line.

This fixes llvm.org/PR14818.

Before:
  return llvm::StringSwitch<Reference::Kind>(name)
             .StartsWith(".eh_frame_hdr", ORDER_EH_FRAMEHDR)
             .StartsWith(".eh_frame", ORDER_EH_FRAME)
             .StartsWith(".init", ORDER_INIT).StartsWith(".fini", ORDER_FINI)
             .StartsWith(".hash", ORDER_HASH).Default(ORDER_TEXT);

After:
  return llvm::StringSwitch<Reference::Kind>(name)
             .StartsWith(".eh_frame_hdr", ORDER_EH_FRAMEHDR)
             .StartsWith(".eh_frame", ORDER_EH_FRAME)
             .StartsWith(".init", ORDER_INIT)
             .StartsWith(".fini", ORDER_FINI)
             .StartsWith(".hash", ORDER_HASH)
             .Default(ORDER_TEXT);

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

11 years agoCleanup of OpaquePtr. No functionality changes.
Serge Pavlov [Tue, 27 Aug 2013 13:15:56 +0000 (13:15 +0000)]
Cleanup of OpaquePtr. No functionality changes.
- Some documenation were added.
- Usages of OpaquePtr<A>.getAsVal<A>() were replaced by OpaquePtr<A>.get().
- Methods getAs and getAsVal were renamed to getPtrTo and getPtrAs respectively.

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

11 years agoAdding const buffer iterator generators to Rewriter
Edwin Vane [Tue, 27 Aug 2013 13:00:34 +0000 (13:00 +0000)]
Adding const buffer iterator generators to Rewriter

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

11 years agoclang-format: Revamp builder-type call formatting.
Daniel Jasper [Tue, 27 Aug 2013 11:09:05 +0000 (11:09 +0000)]
clang-format: Revamp builder-type call formatting.

Previously builder-type calls were only correctly recognized in
top-level calls.

This fixes llvm.org/PR16981.
Before:
  someobj->Add((new util::filetools::Handler(dir))->OnEvent1(
      NewPermanentCallback(this, &HandlerHolderClass::EventHandlerCBA))
                   ->OnEvent2(NewPermanentCallback(
                                  this, &HandlerHolderClass::EventHandlerCBB))
                   ->OnEvent3(NewPermanentCallback(
                                  this, &HandlerHolderClass::EventHandlerCBC))
                   ->OnEvent5(NewPermanentCallback(
                                  this, &HandlerHolderClass::EventHandlerCBD))
                   ->OnEvent6(NewPermanentCallback(
                         this, &HandlerHolderClass::EventHandlerCBE)));

After:
  someobj->Add((new util::filetools::Handler(dir))
                   ->OnEvent1(NewPermanentCallback(
                         this, &HandlerHolderClass::EventHandlerCBA))
                   ->OnEvent2(NewPermanentCallback(
                         this, &HandlerHolderClass::EventHandlerCBB))
                   ->OnEvent3(NewPermanentCallback(
                         this, &HandlerHolderClass::EventHandlerCBC))
                   ->OnEvent5(NewPermanentCallback(
                         this, &HandlerHolderClass::EventHandlerCBD))
                   ->OnEvent6(NewPermanentCallback(
                         this, &HandlerHolderClass::EventHandlerCBE)));

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

11 years ago[-cxx-abi microsoft] Change the vdtor implicit should_call_delete argument type to int
Timur Iskhodzhanov [Tue, 27 Aug 2013 10:38:19 +0000 (10:38 +0000)]
[-cxx-abi microsoft] Change the vdtor implicit should_call_delete argument type to int

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

11 years agoclang-format: Fix bug in column layout.
Daniel Jasper [Tue, 27 Aug 2013 08:43:47 +0000 (08:43 +0000)]
clang-format: Fix bug in column layout.

Before (with 60 character limit in Google style):
  return {
      {aaaaaaaaaaaaaaaaaaaaaaaaa}, {aaaaaaaaaaaaaaaaa},
      {aaaaaaaaaaaaaaaaaaaaaaaaa}, {aaaaaaaaaaaaaaaaa}};
After:
  return {{aaaaaaaaaaaaaaaaaaaaaaaaa}, {aaaaaaaaaaaaaaaaa},
          {aaaaaaaaaaaaaaaaaaaaaaaaa}, {aaaaaaaaaaaaaaaaa}};

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

11 years ago[-cxx-abi microsoft] Remove ArgIndex, we handle all template argument kinds!
David Majnemer [Tue, 27 Aug 2013 08:21:25 +0000 (08:21 +0000)]
[-cxx-abi microsoft] Remove ArgIndex, we handle all template argument kinds!

TemplateExpansion cannot happen here because MSVC doesn't mangle
anything but the fully substituted template arguments.

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

11 years agoPR14569: Omit debug info for thunks
David Blaikie [Tue, 27 Aug 2013 05:21:11 +0000 (05:21 +0000)]
PR14569: Omit debug info for thunks

This was added in r166676 based on PR13942 on the basis that tools may
need debug information for any executable code/function for some fairly
broad/non-specific purposes. It seems to me (as noted in PR14569) that
the major/only purpose is in backtraces, which should generally not
apply to thunks as they won't appear in the stack themselves. By
removing them we fix PR14569 and reduce the size of Clang's debug info.

Strangely enough this doesn't seem to have a substantial impact on
Clang's self-hosted debug info (at least looking at DWO file size) size
at all. Not sure if I failed to test this correctly but I only observed
a 0.004% change in DWO file size over Clang+LLVM.

With thanks to Dinesh Dwivedi for work on this PR.

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

11 years agoUse set to create CLANG_ORDER_FILE instead of option which implies a bool value.
Michael Gottesman [Tue, 27 Aug 2013 04:40:12 +0000 (04:40 +0000)]
Use set to create CLANG_ORDER_FILE instead of option which implies a bool value.

Patch by Edoardo P. <ed0.88.prez@gmail.com>.

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

11 years agoShow which decls are marked invalid in -ast-dump.
Nick Lewycky [Tue, 27 Aug 2013 03:15:56 +0000 (03:15 +0000)]
Show which decls are marked invalid in -ast-dump.

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

11 years agoItanium mangler: remove "proposal" comments for manglings that are in the
Richard Smith [Tue, 27 Aug 2013 01:03:46 +0000 (01:03 +0000)]
Itanium mangler: remove "proposal" comments for manglings that are in the
latest draft of the ABI.

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

11 years agoR600: Add local address pointer size to DataLayout
Tom Stellard [Tue, 27 Aug 2013 00:55:26 +0000 (00:55 +0000)]
R600: Add local address pointer size to DataLayout

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

11 years agoSimplify a bit.
Rafael Espindola [Mon, 26 Aug 2013 23:23:21 +0000 (23:23 +0000)]
Simplify a bit.

This follows from computeKeyFunction having:

  // Template instantiations don't have key functions,see Itanium C++ ABI 5.2.6.
  // Same behavior as GCC.
  TemplateSpecializationKind TSK = RD->getTemplateSpecializationKind();
  if (TSK == TSK_ImplicitInstantiation ||
      TSK == TSK_ExplicitInstantiationDefinition)
    return 0;

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

11 years agoDebug Info: follow-up patch to r189283.
Manman Ren [Mon, 26 Aug 2013 23:19:37 +0000 (23:19 +0000)]
Debug Info: follow-up patch to r189283.

Thanks David for his suggestion. This commit updates testing cases
to have more specific CHECKs.

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

11 years agoSince r179585, __declspec(property) has gotten special treatment as an attribute...
Aaron Ballman [Mon, 26 Aug 2013 22:49:09 +0000 (22:49 +0000)]
Since r179585, __declspec(property) has gotten special treatment as an attribute where it is not processed as part of the typical Sema attribute functionality.  Specifying this attribute as being "ignored" because there is no sema handler for it as a Decl attribute, and no AST node generated for it.

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

11 years agoDebug Info: add an identifier field to DICompositeType.
Manman Ren [Mon, 26 Aug 2013 22:40:31 +0000 (22:40 +0000)]
Debug Info: add an identifier field to DICompositeType.

Paired with llvm r189282.
Update testing cases to handle an extra field for DICompositeType.

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

11 years agoUse CHECK-DAG in this test.
Rafael Espindola [Mon, 26 Aug 2013 22:10:31 +0000 (22:10 +0000)]
Use CHECK-DAG in this test.

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

11 years agoConsumed analyis: Renamed *PStatus to *PInfo.
DeLesley Hutchins [Mon, 26 Aug 2013 20:34:59 +0000 (20:34 +0000)]
Consumed analyis: Renamed *PStatus to *PInfo.
The change was made for readability, as the PropagationInfo objects don't
always contain a status.  This is submitted as a separate patch because it
touches a lot of lines and I don't want it cluttering up the next patch.
Patch by chris.wailes@gmail.com.

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

11 years agoSimplify/clean up debug info suppression in CodeGenFunction
David Blaikie [Mon, 26 Aug 2013 20:33:21 +0000 (20:33 +0000)]
Simplify/clean up debug info suppression in CodeGenFunction

CodeGenFunction is run on only one function - a new object is made for
each new function. I would add an assertion/flag to this effect, but
there's an exception: ObjC properties involve emitting helper functions
that are all emitted by the same CodeGenFunction object, so such a check
is not possible/correct.

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

11 years agoTest
David Blaikie [Mon, 26 Aug 2013 20:33:16 +0000 (20:33 +0000)]
Test

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

11 years agoHandle predefined expression for a captured statement
Wei Pan [Mon, 26 Aug 2013 14:27:34 +0000 (14:27 +0000)]
Handle predefined expression for a captured statement

- __func__ or __FUNCTION__ returns captured statement's parent
  function name, not the one compiler generated.

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

Reviewed by bkramer

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

11 years agoSimplify now that -O4 just maps to -O3 and -O is an alias of -O2.
Rafael Espindola [Mon, 26 Aug 2013 14:05:41 +0000 (14:05 +0000)]
Simplify now that -O4 just maps to -O3 and -O is an alias of -O2.

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

11 years agoFix virtual destructor mangling when using "-cxx-abi microsoft" on x64
Timur Iskhodzhanov [Mon, 26 Aug 2013 10:32:04 +0000 (10:32 +0000)]
Fix virtual destructor mangling when using "-cxx-abi microsoft" on x64

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

11 years agoTeach the Linux toolchain about more modern Gentoo installations of GCC
Chandler Carruth [Mon, 26 Aug 2013 08:59:53 +0000 (08:59 +0000)]
Teach the Linux toolchain about more modern Gentoo installations of GCC
which add another wrinkle to the installation of the libstdc++ headers.

Add at least some basic testing of the weirdnesses of Gentoo's layout.

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

11 years agoclang-format: Fix bug in column-layout formatting.
Daniel Jasper [Mon, 26 Aug 2013 08:10:17 +0000 (08:10 +0000)]
clang-format: Fix bug in column-layout formatting.

Specific arrangements of comments after trailing commas could confuse
the column width calculation, e.g. in:

vector<int> x = { a, b,
                  /* some */ /* comment */ };

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

11 years ago[-cxx-abi microsoft] Unnamed types are mangled less wrong
David Majnemer [Mon, 26 Aug 2013 02:35:51 +0000 (02:35 +0000)]
[-cxx-abi microsoft] Unnamed types are mangled less wrong

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

11 years agoCodeGen: Unify two implementations of canDevirtualizeMemberFunctionCall.
Benjamin Kramer [Sun, 25 Aug 2013 22:46:27 +0000 (22:46 +0000)]
CodeGen: Unify two implementations of canDevirtualizeMemberFunctionCall.

They were mostly copy&paste of each other, move it to CodeGenFunction. Of course
the two implementations have diverged over time; the one in CGExprCXX seems to
be the more modern one so I picked that one and moved it to CGClass which feels
like a better home for it. No intended functionality change.

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

11 years agoDebugInfo: Emit info for casted decls in template args
David Majnemer [Sun, 25 Aug 2013 22:13:27 +0000 (22:13 +0000)]
DebugInfo: Emit info for casted decls in template args

Summary:
Previously the backend wouldn't get to see the underlying GlobalValue
that corresponds to the template argument because it would be hidden by
a cast at the IR level.  Instead strip the pointer casts off of the
value until we see the underlying GlobalValue.

Reviewers: dblaikie, echristo, majnemer

Reviewed By: majnemer

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

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

11 years agoProduce an error when trying to link with -emit-llvm.
Rafael Espindola [Sun, 25 Aug 2013 14:27:09 +0000 (14:27 +0000)]
Produce an error when trying to link with -emit-llvm.

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

11 years agoTests for ARM aligned access + reserved R9
Renato Golin [Sun, 25 Aug 2013 13:01:50 +0000 (13:01 +0000)]
Tests for ARM aligned access + reserved R9

Patch by Jeroen Hofstee.

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

11 years agoFix comment.
Michael Han [Sun, 25 Aug 2013 01:29:56 +0000 (01:29 +0000)]
Fix comment.

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

11 years agoAdd gcc ARM flags -munaligned-access / -mno-unaligned-access
Renato Golin [Sat, 24 Aug 2013 14:44:41 +0000 (14:44 +0000)]
Add gcc ARM flags -munaligned-access / -mno-unaligned-access

clang already had a mstrict-align which mentiones "Force all memory
accesses to be aligned (ARM only)". On gcc arm this is controlled by
-munaligned-access / -mno-unaligned-access. Add the gcc versions to
the frontend and make -mstrict-align and alias to -mno-unaligned-access
and only show it in clang -cc1 -help.

Since the default value for unaligned accesses / strict alignment
depends on the tripple, both the enable and disable flags are added.
If both are set, the no-unaligned-access is used.

Patch by Jeroen Hofstee.

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

11 years agoAdd the -ffixed-r9 flag for ARM.
Renato Golin [Sat, 24 Aug 2013 14:44:35 +0000 (14:44 +0000)]
Add the -ffixed-r9 flag for ARM.

This patch adds the -ffixed-r9 flag to clang to instruct llvm to
globally preserve the contents of r9. The flag is added to the newly
created ARM specific group.

While at it, also place marm / mno-thumb in that group.

Patch by Jeroen Hofstee.

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

11 years agoThis wasn't headers, just missing namespaces.
Benjamin Kramer [Sat, 24 Aug 2013 13:22:59 +0000 (13:22 +0000)]
This wasn't headers, just missing namespaces.

/me bows head in shame.

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

11 years agoAdd missing includes.
Benjamin Kramer [Sat, 24 Aug 2013 13:16:22 +0000 (13:16 +0000)]
Add missing includes.

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

11 years agoReplace compLocDecl with less_first.
Benjamin Kramer [Sat, 24 Aug 2013 13:12:34 +0000 (13:12 +0000)]
Replace compLocDecl with less_first.

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

11 years agoFix test, make the template type a const pointer.
David Majnemer [Sat, 24 Aug 2013 09:24:26 +0000 (09:24 +0000)]
Fix test, make the template type a const pointer.

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

11 years agoDebugInfo: Emit info for constant expressions in template arguments
David Majnemer [Sat, 24 Aug 2013 08:21:10 +0000 (08:21 +0000)]
DebugInfo: Emit info for constant expressions in template arguments

Summary:
This allows us to handle the general case where a non-type template
argument evaluates to a constant expression which isn't integral or a
declaration.

This fixes PR16939.

Reviewers: dblaikie, rsmith

Reviewed By: dblaikie

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

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

11 years agoCMake: support the LLVM_INSTALL_TOOLCHAIN_ONLY flag
Hans Wennborg [Sat, 24 Aug 2013 00:22:23 +0000 (00:22 +0000)]
CMake: support the LLVM_INSTALL_TOOLCHAIN_ONLY flag

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

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

11 years agoAdd a FIXME.
Richard Smith [Fri, 23 Aug 2013 22:49:47 +0000 (22:49 +0000)]
Add a FIXME.

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

11 years agoA clean-up pass, exploring the unification of traversals of class, variable and funct...
Larisse Voufo [Fri, 23 Aug 2013 22:21:36 +0000 (22:21 +0000)]
A clean-up pass, exploring the unification of traversals of class, variable and function templates.

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

11 years agoAdd note about following two commands are no longer equivalent.
Shuxin Yang [Fri, 23 Aug 2013 22:01:03 +0000 (22:01 +0000)]
Add note about following two commands are no longer equivalent.
 - "clang -O3 -flto a.c -c", and
 - "clang -emit-llvm a.c -c"

Thank Rafael for tips.

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

11 years agoDon't imply -flto with -O4.
Rafael Espindola [Fri, 23 Aug 2013 21:49:00 +0000 (21:49 +0000)]
Don't imply -flto with -O4.

We now saturate at -O3.

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

11 years agoDriver::IsUsingLTO() no longer return true when seeing -emit-llvm.
Shuxin Yang [Fri, 23 Aug 2013 21:34:57 +0000 (21:34 +0000)]
Driver::IsUsingLTO() no longer return true when seeing -emit-llvm.

One step toward differentiating following two commands:
   clang -O3 -flto a.c -c, and
   clang -O3 -emit-llvm a.c

Thanks many awesome folks for clarifying things.

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

11 years agoUpdate now that llvm uses the same feature names as the driver.
Rafael Espindola [Fri, 23 Aug 2013 20:21:37 +0000 (20:21 +0000)]
Update now that llvm uses the same feature names as the driver.

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

11 years agoConsumed analysis: change class name in test cases.
DeLesley Hutchins [Fri, 23 Aug 2013 18:40:39 +0000 (18:40 +0000)]
Consumed analysis: change class name in test cases.

The name of a class used in the testing files was updated to actually
be descriptive.  Patch by chris.wailes@gmail.com.

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

11 years agoRename CMake variable; this fell out of r189127 somehow.
Hans Wennborg [Fri, 23 Aug 2013 18:20:47 +0000 (18:20 +0000)]
Rename CMake variable; this fell out of r189127 somehow.

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

11 years agoCMake: Don't look for llvm-tblgen when building outside LLVM tree
Hans Wennborg [Fri, 23 Aug 2013 18:05:24 +0000 (18:05 +0000)]
CMake: Don't look for llvm-tblgen when building outside LLVM tree

Previously, the CMake build would look for llvm-tblgen to determine
if a directory is an LLVM build or install directory. Since we don't
want to include llvm-tblgen in the install, look for llvm-config instead,
and use that to find llvm-tblgen.

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

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

11 years agoComment parsing: fix a bug where a line with whitespace between two paragraphs
Dmitri Gribenko [Fri, 23 Aug 2013 18:03:40 +0000 (18:03 +0000)]
Comment parsing: fix a bug where a line with whitespace between two paragraphs
would cause us to concatenate these paragraphs into a single one.

The no-op whitespace churn in test/Index test happened because these tests
don't use the correct approach for testing and are more strict than required
for they are testing.

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

11 years agoFix indentation
Dmitri Gribenko [Fri, 23 Aug 2013 17:48:41 +0000 (17:48 +0000)]
Fix indentation

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

11 years agoUse CharInfo.h routines in TextComment::isWhitespaceNoCache
Dmitri Gribenko [Fri, 23 Aug 2013 17:45:43 +0000 (17:45 +0000)]
Use CharInfo.h routines in TextComment::isWhitespaceNoCache

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

11 years agoRevise -Wnewline-eof test per feedback from Dmitri.
Jordan Rose [Fri, 23 Aug 2013 16:12:49 +0000 (16:12 +0000)]
Revise -Wnewline-eof test per feedback from Dmitri.

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

11 years agoUse pop_back_val() instead of both back() and pop_back().
Robert Wilhelm [Fri, 23 Aug 2013 16:11:15 +0000 (16:11 +0000)]
Use pop_back_val() instead of both back() and pop_back().
No functionality change intended.

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

11 years agoRespect -Wnewline-eof even in C++11 mode.
Jordan Rose [Fri, 23 Aug 2013 15:42:01 +0000 (15:42 +0000)]
Respect -Wnewline-eof even in C++11 mode.

If the user has requested this warning, we should emit it, even if it's not
an extension in the current language mode. However, being an extension is
more important, so prefer the pedantic warning or the pedantic-compatibility
warning if those are enabled.

<rdar://problem/12922063>

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

11 years agoclang-format: Fix indentation relative to unary expressions.
Daniel Jasper [Fri, 23 Aug 2013 15:14:03 +0000 (15:14 +0000)]
clang-format: Fix indentation relative to unary expressions.

This should be done, only if we are still in the unary expression's
scope.

Before:
  bool aaaa = !aaaaaaaa(  // break
                   aaaaaaaaaaa);
  *aaaaaa = aaaaaaa( // break
       aaaaaaaaaaaaaaaa);

After:
  bool aaaa = !aaaaaaaa(  // break
                   aaaaaaaaaaa); // <- (unchanged)
  *aaaaaa = aaaaaaa( // break
      aaaaaaaaaaaaaaaa); // <- (no longer indented relative to "*")

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

11 years agoclang-format: Fix corner case for string splitting ..
Daniel Jasper [Fri, 23 Aug 2013 11:57:34 +0000 (11:57 +0000)]
clang-format: Fix corner case for string splitting ..

.. in conjunction with Style.AlwaysBreakBeforeMultilineStrings. Also,
simplify the implementation by handling newly split strings and already
split strings by the same code.

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

11 years agoclang-format: Handle trailing commas in column layout of braced list.
Daniel Jasper [Fri, 23 Aug 2013 10:05:49 +0000 (10:05 +0000)]
clang-format: Handle trailing commas in column layout of braced list.

Before, this was causing errors.

Also exit early in breakProtrudingToken() (before the expensive call to
SourceManager::getSpellingColumnNumber()). This makes formatting huge
(100k+-item) braced lists possible.

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

11 years agocorrect test RUN parameters
Robert Lytton [Fri, 23 Aug 2013 09:27:44 +0000 (09:27 +0000)]
correct test RUN parameters

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

11 years ago[analyzer] Refactor conditional expression evaluating code
Pavel Labath [Fri, 23 Aug 2013 07:19:22 +0000 (07:19 +0000)]
[analyzer] Refactor conditional expression evaluating code

Summary:
Instead of digging through the ExplodedGraph, to figure out which edge brought
us here, I compute the value of conditional expression by looking at the
sub-expression values.

To do this, I needed to change the liveness algorithm a bit -- now, the full
conditional expression also depends on all atomic sub-expressions, not only the
outermost ones.

Reviewers: jordan_rose

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

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

11 years agoarc commit didn't add this because it wasn't in the patch...
David Majnemer [Fri, 23 Aug 2013 05:42:19 +0000 (05:42 +0000)]
arc commit didn't add this because it wasn't in the patch...

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

11 years agoSema: Properly support Microsoft-mode template arguments
David Majnemer [Fri, 23 Aug 2013 05:39:39 +0000 (05:39 +0000)]
Sema: Properly support Microsoft-mode template arguments

Summary:
There were two things known to be wrong with our implementation of MSVC
mode template arguments:

- We didn't properly handle __uuidof/CXXUuidofExpr and skipped all type
  checking completely.
- We didn't allow for MSVC's extension of allowing certain constant
  "foldable" expressions from showing up in template arguments.
  They allow various casts dereference and address-of operations.
  We can make it more general as we find further peculiarities but this
  is the known extent.

Reviewers: rsmith, doug.gregor, rjmccall

Reviewed By: doug.gregor

CC: cfe-commits, rnk
Differential Revision: http://llvm-reviews.chandlerc.com/D1444

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

11 years agoReword a diagnostic to avoid a confusing implication that it might be talking
Richard Smith [Fri, 23 Aug 2013 02:16:48 +0000 (02:16 +0000)]
Reword a diagnostic to avoid a confusing implication that it might be talking
about a declaration within a return type.

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

11 years agoRemove SequenceNumber from class/variable template partial specializations.
Richard Smith [Thu, 22 Aug 2013 23:27:37 +0000 (23:27 +0000)]
Remove SequenceNumber from class/variable template partial specializations.
This was only used to ensure that the traversal order was the same as the
insertion order, but that guarantee was already being provided by the use
of a FoldingSetVector.

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

11 years agoObjectiveC migrator: builtin ObjectiveC types are not
Fariborz Jahanian [Thu, 22 Aug 2013 22:27:36 +0000 (22:27 +0000)]
ObjectiveC migrator: builtin ObjectiveC types are not
audited types.

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

11 years agoObjectiveC migrator: some refactoring to reduce
Fariborz Jahanian [Thu, 22 Aug 2013 21:40:15 +0000 (21:40 +0000)]
ObjectiveC migrator: some refactoring to reduce
code size.

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

11 years agoCheck for absence of the flag.
Bill Wendling [Thu, 22 Aug 2013 21:30:21 +0000 (21:30 +0000)]
Check for absence of the flag.

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

11 years agoOnly add this attribute when it's set. If it's not there, the assumption is that...
Bill Wendling [Thu, 22 Aug 2013 21:16:51 +0000 (21:16 +0000)]
Only add this attribute when it's set. If it's not there, the assumption is that it's off.

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

11 years agoUpdate to consumed analysis.
DeLesley Hutchins [Thu, 22 Aug 2013 20:44:47 +0000 (20:44 +0000)]
Update to consumed analysis.

Patch by chris.wailes@gmail.com.  The following functionality was added:

* The same functionality is now supported for both CXXOperatorCallExprs and CXXMemberCallExprs.
* Factored out some code in StmtVisitor.
* Removed variables from the state map when their destructors are encountered.
* Started adding documentation for the consumed analysis attributes.

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

11 years agoDataFlowSanitizer: Add a design doc paragraph on checking ABI consistency.
Peter Collingbourne [Thu, 22 Aug 2013 20:08:20 +0000 (20:08 +0000)]
DataFlowSanitizer: Add a design doc paragraph on checking ABI consistency.

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

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

11 years agoAdd a separate llvm.global_ctors entry for linkonce_odr data initializers
Reid Kleckner [Thu, 22 Aug 2013 20:07:45 +0000 (20:07 +0000)]
Add a separate llvm.global_ctors entry for linkonce_odr data initializers

Summary:
These typically come from static data members of class template
specializations.  This accomplishes two things:

1. May expose GlobalOpt optimizations for Itanium C++ ABI code.
2. Works toward fixing double initialization in the Microsoft C++ ABI.

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

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

11 years agoFileCheckify a grep test.
Reid Kleckner [Thu, 22 Aug 2013 18:45:40 +0000 (18:45 +0000)]
FileCheckify a grep test.

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

11 years agoObjectiveC migrator: Provide ARC annotations for
Fariborz Jahanian [Thu, 22 Aug 2013 18:35:27 +0000 (18:35 +0000)]
ObjectiveC migrator: Provide ARC annotations for
CF methods too.

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

11 years agoRefactor VariantMatcher to use an interface underneath.
Samuel Benzaquen [Thu, 22 Aug 2013 16:38:33 +0000 (16:38 +0000)]
Refactor VariantMatcher to use an interface underneath.

Summary:
Refactor VariantMatcher to use an interface underneath.
It supports "Single" and "Polymorphic". Will support more in the future.

Reviewers: klimek

CC: cfe-commits, revane
Differential Revision: http://llvm-reviews.chandlerc.com/D1446

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

11 years agoRe-add clang-check to the Makefile build.
Jordan Rose [Thu, 22 Aug 2013 16:12:04 +0000 (16:12 +0000)]
Re-add clang-check to the Makefile build.

I was bound to screw this up somehow.

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

11 years agoWork around unused variable warning in release builds.
Daniel Jasper [Thu, 22 Aug 2013 16:11:46 +0000 (16:11 +0000)]
Work around unused variable warning in release builds.

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

11 years agoFix dependencies now that the ARC migrator depends on the static analyzer.
Jordan Rose [Thu, 22 Aug 2013 15:50:02 +0000 (15:50 +0000)]
Fix dependencies now that the ARC migrator depends on the static analyzer.

Thanks for pointing this out, Stephen. I think this is right now -- I
attempted to try all four valid combinations with both the autoconf and
CMake builds.

See also LLVM changes to the configure script.

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

11 years agoDebugInfo: emit the definition of types when construction vtables are required as...
David Blaikie [Thu, 22 Aug 2013 15:23:05 +0000 (15:23 +0000)]
DebugInfo: emit the definition of types when construction vtables are required as these types may never end up emitting the full class data

This might be able to be optimized further by only doing this in the
absence of a key function, but it doesn't look like GCC is doing that so
I'm not rushing to do it just yet.

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

11 years agoclang-format: Add column layout formatting for braced lists
Daniel Jasper [Thu, 22 Aug 2013 15:00:41 +0000 (15:00 +0000)]
clang-format: Add column layout formatting for braced lists

With this patch, braced lists (with more than 3 elements are formatted in a
column layout if possible). E.g.:

  static const uint16_t CallerSavedRegs64Bit[] = {
    X86::RAX, X86::RDX, X86::RCX, X86::RSI, X86::RDI,
    X86::R8,  X86::R9,  X86::R10, X86::R11, 0
  };

Required other changes:
- FormatTokens can now have a special role that contains extra data and can do
  special formattings. A comma separated list is currently the only
  implementation.
- Move penalty calculation entirely into ContinuationIndenter (there was a last
  piece still in UnwrappedLineFormatter).

Review: http://llvm-reviews.chandlerc.com/D1457

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

11 years agoDebugInfo: Remove explicit declaration-emissiong handling now that we have a more...
David Blaikie [Thu, 22 Aug 2013 13:36:01 +0000 (13:36 +0000)]
DebugInfo: Remove explicit declaration-emissiong handling now that we have a more principled approach (the 'requires complete type' callback)

No functionality change intended.

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

11 years agoRevert "Implement a rudimentary form of generic lambdas."
Manuel Klimek [Thu, 22 Aug 2013 12:12:24 +0000 (12:12 +0000)]
Revert "Implement a rudimentary form of generic lambdas."

This reverts commit 606f5d7a99b11957e057e4cd1f55f931f66a42c7.

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

11 years agoRevert "Remove some unused variables identified by Juergen Ributzka *I need to turn...
Manuel Klimek [Thu, 22 Aug 2013 12:12:05 +0000 (12:12 +0000)]
Revert "Remove some unused variables identified by Juergen Ributzka *I need to turn on this warning in Visual C++ - sorry!*"

This reverts commit d01d0b63d87ac465f15ce1d6b56bf3faf4525769.

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

11 years agoTypo.
David Majnemer [Thu, 22 Aug 2013 10:04:41 +0000 (10:04 +0000)]
Typo.

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

11 years agoconst'ify Sema::ActOnCXXTryBlock by
Robert Wilhelm [Thu, 22 Aug 2013 09:20:03 +0000 (09:20 +0000)]
const'ify Sema::ActOnCXXTryBlock by
changing Parameter from MutableArrayRef to
ArrayRef.
No functionality change intended.

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

11 years agognu-flags.c test: relax the check a bit
Dmitri Gribenko [Thu, 22 Aug 2013 08:13:43 +0000 (08:13 +0000)]
gnu-flags.c test: relax the check a bit

This tests warning flags, so no need to test for specific alignment which is
platform-dependent.

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

11 years agoAnalysis: Make %I in printf more reasonable, add more tests
David Majnemer [Thu, 22 Aug 2013 07:53:21 +0000 (07:53 +0000)]
Analysis: Make %I in printf more reasonable, add more tests

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

11 years agoConstify more uses of ASTContext&. No functional change.
Craig Topper [Thu, 22 Aug 2013 07:09:37 +0000 (07:09 +0000)]
Constify more uses of ASTContext&. No functional change.

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

11 years agoConstify some more ASTContext& uses.
Craig Topper [Thu, 22 Aug 2013 06:02:26 +0000 (06:02 +0000)]
Constify some more ASTContext& uses.

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

11 years agoConstify the ASTContext& passed to Stmt creation functions. Also constify the context...
Craig Topper [Thu, 22 Aug 2013 05:28:54 +0000 (05:28 +0000)]
Constify the ASTContext& passed to Stmt creation functions. Also constify the context in couple other functions that are called from creation functions.

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

11 years agoConstify the ASTContext& passed to Expr creation functions. Also constify the context...
Craig Topper [Thu, 22 Aug 2013 04:58:56 +0000 (04:58 +0000)]
Constify the ASTContext& passed to Expr creation functions. Also constify the context in couple other functions that are called from creation functions.

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

11 years agoAdd test cases for avx512 feature flags. Fix typo in avx512pf options.
Craig Topper [Thu, 22 Aug 2013 04:32:55 +0000 (04:32 +0000)]
Add test cases for avx512 feature flags. Fix typo in avx512pf options.

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

11 years agoRemove some unused variables identified by Juergen Ributzka *I need to turn on this...
Faisal Vali [Thu, 22 Aug 2013 02:13:38 +0000 (02:13 +0000)]
Remove some unused variables identified by Juergen Ributzka *I need to turn on this warning in Visual C++ - sorry!*

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

11 years agoImplement a rudimentary form of generic lambdas.
Faisal Vali [Thu, 22 Aug 2013 01:49:11 +0000 (01:49 +0000)]
Implement a rudimentary form of generic lambdas.

Specifically, the following features are not included in this commit:
  - any sort of capturing within generic lambdas
  - nested lambdas
  - conversion operator for captureless lambdas
  - ensuring all visitors are generic lambda aware

As an example of what compiles:

template <class F1, class F2>
struct overload : F1, F2 {
    using F1::operator();
    using F2::operator();
    overload(F1 f1, F2 f2) : F1(f1), F2(f2) { }
  };

  auto Recursive = [](auto Self, auto h, auto ... rest) {
    return 1 + Self(Self, rest...);
  };
  auto Base = [](auto Self, auto h) {
      return 1;
  };
  overload<decltype(Base), decltype(Recursive)> O(Base, Recursive);
  int num_params =  O(O, 5, 3, "abc", 3.14, 'a');

Please see attached tests for more examples.

Some implementation notes:

  - Add a new Declarator context => LambdaExprParameterContext to
    clang::Declarator to allow the use of 'auto' in declaring generic
    lambda parameters

  - Augment AutoType's constructor (similar to how variadic
    template-type-parameters ala TemplateTypeParmDecl are implemented) to
    accept an IsParameterPack to encode a generic lambda parameter pack.

  - Add various helpers to CXXRecordDecl to facilitate identifying
    and querying a closure class

  - LambdaScopeInfo (which maintains the current lambda's Sema state)
    was augmented to house the current depth of the template being
    parsed (id est the Parser calls Sema::RecordParsingTemplateParameterDepth)
    so that Sema::ActOnLambdaAutoParameter may use it to create the
    appropriate list of corresponding TemplateTypeParmDecl for each
    auto parameter identified within the generic lambda (also stored
    within the current LambdaScopeInfo).  Additionally,
    a TemplateParameterList data-member was added to hold the invented
    TemplateParameterList AST node which will be much more useful
    once we teach TreeTransform how to transform generic lambdas.

  - SemaLambda.h was added to hold some common lambda utility
    functions (this file is likely to grow ...)

  - Teach Sema::ActOnStartOfFunctionDef to check whether it
    is being called to instantiate a generic lambda's call
    operator, and if so, push an appropriately prepared
    LambdaScopeInfo object on the stack.

  - Teach Sema::ActOnStartOfLambdaDefinition to set the
    return type of a lambda without a trailing return type
    to 'auto' in C++1y mode, and teach the return type
    deduction machinery in SemaStmt.cpp to process either
    C++11 and C++14 lambda's correctly depending on the flag.

  - various tests were added - but much more will be needed.

A greatful thanks to all reviewers including Eli Friedman,
James Dennett and the ever illuminating Richard Smith.  And
yet I am certain that I have allowed unidentified bugs to creep in;
bugs, that I will do my best to slay, once identified!

Thanks!

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

11 years agoAdd a constexpr functionality test for static data member templates.
Larisse Voufo [Thu, 22 Aug 2013 01:05:27 +0000 (01:05 +0000)]
Add a constexpr functionality test for static data member templates.

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

11 years agoRefactor for clarity and simplicity.
Larisse Voufo [Thu, 22 Aug 2013 00:59:14 +0000 (00:59 +0000)]
Refactor for clarity and simplicity.

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