erik.pilkington (Erik Pilkington)
User

Projects

User does not belong to any projects.

User Details

User Since
Feb 2 2016, 10:56 AM (124 w, 5 d)

Recent Activity

Tue, Jun 19

erik.pilkington created D48322: [Sema] Discarded statment should be an evaluatable context.
Tue, Jun 19, 6:53 AM

Mon, Jun 11

erik.pilkington added a comment to D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.

Ping!

Mon, Jun 11, 8:09 AM

Fri, Jun 8

erik.pilkington accepted D47886: Move VersionTuple from clang/Basic to llvm/Support, clang part.

LGTM. Looks like LLDB has some uses of VersionTuple, you should fix those to #include the LLVM version before removing the header here. (Or, better yet, do it all atomically with the monorepo as @zturner suggested)

Fri, Jun 8, 6:21 AM
erik.pilkington accepted D47887: Move VersionTuple from clang/Basic to llvm/Support, llvm part.

LGTM, thanks for adding the test!

Fri, Jun 8, 6:21 AM

Fri, Jun 1

erik.pilkington added inline comments to D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.
Fri, Jun 1, 7:14 AM
erik.pilkington updated the diff for D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.

Address @EricWF's comments.

Fri, Jun 1, 7:14 AM
erik.pilkington added a comment to D47607: [libcxx] Almost fix some UB in <map> and <unordered_map>.

I should have asked, have we actually seen a midcompile caused by this? Is there a reproducer? Or is this purerly speculative?

Fri, Jun 1, 6:26 AM
erik.pilkington updated the diff for D47607: [libcxx] Almost fix some UB in <map> and <unordered_map>.

Address review comments. Thanks!

Fri, Jun 1, 6:25 AM

Thu, May 31

erik.pilkington added a dependency for D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets: D47607: [libcxx] Almost fix some UB in <map> and <unordered_map>.
Thu, May 31, 3:03 PM
erik.pilkington added a dependent revision for D47607: [libcxx] Almost fix some UB in <map> and <unordered_map>: D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.
Thu, May 31, 3:03 PM
erik.pilkington updated the diff for D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.

Update this patch to depend on https://reviews.llvm.org/D47607, which fixes __value_type in map and unordered_map. Thanks!

Thu, May 31, 3:01 PM
erik.pilkington created D47607: [libcxx] Almost fix some UB in <map> and <unordered_map>.
Thu, May 31, 3:00 PM

May 25 2018

erik.pilkington updated the diff for D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.

Add _LIBCPP_ASSERT calls to all the entry points, friendly ping!

May 25 2018, 12:07 PM

May 23 2018

erik.pilkington accepted D47248: [demangler] Add ItaniumPartialDemangler::isCtorOrDtor.

LGTM, thanks!

May 23 2018, 4:48 PM
erik.pilkington added a comment to D47248: [demangler] Add ItaniumPartialDemangler::isCtorOrDtor.

Hi, thanks for working on this! This looks pretty good, I just have a few minor comments...

May 23 2018, 12:56 PM

May 19 2018

erik.pilkington updated the diff for D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.

make __map_node_handle use a const_cast on the key instead of type-punning between pair<const K, V> and pair<K, V>. Add calls to std::launder in key() and before inserting a node handle.

May 19 2018, 10:35 AM
erik.pilkington added a comment to D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.

One way we could deal with this is by adding an attribute to the compiler to indicate "the const is a lie", that we can apply to std::pair::first, with the semantics being that a top-level const is ignored when determining the "real" type of the member (and so mutating the member after a const_cast has defined behavior). This would apply to all std::pairs, not just the node_handle case, but in practice we don't optimize on the basis of a member being declared const *anyway*, so this isn't such a big deal right now.

May 19 2018, 10:35 AM

May 16 2018

erik.pilkington accepted D46747: [Sema] Use dotted form of macOS version for unguarded availability FixIts.

Great, LGTM!

May 16 2018, 2:39 PM · Restricted Project

May 15 2018

erik.pilkington added a comment to D46747: [Sema] Use dotted form of macOS version for unguarded availability FixIts.

I am now thinking about just switching to dot format in ParseAvailabilityAttribute() because it's much simpler to maintain consistency that way.

May 15 2018, 10:41 AM · Restricted Project
erik.pilkington added a comment to D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.

One way we could deal with this is by adding an attribute to the compiler to indicate "the const is a lie", that we can apply to std::pair::first, with the semantics being that a top-level const is ignored when determining the "real" type of the member (and so mutating the member after a const_cast has defined behavior). This would apply to all std::pairs, not just the node_handle case, but in practice we don't optimize on the basis of a member being declared const *anyway*, so this isn't such a big deal right now.

May 15 2018, 7:11 AM
erik.pilkington updated the diff for D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.

Use the simpler inherited constructor spelling @rsmith suggested.

May 15 2018, 6:44 AM

May 14 2018

erik.pilkington updated the summary of D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.
May 14 2018, 1:23 PM
erik.pilkington created D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.
May 14 2018, 1:21 PM
erik.pilkington accepted D46747: [Sema] Use dotted form of macOS version for unguarded availability FixIts.

Thanks for the explanation, LGTM.

May 14 2018, 8:23 AM · Restricted Project

May 11 2018

erik.pilkington added a comment to D46747: [Sema] Use dotted form of macOS version for unguarded availability FixIts.

That test passes for me without this patch applied, why is UsesUnderscores actually getting set in the radar?

May 11 2018, 8:09 AM · Restricted Project

Apr 22 2018

erik.pilkington added inline comments to D45451: [ItaniumMangle] Undeduced auto type doesn't belong in the substitution table.
Apr 22 2018, 8:04 AM
erik.pilkington updated the diff for D45451: [ItaniumMangle] Undeduced auto type doesn't belong in the substitution table.

Add a comment.

Apr 22 2018, 8:04 AM

Apr 16 2018

erik.pilkington accepted D45699: [Availability] Improve availability to consider functions run at load time.

LGTM, thanks!

Apr 16 2018, 4:18 PM
erik.pilkington added a comment to D45699: [Availability] Improve availability to consider functions run at load time.

Hi Steven, thanks for working on this!

Apr 16 2018, 3:17 PM

Apr 13 2018

erik.pilkington updated the diff for D45451: [ItaniumMangle] Undeduced auto type doesn't belong in the substitution table.

Add an ABI compatibility guard. Thanks!

Apr 13 2018, 7:33 AM

Apr 11 2018

erik.pilkington updated subscribers of D44668: [demangler] Add a "partial" demangling API for LLDB.

I'll CC @dexonsmith and @compnerd too, they've helped with demangler reviews in the past.

Apr 11 2018, 11:10 AM

Apr 10 2018

erik.pilkington updated the diff for D44668: [demangler] Add a "partial" demangling API for LLDB.

Rebase. In this new patch:

  • Add some more tests.
  • Minor cleanup.
Apr 10 2018, 3:46 PM

Apr 9 2018

erik.pilkington created D45451: [ItaniumMangle] Undeduced auto type doesn't belong in the substitution table.
Apr 9 2018, 12:25 PM

Apr 4 2018

erik.pilkington added a comment to D45194: [Sema] Defer checking constexpr lambda until after we've finished the lambda class..

LGTM - can you commit?

Apr 4 2018, 3:51 PM
erik.pilkington added inline comments to D45194: [Sema] Defer checking constexpr lambda until after we've finished the lambda class..
Apr 4 2018, 1:46 PM
erik.pilkington updated the diff for D45194: [Sema] Defer checking constexpr lambda until after we've finished the lambda class..

Add refersToEnclosingVariableOrCaptureCheck(), comments.

Apr 4 2018, 1:45 PM
erik.pilkington added inline comments to D45194: [Sema] Defer checking constexpr lambda until after we've finished the lambda class..
Apr 4 2018, 11:10 AM
erik.pilkington updated the diff for D45194: [Sema] Defer checking constexpr lambda until after we've finished the lambda class..

Handle this in ExprConstant instead of in Sema.

Apr 4 2018, 11:10 AM

Apr 2 2018

erik.pilkington created D45194: [Sema] Defer checking constexpr lambda until after we've finished the lambda class..
Apr 2 2018, 6:28 PM

Mar 27 2018

erik.pilkington added a reviewer for D44668: [demangler] Add a "partial" demangling API for LLDB: espindola.

Use Rafael's Phab account.

Mar 27 2018, 12:47 PM
erik.pilkington updated the diff for D44668: [demangler] Add a "partial" demangling API for LLDB.

In this new patch:

  • Rename some functions, add some comments
  • Support for local names
  • More testcases
Mar 27 2018, 12:47 PM

Mar 26 2018

erik.pilkington accepted D44589: [Sema] Make deprecation fix-it replace all multi-parameter ObjC method slots..

LGTM, this is a really nice feature!

Mar 26 2018, 6:08 PM

Mar 21 2018

erik.pilkington added a comment to D44589: [Sema] Make deprecation fix-it replace all multi-parameter ObjC method slots..

Hi Volodymyr, thanks for working on this! Overall this looks good, I just have a few nits.

Mar 21 2018, 10:41 AM

Mar 20 2018

erik.pilkington updated subscribers of D44668: [demangler] Add a "partial" demangling API for LLDB.

It would be awesome if you could benchmark on some pathological testcases (e.g. the one Greg was pointing out)

Mar 20 2018, 12:11 PM

Mar 19 2018

erik.pilkington created D44668: [demangler] Add a "partial" demangling API for LLDB.
Mar 19 2018, 6:48 PM

Feb 23 2018

erik.pilkington added a comment to D43578: -ftime-report switch support in Clang.

Hi, thanks for working on this! Having better timers in clang would be really great.

Feb 23 2018, 7:46 AM

Feb 3 2018

erik.pilkington updated the diff for D41889: [libcxxabi][demangler] Clean up and llvm-ify the type parser.

Rebase and remove the qualifier substitution bug fix.

Feb 3 2018, 11:44 AM

Feb 1 2018

erik.pilkington added a comment to D42776: [Sema] Fix an assertion failure in constant expression evaluation of calls to functions with default arguments.

Hi Akira, thanks for working on this!

Feb 1 2018, 1:10 PM

Jan 31 2018

erik.pilkington updated the diff for D41887: [libcxxabi][demangler] Clean up and llvm-ify the expression parser.

Rebase onto r323906. Most of this patch is just a mechanical transformation to the parser to use the new API, the interesting part is just the changes to the Db struct.

Jan 31 2018, 2:25 PM

Jan 25 2018

erik.pilkington added inline comments to D41885: [libcxxabi][demangler] Improve handling of variadic templates.
Jan 25 2018, 7:38 PM
erik.pilkington updated the diff for D41885: [libcxxabi][demangler] Improve handling of variadic templates.

In this new patch:

  • Make the cached values use a 3-way bool type, and default it to false. This simplifies all the Node ctors.
  • Remove some minor style fixes to clean up the diff.
Jan 25 2018, 7:37 PM

Jan 22 2018

erik.pilkington added a comment to D41885: [libcxxabi][demangler] Improve handling of variadic templates.

Ping!

Jan 22 2018, 10:26 AM

Jan 9 2018

erik.pilkington added a dependent revision for D41887: [libcxxabi][demangler] Clean up and llvm-ify the expression parser: D41889: [libcxxabi][demangler] Clean up and llvm-ify the type parser.
Jan 9 2018, 4:03 PM
erik.pilkington added a dependency for D41889: [libcxxabi][demangler] Clean up and llvm-ify the type parser: D41887: [libcxxabi][demangler] Clean up and llvm-ify the expression parser.
Jan 9 2018, 4:03 PM
erik.pilkington added a dependency for D41887: [libcxxabi][demangler] Clean up and llvm-ify the expression parser: D41885: [libcxxabi][demangler] Improve handling of variadic templates.
Jan 9 2018, 4:02 PM
erik.pilkington added a dependent revision for D41885: [libcxxabi][demangler] Improve handling of variadic templates: D41887: [libcxxabi][demangler] Clean up and llvm-ify the expression parser.
Jan 9 2018, 4:02 PM
erik.pilkington created D41889: [libcxxabi][demangler] Clean up and llvm-ify the type parser.
Jan 9 2018, 3:50 PM
erik.pilkington created D41887: [libcxxabi][demangler] Clean up and llvm-ify the expression parser.
Jan 9 2018, 3:43 PM
erik.pilkington added inline comments to D41885: [libcxxabi][demangler] Improve handling of variadic templates.
Jan 9 2018, 3:27 PM
erik.pilkington created D41885: [libcxxabi][demangler] Improve handling of variadic templates.
Jan 9 2018, 3:19 PM

Dec 14 2017

erik.pilkington updated the diff for D41261: [libcxxabi][demangler] Special case demangling for pass_object_size attribute.

Add a testcase with pass_object_size[0-3].

Dec 14 2017, 10:04 PM
erik.pilkington created D41261: [libcxxabi][demangler] Special case demangling for pass_object_size attribute.
Dec 14 2017, 3:13 PM

Dec 8 2017

erik.pilkington added a comment to D40372: [ExprConstant] Fix assert when initializing constexpr array.

Ping!

Dec 8 2017, 6:57 AM

Nov 29 2017

erik.pilkington added a comment to D40566: Check if MemberExpr arguments are type-dependent..

Hi, thanks for working on this!
Why don't we just set the TypeDependent bit to false when building the underlying MemberExpr here? Based on the section of the standard you quoted that node shouldn't be considered type-dependent, but it is by clang. I think this patch is just hiding that underlying problem by fishing out the real type-dependence after constructing the MemberExpr when really that information should be included in the MemberExpr to begin with.
Thanks,
Erik

Nov 29 2017, 10:20 AM

Nov 24 2017

erik.pilkington added a comment to D40445: [C++17] Allow an empty expression in an if init statement.

Hi, thanks for working on this!
Can you add tests to make sure that this also works with switch statements (which also have this bug), and not with while? Also, it makes it a lot easier to review these patches if you add context lines to the diff.
Thanks,
Erik

Nov 24 2017, 11:41 AM · Restricted Project

Nov 22 2017

erik.pilkington added a comment to D40284: [Sema] Improve diagnostics for template arg deduction.

This looks correct, but I definitely agree that RAII would make this a lot nicer. Have you considered adding a CancelableSaveAndRestore or something to SaveAndRestore.h? It seems useful and generic enough to make it worthwhile. Otherwise, you could just write your own RAII object special-cased to handle this. A less intrusive way of doing this might be to wrap calls to this function with another that checks if the return value is TDK_Success, and if so restores these fields.

Nov 22 2017, 2:00 PM
erik.pilkington created D40372: [ExprConstant] Fix assert when initializing constexpr array.
Nov 22 2017, 11:22 AM

Nov 21 2017

erik.pilkington added inline comments to D40279: [libcxxabi][demangler] Add demangling for __attribute__((abi_tag)).
Nov 21 2017, 7:20 AM
erik.pilkington updated the diff for D40279: [libcxxabi][demangler] Add demangling for __attribute__((abi_tag)).

In this new patch:

  • Update the comment BNF to show the new attribute, fix comment formatting
  • Move call to parse_abi_tag_seq() from parse_unqualified_name() to parse_operator_name() to more closely model BNF
Nov 21 2017, 7:17 AM

Nov 20 2017

erik.pilkington created D40279: [libcxxabi][demangler] Add demangling for __attribute__((abi_tag)).
Nov 20 2017, 7:17 PM

Nov 17 2017

erik.pilkington accepted D39913: [ObjC] warn about availability attributes missing from a method's declaration when they're specified for a method's definition .

It's harder as we don't know the distinction between declaration/definition at merge time. Right now the C++ implementation of this warning actually checks the attributes too late, after they're merged. I'll take out the C++/C support completely and keep to ObjC in this patch for simplicity. The rest can be supported later.

Nov 17 2017, 6:31 AM

Nov 10 2017

erik.pilkington added a comment to D39913: [ObjC] warn about availability attributes missing from a method's declaration when they're specified for a method's definition .

Any thoughts on having this for regular functions and C++ member functions? Seems just as useful there.

Nov 10 2017, 1:15 PM

Oct 3 2017

erik.pilkington added inline comments to D38483: [ExprConstant] Allow constexpr ctor to modify non static data members in body.
Oct 3 2017, 8:00 AM
erik.pilkington updated the diff for D38483: [ExprConstant] Allow constexpr ctor to modify non static data members in body.

Thanks for the feedback, in this new patch:

  • insert EvaluatingDecl into EvaluatingConstructors instead of checking it in isEvaluatingDecl()
  • Add a comment to the typedef
Oct 3 2017, 8:00 AM

Oct 2 2017

erik.pilkington created D38483: [ExprConstant] Allow constexpr ctor to modify non static data members in body.
Oct 2 2017, 4:41 PM

Aug 17 2017

erik.pilkington updated the diff for D36777: [Sema] Don't emit -Wunguarded-availability for switch cases.

Ah, good point. This new patch does that.
Thanks,
Erik

Aug 17 2017, 9:54 AM

Aug 16 2017

erik.pilkington added a comment to D36492: [time-report] Add preprocessor timer.

This looks really usefull, thanks for working on this!

Aug 16 2017, 1:43 PM

Aug 15 2017

erik.pilkington created D36777: [Sema] Don't emit -Wunguarded-availability for switch cases.
Aug 15 2017, 5:21 PM

Aug 14 2017

erik.pilkington added a comment to D36200: [Sema] Improve some -Wunguarded-availability diagnostic messages.

Ping!

Aug 14 2017, 9:50 AM

Aug 8 2017

erik.pilkington added inline comments to D36427: [libcxxabi][demangler] Improve representation of substitutions/templates.
Aug 8 2017, 2:40 PM
erik.pilkington updated the diff for D36427: [libcxxabi][demangler] Improve representation of substitutions/templates.

Address review comments.
Thanks!
Erik

Aug 8 2017, 2:40 PM

Aug 7 2017

erik.pilkington created D36427: [libcxxabi][demangler] Improve representation of substitutions/templates.
Aug 7 2017, 1:44 PM

Aug 2 2017

erik.pilkington added a comment to D36200: [Sema] Improve some -Wunguarded-availability diagnostic messages.

This needs a test for the fixits as well, see test/FixIt/fixit-availability*

Aug 2 2017, 9:46 AM

Aug 1 2017

erik.pilkington created D36200: [Sema] Improve some -Wunguarded-availability diagnostic messages.
Aug 1 2017, 4:31 PM
erik.pilkington created D36191: [CodeGen] Don't make availability attributes imply default visibility on macos.
Aug 1 2017, 2:21 PM

Jul 27 2017

erik.pilkington updated the diff for D35159: [libcxxabi][demangler] Use an AST to represent the demangled name.

Use LLVM naming conventions for all the new stuff in this patch.

Jul 27 2017, 2:04 PM

Jul 24 2017

erik.pilkington accepted D35726: unguarded availability: add a fixit for the "annotate '...' with an availability attribute to silence" note.

LGTM, thanks for working on this!

Jul 24 2017, 9:24 AM

Jul 23 2017

erik.pilkington planned changes to D35781: [Sema] Make sure that -Wunguarded-availability emits notes at the right redeclaration.

On second thought, I think it makes more sense to do this right before we emit a diagnostic so we have the most recent redecl with all the inherited availability attributes until then. I'll put a diff up for that tomorrow!

Jul 23 2017, 9:04 PM
erik.pilkington created D35781: [Sema] Make sure that -Wunguarded-availability emits notes at the right redeclaration.
Jul 23 2017, 2:04 PM

Jul 21 2017

erik.pilkington added a comment to D35726: unguarded availability: add a fixit for the "annotate '...' with an availability attribute to silence" note.

Thanks for working on this! This looks like it would be very useful.

Jul 21 2017, 9:39 AM

Jul 17 2017

erik.pilkington updated the diff for D35159: [libcxxabi][demangler] Use an AST to represent the demangled name.

s/string_ref/StringView

Jul 17 2017, 3:34 PM

Jul 14 2017

erik.pilkington updated the diff for D35159: [libcxxabi][demangler] Use an AST to represent the demangled name.

Rebase. I don't think the issue of purging underscores from this file/libcxx should block this, if we want to discuss that cfe-dev would probably be the place. I agree that it would be nice to clang-format this file, would anyone have any problems with me committing that after this? I found the git-blame of this file to be pretty useless, almost every line just points to r184097.
Are there any other thoughts on this change?
Thanks,
Erik

Jul 14 2017, 9:44 AM

Jul 13 2017

erik.pilkington added inline comments to D35379: Add documentation for @available.
Jul 13 2017, 1:47 PM
erik.pilkington added a reviewer for D35379: Add documentation for @available: arphaman.

This looks great, thanks for working on this! LGTM, but @arphaman might have some thoughts.

Jul 13 2017, 1:31 PM

Jul 12 2017

erik.pilkington added a comment to D35159: [libcxxabi][demangler] Use an AST to represent the demangled name.

Looks like this demangler's design is similar to my demangler for Microsoft name mangling scheme (https://reviews.llvm.org/D34667). Is that a coincidence? Both demanglers create AST, stringize it using print_left/print_right (I named them write_pre/write_post), and use custom memory allocator. Looks like both demangler can share more code once both land.

Jul 12 2017, 2:04 PM

Jul 9 2017

erik.pilkington closed D35158: [libcxxabi][demangler] NFC: Don't make everything a template.

Landed as r307482 & r307481, thanks! (for some reason phab wasn't automatically closing this)

Jul 9 2017, 6:14 AM
erik.pilkington added inline comments to D35159: [libcxxabi][demangler] Use an AST to represent the demangled name.
Jul 9 2017, 6:14 AM
erik.pilkington updated the diff for D35159: [libcxxabi][demangler] Use an AST to represent the demangled name.

In this new patch:

  • Fix UB @EricWF pointed out; memmove(something, nullptr, 0) was being called.
  • Add some comments
  • rename stream -> output_stream
Jul 9 2017, 6:14 AM
erik.pilkington updated the diff for D35159: [libcxxabi][demangler] Use an AST to represent the demangled name.

Forgot to add context lines!

Jul 9 2017, 6:13 AM
erik.pilkington created D35159: [libcxxabi][demangler] Use an AST to represent the demangled name.
Jul 9 2017, 6:13 AM