Page MenuHomePhabricator

chandlerc (Chandler Carruth)
UserAdministrator

Projects

User does not belong to any projects.

User Details

User Since
Jul 7 2012, 2:54 PM (568 w, 4 d)
Roles
Administrator

Recent Activity

Dec 28 2022

chandlerc added a comment to D140726: lld: CHECK->LLD_CHECK to reduce chance of conflict with other libraries.

This is only used in lld cpp files, and lld's header files aren't meant to be used outside it. So halide is doing something unsupported.

I don't think Halide's doing something wrong here - it's including lld/Common/Driver.h which states:

// Generic entry point when using LLD as a library, safe for re-entry, supports
// crash recovery.

And that includes lld/Common/CommonLinkerContext.h which includes lld/Common/ErrorHandler.h

Could halide undef this macro after including the lld header and before including absl headers instead?

Perhaps? I guess alternatively lld/Common/Driver.h could undef it at the end, but including any other lld header would risk breakage (since they might expect the macro to still be defined) - would probably make implementing that header tricky - needing to redefine that macro back again in the implementation file, etc.

Dec 28 2022, 9:36 AM · Restricted Project, Restricted Project, Restricted Project

Dec 19 2022

chandlerc added a comment to D136487: [libc.search] [PATCH 1/6] add wyhash as a header library.

Not active really here, but wanted to point out --

Dec 19 2022, 12:35 AM · Restricted Project, Restricted Project

Nov 1 2021

chandlerc committed rG0198d76e1e76: [Bazel] Get `//clang` building on Windows with clang-cl. (authored by chandlerc).
[Bazel] Get `//clang` building on Windows with clang-cl.
Nov 1 2021, 7:59 PM
chandlerc closed D112399: Get Bazel building `//clang` on Windows with clang-cl..
Nov 1 2021, 7:59 PM · Restricted Project
chandlerc added inline comments to D112399: Get Bazel building `//clang` on Windows with clang-cl..
Nov 1 2021, 7:55 PM · Restricted Project
chandlerc added a comment to D112883: [bazel] Re-introduce `copts` hacks for lib/AST includes..

Is this breaking actual users? I wouldn't expect it to break unless they depend on this target.

I don't know :-) I just know that people have sent me patches to remove the repository name dependence. I think https://github.com/llvm/llvm-project/blob/d1fdd745d510f40d8741d44ce39f5ae24ee7f91a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel#L1460 is the only previous instance in clang. That gets used only in "frontend". I'm not sure if there are people using "ast" but not "frontend"

Nov 1 2021, 7:27 PM · Restricted Project
chandlerc added a comment to D112399: Get Bazel building `//clang` on Windows with clang-cl..

Thanks, making suggested changes and then landing!

Nov 1 2021, 5:54 PM · Restricted Project
chandlerc added a comment to D112883: [bazel] Re-introduce `copts` hacks for lib/AST includes..

:-((((( Did you try the separate library with strip_include_prefix?

Nov 1 2021, 5:52 PM · Restricted Project
chandlerc committed rGd1fdd745d510: Re-introduce `copts` hacks for lib/AST includes. (authored by chandlerc).
Re-introduce `copts` hacks for lib/AST includes.
Nov 1 2021, 5:31 PM
chandlerc closed D112883: [bazel] Re-introduce `copts` hacks for lib/AST includes..
Nov 1 2021, 5:31 PM · Restricted Project

Oct 30 2021

chandlerc requested review of D112883: [bazel] Re-introduce `copts` hacks for lib/AST includes..
Oct 30 2021, 9:18 PM · Restricted Project
chandlerc requested review of D112399: Get Bazel building `//clang` on Windows with clang-cl..

PTAL, and thanks for feedback so far!

Oct 30 2021, 9:18 PM · Restricted Project
chandlerc updated the diff for D112399: Get Bazel building `//clang` on Windows with clang-cl..

Major update to better fix some of the issues here. No longer requires any changes outside of Bazel.

Oct 30 2021, 9:17 PM · Restricted Project
chandlerc closed D111930: Add support for Bazel builds on Windows with `clang-cl`..
Oct 30 2021, 3:49 PM

Oct 28 2021

chandlerc committed rG112dc16014f1: Add support for Bazel builds on Windows with `clang-cl`. (authored by chandlerc).
Add support for Bazel builds on Windows with `clang-cl`.
Oct 28 2021, 9:05 AM

Oct 25 2021

chandlerc added inline comments to D112399: Get Bazel building `//clang` on Windows with clang-cl..
Oct 25 2021, 7:06 PM · Restricted Project

Oct 24 2021

chandlerc removed a reviewer for D111930: Add support for Bazel builds on Windows with `clang-cl`.: llvm-commits.
Oct 24 2021, 10:52 PM
chandlerc requested review of D112399: Get Bazel building `//clang` on Windows with clang-cl..
Oct 24 2021, 10:10 PM · Restricted Project
chandlerc abandoned D112397: Teach Bazel build for //clang to work on Windows..

Sigh. The Bazel bits seem to break the automatic adding of lists. Ignore, I'll create a fresh revision with lists....

Oct 24 2021, 10:01 PM
chandlerc requested review of D112397: Teach Bazel build for //clang to work on Windows..
Oct 24 2021, 10:00 PM

Oct 23 2021

chandlerc added a comment to D111930: Add support for Bazel builds on Windows with `clang-cl`..

Updated, PTAL

Oct 23 2021, 5:52 PM
chandlerc updated the diff for D111930: Add support for Bazel builds on Windows with `clang-cl`..

Update based on review...

Oct 23 2021, 5:52 PM

Oct 16 2021

chandlerc updated the diff for D111930: Add support for Bazel builds on Windows with `clang-cl`..

Add at least one obvious fix needed in Clang's build rules as well.

Oct 16 2021, 1:20 AM
chandlerc requested review of D111930: Add support for Bazel builds on Windows with `clang-cl`..
Oct 16 2021, 1:05 AM

Sep 20 2021

chandlerc accepted D110103: [libc++abi] Remove unnecessary atomic_support.h header from libc++abi.

As mentioned in chat, there are other includes of uncopied files: https://github.com/llvm/llvm-project/blob/main/libcxxabi/src/stdlib_stdexcept.cpp#L17

Sep 20 2021, 12:59 PM · Restricted Project, Restricted Project

Jul 29 2021

chandlerc accepted D107123: [Bazel] Unconditionally define STDC LIMIT/CONSTANT/FORMAT.

LGTM

Jul 29 2021, 6:08 PM · Restricted Project
chandlerc accepted D107019: [Bazel] Derive targets from file presence as in CMake build.

LGTM

Jul 29 2021, 6:06 PM · Restricted Project

Jul 27 2021

chandlerc accepted D105286: Fix memory leaks.

I don't think LLVM makes any attempt to be exception safe in this way, so not sure how important this is, but sure.

Jul 27 2021, 8:16 PM · Restricted Project

Jul 26 2021

chandlerc added inline comments to D106784: [ADT] function_ref captures function pointers by value.
Jul 26 2021, 6:17 PM · Restricted Project
chandlerc added a comment to D104328: [libc++] Always build libc++ and libc++abi with -fPIC.

FWIW, I think this patch makes sense to me.

Jul 26 2021, 3:09 PM · Restricted Project, Restricted Project, Restricted Project
chandlerc added a comment to D106784: [ADT] function_ref captures function pointers by value.

An alternative would be to delete this overload and insist callers pass a lambda that itself calls the desired function. This makes the user of function_ref more verbose, but it avoids having two dynamic dispatches (I think).

Jul 26 2021, 3:01 PM · Restricted Project

Jul 16 2021

chandlerc added inline comments to D106196: [Bazel] Condition Exegesis target-specific sources.
Jul 16 2021, 5:53 PM · Restricted Project

Jul 8 2021

chandlerc added a comment to D105338: [InstCombine] Revert "Temporarily do not drop volatile stores before unreachable".

But just reverting this is pretty hostile unless Clang has been updated to make C and C++ volatile stores continue to behave as the language expects first.

Just regressing Clang because no one has written the LangRef change doesn't make sense to me. I think you should fix Clang to not be buggy first if you want to pursue this (or work with the Clang devs to get such a patch), just like we would fix a buggy LLVM pass that broke real users before enabling a valid optimization that uncovered the big.

I agree. I don't know exactly what fixes are needed for Clang, but we do know that code like this:
https://github.com/llvm/llvm-project/blob/8cf60e61e7b0e3213b5b81039878dcf1ef18c00f/compiler-rt/lib/gwp_asan/guarded_pool_allocator.cpp#L254
( the root cause of https://llvm.org/PR47480 ) is going to break again with this change.

If the goal is to get source like that to change, then we might as well fix that first, so we can point to it as a reference example of how to fix code?

Jul 8 2021, 12:03 PM · Restricted Project
chandlerc added a comment to D105338: [InstCombine] Revert "Temporarily do not drop volatile stores before unreachable".

We actually hit this in the OpenMP device runtime. It seems nobody is interested in discussing a LangRef change. LGTM assuming there is no LangRef patch by Friday.

Jul 8 2021, 2:25 AM · Restricted Project

Jun 30 2021

chandlerc accepted D105252: [Bazel] add missing load to submodule example.

Doh, me too, sorry about that! LGTM!

Jun 30 2021, 7:19 PM · Restricted Project
chandlerc accepted D105245: [Bazel] Update README with examples.

LGTM, two minor suggestions below.

Jun 30 2021, 4:28 PM · Restricted Project
chandlerc accepted D104969: [Bazel] Rework LLVM target selection.

LGTM!

Jun 30 2021, 4:23 PM · Restricted Project

Jan 17 2021

chandlerc added a comment to D93169: [OpenMP] Added the support for cache line size 256 for A64FX.

I'm going to revert this as it breaks CMake on systems which do not have /proc/cpuinfo such as macOS.

This may be a bit hard to see because the code isn't reached unless the architecture is aarch64, but on an ARM macOS system that path hits. It would also hit on other BSDs or other OSes running on AArch64 but without /proc/cpuinfo.

For your reference, here is the error message from CMake for me:

CMake Error at /Users/chandlerc/src/llvm/llvm-project/openmp/runtime/cmake/LibompGetArchitecture.cmake:74 (file):
  file failed to open for reading (No such file or directory):

    /proc/cpuinfo
Call Stack (most recent call first):
  /Users/chandlerc/src/llvm/llvm-project/openmp/runtime/CMakeLists.txt:73 (libomp_is_aarch64_a64fx)

Will fix it right away.

I didn't think my CMake fu was up to it, but I think I have a fix, WDYT: https://reviews.llvm.org/D94889

Jan 17 2021, 4:20 PM · Restricted Project
chandlerc closed D94889: Fix openmp CMake build on non-Linux AArch64 systems.

Thanks for the fast review, landed in https://github.com/llvm/llvm-project/commit/f855751c1284c82c1c46b98f6d1b3ca2021d6cb9.

Jan 17 2021, 4:19 PM · Restricted Project
chandlerc committed rGf855751c1284: Fix openmp CMake build on non-Linux AArch64 systems. (authored by chandlerc).
Fix openmp CMake build on non-Linux AArch64 systems.
Jan 17 2021, 4:19 PM
chandlerc added a comment to D93169: [OpenMP] Added the support for cache line size 256 for A64FX.

I'm going to revert this as it breaks CMake on systems which do not have /proc/cpuinfo such as macOS.

This may be a bit hard to see because the code isn't reached unless the architecture is aarch64, but on an ARM macOS system that path hits. It would also hit on other BSDs or other OSes running on AArch64 but without /proc/cpuinfo.

For your reference, here is the error message from CMake for me:

CMake Error at /Users/chandlerc/src/llvm/llvm-project/openmp/runtime/cmake/LibompGetArchitecture.cmake:74 (file):
  file failed to open for reading (No such file or directory):

    /proc/cpuinfo
Call Stack (most recent call first):
  /Users/chandlerc/src/llvm/llvm-project/openmp/runtime/CMakeLists.txt:73 (libomp_is_aarch64_a64fx)

Will fix it right away.

Jan 17 2021, 4:16 PM · Restricted Project
chandlerc requested review of D94889: Fix openmp CMake build on non-Linux AArch64 systems.
Jan 17 2021, 4:16 PM · Restricted Project
chandlerc added a comment to D93169: [OpenMP] Added the support for cache line size 256 for A64FX.

I'm going to revert this as it breaks CMake on systems which do not have /proc/cpuinfo such as macOS.

Jan 17 2021, 4:07 PM · Restricted Project

Oct 26 2020

chandlerc committed rGaaf7ffd4e1aa: Teach `-fsanitize=fuzzer` to respect `-static` and `-static-libstdc++` when… (authored by chandlerc).
Teach `-fsanitize=fuzzer` to respect `-static` and `-static-libstdc++` when…
Oct 26 2020, 6:45 PM
chandlerc closed D80488: Teach `-fsanitize=fuzzer` to respect `-static` and `-static-libstdc++` when adding C++ standard libraries..
Oct 26 2020, 6:44 PM · Restricted Project
chandlerc added a comment to D80488: Teach `-fsanitize=fuzzer` to respect `-static` and `-static-libstdc++` when adding C++ standard libraries..

LGTM, but it could be better with a test

Oct 26 2020, 5:44 PM · Restricted Project
chandlerc updated the diff for D80488: Teach `-fsanitize=fuzzer` to respect `-static` and `-static-libstdc++` when adding C++ standard libraries..

Update with a regression test.

Oct 26 2020, 5:44 PM · Restricted Project
chandlerc updated the summary of D80488: Teach `-fsanitize=fuzzer` to respect `-static` and `-static-libstdc++` when adding C++ standard libraries..
Oct 26 2020, 5:39 PM · Restricted Project

Oct 18 2020

chandlerc added a reviewer for D80488: Teach `-fsanitize=fuzzer` to respect `-static` and `-static-libstdc++` when adding C++ standard libraries.: vitalybuka.

Ping (and adding some sanitizer folks)? I'd really love to stop building with this local patch....

Oct 18 2020, 6:29 PM · Restricted Project

Oct 5 2020

chandlerc added a comment to D88788: [SROA] rewritePartition()/findCommonType(): if uses have conflicting type, try getTypePartition() before falling back to largest integral use type (PR47592).

I guess if we're relying on the allocated type of the alloca anyway, preferring it over an integer type isn't terrible.

Really, though, we should avoid relying on the allocated type where possible. Here, we could check if any of the load/store operations use a pointer type, and choose a pointer type in that case.

Oct 5 2020, 12:44 AM · Restricted Project

Oct 4 2020

chandlerc added a comment to D88789: [InstCombine] Revert rL226781 "Teach InstCombine to canonicalize loads which are only ever stored to always use a legal integer type if one is available." (PR47592).

FWIW, I still very much feel that this is the correct canonicalization, and that downstream problems *must* be fixed downstream. Avoiding this canonicalization doesn't actually fix them, it just makes us less *aware* of the problems that still fundamentally exist. =[

I'd agree if we excluded all pointers from canonicalization. But the semantics of inttoptr and inttoptr-equivalent memory operations are weird; in general, I'm not sure we can recover the original semantics of the code if we throw away the pointer-ness of pointer load/store operations.

To address the issue at hand, I think changing the isNonIntegralPointerType() check to just isPtrOrPtrVectorTy() would be enough. I think that might make sense?

Oct 4 2020, 11:49 PM · Restricted Project, Restricted Project
chandlerc added a comment to D88789: [InstCombine] Revert rL226781 "Teach InstCombine to canonicalize loads which are only ever stored to always use a legal integer type if one is available." (PR47592).

FWIW, I still very much feel that this is the correct canonicalization, and that downstream problems *must* be fixed downstream. Avoiding this canonicalization doesn't actually fix them, it just makes us less *aware* of the problems that still fundamentally exist. =[

Oct 4 2020, 1:42 AM · Restricted Project, Restricted Project

Sep 19 2020

chandlerc added a comment to D87837: [Driver] Add disabled-by-default -Wuse-ld-path for the deprecation warning for -fuse-ld=/abs/path.

Good to confirm with Dave of course, but this looks pretty great to me, and thanks so much!

Sep 19 2020, 3:33 PM · Restricted Project
chandlerc added a comment to D87837: [Driver] Add disabled-by-default -Wuse-ld-path for the deprecation warning for -fuse-ld=/abs/path.

FWIW, I would like to see *something* like this (both in the release and on trunk) but not sure this is actually the patch we want... Clang typically uses FIXME comments, and doesn't leave commented out code...

Sep 19 2020, 12:09 AM · Restricted Project

Sep 16 2020

chandlerc added inline comments to D87755: Silence GCC's `-Wclass-memaccess` warnings.
Sep 16 2020, 3:53 AM · Restricted Project
chandlerc requested review of D87755: Silence GCC's `-Wclass-memaccess` warnings.
Sep 16 2020, 3:33 AM · Restricted Project

Sep 9 2020

chandlerc added a comment to D87149: [InstCombine] erase instructions leading up to unreachable.

(Continuing the discussion here as I'm not really aware of a better place... feel free to point to a different thread if better... I don't actively follow llvm-dev at this point though, sorry if I've missed a post there.)

Sep 9 2020, 6:41 PM · Restricted Project
chandlerc added a comment to D87149: [InstCombine] erase instructions leading up to unreachable.

(And to be clear, IMO we should revert this patch while the discussion concludes as this is breaking real code.)

Sep 9 2020, 11:59 AM · Restricted Project
chandlerc added a comment to D87149: [InstCombine] erase instructions leading up to unreachable.

Regarding access to volatile memory...

Sep 9 2020, 11:58 AM · Restricted Project
chandlerc added a comment to D87399: Revert "[InstCombine] erase instructions leading up to unreachable".

however, a volatile access can abort a program. In that case, an unreachable instruction after it is not reachable. So undefined behavior does not happen, and the volatile access cannot be removed.

As already explained in the referenced revision, this is not correct. Volatile accesses are not permitted to trap. LangRef is unambiguous on this point:

The compiler may assume execution will continue after a volatile operation, so operations which modify memory or may have undefined behavior can be hoisted past a volatile operation.

Sep 9 2020, 11:55 AM · Restricted Project

Sep 7 2020

chandlerc added a comment to D86344: [FileCheck] Move FileCheck implementation out of LLVMSupport into its own library.

Somewhat minor post-commit thought, but we now have both a library FileCheck and an executable binary FileCheck (not to mention the existing confusion of having two FileCheck.cpp files).

Sep 7 2020, 6:03 PM · Restricted Project

May 29 2020

chandlerc accepted D71687: Fix full loop unrolling initialization in new pass manager.

Cool, thanks and LGTM!

May 29 2020, 8:10 PM · Restricted Project, Restricted Project

May 24 2020

chandlerc created D80488: Teach `-fsanitize=fuzzer` to respect `-static` and `-static-libstdc++` when adding C++ standard libraries..
May 24 2020, 1:02 AM · Restricted Project

May 13 2020

chandlerc accepted D78279: [SimpleLoopUnswitch] Add non-empty unreachable block check to exit cases removed..

LGTM!! Thanks for tracking down this surprising fix to the PR!

May 13 2020, 12:30 AM · Restricted Project

May 12 2020

chandlerc added inline comments to D71687: Fix full loop unrolling initialization in new pass manager.
May 12 2020, 11:57 PM · Restricted Project, Restricted Project
chandlerc updated subscribers of D78471: [MS] Copy the symbols assigned to the former instruction when memory folding..

Is the problem here really that foldMemoryOperand doesn't know to preserve the post instr symbol?

Yes and no. It's the problem I wanted to fix firstly. But after I read the code of hardening, I think the spill is also a problem. Because that pass always load the function address to register at the beginning. I think the spilling violates the objective the pass does. Beside, according to calling conversation, there are volatile registers before calling. So I think it's not a cost if we pin the address register.

I think we should be calling NewMI->cloneInstrSymbols in the same spot we copy memory references in TargetInstrInfo::foldMemoryOperand. Or we shouldn't disable folding if any symbols are present. We're effectively cloning an instruction when we fold the memory and we should make sure we don't drop things when we do that.

May 12 2020, 11:57 PM · Restricted Project
chandlerc accepted D79385: NFC: Simplify O1 pass pipeline construction..

LGTM, but one of these I think should be addressed here.

May 12 2020, 11:09 PM · Restricted Project
chandlerc accepted D72893: [NewPassManager] Add assertions when getting statefull cached analysis..

LGTM other than two nits here, this is really awesome!

May 12 2020, 4:43 PM · Restricted Project, Restricted Project

May 5 2020

chandlerc added a comment to D79385: NFC: Simplify O1 pass pipeline construction..

As much as I'm not thrilled about the duplication, the number of comments I have below about the exact O1 pipeline sure make it seem valuable. Unsure how you feel about addressing these here, later, etc.

May 5 2020, 9:33 PM · Restricted Project
chandlerc added a comment to D71687: Fix full loop unrolling initialization in new pass manager.

Wooot about finally having a test case! (Sorry for nit picking it a bit ....)

May 5 2020, 9:33 PM · Restricted Project, Restricted Project
chandlerc accepted D78277: [SimpleLoopUnswitch] Update DefaultExit condition to check unreachable is not empty..

LGTM with the addition of skipping debug info as Eli suggests.

May 5 2020, 9:33 PM · Restricted Project

May 4 2020

chandlerc added a comment to D78279: [SimpleLoopUnswitch] Add non-empty unreachable block check to exit cases removed..

Might also be good to explain a bit of *how* this fixes the PR to the commit log (or bug) for posterity. It seemed to surprise both of us that this was the fix when talking through the code, I suspect a future reader may benefit from having a log of what went on here.

May 4 2020, 7:55 PM · Restricted Project
chandlerc added inline comments to D78277: [SimpleLoopUnswitch] Update DefaultExit condition to check unreachable is not empty..
May 4 2020, 7:55 PM · Restricted Project

Apr 21 2020

chandlerc added inline comments to D77620: [SimpleLoopUnswitch] Do not delete DT edge when a duplicate exists..
Apr 21 2020, 7:29 PM · Restricted Project
chandlerc added a comment to D72893: [NewPassManager] Add assertions when getting statefull cached analysis..

Really like the approach now. Pretty minor code nits below only. =D

Apr 21 2020, 6:25 PM · Restricted Project, Restricted Project

Apr 3 2020

chandlerc added inline comments to D75936: Add a Pass to X86 that builds a Condensed CFG for Load Value Injection (LVI) Gadgets [4/6].
Apr 3 2020, 4:49 PM · Restricted Project, Restricted Project

Feb 22 2020

chandlerc added inline comments to D72893: [NewPassManager] Add assertions when getting statefull cached analysis..
Feb 22 2020, 7:37 PM · Restricted Project, Restricted Project

Feb 21 2020

chandlerc requested changes to D72893: [NewPassManager] Add assertions when getting statefull cached analysis..
Feb 21 2020, 1:00 AM · Restricted Project, Restricted Project

Dec 26 2019

chandlerc added a comment to D71687: Fix full loop unrolling initialization in new pass manager.

Can we add an LLVM test w/ the metadata so that we have an entirely LLVM test flow that ensures the pass builder DTRT?

Dec 26 2019, 6:05 PM · Restricted Project, Restricted Project

Dec 16 2019

chandlerc added a comment to D70157: Align branches within 32-Byte boundary(NOP padding).

Just wanted to say thanks for the performance data! I know it was hard to get, but it is really, really useful to help folks evaluate these kinds of changes with actual data around the options available.

Dec 16 2019, 4:07 PM · Restricted Project, Restricted Project

Dec 10 2019

chandlerc added a comment to D71238: Align non-fused branches within 32-Byte boundary (basic case).

I just want to mention here, that my comment on the original patch still stands and really needs to be addressed:

Dec 10 2019, 1:29 AM · Restricted Project

Dec 3 2019

chandlerc added a comment to D70157: Align branches within 32-Byte boundary(NOP padding).

I'm seeing lots of updates to fix bugs, but no movement for many days on both my meta comments and (in some ways more importantly) James's meta comments. (And thanks Philip for chiming in too!)

Dec 3 2019, 9:30 PM · Restricted Project, Restricted Project

Nov 30 2019

chandlerc added a comment to D68267: [MBB LiveIn lists, MachineVerifier, SystemZ] New method isLiveOut() and mverifier improvement..
  • CodeGen/X86/copy-eflags.ll

"X86 EFLAGS copy lowering" transforms the def-use lists of $eflags (to local def-uses) without updating the livein lists of successor blocks:

bb.1.bb1:
  ...
  $eflags = COPY %16:gr32
  JCC_1 %bb.3, 12, implicit $eflags

bb.2.bb1:
; predecessors: %bb.1
  successors: %bb.3(0x80000000); %bb.3(100.00%)
  liveins: $eflags

bb.3.bb1:
; predecessors: %bb.1, %bb.2
  successors: %bb.4(0x40000000), %bb.5(0x40000000); %bb.4(50.00%), %bb.5(50.00%)
  liveins: $eflags
  %2:gr8 = PHI %8:gr8, %bb.2, %0:gr8, %bb.1
  MOV8mr %9:gr32, 1, $noreg, 0, $noreg, %2:gr8 :: (volatile store 1 into %ir.ptr1)
  %20:gr32 = MOV32rm %10:gr32, 1, $noreg, 0, $noreg :: (volatile load 4 from %ir.ptr2)
  JCC_1 %bb.5, 12, implicit $eflags

=>

After X86 EFLAGS copy lowering:

bb.1.bb1:
  TEST8rr %23:gr8, %23:gr8, implicit-def $eflags
  JCC_1 %bb.3, 5, implicit killed $eflags

bb.2.bb1:
; predecessors: %bb.1
  successors: %bb.3(0x80000000); %bb.3(100.00%)
  liveins: $eflags

bb.3.bb1:
; predecessors: %bb.1, %bb.2
  successors: %bb.4(0x40000000), %bb.5(0x40000000); %bb.4(50.00%), %bb.5(50.00%)
  liveins: $eflags
  %2:gr8 = PHI %8:gr8, %bb.2, %0:gr8, %bb.1
  MOV8mr %9:gr32, 1, $noreg, 0, $noreg, %2:gr8 :: (volatile store 1 into %ir.ptr1)
  %20:gr32 = MOV32rm %10:gr32, 1, $noreg, 0, $noreg :: (volatile load 4 from %ir.ptr2)
  TEST8rr %23:gr8, %23:gr8, implicit-def $eflags
  JCC_1 %bb.5, 5, implicit killed $eflags

It seems that since X86FlagsCopyLoweringPass::rewriteCondJmp() does JmpI.findRegisterUseOperand(X86::EFLAGS)->setIsKill(true), it should be safe to assume that EFLAGS is not live out. In that case it should also follow that any successor block will not use a live-in value of EFLAGS. So any successor block should have EFLAGS removed of the live-in list, right?

I am not sure what is the right way to clear EFLAGS of the successor blocks live-in lists. Should it be done in rewriteCondJmp() only or are there other places also that this should be done?

Nov 30 2019, 5:17 PM · Restricted Project

Nov 24 2019

chandlerc accepted D65410: [PassManager] First Pass implementation at -O1 pass pipeline.

Minor nits around redundant predicates for SROA. With thouse fixed, LGTM.

Nov 24 2019, 12:50 AM · Restricted Project, Restricted Project, Restricted Project
chandlerc added a comment to D70157: Align branches within 32-Byte boundary(NOP padding).

(Just a reminder that we need to have both performance and code size numbers for this patch. And given that there are a few options, may need a few examples.)

Nov 24 2019, 12:23 AM · Restricted Project, Restricted Project

Nov 13 2019

chandlerc added a reviewer for D70157: Align branches within 32-Byte boundary(NOP padding): chandlerc.

Thanks for sending this out!

Nov 13 2019, 9:14 AM · Restricted Project, Restricted Project

Oct 23 2019

chandlerc committed rGdc1499b90dc4: Improve Clang's getting involved document and make it more inclusive in wording. (authored by chandlerc).
Improve Clang's getting involved document and make it more inclusive in wording.
Oct 23 2019, 4:14 PM
chandlerc closed D69351: Improve Clang's getting involved document and make it more inclusive in wording..
Oct 23 2019, 4:14 PM · Restricted Project
chandlerc added a comment to D69354: Make coding standards document more inclusive.

A few minor further tweaks.

Oct 23 2019, 3:03 PM · Restricted Project
chandlerc updated the diff for D69351: Improve Clang's getting involved document and make it more inclusive in wording..

More fixes from Manuel.

Oct 23 2019, 12:52 PM · Restricted Project
chandlerc added a comment to D69351: Improve Clang's getting involved document and make it more inclusive in wording..

Thanks, updated.

Oct 23 2019, 12:52 PM · Restricted Project
chandlerc updated the diff for D69351: Improve Clang's getting involved document and make it more inclusive in wording..

Address feedback from Manuel.

Oct 23 2019, 12:52 PM · Restricted Project
chandlerc created D69351: Improve Clang's getting involved document and make it more inclusive in wording..
Oct 23 2019, 12:15 PM · Restricted Project
chandlerc committed rGbf2975eca0a1: Remove a no longer accurate sentence from the coding standards. (authored by chandlerc).
Remove a no longer accurate sentence from the coding standards.
Oct 23 2019, 11:46 AM

Oct 17 2019

chandlerc added a reviewer for D69121: [LegacyPassManager] Delete BasicBlockPass/Manager.: echristo.

Generally very happy with this. Would like Eric to check this as well to think about the C API and other things that we maybe should be doing while unbuilding this....

Oct 17 2019, 5:27 PM · Restricted Project

Oct 13 2019

chandlerc accepted D65280: Add a pass to lower is.constant and objectsize intrinsics.

FWIW, the adjustments I'm suggesting around tightening the logic can easily be in a follow-up patch if you like. I think generally the code LGTM and I'd just like us to pin down exactly what changes we expect to happen w/ the handles as much as possible to avoid subtle latent bugs creeping in and never getting noticed.

Oct 13 2019, 12:48 AM · Restricted Project

Oct 11 2019

chandlerc added a comment to D65280: Add a pass to lower is.constant and objectsize intrinsics.

(Tried to get this out last weekend, but was blocked by the Phab down time... Sorry about that ...)

Oct 11 2019, 12:02 AM · Restricted Project

Oct 5 2019

chandlerc accepted D68535: Fix loop unrolling initialization in the new pass manager.

Adding Alina so she is aware of the change and can comment if she spots anything I'm missing...

Oct 5 2019, 11:04 PM · Restricted Project, Restricted Project

Sep 11 2019

chandlerc added inline comments to D66324: clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM.
Sep 11 2019, 2:14 AM · Restricted Project, Restricted Project, Restricted Project

Sep 7 2019

chandlerc accepted D67323: [NewPM][Sancov] Create the Sancov Pass after building the pipelines.

LGTM to fix folks broken by this.

Sep 7 2019, 9:55 PM · Restricted Project, Restricted Project, Restricted Project