Page MenuHomePhabricator

theraven (David Chisnall)
User

Projects

User does not belong to any projects.

User Details

User Since
Nov 19 2012, 2:56 AM (540 w, 5 d)

Recent Activity

Thu, Mar 16

theraven added a comment to D146154: [lldb][gnustep] Add minimal GNUstepObjCRuntime plugin for LanguageTypeObjC on non-Apple platforms.

The test looks fine to me, I'm quite surprised that it passes.

Thu, Mar 16, 5:27 AM · Restricted Project, Restricted Project
theraven added inline comments to D146154: [lldb][gnustep] Add minimal GNUstepObjCRuntime plugin for LanguageTypeObjC on non-Apple platforms.
Thu, Mar 16, 2:20 AM · Restricted Project, Restricted Project

Wed, Mar 15

theraven added inline comments to D146154: [lldb][gnustep] Add minimal GNUstepObjCRuntime plugin for LanguageTypeObjC on non-Apple platforms.
Wed, Mar 15, 10:44 AM · Restricted Project, Restricted Project

Tue, Mar 14

theraven added inline comments to D146058: [lldb][gnustep] Add basic test and infrastructure for GNUstep ObjC runtime.
Tue, Mar 14, 9:26 AM · Restricted Project, Restricted Project

Jan 26 2023

theraven added a comment to D141836: [AArch64] Disable __muloti4 libcalls for AArch64.

This seems like a regression for FreeBSD. This function was added to compiler-rt before we officially supported AArch64 and so I'm pretty sure it's shipped in every AArch64 version of FreeBSD, even Tier 2 releases.

Jan 26 2023, 2:33 AM · Restricted Project, Restricted Project

Dec 6 2022

theraven added a comment to D138680: [libc++] Remove Solaris related code.

@ro, I'm happy to help out on a more up-to-date Solaris port if someone wants to do one.

Dec 6 2022, 6:44 AM · Restricted Project, Restricted Project
theraven added a comment to D138563: [IntrisicEmitter] Allow intrinsic types to be dependent on the data layout.

I generally prefer the approach here. Generality is good when necessary but a source of bugs when unnecessary. For things like stack save and stack restore, the only valid address space is the address space used for the stack. Allowing overloading adds more burden to the verifier (it must check that the address space matches) for no benefit that I can perceive.

Dec 6 2022, 3:27 AM · Restricted Project, Restricted Project, Restricted Project

Dec 5 2022

theraven updated subscribers of D138680: [libc++] Remove Solaris related code.

tBricks was using this, but I think they've migrated off Solaris now. I'll check. I haven't had a Solaris system for a very long time.

Dec 5 2022, 10:02 AM · Restricted Project, Restricted Project
theraven added a comment to D138680: [libc++] Remove Solaris related code.

tBricks was using this, but I think they've migrated off Solaris now. I'll check. I haven't had a Solaris system for a very long time.

Dec 5 2022, 8:30 AM · Restricted Project, Restricted Project

Nov 21 2022

theraven added a comment to D135273: [Clang][ObjC] Add optionality to property attribute strings..

@theraven Any chance you could glance over this and reassure us that it isn't going to break the GNU runtime if we do this? (We're adding an extra attribute in the property attribute string so that we can detect @optional properties in ObjC protocols at runtime.)

Nov 21 2022, 12:54 PM · Restricted Project, Restricted Project

Oct 25 2022

theraven added inline comments to rG1e4f82c2578c: [AArch64]SME2 Multi-single vector SVE Destructive 2 and 4 Registers.
Oct 25 2022, 1:38 AM · Restricted Project, Restricted Project

Oct 11 2022

theraven added a comment to D135158: [DataLayout] Introduce DataLayout::getPointerIntegralSize(AS).

Except then you can't do unsigned long x = (unsigned long)&y as intrinsics are not constant expressions. Non-integral pointers are too strict for CHERI as things stand, we want a subset of their behaviour.

Oct 11 2022, 1:42 PM · Restricted Project, Restricted Project

Oct 5 2022

theraven added a comment to D135158: [DataLayout] Introduce DataLayout::getPointerIntegralSize(AS).

CHERI capabilities aren't non-integral. Converting a capability to an integer gives you the address, discarding the metadata (which is also stable*), which is as well-defined as it is on normal architectures.

Oct 5 2022, 1:51 AM · Restricted Project, Restricted Project

Jul 24 2022

theraven accepted D128190: [WinEH] Apply funclet operand bundles to nounwind intrinsics that lower to function calls.

LGTM, a couple of extra comments would help.

Jul 24 2022, 6:11 AM · Restricted Project, Restricted Project, Restricted Project
theraven committed rG94c3b169785c: Fix crash in ObjC codegen introduced with… (authored by theraven).
Fix crash in ObjC codegen introduced with…
Jul 24 2022, 6:02 AM · Restricted Project, Restricted Project
theraven closed D123898: Fix crash in ObjC codegen introduced with 5ab6ee75994d645725264e757d67bbb1c96fb2b6.
Jul 24 2022, 6:02 AM · Restricted Project, Restricted Project

May 27 2022

theraven added a comment to D126395: Allow build without __c11_atomic_fetch_nand.

I don't believe this version is correct. It unconditionally does the lock. If code using this is mixed with code where the compiler inlines the operation then the two operations will not be atomic with respect to eachother. Worse, an atomic-fetch-nand is not atomic with respect to any other operation (e.g. an atomic increment). This needs to have the same if (lockfree(ptr) guard and do a CAS loop in the is-lock-free case.

May 27 2022, 1:36 AM · Restricted Project, Restricted Project

Apr 17 2022

theraven added a comment to D123898: Fix crash in ObjC codegen introduced with 5ab6ee75994d645725264e757d67bbb1c96fb2b6.

I'd like to. The test case from the original bug report was very large but I'm not sure how to trigger this with anything comprehensibly small. You need something where the callee is responsible for destroying the argument and I'm not sure what combination of properties / ABIs results in that. The original test was -(void)foo:(std::string)aString on the MSVC ABI, but I don't know how much of the Visual Studio std::string implementation is necessary to trigger this behaviour. Is it just a non-trivial destructor?

Apr 17 2022, 9:03 AM · Restricted Project, Restricted Project

Apr 16 2022

theraven requested review of D123898: Fix crash in ObjC codegen introduced with 5ab6ee75994d645725264e757d67bbb1c96fb2b6.
Apr 16 2022, 9:00 AM · Restricted Project, Restricted Project

Feb 16 2022

theraven committed rG1ccfef14e57e: Add a case for Rust in LLDB's PDB reader (authored by arlosi).
Add a case for Rust in LLDB's PDB reader
Feb 16 2022, 1:58 AM
theraven closed D119044: Add a case for Rust in LLDB's PDB reader.
Feb 16 2022, 1:58 AM · Restricted Project

Jan 2 2022

theraven added a comment to D68480: Implementation of C++20's P1135R6 for libcxx.

This appears to have baked in some ABI details that don't permit efficient implementation on some of our supported platforms.

This is unfortunate. Have you folks shipped this yet? Perhaps it's not too late to fix things now if you've only released it very recently.

Jan 2 2022, 3:21 AM · Restricted Project, Restricted Project

Dec 8 2021

theraven added a comment to D68480: Implementation of C++20's P1135R6 for libcxx.

This appears to have baked in some ABI details that don't permit efficient implementation on some of our supported platforms. In the future, please can you post an RFC from things that need to integrate with platform-specific code? We're now stuck with this interface until we are willing to do an ABI-breaking change. In particular:

Dec 8 2021, 6:33 AM · Restricted Project, Restricted Project

Nov 8 2021

theraven added a comment to D96914: [ELF] Add -z start-stop-gc to let __start_/__stop_ not retain C identifier name sections.

I completely agree with @jrtc27 on this, specifically:

Nov 8 2021, 5:29 AM · Restricted Project

Oct 27 2021

theraven accepted D112400: [clang][compiler-rt][atomics] Add `__c11_atomic_fetch_nand` builtin and support `__atomic_fetch_nand` libcall.

Thanks!

Oct 27 2021, 5:33 AM · Restricted Project, Restricted Project
theraven added a comment to D112400: [clang][compiler-rt][atomics] Add `__c11_atomic_fetch_nand` builtin and support `__atomic_fetch_nand` libcall.

Ah, it looks as if you didn't add the __c11_ variant of the builtin? Please can you add this?

Oct 27 2021, 3:20 AM · Restricted Project, Restricted Project

Oct 26 2021

theraven accepted D112400: [clang][compiler-rt][atomics] Add `__c11_atomic_fetch_nand` builtin and support `__atomic_fetch_nand` libcall.

Looks good to me, thanks!

Oct 26 2021, 3:11 AM · Restricted Project, Restricted Project
theraven added a comment to D112385: [ELF] Support 128-bit bitmask in oneof(RelExpr).

This looks cleaner and simpler than mine, which was a quick hack to get it compiling. Thanks!

Oct 26 2021, 1:18 AM · Restricted Project

Oct 14 2021

theraven requested review of D111792: [ObjC-GNUstep] Fix ivars for dll{im,ex}ported classes..
Oct 14 2021, 4:58 AM · Restricted Project

Jul 8 2021

theraven added a comment to D105142: RFC: Implementing new mechanism for hard register operands to inline asm as a constraint..

The code looks fine but it would be good to see some docs along with it. We're currently missing docs on inline assembly entirely and the GCC ones are somewhat... opaque when it comes to describing how constraints work.

Thank you for your feedback! By docs do you mind updating/adding some information to the existing LLVM docs(like the langref https://llvm.org/docs/LangRef.html for example), or more comments to the code?

Jul 8 2021, 2:40 AM · Restricted Project, Restricted Project

Jul 7 2021

theraven added a comment to D99517: Implemented [[clang::musttail]] attribute for guaranteed tail calls..

Here's a minimal test:

Jul 7 2021, 3:52 AM · Restricted Project

Jun 30 2021

theraven added a comment to D104349: [compiler-rt][atomics] Add `restrict` modifier to pointer arguments of `__atomic_exchange_c`.

I don't believe a compiler can ever generate code that hits this code path. The public function is:

Jun 30 2021, 5:56 AM · Restricted Project
theraven added a comment to D105142: RFC: Implementing new mechanism for hard register operands to inline asm as a constraint..

The code looks fine but it would be good to see some docs along with it. We're currently missing docs on inline assembly entirely and the GCC ones are somewhat... opaque when it comes to describing how constraints work.

Jun 30 2021, 5:44 AM · Restricted Project, Restricted Project

Jun 29 2021

theraven added a comment to D99517: Implemented [[clang::musttail]] attribute for guaranteed tail calls..

The error message here is very confusing:

Jun 29 2021, 1:40 AM · Restricted Project

Jun 22 2021

theraven added a comment to D104264: Fix atomic loads and stores of 64-bit values in non-default address spaces on ARM.

To elaborate: The set of possible invalid IR is huge and back ends are permitted to assume that they are only ever provided with valid IR, as per the informal contract between the back end and the rest of the compiler (including requiring function arguments to be arranged in a way that the back end's ABI-lowering logic understands). Ensuring that the back end is only ever given IR that it knows how to consume is the responsibility of whatever is invoking the back end. In an ideal world, every construct that a front end + optimiser pipeline may feed to a back end would have a test in tests/Target/{back end} that would check that it correctly lowers the IR.

Jun 22 2021, 9:18 AM · Restricted Project
theraven added a comment to D104264: Fix atomic loads and stores of 64-bit values in non-default address spaces on ARM.

Back ends are expected to crash when given invalid IR.

Jun 22 2021, 8:53 AM · Restricted Project
theraven added a comment to D104264: Fix atomic loads and stores of 64-bit values in non-default address spaces on ARM.

The Morello (AArch64 + CHERI) implementation uses AS 200 for capabilities and does different instruction selection for loads and stores (including atomics) depending on the address space.

Jun 22 2021, 5:20 AM · Restricted Project

May 25 2021

theraven accepted D102523: [docs] Explain address spaces a bit more in opaque pointers doc.
May 25 2021, 9:49 AM · Restricted Project

May 14 2021

theraven added a comment to D102292: [docs] Add page on opaque pointer types.

Yeah, that seems out of scope for this document. https://llvm.org/docs/LangRef.html#pointer-type documents that pointers to functions and pointers to other things are all roughly the same sort of thing - and we're changing all of them over to the opaque pointer type. & other wording generally treats all pointers as having the same size, etc. I think that's best left elsewhere than this doc if there's no interesting distinction between function pointers and data pointers currently (which it doesn't seem like there is).

May 14 2021, 1:30 AM · Restricted Project

Feb 22 2021

theraven added a comment to D96914: [ELF] Add -z start-stop-gc to let __start_/__stop_ not retain C identifier name sections.

Please can you ensure that this is tested with some Objective-C code compiled with -fobjc-runtime=gnustep-2.0? If I am reading the intention correctly, it may result in all of the Objective-C code being dropped from the final link.

Feb 22 2021, 1:55 AM · Restricted Project

Feb 18 2021

theraven accepted D96816: [ObjC] Encode pointers to C++ classes as "^v" if the encoded string would otherwise include template specialization types .

Thanks!

Feb 18 2021, 7:42 AM · Restricted Project
theraven added inline comments to D96816: [ObjC] Encode pointers to C++ classes as "^v" if the encoded string would otherwise include template specialization types .
Feb 18 2021, 1:39 AM · Restricted Project

Feb 17 2021

theraven requested changes to D96816: [ObjC] Encode pointers to C++ classes as "^v" if the encoded string would otherwise include template specialization types .

I'm broadly in favour of this change, but with the GNUstep ABIs this is an ABI-breaking change and so should not be on by default. The type encoding leaks into the ABI in two ways:

Feb 17 2021, 1:20 AM · Restricted Project

Jan 27 2021

theraven accepted D95386: Fix namespace for MLIR Async Runtime.

Assuming @ezhulenev's description of the desired behaviour is correct (which the comment on line 366 appears to support), this patch looks right. I don't think we have tests for the sets of exported symbols anywhere else, which is a bit unfortunate.

Jan 27 2021, 4:03 AM · Restricted Project

Jan 12 2021

theraven accepted D94491: [llvm] [cmake] Remove obsolete /usr/local hack for *BSD.

Great!

Jan 12 2021, 9:22 AM · Restricted Project
theraven added a comment to D94491: [llvm] [cmake] Remove obsolete /usr/local hack for *BSD.

Patches that just remove code without breaking functionality are my favourite kind!

Jan 12 2021, 6:00 AM · Restricted Project
theraven added a comment to D94491: [llvm] [cmake] Remove obsolete /usr/local hack for *BSD.

This patch certainly looks correct for fixing the symptom, but I'm somewhat concerned that the original logic was incorrect anyway. I believe CMake's FindLibrary and FindPackage work correctly with things installed in /usr/local on FreeBSD, so I don't know why we need these.

Jan 12 2021, 4:53 AM · Restricted Project

Dec 1 2020

theraven committed rGd1ed67037de6: [GNU ObjC] Fix a regression listing methods twice. (authored by theraven).
[GNU ObjC] Fix a regression listing methods twice.
Dec 1 2020, 1:51 AM
theraven closed D91874: [GNU ObjC] Fix a regression listing methods twice..
Dec 1 2020, 1:50 AM · Restricted Project

Nov 30 2020

theraven added a comment to D91874: [GNU ObjC] Fix a regression listing methods twice..

I'd like to get this into the 11 point release, so it would be good to have a review...

Nov 30 2020, 6:43 AM · Restricted Project
theraven added reviewers for D91874: [GNU ObjC] Fix a regression listing methods twice.: plotfi, lanza, dexonsmith.
Nov 30 2020, 6:42 AM · Restricted Project

Nov 20 2020

theraven added a comment to D91874: [GNU ObjC] Fix a regression listing methods twice..

This was caught with the GNUstep runtime's test suite, which apparently had not been run with anything newer than clang 8 until recently. With this patch, all of the runtime's tests now pass again (a few others failed in 10 but appear to have been fixed in 11 or 12). We've now configured our CI to test with the nightly builds on Linux, so should catch these things sooner in the future.

Nov 20 2020, 8:50 AM · Restricted Project
theraven added a reviewer for D91874: [GNU ObjC] Fix a regression listing methods twice.: rjmccall.
Nov 20 2020, 8:48 AM · Restricted Project
theraven requested review of D91874: [GNU ObjC] Fix a regression listing methods twice..
Nov 20 2020, 8:47 AM · Restricted Project

Nov 6 2020

theraven added a comment to D90757: [lldb] Enable FreeBSDRemote plugin by default and update test status.

Does the new plugin work with processes that are created with pdfork? The last time I tried this, it caused the old plugin to lock up the debugger entirely. Please can you ensure that there are tests that cover pdfork and cap_enter in the child? These are currently quite badly broken.

Nov 6 2020, 2:26 AM · Restricted Project

Oct 9 2020

theraven accepted D88466: [CSKY 1/n] Add basic stub or infra of csky backend.

I lost track of the mailing list discussions, but assuming that there is consensus to accept this back end I am happy with the structure of the initial code, the size of the contributed diffs, and the engagement from the maintainer.

Oct 9 2020, 1:06 AM · Restricted Project

Oct 8 2020

theraven added a comment to D88466: [CSKY 1/n] Add basic stub or infra of csky backend.

Mostly boilerplate that looks fine, a few minor nits.

Oct 8 2020, 3:00 AM · Restricted Project

Oct 2 2020

theraven added a comment to D87544: [CFGuard] Add address-taken IAT tables and delay-load support.

We don't normally revert commits for downstream build failures. Please can you submit a test case that triggers this issue?

Oct 2 2020, 1:51 AM · Restricted Project

Oct 1 2020

theraven committed rGef4e971e5e18: [CFGuard] Add address-taken IAT tables and delay-load support (authored by ajpaverd).
[CFGuard] Add address-taken IAT tables and delay-load support
Oct 1 2020, 4:46 AM
theraven closed D87544: [CFGuard] Add address-taken IAT tables and delay-load support.
Oct 1 2020, 4:46 AM · Restricted Project

Sep 24 2020

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

Looks good to me, thank you!

Sep 24 2020, 3:54 AM · Restricted Project

Sep 2 2020

theraven accepted D48803: Place the BlockAddress type in the address space of the containing function.

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.

Sep 2 2020, 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