EricWF (Eric Fiselier)
User

Projects

User does not belong to any projects.

User Details

User Since
Jun 26 2014, 12:44 PM (207 w, 5 d)

Recent Activity

Sat, Jun 9

EricWF created D47990: Sample work on C++ Resumable functions (N4453)..
Sat, Jun 9, 9:10 PM
EricWF updated the diff for D45015: [Preprocessor] Allow libc++ to detect when aligned allocation is unavailable..

Remove -nostdinc++ check as requested.

Sat, Jun 9, 1:51 PM
EricWF added a comment to D45015: [Preprocessor] Allow libc++ to detect when aligned allocation is unavailable..

Could you elaborate on what kind of changes you are planning to make in libc++ after committing this patch?

Libc++ shouldn't actually need any changes if this current patch lands. Currently libc++ is in a "incorrect" state where
it generates calls to __builtin_operator_new(size_t, align_val_t) when __cpp_aligned_new is defined but when aligned new/delete
are actually unavailable.

If we change __cpp_aligned_new to no longer be defined when aligned new is unavailable, then libc++ will start doing the right thing.
See r328180 for the relevent commits which made these libc++ changes.

Looks like in libc++ we need to remove _LIBCPP_STD_VER check for aligned allocations, something like

 #if !defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION) && \
-    (!(defined(_LIBCPP_BUILDING_NEW) || _LIBCPP_STD_VER > 14 || \
+    (!(defined(_LIBCPP_BUILDING_NEW) || \
     (defined(__cpp_aligned_new) && __cpp_aligned_new >= 201606)))
 # define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
 #endif

Is that correct? I didn't check the rest of the code, probably TEST_HAS_NO_ALIGNED_ALLOCATION needs some clean up too.

Sat, Jun 9, 1:12 PM

Thu, Jun 7

EricWF committed rCRT334220: [CMake] Fix Libc++ Modules build..
[CMake] Fix Libc++ Modules build.
Thu, Jun 7, 1:04 PM
EricWF committed rL334220: [CMake] Fix Libc++ Modules build..
[CMake] Fix Libc++ Modules build.
Thu, Jun 7, 1:04 PM

Tue, Jun 5

EricWF committed rCXX334069: Remove unused code from __functional_base. NFC..
Remove unused code from __functional_base. NFC.
Tue, Jun 5, 11:47 PM
EricWF committed rL334069: Remove unused code from __functional_base. NFC..
Remove unused code from __functional_base. NFC.
Tue, Jun 5, 11:47 PM
EricWF closed D46806: Remove unused code from __functional_base. NFC..

r334069

Tue, Jun 5, 11:47 PM
EricWF accepted D46806: Remove unused code from __functional_base. NFC..
Tue, Jun 5, 11:46 PM
EricWF created D47809: Dummy patch with changes to C++14 sized deallocation and diagnostics..
Tue, Jun 5, 10:50 PM
EricWF added a comment to D47757: [Sema] Produce diagnostics when unavailable aligned allocation/deallocation functions are called.

I think we should sink the DiagnoseUnavailableAlignedAllocation into DiagnoseUseOfDecl, and then adds call's in the few places they're needed. Most paths we care about already pass through there.

Tue, Jun 5, 10:32 PM
EricWF added a comment to D45015: [Preprocessor] Allow libc++ to detect when aligned allocation is unavailable..

I see, thank you.

clang front-end currently fails to issue a warning or error when an aligned allocation/deallocation functions are required but not available in a few cases (e.g., delete called from a deleting destructor, calls to operator or builtin operator new/delete). I suppose those bugs should be fixed in separate patches.

I don't think we need to emit warnings from __builtin_operator_new/__builtin_operator_delete. Libc++ is the only consumer, and I think we can trust it to know what it's doing.

Shouldn't clang warn when users explicitly call an aligned builtin operator new or delete in their code and the OS is too old to support the operator?

For example:

typedef __SIZE_TYPE__ size_t;
namespace std {
enum class align_val_t : size_t {};
}

int main() {
  void *p = __builtin_operator_new(100, std::align_val_t(32));
  return 0;
}
Tue, Jun 5, 9:29 PM
EricWF added a comment to D47802: Allow std::vector to move construct its allocator.

@fidget324 Thanks for the patch! Unfortunatly I didn't know you were planning on contributing a fix, so I went ahead and fixed it myself in r334053.

Tue, Jun 5, 6:37 PM
EricWF added a comment to D45015: [Preprocessor] Allow libc++ to detect when aligned allocation is unavailable..

I see, thank you.

clang front-end currently fails to issue a warning or error when an aligned allocation/deallocation functions are required but not available in a few cases (e.g., delete called from a deleting destructor, calls to operator or builtin operator new/delete). I suppose those bugs should be fixed in separate patches.

Tue, Jun 5, 5:19 PM
EricWF committed rCXX334056: Fix test failures after r334053..
Fix test failures after r334053.
Tue, Jun 5, 5:18 PM
EricWF committed rL334056: Fix test failures after r334053..
Fix test failures after r334053.
Tue, Jun 5, 5:18 PM
EricWF committed rCXX334053: Fix PR37694 - std::vector doesn't correctly move construct allocators..
Fix PR37694 - std::vector doesn't correctly move construct allocators.
Tue, Jun 5, 3:37 PM
EricWF committed rL334053: Fix PR37694 - std::vector doesn't correctly move construct allocators..
Fix PR37694 - std::vector doesn't correctly move construct allocators.
Tue, Jun 5, 3:37 PM

Mon, Jun 4

EricWF added a comment to D45015: [Preprocessor] Allow libc++ to detect when aligned allocation is unavailable..

Could you elaborate on what kind of changes you are planning to make in libc++ after committing this patch?

Mon, Jun 4, 4:34 PM
EricWF added a comment to D47399: Add _LIBCPP_LARGE_CODEBASE.

As previously mentioned, most of these changes deal with symbols which are externally instantiated. These symbols cannot be inlined unless the inline keyword is explicitly specified. The addition of __attribute__((noinline)) likely has no effect in a large number of cases.

Mon, Jun 4, 11:38 AM
EricWF added inline comments to D47399: Add _LIBCPP_LARGE_CODEBASE.
Mon, Jun 4, 11:36 AM
EricWF added inline comments to D47399: Add _LIBCPP_LARGE_CODEBASE.
Mon, Jun 4, 11:33 AM

Fri, Jun 1

EricWF updated the diff for D45015: [Preprocessor] Allow libc++ to detect when aligned allocation is unavailable..

Update the patch with the form suggested in the previous conversation. See the updated summary for a description of the behavior.

Fri, Jun 1, 6:52 PM
EricWF added a comment to D45015: [Preprocessor] Allow libc++ to detect when aligned allocation is unavailable..

What when compiler has __builtin_operator_new, __builtin_operator_delete? If I build libc++ tests with recent Clang which has these builtins and run tests with libc++.dylib from old Darwin, there are no linkage errors. Should we define __cpp_aligned_allocation in this case?

I don't see why that should make any difference -- those builtins call the same functions that the new and delete operator call. Perhaps libc++ isn't calling the forms of those builtins that take an alignment argument yet?

It looks like clang currently doesn't issue a warning when a call to builtin_operator_new or builtin_operator_delete calls an aligned allocation function that is not support by the OS version. I suppose we should fix this?

// no warning issued when triple is "thumbv7-apple-ios5.0.0" even though aligned allocation is unavailable.
void *p = __builtin_operator_new(100, std::align_val_t(32));
Fri, Jun 1, 4:30 PM
EricWF added a comment to D45015: [Preprocessor] Allow libc++ to detect when aligned allocation is unavailable..

The new path forward sounds good to me. I'll work on implementing it.

Fri, Jun 1, 4:19 PM
EricWF committed rL333802: Add Features.def to module map.
Add Features.def to module map
Fri, Jun 1, 3:58 PM
EricWF committed rC333802: Add Features.def to module map.
Add Features.def to module map
Fri, Jun 1, 3:58 PM
EricWF 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, 12:07 AM

Thu, May 31

EricWF added inline comments to D46845: [libcxx][c++17] P0083R5: Splicing Maps and Sets.
Thu, May 31, 11:05 PM
EricWF added inline comments to D47607: [libcxx] Almost fix some UB in <map> and <unordered_map>.
Thu, May 31, 7:14 PM
EricWF added a comment to D47607: [libcxx] Almost fix some UB in <map> and <unordered_map>.

Overall this change seems reasonable to me. Thanks for working on this. Initially I was concerned we would hit issues optimizing const objects,
but I should have read your description first! Thanks for ensuring Clang doesn't optimize on this.

Thu, May 31, 7:13 PM
EricWF accepted D47613: Mark __c11_atomic_load as const.

LGTM.

Thu, May 31, 6:27 PM
EricWF accepted D47557: Filesystem tests: un-confuse write time.

LGTM after addressing inline comments.

Thu, May 31, 6:23 PM
EricWF added a comment to D47557: Filesystem tests: un-confuse write time.

So the reason there are atime tests at all is due to the implementation details of __last_write_time here. Essentially we have to do extra work trying to maintain the access time.

Thu, May 31, 10:44 AM

Wed, May 30

EricWF added a comment to D37035: Implement __builtin_LINE() et. al. to support source location capture..

Any news on the status of this ? Would be really nice to have it in.

Wed, May 30, 10:24 AM

Tue, May 29

EricWF committed rL333491: Fix test failure after r333485. Try 2..
Fix test failure after r333485. Try 2.
Tue, May 29, 7:24 PM
EricWF committed rC333491: Fix test failure after r333485. Try 2..
Fix test failure after r333485. Try 2.
Tue, May 29, 7:24 PM
EricWF committed rL333488: Fix test failure after r333485..
Fix test failure after r333485.
Tue, May 29, 6:29 PM
EricWF committed rC333488: Fix test failure after r333485..
Fix test failure after r333485.
Tue, May 29, 6:29 PM
EricWF committed rC333485: [Sema] Use %sub to cleanup overload diagnostics.
[Sema] Use %sub to cleanup overload diagnostics
Tue, May 29, 6:05 PM
EricWF committed rL333485: [Sema] Use %sub to cleanup overload diagnostics.
[Sema] Use %sub to cleanup overload diagnostics
Tue, May 29, 6:05 PM
EricWF closed D47101: [Sema] Use %sub to cleanup overload diagnostics.
Tue, May 29, 6:04 PM
EricWF updated the diff for D37035: Implement __builtin_LINE() et. al. to support source location capture..
  • Fix merge conflicts.
Tue, May 29, 5:31 PM
EricWF accepted D47101: [Sema] Use %sub to cleanup overload diagnostics.

Actually I'm OK making this a post-commit review. @rsmith Please let me know if you have any thoughts in your own time.

Tue, May 29, 5:25 PM
EricWF added a comment to D47101: [Sema] Use %sub to cleanup overload diagnostics.

@rsmith Ping.

Tue, May 29, 5:21 PM
EricWF updated the diff for D37035: Implement __builtin_LINE() et. al. to support source location capture..
  • Merge with upstream.
Tue, May 29, 5:18 PM
EricWF committed rCXX333481: Update ABI lists after change in r333467..
Update ABI lists after change in r333467.
Tue, May 29, 4:56 PM
EricWF committed rL333481: Update ABI lists after change in r333467..
Update ABI lists after change in r333467.
Tue, May 29, 4:56 PM

Mon, May 28

EricWF added inline comments to D47111: <experimental/memory_resource>: Implement monotonic_buffer_resource..
Mon, May 28, 7:48 PM
EricWF added inline comments to D47111: <experimental/memory_resource>: Implement monotonic_buffer_resource..
Mon, May 28, 7:46 PM
EricWF added a comment to D47111: <experimental/memory_resource>: Implement monotonic_buffer_resource..

FYI I have a full implementation of this laying around as D27402 (https://reviews.llvm.org/D27402). But I have never taken the time to resolve merge conflicts.
Feel free to steal any of the tests if they're still relevant.

Mon, May 28, 5:33 PM
EricWF closed D47109: LWG 2969 "polymorphic_allocator::construct() shouldn't pass resource()".

Committed as r333384.

Mon, May 28, 5:13 PM
EricWF committed rL333384: LWG 2969 "polymorphic_allocator::construct() shouldn't pass resource()".
LWG 2969 "polymorphic_allocator::construct() shouldn't pass resource()"
Mon, May 28, 5:13 PM
EricWF committed rCXX333384: LWG 2969 "polymorphic_allocator::construct() shouldn't pass resource()".
LWG 2969 "polymorphic_allocator::construct() shouldn't pass resource()"
Mon, May 28, 5:12 PM

Mon, May 21

EricWF accepted D47150: [Clang Tablegen] Add llvm_unreachable() to getModifierName().

LGTM.

Mon, May 21, 10:21 AM

May 19 2018

EricWF accepted D47109: LWG 2969 "polymorphic_allocator::construct() shouldn't pass resource()".

This LGTM. Let's land it and see if anybody complains.

May 19 2018, 12:33 PM
EricWF added inline comments to D47090: Implement C++17 <memory_resource>..
May 19 2018, 11:42 AM
EricWF updated subscribers of D47090: Implement C++17 <memory_resource>..
May 19 2018, 3:23 AM
EricWF added a comment to D47090: Implement C++17 <memory_resource>..

I should add that this is the approach I've taken with <experimental/filesystem> with no complaints.

May 19 2018, 1:13 AM

May 18 2018

EricWF added a comment to D47090: Implement C++17 <memory_resource>..

I would prefer if we completed <experimental/memory_resource> (according to the current standard, not the LFTS spec), and then moved it.
Would you be willing to do that instead?

Let me see if I understand. libc++'s <experimental/memory_resource> differs from C++17 <memory_resource> in at least these ways:
(A) It's missing monotonic_buffer_resource and {un,}synchronized_pool_resource

May 18 2018, 11:51 PM
EricWF created D47101: [Sema] Use %sub to cleanup overload diagnostics.
May 18 2018, 9:50 PM
EricWF committed rL332800: Adjust and fix failing CXX tests after r332799.
Adjust and fix failing CXX tests after r332799
May 18 2018, 8:37 PM
EricWF committed rC332800: Adjust and fix failing CXX tests after r332799.
Adjust and fix failing CXX tests after r332799
May 18 2018, 8:37 PM
EricWF committed rL332799: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic`….
[Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic`…
May 18 2018, 8:16 PM
EricWF committed rC332799: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic`….
[Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic`…
May 18 2018, 8:16 PM
This revision was not accepted when it landed; it landed in state Needs Review.
May 18 2018, 8:15 PM
EricWF updated the diff for D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..
  • Remove changes to Sema, and overload resolution diagnostics. Only change the special member function diagnostics as an example.
May 18 2018, 7:54 PM
EricWF updated the diff for D40218: [Clang] Add __builtin_launder.
  • Handle array types as requested.
May 18 2018, 7:37 PM
EricWF added a comment to D47090: Implement C++17 <memory_resource>..

I would prefer if we completed <experimental/memory_resource> (according to the current standard, not the LFTS spec), and then moved it.

May 18 2018, 4:48 PM
EricWF added a comment to D47092: downgrade strong type info names to weak_odr linkage.

Sorry @rsmith, I was just about to tackle this.

May 18 2018, 4:32 PM
EricWF updated the diff for D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..
  • Add error if a substitution and a diagnostic share the same name.
May 18 2018, 2:16 PM
EricWF added inline comments to D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..
May 18 2018, 2:16 PM
EricWF committed rL332767: private_typeinfo: limit is_dst_type_derived_from_static_type optimization.
private_typeinfo: limit is_dst_type_derived_from_static_type optimization
May 18 2018, 1:55 PM
EricWF closed D36447: private_typeinfo: limit is_dst_type_derived_from_static_type optimization.

Committed as r332767.

May 18 2018, 1:55 PM
EricWF committed rCXXA332767: private_typeinfo: limit is_dst_type_derived_from_static_type optimization.
private_typeinfo: limit is_dst_type_derived_from_static_type optimization
May 18 2018, 1:55 PM
EricWF committed rCXXA332764: private_typeinfo: propagate static flags in vmi search_above_dst method.
private_typeinfo: propagate static flags in vmi search_above_dst method
May 18 2018, 1:46 PM
EricWF committed rL332764: private_typeinfo: propagate static flags in vmi search_above_dst method.
private_typeinfo: propagate static flags in vmi search_above_dst method
May 18 2018, 1:46 PM
EricWF committed rCXXA332763: private_typeinfo: propagate static flags in vmi search_above_dst method.
private_typeinfo: propagate static flags in vmi search_above_dst method
May 18 2018, 1:46 PM
EricWF committed rL332763: private_typeinfo: propagate static flags in vmi search_above_dst method.
private_typeinfo: propagate static flags in vmi search_above_dst method
May 18 2018, 1:44 PM
EricWF closed D36446: private_typeinfo: propagate static flags in vmi search_above_dst method.

Committed in r332763.

May 18 2018, 1:43 PM
EricWF added a comment to D36447: private_typeinfo: limit is_dst_type_derived_from_static_type optimization.

Looking at the actual raw diff, it looks like it's indented correctly - but phab's being a little weird about how it's displaying it.
I couldn't actually apply the phab patch directly, so I had to recreate it. So I'm not talking about any problem in specific.

Sounds good to me. I don't have commit access -- who should commit these changes?

May 18 2018, 1:35 PM
EricWF accepted D46964: Implement class deduction guides for `std::array`.
May 18 2018, 1:34 PM

May 13 2018

EricWF updated the diff for D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..

Misc cleanups.

  • proof read and correct documentation.
May 13 2018, 5:38 AM

May 12 2018

EricWF updated the diff for D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..

Address @rsmiths comments.

May 12 2018, 10:47 PM
EricWF added a comment to D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..

Thanks, this is great.

Turns out we have to fully parse the diagnostic text in order to substitute modifier indexes, which is a bit of a complication. This patch does exactly that.

I like that you were able to reuse the existing parsing code for documentation generation here.

May 12 2018, 10:47 PM
EricWF added a comment to D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..

Thanks, this is great.

Turns out we have to fully parse the diagnostic text in order to substitute modifier indexes, which is a bit of a complication. This patch does exactly that.

I like that you were able to reuse the existing parsing code for documentation generation here.

May 12 2018, 10:17 PM
EricWF updated the diff for D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..

Document %sub in InternalsManual.rst

May 12 2018, 8:24 PM
EricWF added a comment to D36447: private_typeinfo: limit is_dst_type_derived_from_static_type optimization.

Looking at the actual raw diff, it looks like it's indented correctly - but phab's being a little weird about how it's displaying it.
I couldn't actually apply the phab patch directly, so I had to recreate it. So I'm not talking about any problem in specific.

May 12 2018, 7:28 PM
EricWF added a comment to D23041: Un-XFAIL GCC atomics.align.

OK, here's what I would do:

May 12 2018, 7:23 PM
EricWF accepted D36447: private_typeinfo: limit is_dst_type_derived_from_static_type optimization.

This also LGTM. Please make sure to correct the new blocks are properly indented before committing.

May 12 2018, 6:48 PM
EricWF accepted D36446: private_typeinfo: propagate static flags in vmi search_above_dst method.

Sorry for the delay. This LGTM.

May 12 2018, 6:24 PM
EricWF requested review of D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..
May 12 2018, 5:29 PM
EricWF updated the diff for D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..
  • Get argument renumbering work as @rsmith requested.
  • Make the changes to existing diagnostics whitespace correct.
  • Cleanup DiagnosticSemaKinds.td and SemaOverload.cpp to take advantage of this change.
May 12 2018, 5:28 PM
EricWF added a comment to D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..

@rsmith Can select indexes be negative? What's the correct type to represent them? Existing code seems to use int, but the LLVM style seems to suggest unsigned is more appropriate.

May 12 2018, 5:03 AM
EricWF updated the diff for D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..
  • Update tests.
May 12 2018, 4:57 AM
EricWF added inline comments to D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..
May 12 2018, 2:27 AM
EricWF updated the diff for D46740: [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` messages..

@rsmith How does this look?

May 12 2018, 2:19 AM

May 10 2018

EricWF updated the diff for D45680: [C++2a] Implement operator<=> Part 2: Operator Rewritting and Overload Resolution..
  • Update tests and improve diagnostics. Still more work to be done here though.
May 10 2018, 10:55 PM
EricWF updated the diff for D45680: [C++2a] Implement operator<=> Part 2: Operator Rewritting and Overload Resolution..

Fix fetching the correct source location information in CXXRewrittenOperatorExpr.

May 10 2018, 10:16 PM
EricWF updated the diff for D45680: [C++2a] Implement operator<=> Part 2: Operator Rewritting and Overload Resolution..

Do better english in diagnostics.

May 10 2018, 10:03 PM