Page MenuHomePhabricator

theraven (David Chisnall)
User

Projects

User does not belong to any projects.

User Details

User Since
Nov 19 2012, 2:56 AM (410 w, 1 d)

Recent Activity

Thu, Sep 24

theraven accepted D75574: RFC: Implement objc_direct_protocol attribute to remove protocol metadata.

Looks good to me, thank you!

Thu, Sep 24, 3:54 AM · Restricted Project

Wed, Sep 2

theraven accepted D48803: Place the BlockAddress type in the program address space.

Looks good to me. This bakes in the assumption that function pointers and basic block addresses are always in the same address space. That seems reasonable to me but it might be worth documenting in the DataLayout docs about the program address space.

Wed, Sep 2, 1:56 AM · Restricted Project

Aug 7 2020

theraven added a comment to D75574: RFC: Implement objc_direct_protocol attribute to remove protocol metadata.

This feature looks generally useful. A few small suggestions:

Aug 7 2020, 1:52 AM · Restricted Project

Jul 26 2020

Herald added a reviewer for D69991: Implement __attribute__((objc_direct)), __attribute__((objc_direct_members)): jdoerfert.

Sorry for getting to this late, I assumed it was a runtime-agnostic feature until someone filed a bug against the GNUstep runtime saying that we didn't implement it. It would be polite to tag me in reviews for features that contain runtime-specific things.

Jul 26 2020, 6:56 AM · Restricted Project

Jun 19 2020

theraven added inline comments to D70326: [docs] LLVM Security Group and Process.
Jun 19 2020, 2:39 AM · Restricted Project

Jun 4 2020

theraven requested changes to D81105: [compiler-rt] [builtin] Implement __atomic_fetch_nand_* builtins.
Jun 4 2020, 4:18 AM · Restricted Project

May 26 2020

theraven committed rGe72cba975735: Use configure depends to trigger reconfiguration when LLVMBuild files change (authored by danielframpton).
Use configure depends to trigger reconfiguration when LLVMBuild files change
May 26 2020, 8:39 AM
theraven closed D80218: Use configure depends to trigger reconfiguration when LLVMBuild files change.
May 26 2020, 8:39 AM · Restricted Project

May 21 2020

theraven added a comment to D80218: Use configure depends to trigger reconfiguration when LLVMBuild files change.

This seems to be failing on the Windows pre-merge test run. Unfortunately, I don't have access to those logs and so I can't merge this until this issue is fixed: https://github.com/google/llvm-premerge-checks/issues/187

May 21 2020, 3:13 AM · Restricted Project

May 20 2020

theraven added a comment to D80218: Use configure depends to trigger reconfiguration when LLVMBuild files change.

That makes sense. Do you have commit access yet? If not, I'll merge this tomorrow.

May 20 2020, 9:48 AM · Restricted Project
theraven added a comment to D80225: [Driver] Recognize -fuse-ld={bfd,gold,lld} but don't prepend "ld." or "ld64." for other values.

I'm a bit nervous about this. I'm aware of at least one out-of-tree toolchain that uses this mechanism to select their proprietary linker. I'd expect an RFC and for this to be highlighted in LLVM Weekly before I'm happy that this won't break downstream consumers.

May 20 2020, 2:39 AM · Restricted Project

May 19 2020

theraven accepted D80218: Use configure depends to trigger reconfiguration when LLVMBuild files change.

Looks good to me. I presume we didn't use this because of CMake version dependencies. Was this feature available in our current minimum CMake version?

May 19 2020, 10:22 AM · Restricted Project

May 14 2020

theraven added a comment to D79846: [compiler-rt] [builtin] Add public functions prototypes.

OK, we will need to live with -Wno*.

May 14 2020, 6:57 AM · Restricted Project
theraven added a comment to D79846: [compiler-rt] [builtin] Add public functions prototypes.

@krytarowski , as I read this change you are:

May 14 2020, 2:05 AM · Restricted Project

May 13 2020

theraven added a comment to D79846: [compiler-rt] [builtin] Add public functions prototypes.

It should already be buildable out of the box. The missing prototypes warning is opt-in. I am not particularly in favour of changes motivated solely by an external build system that explicitly opts in to warnings that don't make sense for a particular compilation unit.

May 13 2020, 5:54 AM · Restricted Project
theraven added a comment to D79846: [compiler-rt] [builtin] Add public functions prototypes.

I'm guessing that this is explicitly enabling the missing prototypes warning. I'm not a huge fan of that for compilation units that don't have public headers, it makes the code more complex and doesn't catch any bugs. It's valuable only when you have a public header and want to ensure that it's in sync with the implementation.

May 13 2020, 4:48 AM · Restricted Project
theraven accepted D79845: [compiler-rt] [builtin] Switch the return type of __atomic_compare_exchange_##n to bool.

I don't object to this, it more correctly expresses the intent. The original int was taken from the GCC docs describing the ABI for these functions. Have the GCC docs been updated?

May 13 2020, 4:48 AM · Restricted Project

May 12 2020

theraven added a comment to D79713: [compiler-rt] [builtins] Port atomic.c to GCC.

FreeBSD uses GNU libatomic for the combination with GCC.

May 12 2020, 8:34 AM · Restricted Project
theraven added a comment to D79713: [compiler-rt] [builtins] Port atomic.c to GCC.

To give some background (please correct me if I'm wrong): This is initially motivated by having snmalloc working on NetBSD. Snmalloc relies on two-pointer compare-and-exchange. When passing -mcx16, clang will happily emit these instructions for the atomic builtins used by <atomic> but GCC currently contains a bug that will emit these only for the old-style __sync_* builtins and not for the __atomic_ ones. As a result, the gcc builds of snmalloc include a call to __atomic_compare_exchange_16, which is not found on NetBSD because they don't ship the relevant support functions. NetBSD would like to ship chunks of compiler-rt, compiled with their default toolchain (GCC).

May 12 2020, 3:43 AM · Restricted Project

May 11 2020

theraven requested changes to D79713: [compiler-rt] [builtins] Port atomic.c to GCC.

I don't think that this should be including <stdatomic.h>. These routines are used to implement interfaces in <stdatomic.h> and it would be completely valid for a conforming implementation to use _Generic macros to directly call these functions from things in <stdatomic.h> that we then depend call, giving a circular dependency.

May 11 2020, 7:29 AM · Restricted Project

Feb 11 2020

theraven added a comment to D73835: [IRBuilder] Virtualize IRBuilder.

Please can we have some perf comparisons for just -emit-llvm (not invoking any of the back-end infrastructure)? Given the numbers so far, I'd expect these to also be in the noise, but even at -O0 a quite significant proportion of the compile time is spent after the stages that use IRBuilder.

Feb 11 2020, 8:27 AM · Restricted Project, Restricted Project

Jan 10 2020

theraven committed rGbdd88b7ed395: Add support for __declspec(guard(nocf)) (authored by ajpaverd).
Add support for __declspec(guard(nocf))
Jan 10 2020, 8:05 AM
theraven closed D72167: Add support for __declspec(guard(nocf)).
Jan 10 2020, 8:05 AM · Restricted Project, Restricted Project

Jan 8 2020

theraven added a comment to D70326: [docs] LLVM Security Group and Process.

We (Microsoft) are interested in participating in this process.

Jan 8 2020, 3:05 AM · Restricted Project

Dec 16 2019

theraven added inline comments to D71499: Add builtins for aligning and checking alignment of pointers and integers.
Dec 16 2019, 5:31 AM · Restricted Project

Dec 10 2019

theraven added inline comments to D71094: [libc] Add implementation of errno and define the other macros of errno.h..
Dec 10 2019, 2:23 AM · Restricted Project

Nov 14 2019

theraven accepted D70198: On FreeBSD use AT_EXECPATH from ELF auxiliary vectors for getExecutablePath.
Nov 14 2019, 2:33 AM · Restricted Project

Nov 9 2019

theraven added a comment to D69690: [GlobalsAA] Restrict ModRef result if any internal method has its address taken..
Nov 9 2019, 9:00 AM · Restricted Project

Nov 4 2019

theraven added inline comments to D69421: [libc] Header generation scheme..
Nov 4 2019, 1:18 AM · Restricted Project

Nov 3 2019

theraven added a comment to D69690: [GlobalsAA] Restrict ModRef result if any internal method has its address taken..

I think this version of the test case is slightly oversimplified and it would be valid for an optimisation to remove the check. If there is any address-taken function that may have escaped, then it is not okay to assume that @llvm.objc.autoreleasePoolPop will definitely not write to it, but in this case there are no stores to an internal global and so GVN is at liberty to eliminate it entirely. The fact that it doesn't is a missed optimisation caused by not having sufficient knowledge of @llvm.objc.autoreleasePoolPop.

Nov 3 2019, 8:58 AM · Restricted Project

Oct 30 2019

theraven added inline comments to D69421: [libc] Header generation scheme..
Oct 30 2019, 4:41 AM · Restricted Project

Oct 28 2019

theraven committed rGd157a9bc8ba1: Add Windows Control Flow Guard checks (/guard:cf). (authored by ajpaverd).
Add Windows Control Flow Guard checks (/guard:cf).
Oct 28 2019, 8:20 AM
theraven closed D65761: Add Windows Control Flow Guard checks (/guard:cf)..
Oct 28 2019, 8:20 AM · Restricted Project, Restricted Project
theraven added inline comments to D69421: [libc] Header generation scheme..
Oct 28 2019, 2:32 AM · Restricted Project
theraven added inline comments to D69421: [libc] Header generation scheme..
Oct 28 2019, 2:15 AM · Restricted Project

Oct 4 2019

theraven added inline comments to D68328: Fix occurrences that size and range of pointers are assumed to be the same..
Oct 4 2019, 6:36 AM · Restricted Project, Restricted Project

Sep 29 2019

theraven added inline comments to D67867: [libc] Add few docs and implementation of strcpy and strcat..
Sep 29 2019, 12:39 AM · Restricted Project, Restricted Project
theraven added a comment to D67867: [libc] Add few docs and implementation of strcpy and strcat..

Maybe everything is fine, but given this setup, does anyone see any potential problems with compiling these functions for nvptx? I'd like to eventually see a mode where we compile an appropriate subset of these functions for GPU targets -- either in bitcode form for linking with our device-side OpenMP runtime library or as a native object -- to provide a more feature-complete offloading environment.

The one thing that caught by eye was the use of the section attribute, and I was curious what nvptx does with that. As far as I can tell, perhaps the answer is nothing.

Then I think this scheme won't work, since the point of the sections is to enable the creation of the global symbols post-build.

E.g., I think the idea is that the main implementation defines the function with C++ name __llvm_libc::strcpy(char *, const char *), and places the code in the .llvm.libc.entrypoint.strcpy section. And then another tool comes along and iterates the llvm.libc.entrypoint sections, and adds global symbol aliases for each one.

That scheme feels probably over-complex, IMO, but I don't have an concrete counter-proposal in mind.

Sep 29 2019, 12:18 AM · Restricted Project, Restricted Project

Sep 27 2019

theraven added inline comments to D67867: [libc] Add few docs and implementation of strcpy and strcat..
Sep 27 2019, 3:13 AM · Restricted Project, Restricted Project
theraven added a comment to D67867: [libc] Add few docs and implementation of strcpy and strcat..

We don't have anything documenting the usage of reserved identifiers. The C standard reserves identifiers that begin with a double underscore or with an underscore or a capital as reserved for the 'implementation' but assumes that the compiler and library are a single blob. GCC has a documented policy that double-underscore identifiers are reserved for the compiler and underscore-capital identifiers are reserved for the library (but glibc doesn't follow it, so ended up with __block being used as an identifier in unistd.h, which broke many things for a long time). Do we want to have a stricter policy, for example that the only identifiers that we use in public headers that are not standard symbols are __LLVM_LIBC_{FOO} for macros and __llvm_libc_foo for other identifiers?

Sep 27 2019, 2:57 AM · Restricted Project, Restricted Project
theraven added a comment to D68108: Redeclare Objective-C property accessors inside the ObjCImplDecl in which they are synthesized..

The changes for the GNU runtimes look correct to me. We're missing a bunch of tests there, unfortunately.

Sep 27 2019, 1:45 AM · Restricted Project

Sep 3 2019

theraven committed rL370736: Add my GitHub account..
Add my GitHub account.
Sep 3 2019, 3:28 AM

Jul 16 2019

theraven added a comment to D64493: [Driver] Don't pass --dynamic-linker to ld on Solaris.

I think this was simply mirroring what gcc 4.something did on Solaris.

Jul 16 2019, 3:05 AM · Restricted Project, Restricted Project
theraven accepted D64493: [Driver] Don't pass --dynamic-linker to ld on Solaris.
Jul 16 2019, 3:05 AM · Restricted Project, Restricted Project

Jun 27 2019

theraven added inline comments to D63525: LangRef: Attempt to formulate some rules for addrspacecast.
Jun 27 2019, 5:25 AM · Restricted Project

Jun 20 2019

theraven added a comment to D63525: LangRef: Attempt to formulate some rules for addrspacecast.

Apparently I forgot to hit submit on the comments I made yesterday, sorry!

Jun 20 2019, 2:03 AM · Restricted Project

Jun 19 2019

theraven added a comment to D63525: LangRef: Attempt to formulate some rules for addrspacecast.

Thanks for working on this, it's a seriously underspecified part of LLVM.

Jun 19 2019, 1:22 AM · Restricted Project

Jun 11 2019

theraven accepted D31924: SROA: Allow eliminating addrspacecasted allocas.

I think this looks like it will improve codegen for us and not violate any of our C-level guarantees. Hopefully @arichardson can also take a look.

Jun 11 2019, 1:31 AM

May 29 2019

theraven accepted D61974: [ObjC] Fix encoding of ObjC pointer types that are pointers to typedefs.

LGTM. I wonder if we have any other ugly GCC bug compatibility parts in clang's Objective-C implementation...

May 29 2019, 9:06 AM · Restricted Project

May 17 2019

theraven added inline comments to D61974: [ObjC] Fix encoding of ObjC pointer types that are pointers to typedefs.
May 17 2019, 3:37 AM · Restricted Project

May 16 2019

theraven requested changes to D61974: [ObjC] Fix encoding of ObjC pointer types that are pointers to typedefs.
May 16 2019, 12:23 AM · Restricted Project

May 7 2019

theraven added a comment to D61634: [clang/llvm] Allow efficient implementation of libc's memory functions in C/C++.

I wonder if a list of comma-separated names is the right approach. Would it make more sense to add a new attribute for each of the helpers, such as #no-runtime-for-memcpy? That should make querying simpler (one lookup in the table, rather than a lookup and a string scan) and also make it easier to add and remove attributes (merging is now just a matter of trying to add all of them, with the existing logic to deduplicate repeated attributes working).

May 7 2019, 5:40 AM · Restricted Project, Restricted Project

Apr 29 2019

theraven committed rG714a4425de37: Try to use /proc on FreeBSD for getExecutablePath (authored by theraven).
Try to use /proc on FreeBSD for getExecutablePath
Apr 29 2019, 2:23 AM
theraven committed rL359427: Try to use /proc on FreeBSD for getExecutablePath.
Try to use /proc on FreeBSD for getExecutablePath
Apr 29 2019, 2:23 AM

Apr 1 2019

theraven added a comment to D59945: [ObjCMetadata] Add support for reading Objective-C metadata.

I am not convinced that there is sufficient abstraction here to handle multiple runtimes without significant code duplication. The Mach-O and LLVM IR parsers both appear to duplicate all knowledge of the runtime's data structures, so if you wanted to add a second runtime you'd then need four classes. I would expect to see two abstraction layers:

Apr 1 2019, 6:00 AM · Restricted Project

Mar 31 2019

theraven committed rG7b36a86431e2: [gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs. (authored by theraven).
[gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs.
Mar 31 2019, 4:22 AM
theraven committed rG17d429535984: COMDAT-fold block descriptors. (authored by theraven).
COMDAT-fold block descriptors.
Mar 31 2019, 4:22 AM
theraven committed rG0e9e02cd723e: [objc-gnustep] Use .init_array not .ctors when requested. (authored by theraven).
[objc-gnustep] Use .init_array not .ctors when requested.
Mar 31 2019, 4:22 AM
theraven committed rL357364: [gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs..
[gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs.
Mar 31 2019, 4:22 AM
theraven committed rC357364: [gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs..
[gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs.
Mar 31 2019, 4:21 AM
theraven closed D58724: [gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs..
Mar 31 2019, 4:21 AM · Restricted Project
theraven committed rC357363: COMDAT-fold block descriptors..
COMDAT-fold block descriptors.
Mar 31 2019, 4:21 AM
theraven committed rL357363: COMDAT-fold block descriptors..
COMDAT-fold block descriptors.
Mar 31 2019, 4:21 AM
theraven closed D58807: [CodeGen] COMDAT-fold block descriptors.
Mar 31 2019, 4:21 AM · Restricted Project, Restricted Project
theraven committed rL357362: [objc-gnustep] Use .init_array not .ctors when requested..
[objc-gnustep] Use .init_array not .ctors when requested.
Mar 31 2019, 4:21 AM
theraven committed rC357362: [objc-gnustep] Use .init_array not .ctors when requested..
[objc-gnustep] Use .init_array not .ctors when requested.
Mar 31 2019, 4:21 AM
theraven updated the diff for D58724: [gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs..
  • Fix ownership with Twine.
Mar 31 2019, 2:22 AM · Restricted Project

Mar 1 2019

theraven updated the diff for D58724: [gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs..
  • Address Dustin's review comments.
  • [objc-gnustep] Use $ in symbol names on Windows.
  • Add fix from Dustin.
Mar 1 2019, 4:59 AM · Restricted Project
theraven added a comment to D58807: [CodeGen] COMDAT-fold block descriptors.

It would probably benefit from a test so that we don't regress.

Mar 1 2019, 12:35 AM · Restricted Project, Restricted Project
theraven accepted D58807: [CodeGen] COMDAT-fold block descriptors.

Looks good to me. On ELF and Mach-O, I think we get the equivalent behaviour automatically from the ODR linkage type. I'd really like to see linkage type and COMDAT made orthogonal, but that's a bigger change.

Mar 1 2019, 12:34 AM · Restricted Project, Restricted Project

Feb 28 2019

theraven added inline comments to D58724: [gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs..
Feb 28 2019, 11:36 AM · Restricted Project
theraven added inline comments to D58724: [gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs..
Feb 28 2019, 8:10 AM · Restricted Project

Feb 27 2019

theraven created D58724: [gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs..
Feb 27 2019, 9:27 AM · Restricted Project
theraven added a comment to D58724: [gnustep-objc] Make the GNUstep v2 ABI work for Windows DLLs..

This review is mostly so that @DHowett-MSFT can check that I didn't break his patches too badly in the cleanup and test that they still do allow building Objective-C DLLs on Windows.

Feb 27 2019, 9:27 AM · Restricted Project

Feb 24 2019

Herald added a project to D55802: Change CGObjC to use objc intrinsics instead of runtime methods: Restricted Project.

After some bisection, it appears that this is the revision that introduced the regression in the GNUstep Objective-C runtime test suite that I reported on the list a few weeks ago. In this is the test (compiled with -fobjc-runtime=gnustep-2.0 -O3 and an ELF triple):

Feb 24 2019, 7:48 AM · Restricted Project

Feb 3 2019

theraven committed rGccc42869a7e3: [objc-gnustep] Fix encoding of ivar size for _Bool. (authored by theraven).
[objc-gnustep] Fix encoding of ivar size for _Bool.
Feb 3 2019, 7:06 AM
theraven committed rL352995: [objc-gnustep] Fix encoding of ivar size for _Bool..
[objc-gnustep] Fix encoding of ivar size for _Bool.
Feb 3 2019, 7:06 AM
theraven committed rC352995: [objc-gnustep] Fix encoding of ivar size for _Bool..
[objc-gnustep] Fix encoding of ivar size for _Bool.
Feb 3 2019, 7:05 AM

Dec 29 2018

theraven accepted D54539: [CodeGen] Replace '@' characters in block descriptors' symbol names with '\1' on ELF targets..

Looks like a much cleaner change.

Dec 29 2018, 7:58 AM · Restricted Project

Dec 28 2018

theraven committed rL350130: [objc-gnustep2] Fix a bug in category generation..
[objc-gnustep2] Fix a bug in category generation.
Dec 28 2018, 9:49 AM
theraven committed rC350130: [objc-gnustep2] Fix a bug in category generation..
[objc-gnustep2] Fix a bug in category generation.
Dec 28 2018, 9:48 AM

Dec 27 2018

theraven committed rC350092: [objc-gnustep] Fix a copy-and-paste error..
[objc-gnustep] Fix a copy-and-paste error.
Dec 27 2018, 6:48 AM
theraven committed rL350092: [objc-gnustep] Fix a copy-and-paste error..
[objc-gnustep] Fix a copy-and-paste error.
Dec 27 2018, 6:48 AM
theraven added a comment to D54539: [CodeGen] Replace '@' characters in block descriptors' symbol names with '\1' on ELF targets..

Please can we either merge this or revert the original change that introduced the bug that this is fixing? It's now been 6 months since blocks generated invalid ELF symbols.

Dec 27 2018, 4:42 AM · Restricted Project

Dec 20 2018

theraven added a comment to D55869: Convert some ObjC retain/release msgSends to runtime calls.

This should be fine for the GNUstep runtime (the GCC runtime doesn't support ARC at all). My main concern is that it will break already-released versions of the runtime built with a newer version of clang. I can easily enable a new flag in the next release, but doing so for older ones is more problematic.

Dec 20 2018, 12:35 PM

Dec 13 2018

theraven added a comment to D55640: [clang-tidy] Implement a check for large Objective-C type encodings 🔍.

I wonder if we want to have an option to elide ObjC type info for all non-POD C++ types. Nothing that you do with the type encoding is likely to be correct (for example, you can see the pointer field in a std::shared_ptr, but you can't see that changes to it need to update reference counts) so it probably does more harm than good.

Dec 13 2018, 1:04 AM · Restricted Project
theraven added a comment to D55229: [COFF] Statically link certain runtime library functions.

If we're going to change the default, please at least add a flag to allow callers to opt into dlimport. We can then make that dependent on -static-objc or similar.

Dec 13 2018, 1:01 AM · Restricted Project, Restricted Project

Dec 11 2018

theraven added a comment to D55544: Warning: objc-encodings-larger-than=.

It would probably be a good idea to have a similar check on properties, as property encoding strings contain the type encoding (plus extra stuff).

Dec 11 2018, 6:02 AM · Restricted Project
theraven added a comment to rL348726: Add OpenBSD support to OpenMP.

I wonder if it would be cleaner to define a KMP_OS_POSIX and a KMP_OS_BSD and avoid a load of 'if Linux, FreeBSD, NetBSD, DragonFlyBSD, HURD' checks. This would make it easier for the next person to support a UNIX-like or BSD-derived OS.

Dec 11 2018, 12:58 AM

Nov 20 2018

theraven added a comment to rL346732: CMake: Deprecate using llvm-config to detect llvm installation.

It's not clear from this whether there's a plan to remove llvm-config, or just to remove llvm-config as a way for clang to detect llvm. I would be strongly opposed to the former. Having tried to maintain out-of-tree code that builds with multiple versions of LLVM, it is more or less possible with llvm-config and totally impossible with the LLVM CMake files. Unless dropping llvm-config is accompanied by a strong commitment to long-term API stability for the LLVM CMake infrastructure, this would have a significant negative impact on downstream consumers of LLVM (and, even then, extracting the CMake information when your downstream build system is not CMake is painful).

Nov 20 2018, 2:17 AM

Nov 15 2018

theraven added inline comments to D54539: [CodeGen] Replace '@' characters in block descriptors' symbol names with '\1' on ELF targets..
Nov 15 2018, 1:05 AM · Restricted Project

Oct 23 2018

theraven accepted D53547: NFC: Remove the ObjC1/ObjC2 distinction from clang (and related projects).

Looks good for me, and removing all of the code describing Objective-C 4 as ObjC1 makes me happy.

Oct 23 2018, 11:14 AM

Oct 12 2018

theraven added inline comments to D53162: [DataLayout] Add bit width of pointers to global values.
Oct 12 2018, 4:58 AM
theraven added inline comments to D53162: [DataLayout] Add bit width of pointers to global values.
Oct 12 2018, 3:23 AM

Sep 28 2018

theraven added a comment to D52581: [AST] Revert mangling changes from r339428.

The simplest option is something like P8109, where we add a .objc discriminator when mangling the RTTI itself. It would require the GNUStep runtime for Windows to be altered accordingly (e.g. https://github.com/gnustep/libobjc2/blob/master/eh_win32_msvc.cc#L85 would have to use ".objc.PAU" instead of ".PAU.objc_cls_"); would that be acceptable, @theraven and @DHowett-MSFT?

Sep 28 2018, 1:45 AM

Sep 27 2018

theraven added a comment to D47233: [CodeGen] Emit MSVC RTTI for Obj-C EH types.

We ran into some critical issues with this approach on x64. The pointers in the exception record are supposed to be image-relative instead of absolute, so I tried to make them absolute to libobjc2's load address, but I never quite solved it.

A slightly better-documented and cleaner version of the code you linked is here.

Sep 27 2018, 1:00 AM
theraven added a comment to D52581: [AST] Revert mangling changes from r339428.

I would have done the same for the GNUstep RTTI here, except I don't actually
see the code for that anywhere, and no tests seem to break either, so I
believe it's not upstreamed yet.

Sep 27 2018, 12:59 AM

Sep 23 2018

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.

Sep 23 2018, 2:39 AM

Sep 4 2018

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

Sep 4 2018, 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.
Sep 4 2018, 3:41 AM