chandlerc (Chandler Carruth)Administrator
User

Projects

User does not belong to any projects.

User Details

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

Recent Activity

Today

chandlerc committed rL330680: [PM/LoopUnswitch] Remove another over-aggressive assert..
[PM/LoopUnswitch] Remove another over-aggressive assert.
Mon, Apr 23, 8:30 PM
chandlerc accepted D45505: [GCC] Match a GCC version with a patch suffix without a third version component.

LGTM

Mon, Apr 23, 2:12 PM
chandlerc added a comment to D45945: [LoopRotate] Fix incorrect SCEV invalidation in loop rotation.

We've fixed a bunch of bugs of this sort, so I think it's fine to go with.

Mon, Apr 23, 11:55 AM
chandlerc created D45943: [PM/LoopUnswitch] Begin teaching SimpleLoopUnswitch to use the new update API for dominators rather than doing manual, hacky updates..
Mon, Apr 23, 2:55 AM
chandlerc accepted D45940: [LoopUnroll] Fix potentially incorrect SCEV invalidation in UnrollRuntime.

I think the existing testing of the fact that the parent needs invalidation makes perfect sense to switch to the more general API. Good spot. Feel free to commit.

Mon, Apr 23, 2:45 AM
chandlerc committed rL330564: [PM/LoopUnswitch] Remove a buggy assert in the new loop unswitch..
[PM/LoopUnswitch] Remove a buggy assert in the new loop unswitch.
Mon, Apr 23, 12:02 AM

Yesterday

chandlerc accepted D45937: [LoopSimplify] Fix incorrect SCEV invalidation.

LGTM, good spot. I'll also definitely check if this fixes the mystery stage2 miscompile we've seen on PPC. It's a good fix either way though.

Sun, Apr 22, 11:22 PM
chandlerc committed rL330560: [PM/LoopUnswitch] Fix comment typo. NFC..
[PM/LoopUnswitch] Fix comment typo. NFC.
Sun, Apr 22, 5:52 PM
chandlerc added a comment to D45505: [GCC] Match a GCC version with a patch suffix without a third version component.

Definitely need tests here.

Do you have any suggestion on where to create them and what kind? Just a normal test with a fake directory tree, or some sort of unit test for the gcc version number matching logic? (And if creating a unit test, how does that work since this class isn't in the public include directory?)

Sun, Apr 22, 3:12 PM
chandlerc requested changes to D45505: [GCC] Match a GCC version with a patch suffix without a third version component.

Definitely need tests here.

Sun, Apr 22, 2:28 PM

Sat, Apr 21

chandlerc committed rCTE330528: Revert r330492: [clang-tidy] add new check to find out objc ivars which do not….
Revert r330492: [clang-tidy] add new check to find out objc ivars which do not…
Sat, Apr 21, 4:31 PM
chandlerc committed rL330528: Revert r330492: [clang-tidy] add new check to find out objc ivars which do not….
Revert r330492: [clang-tidy] add new check to find out objc ivars which do not…
Sat, Apr 21, 4:30 PM

Thu, Apr 19

chandlerc updated subscribers of D45754: [PM/LoopUnswitch] Detect irreducible control flow within loops and skip unswitching non-trivial edges..

Hang off on doing more testing. I have more failures w/ non-trivial
unswitching just in the test suite, so I already have multiple
reproductions that I'm working on.

Thu, Apr 19, 11:49 PM
chandlerc committed rL330357: [PM/LoopUnswitch] Detect irreducible control flow within loops and skip….
[PM/LoopUnswitch] Detect irreducible control flow within loops and skip…
Thu, Apr 19, 11:48 AM
chandlerc closed D45754: [PM/LoopUnswitch] Detect irreducible control flow within loops and skip unswitching non-trivial edges..
Thu, Apr 19, 11:48 AM
chandlerc added a comment to D45754: [PM/LoopUnswitch] Detect irreducible control flow within loops and skip unswitching non-trivial edges..

Thanks, LGTM.

Having a single function to detect irreducible CFGs allows us to test it more widely and in case it turns out to be a bottleneck, I think there are a couple of things we can do to improve the performance. The most prominent issue is probably that we re-do work for inner loops
, when loops are processed from inner to outer loop nests.

Thu, Apr 19, 11:43 AM
chandlerc added inline comments to D45673: [x86] Fix PR37100 by teaching the EFLAGS copy lowering to rewrite uses across basic blocks in the limited cases where it is very straight forward to do so..
Thu, Apr 19, 1:28 AM
chandlerc added inline comments to D45673: [x86] Fix PR37100 by teaching the EFLAGS copy lowering to rewrite uses across basic blocks in the limited cases where it is very straight forward to do so..
Thu, Apr 19, 12:24 AM

Wed, Apr 18

chandlerc added a comment to D45754: [PM/LoopUnswitch] Detect irreducible control flow within loops and skip unswitching non-trivial edges..

OK, should be ready for review again! A much, much simpler patch now.

Wed, Apr 18, 2:27 PM
chandlerc updated the diff for D45754: [PM/LoopUnswitch] Detect irreducible control flow within loops and skip unswitching non-trivial edges..

And fix typo.

Wed, Apr 18, 2:27 PM
chandlerc updated the diff for D45754: [PM/LoopUnswitch] Detect irreducible control flow within loops and skip unswitching non-trivial edges..

Use the existing facilities and sink this past the point where we find actual
unswitch candidates. This should at least avoid the cost of the loop traversal
when there are no loop invariant conditions.

Wed, Apr 18, 2:24 PM
chandlerc planned changes to D45754: [PM/LoopUnswitch] Detect irreducible control flow within loops and skip unswitching non-trivial edges..

@dcaballe added a containsIrreduciableCFG function to include/llvm/Analysis/CFG.h in D40874. I do not have time to take a close look today, but it seems at least for the attached test case, containsIrreduciableCFG does the right thing.

Wed, Apr 18, 11:00 AM
chandlerc committed rL330269: [x86] Switch EFLAGS copy lowering to use reg-reg form of testing for.
[x86] Switch EFLAGS copy lowering to use reg-reg form of testing for
Wed, Apr 18, 8:56 AM
chandlerc closed D45475: [x86] Switch EFLAGS copy lowering to use reg-reg form of testing for a zero register..
Wed, Apr 18, 8:56 AM
chandlerc committed rL330264: [x86] Fix PR37100 by teaching the EFLAGS copy lowering to rewrite uses.
[x86] Fix PR37100 by teaching the EFLAGS copy lowering to rewrite uses
Wed, Apr 18, 8:16 AM
chandlerc closed D45673: [x86] Fix PR37100 by teaching the EFLAGS copy lowering to rewrite uses across basic blocks in the limited cases where it is very straight forward to do so..
Wed, Apr 18, 8:16 AM

Tue, Apr 17

chandlerc created D45754: [PM/LoopUnswitch] Detect irreducible control flow within loops and skip unswitching non-trivial edges..
Tue, Apr 17, 11:13 PM
chandlerc committed rC330184: Add some infuriatingly necessary comments to this test case..
Add some infuriatingly necessary comments to this test case.
Tue, Apr 17, 4:11 AM
chandlerc committed rL330184: Add some infuriatingly necessary comments to this test case..
Add some infuriatingly necessary comments to this test case.
Tue, Apr 17, 4:11 AM

Mon, Apr 16

chandlerc added inline comments to D45673: [x86] Fix PR37100 by teaching the EFLAGS copy lowering to rewrite uses across basic blocks in the limited cases where it is very straight forward to do so..
Mon, Apr 16, 5:07 PM
chandlerc updated the diff for D45673: [x86] Fix PR37100 by teaching the EFLAGS copy lowering to rewrite uses across basic blocks in the limited cases where it is very straight forward to do so..

Arrange this test case to be slightly less brittle.

Mon, Apr 16, 5:03 PM
chandlerc added inline comments to D45673: [x86] Fix PR37100 by teaching the EFLAGS copy lowering to rewrite uses across basic blocks in the limited cases where it is very straight forward to do so..
Mon, Apr 16, 3:37 PM
chandlerc added a comment to D44883: [Sema] Extend -Wself-assign and -Wself-assign-field to warn on overloaded self-assignment (classes).

These kinds of improvements to warnings are awesome, but the way we are deploying them presents serious challenges to adoption which I think we need to address.

Mon, Apr 16, 2:54 AM

Sun, Apr 15

chandlerc created D45673: [x86] Fix PR37100 by teaching the EFLAGS copy lowering to rewrite uses across basic blocks in the limited cases where it is very straight forward to do so..
Sun, Apr 15, 9:29 AM

Tue, Apr 10

chandlerc created D45501: example.
Tue, Apr 10, 1:15 PM

Mon, Apr 9

chandlerc created D45475: [x86] Switch EFLAGS copy lowering to use reg-reg form of testing for a zero register..
Mon, Apr 9, 11:59 PM
chandlerc committed rL329673: [x86] Model the direction flag (DF) separately from the rest of EFLAGS..
[x86] Model the direction flag (DF) separately from the rest of EFLAGS.
Mon, Apr 9, 11:45 PM
chandlerc closed D45154: [x86] Model the direction flag (DF) separately from the rest of EFLAGS..
Mon, Apr 9, 11:45 PM
chandlerc added inline comments to D45154: [x86] Model the direction flag (DF) separately from the rest of EFLAGS..
Mon, Apr 9, 10:31 PM
chandlerc updated the diff for D45154: [x86] Model the direction flag (DF) separately from the rest of EFLAGS..

Clean up disassembler array a bit.

Mon, Apr 9, 10:29 PM
chandlerc added inline comments to D45154: [x86] Model the direction flag (DF) separately from the rest of EFLAGS..
Mon, Apr 9, 7:22 PM
chandlerc updated the diff for D45154: [x86] Model the direction flag (DF) separately from the rest of EFLAGS..

Fix a remaining place where we need to mark EFLAGS as used as we pass through
some of the flags.

Mon, Apr 9, 7:00 PM
chandlerc updated the diff for D45154: [x86] Model the direction flag (DF) separately from the rest of EFLAGS..

Rebase now that the core flags change has landed.

Mon, Apr 9, 6:51 PM
chandlerc committed rL329657: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar….
[x86] Introduce a pass to begin more systematically fixing PR36028 and similar…
Mon, Apr 9, 6:45 PM
chandlerc closed D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..
Mon, Apr 9, 6:45 PM
chandlerc updated the diff for D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..

Rebase and updates. I think this is probably ready to go in now?

Mon, Apr 9, 12:38 AM
chandlerc committed rCTE329550: Fix unused variable warning..
Fix unused variable warning.
Mon, Apr 9, 12:35 AM
chandlerc committed rL329550: Fix unused variable warning..
Fix unused variable warning.
Mon, Apr 9, 12:31 AM

Thu, Apr 5

chandlerc accepted D44330: CMake option to allow enabling experimental new pass manager by default.

Meh, I think this is fine as-is.

Thu, Apr 5, 1:22 PM
chandlerc added inline comments to D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..
Thu, Apr 5, 4:26 AM
chandlerc accepted D35258: [Plugins] Add a slim plugin API to work together with the new PM.

LGTM with doc fixes and Twine fixes below. Really excited about this!

Thu, Apr 5, 1:51 AM

Wed, Apr 4

chandlerc added inline comments to D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..
Wed, Apr 4, 10:11 PM
chandlerc accepted D45289: Disable -fmerge-all-constants as default..

Just wanted to explicitly say +1 to this default change (with the adjustment Richard suggested).

Wed, Apr 4, 2:45 PM

Tue, Apr 3

chandlerc updated the diff for D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..

Update based on review comments.

Tue, Apr 3, 4:40 PM
chandlerc added a comment to D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..

All done. Everything just passed the machine verifier. =]

Tue, Apr 3, 4:40 PM
chandlerc added a comment to D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..

Last major issue I'm aware of with this patch addressed (see below). I think this is ready for another round of review.

Tue, Apr 3, 3:53 AM
chandlerc updated the diff for D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..

Another major update.

Tue, Apr 3, 3:50 AM
chandlerc requested changes to D35258: [Plugins] Add a slim plugin API to work together with the new PM.

This is looking really awesome. Starting to get into more mundane / nit picky comments below.

Tue, Apr 3, 3:41 AM
chandlerc committed rL329057: [x86] Fix a pretty obvious think-o with my asm scrubbing. You have to in.
[x86] Fix a pretty obvious think-o with my asm scrubbing. You have to in
Tue, Apr 3, 3:32 AM
chandlerc committed rL329056: [x86] Clean up and enhance a test around eflags copying..
[x86] Clean up and enhance a test around eflags copying.
Tue, Apr 3, 3:07 AM
chandlerc committed rL329055: [x86] Extend my goofy SP offset scrubbing for llc test cases to actually.
[x86] Extend my goofy SP offset scrubbing for llc test cases to actually
Tue, Apr 3, 3:00 AM

Mon, Apr 2

chandlerc updated the diff for D45154: [x86] Model the direction flag (DF) separately from the rest of EFLAGS..

Update fixing the remaining issues and rebasing on top of the EFLAGS patch.

Mon, Apr 2, 11:35 PM
chandlerc added inline comments to D45154: [x86] Model the direction flag (DF) separately from the rest of EFLAGS..
Mon, Apr 2, 10:35 PM
chandlerc committed rL329046: [SLP] Fix issues with debug output in the SLP vectorizer..
[SLP] Fix issues with debug output in the SLP vectorizer.
Mon, Apr 2, 10:30 PM
chandlerc added inline comments to D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..
Mon, Apr 2, 8:41 PM
chandlerc updated the diff for D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..

Major update. Addresses all but one code review comment. Also updates all tests
and adds my dedicated MIR test for this functionality.

Mon, Apr 2, 8:41 PM
chandlerc committed rL329040: [x86] Tidy up test case, generate check lines with script. NFC..
[x86] Tidy up test case, generate check lines with script. NFC.
Mon, Apr 2, 7:22 PM
chandlerc added a comment to D45154: [x86] Model the direction flag (DF) separately from the rest of EFLAGS..

I need that to happen for DF as well.

You do...? DF isn't actually undefined at any point; the x86 ABI says DF is clear on entry to/exit from a function.

Mon, Apr 2, 12:56 PM

Sun, Apr 1

chandlerc created D45154: [x86] Model the direction flag (DF) separately from the rest of EFLAGS..
Sun, Apr 1, 4:20 PM
chandlerc updated the diff for D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..

Rebase after splitting out patches and after fixing some minor code review comments.

Sun, Apr 1, 3:07 PM
chandlerc added a comment to D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..

I may go ahead and pull the X86InstrArithmetic.td changes out of this. The SchedRW is incomplete for ADCX, it needs a ReadAfterLd.

Sun, Apr 1, 3:07 PM
chandlerc committed rL328945: [x86] Correct the operand structure of the ADOX instruction..
[x86] Correct the operand structure of the ADOX instruction.
Sun, Apr 1, 2:56 PM
chandlerc committed rL328944: [x86] Expose more of the condition conversion routines in the public API.
[x86] Expose more of the condition conversion routines in the public API
Sun, Apr 1, 2:51 PM
chandlerc created D45146: [x86] Introduce a pass to begin more systematically fixing PR36028 and similar issues..
Sun, Apr 1, 2:21 AM

Thu, Mar 29

chandlerc added a comment to D43306: [X86] Add pass to infer required-vector-width attribute based on size of function arguments and use of intrinsics.

Given the direction this is going, I'd suggest maybe renaming the attribute. I'm thinking something like legal_vetor_width or otherwise framing this as fundamentally a legalization constraint rather than anything more fundamental. I would also really suggest doing more than just one width shift in this patch because that will help ensure that the mechanism is working in the general way as intended.

Thu, Mar 29, 5:15 PM

Wed, Mar 28

chandlerc added a comment to D43306: [X86] Add pass to infer required-vector-width attribute based on size of function arguments and use of intrinsics.

One thing I should clarify here:

Wed, Mar 28, 3:07 PM
chandlerc added a comment to D43306: [X86] Add pass to infer required-vector-width attribute based on size of function arguments and use of intrinsics.

So for both modes, if there are any larger scalar types in the loop, those types will be multiplied by the VF factor and cause the vectorizer to create types that are larger than the maximum hardware register size. These types will exist all the way to codegen, and it is up to the SelectionDAG type legalization process or target specific DAG combines to split these larger operations. In some cases the larger types are used to represent idioms that contain extends and truncates that we were able to combine to more complex instructions without doing a split. X86 probably has more pre type legalization target specific DAG combines here than most other targets. And we are doing our own splitting for type legalization in some of these combines. This prevents the type legalizer from needing to deal with target specific nodes. Though the type legalizer is capable of calling ReplaceNodeResults and LowerOperation for target specific nodes.

This is interesting, and perhaps not what we should do.

Wed, Mar 28, 11:27 AM

Tue, Mar 27

chandlerc updated the diff for D44824: [Spectre] Introduce a new pass to do speculative load hardening to mitigate Spectre variant #1..

Rebase and updates from a round of feedback from Paul Kocher.

Tue, Mar 27, 1:58 AM
chandlerc added a comment to D41674: [Support] CommandLine API -- Allow creating custom parsers for fundamental types.

We (= the Quarkslab firm) have two use cases for extending the parsers:

  • using floating point numbers for obfuscation rations (as in « obfuscate n % of the constants). sometimes the ratio is 0.001 or such
  • using regular expression over function names. In that case it is also convenient to be able to type the option as a regexp and not only a string.
Tue, Mar 27, 12:45 AM

Mon, Mar 26

chandlerc added inline comments to D35258: [Plugins] Add a slim plugin API to work together with the new PM.
Mon, Mar 26, 7:32 PM
chandlerc added a comment to D44910: [docs] Add Markdown support to Sphinx.

FWIW, I'm really, really happy to have this. =D

Mon, Mar 26, 3:10 PM
chandlerc added a comment to D41062: [X86] Legalize v2i32 via widening rather than promoting.

FWIW, I'm a *huge* fan of the approach of legalizing via widening (and have advocated for this in the past). Is there any specific review feedback you're looking for here beyond what you've already got?

Mon, Mar 26, 1:21 PM
chandlerc requested changes to D41674: [Support] CommandLine API -- Allow creating custom parsers for fundamental types.

I have a feeling that the original bug was from a time where we generally thought this side of commandline infrastructure was going to become a more broadly used way of building commandline tools with rich commandline interfaces. However, in recent years the project has gravitated towards the infrastructure in the Option library which is used by both Clang and LLD.

Mon, Mar 26, 1:17 PM
chandlerc removed a reviewer for D41689: [SCEVAA] Don't crash on pointers with no dominance relationship.: chandlerc.
Mon, Mar 26, 1:15 PM
chandlerc resigned from D42787: clang-format: do not add extra indent when wrapping last parameter.

Since this seems not going anywhere, removing it from my review dashboard.

Mon, Mar 26, 1:15 PM
chandlerc requested changes to D42890: [LoopIdiomRecognize] Add support for atomic memmove.

Just marking that this would need rebasing on a corrected form of the underlying change. That way it doesn't show up in my queue to review.

Mon, Mar 26, 1:10 PM
chandlerc removed a reviewer for D43619: [X86] Limit Store Forwarding Block only to cases where we can prove that the memcpy does not overlap: chandlerc.
Mon, Mar 26, 1:10 PM
chandlerc resigned from D43871: [modules] No longer include stdlib.h from mm_malloc.h..

I think this is more a question for Richard... Add me back to the reviewers if there is a specific need for my input here.

Mon, Mar 26, 1:06 PM
chandlerc requested changes to D44330: CMake option to allow enabling experimental new pass manager by default.

Just a question really.

Mon, Mar 26, 1:05 PM
chandlerc removed a reviewer for D44362: [clang] Change std::sort to llvm::sort in response to r327219: chandlerc.
Mon, Mar 26, 1:04 PM · Restricted Project
chandlerc removed a reviewer for D44363: [llvm] Change std::sort to llvm::sort in response to r327219: chandlerc.
Mon, Mar 26, 1:04 PM
chandlerc updated subscribers of D44429: [BinaryFormat][RFC] MessagePack reader/writer.

I haven't really had time to look at this, but it seems somewhat unfortunate to add yet another format like this. =[ I guess I'm surprised that AMD is looking at baking this into their object file format. I'm not sure it makes sense to really consider landing this until the usage of it is at least available for review as well. While having the patches separate is good, I think it would be important to see the actual planned usage before adding all this code.

Mon, Mar 26, 1:04 PM
chandlerc accepted D44874: [X86] Change std::sort to llvm::sort in response to r327219.

LGTM

Mon, Mar 26, 12:59 PM
chandlerc removed a reviewer for D44883: [Sema] Extend -Wself-assign and -Wself-assign-field to warn on overloaded self-assignment (classes): chandlerc.
Mon, Mar 26, 12:59 PM

Mar 24 2018

chandlerc updated the diff for D44824: [Spectre] Introduce a new pass to do speculative load hardening to mitigate Spectre variant #1..

Rebase and update. Relevant changes here:

Mar 24 2018, 4:45 PM

Mar 23 2018

chandlerc created D44824: [Spectre] Introduce a new pass to do speculative load hardening to mitigate Spectre variant #1..
Mar 23 2018, 3:52 AM

Mar 17 2018

chandlerc added a comment to D42762: Rewrite the VS Integration Scripts.

FYI, Andrew Pardoe from Microsoft and I were talking and he wanted to express really strong support for getting this in and deployed. He's also offered any help that would be useful to sorting this out so there is a solid installer for VS 2017.

Mar 17 2018, 1:00 PM
chandlerc committed rL327771: [bindings/go] Add a missing `,` in the test code to fix a go compile.
[bindings/go] Add a missing `,` in the test code to fix a go compile
Mar 17 2018, 8:15 AM

Mar 16 2018

chandlerc added a comment to D44593: [GlobalAA] Create DeletionCallbackHandle whenever a function is inserted into FunctionInfos.

Doh! Sorry these crossed. But yes, this is exactly the patch I landed and I credited you with it already! =D

Mar 16 2018, 5:00 PM
chandlerc committed rL327761: [GlobalsAA] Fix a pretty terrible bug that has been in GlobalsAA for.
[GlobalsAA] Fix a pretty terrible bug that has been in GlobalsAA for
Mar 16 2018, 4:54 PM