theraven (David Chisnall)
User

Projects

User does not belong to any projects.

User Details

User Since
Nov 19 2012, 2:56 AM (305 w, 20 h)

Recent Activity

Sun, Sep 23

theraven added a comment to D52344: [Clang][CodeGen][ObjC]: Fix non-bridged CoreFoundation builds on ELF targets that use `-fconstant-cfstrings`..

Would you be okay with me renaming cfstring to .cfstring for ELF so it's in line with ELF section naming conventions (I'm not entirely sure if that could cause issues with ObjC stuff)? And yes I think it's best to avoid that code-path altogether if it turns out to be a constant as that's likely from the declaration of the type, I'll write a FileCheck test in a moment and check that I can apply the same logic to ELF aside from the DLL stuff as CoreFoundation needs to export the symbol somehow while preserving the implicit extern attribute for every other TU that comes from the builtin that CFSTR expands to. Is what I'm suggesting making sense? If not, let me know, I may be misunderstanding what's happening here.

Following the ELF conventions seems like the right thing to do, assuming it doesn't cause compatibility problems. David Chisnall might know best here.

Sun, Sep 23, 2:39 AM

Tue, Sep 4

theraven added a comment to D50783: [CodeGen] Merge identical block descriptor global variables.

The GNUstep documentation I found replaces '@' with '\1'. Would that fix the problem?

https://github.com/gnustep/libobjc2/blob/master/ABIDoc/abi.tex

Tue, Sep 4, 6:03 AM
theraven committed rL341355: Add release notes for the new GNUstep Objective-C ABI..
Add release notes for the new GNUstep Objective-C ABI.
Tue, Sep 4, 3:41 AM
theraven committed rL341354: Disable the GNUstep v2 ABI on Windows..
Disable the GNUstep v2 ABI on Windows.
Tue, Sep 4, 3:41 AM
theraven committed rL341352: Revert "Disable the GNUstep v2 ABI on Windows.".
Revert "Disable the GNUstep v2 ABI on Windows."
Tue, Sep 4, 3:10 AM
theraven committed rC341352: Revert "Disable the GNUstep v2 ABI on Windows.".
Revert "Disable the GNUstep v2 ABI on Windows."
Tue, Sep 4, 3:10 AM
theraven committed rC341350: Disable the GNUstep v2 ABI on Windows..
Disable the GNUstep v2 ABI on Windows.
Tue, Sep 4, 2:27 AM
theraven committed rL341350: Disable the GNUstep v2 ABI on Windows..
Disable the GNUstep v2 ABI on Windows.
Tue, Sep 4, 2:27 AM

Fri, Aug 31

theraven added inline comments to D50783: [CodeGen] Merge identical block descriptor global variables.
Fri, Aug 31, 3:41 AM
theraven added a comment to D50783: [CodeGen] Merge identical block descriptor global variables.

This revision broke blocks on all ELF targets. The block descriptors' symbol names can now include the @ character, which is reserved on ELF platforms as a separator between symbol name and symbol version. As a result, nothing containing a block that has an Objective-C object argument will link. Please add mangling similar to that in the GNUstep runtime to avoid this.

Fri, Aug 31, 3:40 AM

Tue, Aug 28

theraven committed rL340807: Fix in getAllocationDataForFunction.
Fix in getAllocationDataForFunction
Tue, Aug 28, 2:00 AM
theraven closed D50959: Fix in getAllocationDataForFunction.
Tue, Aug 28, 2:00 AM

Aug 23 2018

theraven added a comment to D50144: Add Windows support for the GNUstep Objective-C ABI V2..

I'm confused by the funclet-based unwinding support. Do you intend GNUStep to be used with windows-msvc triples? If so, how is the runtime throwing exceptions? We took the approach of having the Obj-C runtime wrap Obj-C exceptions in C++ exceptions and then have vcruntime handle the rest (see https://reviews.llvm.org/D47233 and https://reviews.llvm.org/D47988), but I don't see any of the associated RTTI emission changes in this patch.

Aug 23 2018, 3:56 AM

Aug 21 2018

theraven accepted D50959: Fix in getAllocationDataForFunction.

Looks good to me. I will commit it unless anyone objects.

Aug 21 2018, 6:23 AM

Aug 16 2018

theraven added inline comments to D50144: Add Windows support for the GNUstep Objective-C ABI V2..
Aug 16 2018, 1:26 AM

Aug 15 2018

theraven added inline comments to D50144: Add Windows support for the GNUstep Objective-C ABI V2..
Aug 15 2018, 1:46 AM

Aug 14 2018

theraven committed rL339668: [gnu-objc] Make selector order deterministic..
[gnu-objc] Make selector order deterministic.
Aug 14 2018, 3:06 AM
theraven committed rC339668: [gnu-objc] Make selector order deterministic..
[gnu-objc] Make selector order deterministic.
Aug 14 2018, 3:06 AM
theraven closed D50559: [gnu-objc] Make selector order deterministic..
Aug 14 2018, 3:06 AM
theraven committed rL339667: Add a stub mangling for ObjC selectors in the Microsoft ABI..
Add a stub mangling for ObjC selectors in the Microsoft ABI.
Aug 14 2018, 3:05 AM
theraven committed rC339667: Add a stub mangling for ObjC selectors in the Microsoft ABI..
Add a stub mangling for ObjC selectors in the Microsoft ABI.
Aug 14 2018, 3:05 AM

Aug 13 2018

theraven updated the diff for D50559: [gnu-objc] Make selector order deterministic..
  • Add a test case.
Aug 13 2018, 2:17 AM

Aug 11 2018

theraven added inline comments to D50559: [gnu-objc] Make selector order deterministic..
Aug 11 2018, 4:15 AM

Aug 10 2018

theraven created D50559: [gnu-objc] Make selector order deterministic..
Aug 10 2018, 6:40 AM
theraven committed rC339429: Fix a deprecated warning in the last commit..
Fix a deprecated warning in the last commit.
Aug 10 2018, 5:54 AM
theraven committed rL339429: Fix a deprecated warning in the last commit..
Fix a deprecated warning in the last commit.
Aug 10 2018, 5:54 AM
theraven committed rL339428: Add Windows support for the GNUstep Objective-C ABI V2..
Add Windows support for the GNUstep Objective-C ABI V2.
Aug 10 2018, 5:54 AM
theraven committed rC339428: Add Windows support for the GNUstep Objective-C ABI V2..
Add Windows support for the GNUstep Objective-C ABI V2.
Aug 10 2018, 5:53 AM
theraven closed D50144: Add Windows support for the GNUstep Objective-C ABI V2..
Aug 10 2018, 5:53 AM
theraven updated the diff for D50144: Add Windows support for the GNUstep Objective-C ABI V2..

Squashed into a single commit.

Aug 10 2018, 5:12 AM

Aug 9 2018

theraven updated the diff for D50144: Add Windows support for the GNUstep Objective-C ABI V2..
  • Address Dustin's review comments.
  • Fix an issue in protocol generation.
  • Fix failing test.
  • Address rjmcall's review comments.
  • Add some missing comments and factor out SEH check.
Aug 9 2018, 3:42 AM
theraven added a comment to D50144: Add Windows support for the GNUstep Objective-C ABI V2..

I believe that this is now ready to land.

Aug 9 2018, 3:42 AM
theraven updated the diff for D50144: Add Windows support for the GNUstep Objective-C ABI V2..
  • Address rjmcall's review comments.
  • Revert blocks part of the patch to put in a separate review.
Aug 9 2018, 1:06 AM
theraven committed rC339317: Correctly initialise global blocks on Windows..
Correctly initialise global blocks on Windows.
Aug 9 2018, 1:03 AM
theraven committed rL339317: Correctly initialise global blocks on Windows..
Correctly initialise global blocks on Windows.
Aug 9 2018, 1:03 AM
theraven closed D50436: Correctly initialise global blocks on Windows..
Aug 9 2018, 1:03 AM

Aug 8 2018

theraven accepted D50448: [CGObjCGNU] Rename GetSelector helper method to fix -Woverloaded-virtual warning (PR38210).

Looks good to me. This method should probably take a StringRef rather than a const std::string&, but I can make that change separately.

Aug 8 2018, 8:39 AM
theraven added inline comments to D50144: Add Windows support for the GNUstep Objective-C ABI V2..
Aug 8 2018, 4:20 AM
theraven created D50436: Correctly initialise global blocks on Windows..
Aug 8 2018, 4:19 AM
theraven updated the diff for D50144: Add Windows support for the GNUstep Objective-C ABI V2..
  • Revert blocks part of the patch to put in a separate review.
Aug 8 2018, 1:54 AM
theraven updated the diff for D50144: Add Windows support for the GNUstep Objective-C ABI V2..
  • Address Dustin's review comments.
  • Fix an issue in protocol generation.
  • Fix failing test.
  • [gnu-objc] Make selector order deterministic.
  • Address rjmcall's review comments.
Aug 8 2018, 1:42 AM

Aug 7 2018

theraven committed rC339128: [objc-gnustep] Don't emit .guess ivar offset vars..
[objc-gnustep] Don't emit .guess ivar offset vars.
Aug 7 2018, 5:03 AM
theraven committed rL339128: [objc-gnustep] Don't emit .guess ivar offset vars..
[objc-gnustep] Don't emit .guess ivar offset vars.
Aug 7 2018, 5:03 AM
theraven added a comment to D50144: Add Windows support for the GNUstep Objective-C ABI V2..

I'd like to commit this, unless @rjmccall has any objections.

Aug 7 2018, 1:04 AM

Aug 6 2018

theraven updated the diff for D50144: Add Windows support for the GNUstep Objective-C ABI V2..
  • Fix failing test.
Aug 6 2018, 8:41 AM
theraven updated the diff for D50144: Add Windows support for the GNUstep Objective-C ABI V2..
  • Fix an issue in protocol generation.
Aug 6 2018, 6:38 AM
theraven added inline comments to D50144: Add Windows support for the GNUstep Objective-C ABI V2..
Aug 6 2018, 5:18 AM

Aug 3 2018

theraven updated the diff for D50144: Add Windows support for the GNUstep Objective-C ABI V2..
  • Address Dustin's review comments.
Aug 3 2018, 6:38 AM

Aug 1 2018

theraven created D50144: Add Windows support for the GNUstep Objective-C ABI V2..
Aug 1 2018, 9:03 AM

Jul 10 2018

theraven added a comment to D10480: Implement shared_mutex re: N4508.

I missed this when it went in and coming across the code now I'm quite surprised that it did. Why is shared_mutex not implemented as a wrapper around rwlocks (pthreads and Windows both provide this abstraction)? The current implementation looks a lot less efficient than the system version on any operating system that I'm familiar with and has the added effect that native_handle isn't possible to implement, meaning that these can't easily interoperate with C APIs either.

Jul 10 2018, 3:45 AM

May 26 2018

theraven added inline comments to D46052: GNUstep Objective-C ABI version 2.
May 26 2018, 4:25 AM
theraven added inline comments to D46052: GNUstep Objective-C ABI version 2.
May 26 2018, 4:19 AM

May 22 2018

theraven committed rL332966: [objc-gnustep2] Use unsigned char to avoid potential UB in isalnum..
[objc-gnustep2] Use unsigned char to avoid potential UB in isalnum.
May 22 2018, 3:17 AM
theraven committed rL332963: Revert "Revert r332955 "GNUstep Objective-C ABI version 2"".
Revert "Revert r332955 "GNUstep Objective-C ABI version 2""
May 22 2018, 3:17 AM
theraven committed rL332965: [objc-gnu] Fix test..
[objc-gnu] Fix test.
May 22 2018, 3:17 AM
theraven committed rL332964: [objc-gnustep2] Use isalnum instead of a less efficient and nonportable….
[objc-gnustep2] Use isalnum instead of a less efficient and nonportable…
May 22 2018, 3:17 AM
theraven committed rC332965: [objc-gnu] Fix test..
[objc-gnu] Fix test.
May 22 2018, 3:17 AM
theraven committed rC332966: [objc-gnustep2] Use unsigned char to avoid potential UB in isalnum..
[objc-gnustep2] Use unsigned char to avoid potential UB in isalnum.
May 22 2018, 3:17 AM
theraven committed rC332964: [objc-gnustep2] Use isalnum instead of a less efficient and nonportable….
[objc-gnustep2] Use isalnum instead of a less efficient and nonportable…
May 22 2018, 3:17 AM
theraven committed rC332963: Revert "Revert r332955 "GNUstep Objective-C ABI version 2"".
Revert "Revert r332955 "GNUstep Objective-C ABI version 2""
May 22 2018, 3:17 AM
theraven added inline comments to rC332950: GNUstep Objective-C ABI version 2.
May 22 2018, 1:50 AM
theraven added inline comments to rC332950: GNUstep Objective-C ABI version 2.
May 22 2018, 1:38 AM
theraven added inline comments to D46052: GNUstep Objective-C ABI version 2.
May 22 2018, 1:31 AM
theraven added inline comments to rC332950: GNUstep Objective-C ABI version 2.
May 22 2018, 12:27 AM
theraven committed rL332955: Add cctype include..
Add cctype include.
May 22 2018, 12:26 AM
theraven committed rC332955: Add cctype include..
Add cctype include.
May 22 2018, 12:26 AM

May 21 2018

theraven committed rL332950: GNUstep Objective-C ABI version 2.
GNUstep Objective-C ABI version 2
May 21 2018, 11:13 PM
theraven committed rC332950: GNUstep Objective-C ABI version 2.
GNUstep Objective-C ABI version 2
May 21 2018, 11:13 PM
theraven closed D46052: GNUstep Objective-C ABI version 2.
May 21 2018, 11:13 PM

May 20 2018

theraven updated the diff for D46052: GNUstep Objective-C ABI version 2.

Address review comments, including adding a size field for ivars.

May 20 2018, 11:02 AM
theraven added inline comments to D46052: GNUstep Objective-C ABI version 2.
May 20 2018, 11:01 AM

May 1 2018

theraven added inline comments to D46052: GNUstep Objective-C ABI version 2.
May 1 2018, 1:57 AM

Apr 28 2018

theraven added inline comments to D46052: GNUstep Objective-C ABI version 2.
Apr 28 2018, 4:41 AM
theraven updated the diff for D46052: GNUstep Objective-C ABI version 2.
Apr 28 2018, 4:41 AM

Apr 26 2018

theraven updated the diff for D46052: GNUstep Objective-C ABI version 2.

Fix the symbol names that I thought I'd done previously.

Apr 26 2018, 4:20 AM
theraven updated the diff for D46052: GNUstep Objective-C ABI version 2.
  • Fixed non-use of isOptional (in all three places where it should have been used)
  • Reject -fobjc-runtime=gnustep-2.x in the driver for non-ELF targets
  • Fix a bug where the wrong variable was assigned in protocol generation, which triggered an assertion failure in one of the runtime's tests.
  • Rename protocol reference variables to prevent accidental conflicts with protocol references (this was already done for other indirection variables, but I'd missed protocols)
Apr 26 2018, 1:27 AM
theraven added a comment to D46052: GNUstep Objective-C ABI version 2.

Are you asking for a code review or a design review of the ABI?

Apr 26 2018, 1:17 AM

Apr 25 2018

theraven created D46052: GNUstep Objective-C ABI version 2.
Apr 25 2018, 5:17 AM

Apr 11 2018

theraven committed rL329882: ObjCGNU: Fix empty v3 protocols being emitted two fields short.
ObjCGNU: Fix empty v3 protocols being emitted two fields short
Apr 11 2018, 11:51 PM
theraven committed rC329882: ObjCGNU: Fix empty v3 protocols being emitted two fields short.
ObjCGNU: Fix empty v3 protocols being emitted two fields short
Apr 11 2018, 11:51 PM
theraven closed D45305: ObjCGNU: Fix empty v3 protocols being emitted two fields short.
Apr 11 2018, 11:51 PM · Restricted Project

Apr 8 2018

theraven added a comment to D45305: ObjCGNU: Fix empty v3 protocols being emitted two fields short.

I think that we emit empty method lists so that the GCC runtime doesn't choke on them, though there's no reason why we couldn't with the GNUstep ABI. It would therefore be nice if the test failed if we did change to emitting null so that we could update the test at that point and check that it's actually doing the right thing.

Apr 8 2018, 9:57 AM · Restricted Project

Apr 7 2018

theraven added a comment to D45305: ObjCGNU: Fix empty v3 protocols being emitted two fields short.

Isn't it better to test for the correct structure existing in the IR?

Apr 7 2018, 10:45 AM · Restricted Project

Apr 5 2018

theraven accepted D45305: ObjCGNU: Fix empty v3 protocols being emitted two fields short.
Apr 5 2018, 1:51 AM · Restricted Project
theraven added a comment to D45305: ObjCGNU: Fix empty v3 protocols being emitted two fields short.

Looks correct to me. Protocols are only referenced by pointer, so it doesn't matter for old versions of the runtime if these fields are present.

Apr 5 2018, 1:45 AM · Restricted Project

Mar 17 2018

theraven added a comment to D44580: Sema: allow comparison between blocks & block-compatible objc types.

We seem to be missing tests for the assignment part of this patch.

Mar 17 2018, 1:58 AM · Restricted Project

Feb 8 2018

theraven accepted D37052: Add default address space for functions to the data layout (1/3).

Looks fine to me.

Feb 8 2018, 3:21 AM

Feb 7 2018

theraven added inline comments to D42123: Derive GEP index type from Data Layout.
Feb 7 2018, 2:54 AM

Feb 6 2018

theraven accepted D42123: Derive GEP index type from Data Layout.

Two very small nits (which I'd be happy to see fixed after commit, but might be easier to fix first), but otherwise it looks like a significantly cleaned-up version of what we have.

Feb 6 2018, 2:31 AM

Feb 1 2018

theraven added inline comments to D42123: Derive GEP index type from Data Layout.
Feb 1 2018, 3:49 AM

Jan 25 2018

theraven added a comment to D42123: Derive GEP index type from Data Layout.

I want to deprecate SCEVs for pointers if the index size is not equal to pointer size.
What do you think?

Jan 25 2018, 3:36 AM

Jan 24 2018

theraven committed rL323311: [Doc] Guideline on adding exception handling support for a target.
[Doc] Guideline on adding exception handling support for a target
Jan 24 2018, 1:54 AM
theraven closed D42178: [Doc] Guideline on adding exception handling support for a target.
Jan 24 2018, 1:54 AM

Jan 23 2018

theraven added a comment to D42178: [Doc] Guideline on adding exception handling support for a target.

I appear to have lost my credentials for LLVM svn. I've asked Chris to reset them, but someone else should feel free to commit this before then if they want to.

Jan 23 2018, 6:50 AM

Jan 22 2018

theraven added a comment to D42123: Derive GEP index type from Data Layout.

I don't like this patch as is, for several reasons.

  1. It's adding a hack that assumes that the offset should be the width of the widest integer operation. This is probably true in most cases (it is for us), but if we're going to introduce the idea that an address offset is distinct from the size of the pointer then we should do it properly and add that to the TargetInfo string explicitly (defaulting to the same size, if not specified).

So you propose to extend Data Layout string and add index size to it, right? It was one of options that Hal suggested. Ok.

Jan 22 2018, 6:18 AM
theraven accepted D42178: [Doc] Guideline on adding exception handling support for a target.

I'm inclined to recommend that you commit this. It's not perfect, but it's a *lot* better than what was there before, and hopefully having something there will encourage other people to improve it.

Jan 22 2018, 5:28 AM

Jan 19 2018

theraven requested changes to D42123: Derive GEP index type from Data Layout.

I don't like this patch as is, for several reasons.

Jan 19 2018, 4:20 AM

Jan 17 2018

theraven added a comment to D42178: [Doc] Guideline on adding exception handling support for a target.

Thank you very much for making a start on this!

Jan 17 2018, 6:50 AM

Oct 30 2017

theraven added a comment to D39365: [libunwind] Change unw_word_t to always have the same size as the pointer size.

This makes things worse for us. On CHERI, [u]intptr_t is a (typedef for a) built-in type that can hold a capability. Having unw_word_t be uintptr_t

For understanding, I guess you meant "Having unw_word_t be uint64_t" here? Because othewise, that's exactly the change I'm doing - currently it's uint64_t while I'm proposing making it uintptr_t - that you're saying is easier to work with?

Oct 30 2017, 7:56 AM
theraven added a comment to D39365: [libunwind] Change unw_word_t to always have the same size as the pointer size.

This makes things worse for us. On CHERI, [u]intptr_t is a (typedef for a) built-in type that can hold a capability. Having unw_word_t be uintptr_t made LLVM's libunwind considerably easier to port than the HP unwinder would have been, because uintptr_t is a type that is able to hold either any integer-register type or a pointer, whereas neither uint32_t nor uint64_t is. This will be true for any architecture that supports any kind of fat-pointer representation.

Oct 30 2017, 6:01 AM