chandlerc (Chandler Carruth)Administrator
User

Projects

User does not belong to any projects.

User Details

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

Recent Activity

Thu, Jun 21

chandlerc added a comment to D48105: [llvm][Instrumentation] Add Call Graph Profile pass.

I had to revert this because the embedded function analysis runner inside the legacy pass manager for module passes appears to leak. =/ At least we found LeakSanitizer reports on the bots because of this commit.

Thu, Jun 21, 11:22 PM
chandlerc committed rL335320: Revert r335306 (and r335314) - the Call Graph Profile pass..
Revert r335306 (and r335314) - the Call Graph Profile pass.
Thu, Jun 21, 10:38 PM
chandlerc committed rL335317: [LegacyPM] Fix PR37888 by teaching the legacy loop pass manager how to.
[LegacyPM] Fix PR37888 by teaching the legacy loop pass manager how to
Thu, Jun 21, 7:48 PM
chandlerc closed D48470: [LegacyPM] Fix PR37888 by teaching the legacy loop pass manager how to clear out deleted loops from the current queue beyond just the current loop..
Thu, Jun 21, 7:48 PM
chandlerc added inline comments to D48470: [LegacyPM] Fix PR37888 by teaching the legacy loop pass manager how to clear out deleted loops from the current queue beyond just the current loop..
Thu, Jun 21, 7:27 PM
chandlerc created D48470: [LegacyPM] Fix PR37888 by teaching the legacy loop pass manager how to clear out deleted loops from the current queue beyond just the current loop..
Thu, Jun 21, 7:07 PM
chandlerc committed rL335314: Fix test failures after r335306 due to the pipeline changing..
Fix test failures after r335306 due to the pipeline changing.
Thu, Jun 21, 5:37 PM
chandlerc committed rL335310: [x86] Fix a tiny bug in my test case in r335309 by marking that we don't.
[x86] Fix a tiny bug in my test case in r335309 by marking that we don't
Thu, Jun 21, 4:57 PM
chandlerc committed rC335310: [x86] Fix a tiny bug in my test case in r335309 by marking that we don't.
[x86] Fix a tiny bug in my test case in r335309 by marking that we don't
Thu, Jun 21, 4:57 PM
chandlerc committed rL335309: [x86] Teach the builtin argument range check to allow invalid ranges in.
[x86] Teach the builtin argument range check to allow invalid ranges in
Thu, Jun 21, 4:51 PM
chandlerc committed rC335309: [x86] Teach the builtin argument range check to allow invalid ranges in.
[x86] Teach the builtin argument range check to allow invalid ranges in
Thu, Jun 21, 4:50 PM
chandlerc closed D48464: [x86] Teach the builtin argument range check to allow invalid ranges in dead code..
Thu, Jun 21, 4:50 PM
chandlerc accepted D48457: [LoopUnswitch]Fix comparison for DomTree updates..

It'd be nice to get a test case here, but if its not feasible, the change is obviously correct (or at least an improvement!!!)

Thu, Jun 21, 4:42 PM
chandlerc accepted D48462: [X86] Update handling in CGBuiltin to be tolerant of out of range immediates..

LGTM, thanks!

Thu, Jun 21, 4:32 PM
chandlerc created D48464: [x86] Teach the builtin argument range check to allow invalid ranges in dead code..
Thu, Jun 21, 4:30 PM
chandlerc added a dependent revision for D48462: [X86] Update handling in CGBuiltin to be tolerant of out of range immediates.: D48464: [x86] Teach the builtin argument range check to allow invalid ranges in dead code..
Thu, Jun 21, 4:30 PM
chandlerc updated the diff for D48349: [ADT] Add llvm::unique_function which is like std::function but supporting move-only closures..

Actually include some of the new tests and fix minor bugs they found.

Thu, Jun 21, 1:47 AM
chandlerc edited reviewers for D6260: Add -mlong-double-64 flag, added: echristo, timshen, dlj; removed: kcc.

Ok folks, I know this is a blast from the past, but can we actually review this? I'm willing to commandeer it, rebase it, and get it landed if you all can review this and confirm that it is the right direction.

Thu, Jun 21, 12:52 AM
chandlerc added a comment to D48349: [ADT] Add llvm::unique_function which is like std::function but supporting move-only closures..

In that case maybe FunctionExtras.h in keeping with the llvm naming
spirit

Thu, Jun 21, 12:46 AM
chandlerc updated the diff for D48349: [ADT] Add llvm::unique_function which is like std::function but supporting move-only closures..

Address comments from review, beefing up tests along the way to cover this
stuff much more carefully.

Thu, Jun 21, 12:45 AM
chandlerc added a comment to D48349: [ADT] Add llvm::unique_function which is like std::function but supporting move-only closures..

Thanks for the comments! Some responses below...

Thu, Jun 21, 12:44 AM

Wed, Jun 20

chandlerc updated the diff for D47683: [PM/LoopUnswitch] Teach the new unswitch to handle nontrivial unswitching of switches..

Rebase now that all the prior patches are landed and ping.

Wed, Jun 20, 11:52 PM
chandlerc committed rL335203: [PM/LoopUnswitch] Add partial non-trivial unswitching for invariant.
[PM/LoopUnswitch] Add partial non-trivial unswitching for invariant
Wed, Jun 20, 11:18 PM
chandlerc closed D47522: [PM/LoopUnswitch] Add partial non-trivial unswitching for invariant conditions feeding a chain of `and`s or `or`s for a branch..
Wed, Jun 20, 11:18 PM
chandlerc committed rL335202: [RISC-V] Fix a test case to not include label names as those aren't.
[RISC-V] Fix a test case to not include label names as those aren't
Wed, Jun 20, 10:46 PM
chandlerc added a comment to D46706: [PM/LoopUnswitch] Support partial trivial unswitching..

Sorry for being late to the party, but a couple of optional post commit style comments for possible follow up. Nothing major, just ideas on how to share code and reduce a possible ordering sensitivity.

Wed, Jun 20, 4:23 PM
chandlerc accepted D48202: Generalize MergeBlockIntoPredecessor. Replace uses of MergeBasicBlockIntoOnlyPred..

LGTM!

Wed, Jun 20, 2:19 PM
chandlerc committed rL335156: [PM/LoopUnswitch] Support partial trivial unswitching..
[PM/LoopUnswitch] Support partial trivial unswitching.
Wed, Jun 20, 12:01 PM
chandlerc closed D46706: [PM/LoopUnswitch] Support partial trivial unswitching..
Wed, Jun 20, 12:01 PM
chandlerc added a comment to D46706: [PM/LoopUnswitch] Support partial trivial unswitching..

This lgtm.

Have you considered making full unswitching a special case for partial unswitching? It seems like we could "partially unswitch" br %loop_invariant, label %t, label %f into br true/false, label %t, label %f and have a beefed up LoopSimplifyCFG clean this up?

Wed, Jun 20, 11:59 AM
chandlerc updated the diff for D47352: [instsimplify] Move the instsimplify pass to use more obvious file names and diretory..

Rebase and ping.

Wed, Jun 20, 11:54 AM
chandlerc added a comment to D48349: [ADT] Add llvm::unique_function which is like std::function but supporting move-only closures..

Not to suggest the obvious, but UniqueFunction.h?

Wed, Jun 20, 11:39 AM
chandlerc added a comment to D46711: [private] Add min_vector_width function attribute. Use it to annotate all of the x86 intrinsic header files. Emit a attribute in IR.

I think this looks really nice.

Wed, Jun 20, 11:36 AM
chandlerc added a comment to D48349: [ADT] Add llvm::unique_function which is like std::function but supporting move-only closures..

BTW, one question I have is what the best name for the file is here. function.h seems kinda lame, but not sure what else to call it. Suggestions very welcome here.

Wed, Jun 20, 11:26 AM
chandlerc requested changes to D48202: Generalize MergeBlockIntoPredecessor. Replace uses of MergeBasicBlockIntoOnlyPred..

Still a few things left, but really close.

Wed, Jun 20, 11:24 AM
chandlerc added a comment to D48240: Try again to implement a FIFO task queue.

Really nice approach for THREADS=0 w/ the deferred future that checks that "enough" of the queue has been processed. I like it.

Wed, Jun 20, 1:23 AM
chandlerc created D48349: [ADT] Add llvm::unique_function which is like std::function but supporting move-only closures..
Wed, Jun 20, 1:13 AM

Mon, Jun 18

chandlerc added a comment to D48240: Try again to implement a FIFO task queue.

I also wonder whether you want to decouple this serialized execution from the thread creation and management. Could you accept a thread pool instead, and enqueue work on the thread pool? You can do this by having each task on the thread pool, on completion, check the queue for more work, and if there is some, schedule a new task on the thread pool. The reason why this is interesting is because if you have, say, a system thread pool that maybe gets a lot of other work, you can intersperse these tasks on it without overloading the system. It also allows the client of this class to dictate which threads are allowable threads for these tasks to run by providing a correct thread pool. My hope is that worst case, creating a one-thread thread pool and handing it to this class would be the equivalent of what you have here, but with a more clean separation of roles. I understand it would add some complexity, for example you'd have to handle the case where no work is currently in-flight when asyncImpl finishes adding the task to the queue and start a new batch. But this seems reasonably tolerable.

Isn't using multiple threads strictly incompatible with the idea of it being serialized or synchronized? With multiple threads, you will have work overlapping, which confuses the purpose of what this is for. If someone comes up with a use case for it, then maybe, but otherwise, YAGNI?

Mon, Jun 18, 8:02 PM
chandlerc added a comment to D48240: Try again to implement a FIFO task queue.

Some suggestions about the way you package things and manage std::future stuff below.

Mon, Jun 18, 7:02 PM

Sat, Jun 16

chandlerc added a comment to D48240: Try again to implement a FIFO task queue.

Before I dig in too much to the code, I want to better understand the underlying goal...

Sat, Jun 16, 4:52 PM

Fri, Jun 8

chandlerc added inline comments to D47624: [PM/LoopUnswitch] Fix PR37651 by correctly invalidating SCEV when unswitching loops..
Fri, Jun 8, 11:20 PM
chandlerc added a comment to D47683: [PM/LoopUnswitch] Teach the new unswitch to handle nontrivial unswitching of switches..

Not sure where to put this into... but I ran an experiment by adding -passes=loop(unswitch) to the LoopUnswitch tests and here is the result
with the build of all the three dependent fixes:
Failing Tests (11):

  LLVM :: Transforms/LoopUnswitch/2011-11-18-TwoSwitches.ll
  LLVM :: Transforms/LoopUnswitch/basictest.ll
  LLVM :: Transforms/LoopUnswitch/copy-metadata.ll
  LLVM :: Transforms/LoopUnswitch/elseif-non-exponential-behavior.ll
  LLVM :: Transforms/LoopUnswitch/guards.ll
  LLVM :: Transforms/LoopUnswitch/infinite-loop.ll
  LLVM :: Transforms/LoopUnswitch/msan.ll
  LLVM :: Transforms/LoopUnswitch/simplify-with-nonvalness.ll
  LLVM :: Transforms/LoopUnswitch/trivial-unswitch.ll
  LLVM :: Transforms/LoopUnswitch/unswitch-equality-undef.ll
  LLVM :: Transforms/LoopUnswitch/unswitch-select.ll
 
Expected Passes    : 30
Unsupported Tests  : 1
Unexpected Failures: 11

Some tests involve selects and guards, which I gather are not yet supported, some involve multiple unswitches over the same loop etc.
IMO it makes sense to go through these results and see if there are any surprises there.
I can submit a diff (and/or log of the run) if needed.

Fri, Jun 8, 11:16 PM

Thu, Jun 7

chandlerc added inline comments to D47624: [PM/LoopUnswitch] Fix PR37651 by correctly invalidating SCEV when unswitching loops..
Thu, Jun 7, 10:22 PM

Wed, Jun 6

chandlerc added a comment to D47522: [PM/LoopUnswitch] Add partial non-trivial unswitching for invariant conditions feeding a chain of `and`s or `or`s for a branch..

Thanks for the review! Based on LGTM, I'll land once the dependent patch lands. Give a shout if you still have concerns though.

Wed, Jun 6, 1:30 PM
chandlerc updated the diff for D47522: [PM/LoopUnswitch] Add partial non-trivial unswitching for invariant conditions feeding a chain of `and`s or `or`s for a branch..

Fix typo spotted in review.

Wed, Jun 6, 1:29 PM
chandlerc updated the diff for D47683: [PM/LoopUnswitch] Teach the new unswitch to handle nontrivial unswitching of switches..

This time *actually* inculde the updated comments in the header file that Hal requested. Soryr this were missing in the prior update.

Wed, Jun 6, 1:20 PM
chandlerc added a comment to D46706: [PM/LoopUnswitch] Support partial trivial unswitching..

Crickets.....

Wed, Jun 6, 1:17 PM
chandlerc added a comment to D47683: [PM/LoopUnswitch] Teach the new unswitch to handle nontrivial unswitching of switches..

Thanks for comments, should all be addressed

Wed, Jun 6, 8:29 AM
chandlerc updated the diff for D47683: [PM/LoopUnswitch] Teach the new unswitch to handle nontrivial unswitching of switches..

Another fixe.

Wed, Jun 6, 8:29 AM
chandlerc updated the diff for D47683: [PM/LoopUnswitch] Teach the new unswitch to handle nontrivial unswitching of switches..

Update to address code review comments.

Wed, Jun 6, 8:26 AM

Tue, Jun 5

chandlerc added a reviewer for D47624: [PM/LoopUnswitch] Fix PR37651 by correctly invalidating SCEV when unswitching loops.: hfinkel.

Add Hal to this review since I was discussing it with him.

Tue, Jun 5, 10:54 PM
chandlerc updated the diff for D47522: [PM/LoopUnswitch] Add partial non-trivial unswitching for invariant conditions feeding a chain of `and`s or `or`s for a branch..

Rebase and ping again. Really looking for review on this one as well.

Tue, Jun 5, 2:18 PM
chandlerc updated the diff for D46706: [PM/LoopUnswitch] Support partial trivial unswitching..

Rebase and ping yet again. Would really like to get a review here...

Tue, Jun 5, 2:17 PM
chandlerc updated the diff for D47624: [PM/LoopUnswitch] Fix PR37651 by correctly invalidating SCEV when unswitching loops..

Update with a new approach and some new testing.

Tue, Jun 5, 2:16 PM
chandlerc commandeered D47624: [PM/LoopUnswitch] Fix PR37651 by correctly invalidating SCEV when unswitching loops..

I think a significantly different approach to invalidating this is necessary. Also, i'd like to much more directly test the SCEV updates. Let me create a new patch here and see what you think.

Tue, Jun 5, 2:13 PM

Sun, Jun 3

chandlerc created D47683: [PM/LoopUnswitch] Teach the new unswitch to handle nontrivial unswitching of switches..
Sun, Jun 3, 3:06 AM
chandlerc added a dependent revision for D47522: [PM/LoopUnswitch] Add partial non-trivial unswitching for invariant conditions feeding a chain of `and`s or `or`s for a branch.: D47683: [PM/LoopUnswitch] Teach the new unswitch to handle nontrivial unswitching of switches..
Sun, Jun 3, 3:06 AM

Fri, Jun 1

chandlerc updated the diff for D47522: [PM/LoopUnswitch] Add partial non-trivial unswitching for invariant conditions feeding a chain of `and`s or `or`s for a branch..

Rebase and ping.

Fri, Jun 1, 7:03 PM
chandlerc updated the diff for D46706: [PM/LoopUnswitch] Support partial trivial unswitching..

Rebase and ping.

Fri, Jun 1, 7:02 PM
chandlerc committed rL333811: [PM/LoopUnswitch] Fix how the cloned loops are handled when updating analyses..
[PM/LoopUnswitch] Fix how the cloned loops are handled when updating analyses.
Fri, Jun 1, 6:33 PM
chandlerc closed D47647: [PM/LoopUnswitch] Fix how the cloned loops are handled when updating analyses..
Fri, Jun 1, 6:33 PM
chandlerc created D47647: [PM/LoopUnswitch] Fix how the cloned loops are handled when updating analyses..
Fri, Jun 1, 12:00 PM
chandlerc added a comment to D47624: [PM/LoopUnswitch] Fix PR37651 by correctly invalidating SCEV when unswitching loops..

Thanks for looking at this!

Fri, Jun 1, 8:27 AM

Thu, May 31

chandlerc added a reviewer for D47467: [IR] Begin removal of TerminatorInst by removing successor manipulation.: jyknight.

Adding James as a reviewer since I know he's interested in this stuff...

Thu, May 31, 6:12 PM

Wed, May 30

chandlerc added inline comments to D47407: [LoopInstSimplify] Re-implement the core logic of loop-instsimplify to be both simpler and substantially more efficient..
Wed, May 30, 9:57 AM
chandlerc added a dependent revision for D46706: [PM/LoopUnswitch] Support partial trivial unswitching.: D47522: [PM/LoopUnswitch] Add partial non-trivial unswitching for invariant conditions feeding a chain of `and`s or `or`s for a branch..
Wed, May 30, 2:34 AM
chandlerc created D47522: [PM/LoopUnswitch] Add partial non-trivial unswitching for invariant conditions feeding a chain of `and`s or `or`s for a branch..
Wed, May 30, 2:34 AM

Tue, May 29

chandlerc updated the diff for D46706: [PM/LoopUnswitch] Support partial trivial unswitching..

Rebase now that all the loop-instsimplify stuff has landed.

Tue, May 29, 7:53 PM
chandlerc added a comment to D46706: [PM/LoopUnswitch] Support partial trivial unswitching..

Not exactly related to this set of changes...
I just have discovered that old LoopUnswitch performs SCEV cache invalidation when it does nontrivial updates to CFG

(forgetLoop in LoopUnswitch::unswitchNontrivialCondition) .

Perhaps makes sense to do the same in new loop unswitch as well?

Tue, May 29, 7:53 PM
chandlerc committed rL333493: [PM/LoopUnswitch] When using the new SimpleLoopUnswitch pass, schedule.
[PM/LoopUnswitch] When using the new SimpleLoopUnswitch pass, schedule
Tue, May 29, 7:52 PM
chandlerc closed D47408: [PM/LoopUnswitch] When using the new SimpleLoopUnswitch pass, schedule loop-cleanup passes at the beginning of the loop pass pipeline, and re-enqueue loops after even trivial unswitching..
Tue, May 29, 7:52 PM
chandlerc added a comment to D47408: [PM/LoopUnswitch] When using the new SimpleLoopUnswitch pass, schedule loop-cleanup passes at the beginning of the loop pass pipeline, and re-enqueue loops after even trivial unswitching..

Thanks all, landing!

Tue, May 29, 7:49 PM
chandlerc added inline comments to D47467: [IR] Begin removal of TerminatorInst by removing successor manipulation..
Tue, May 29, 5:27 PM
chandlerc committed rL333461: [LoopInstSimplify] Re-implement the core logic of loop-instsimplify to.
[LoopInstSimplify] Re-implement the core logic of loop-instsimplify to
Tue, May 29, 1:19 PM
chandlerc closed D47407: [LoopInstSimplify] Re-implement the core logic of loop-instsimplify to be both simpler and substantially more efficient..
Tue, May 29, 1:19 PM
chandlerc added a comment to D47407: [LoopInstSimplify] Re-implement the core logic of loop-instsimplify to be both simpler and substantially more efficient..

All suggestions implemented, submitting now, thanks!

Tue, May 29, 1:18 PM
chandlerc added inline comments to D47467: [IR] Begin removal of TerminatorInst by removing successor manipulation..
Tue, May 29, 9:52 AM
chandlerc updated the diff for D47408: [PM/LoopUnswitch] When using the new SimpleLoopUnswitch pass, schedule loop-cleanup passes at the beginning of the loop pass pipeline, and re-enqueue loops after even trivial unswitching..

Move the new cleanup pass additions above the loop-rotate specific comment.
This position was the whole point of the other comment I added here....

Tue, May 29, 9:52 AM
chandlerc added a comment to D47408: [PM/LoopUnswitch] When using the new SimpleLoopUnswitch pass, schedule loop-cleanup passes at the beginning of the loop pass pipeline, and re-enqueue loops after even trivial unswitching..

Thanks for review all! (Waiting on the patch before this in order to land this one.)

Tue, May 29, 9:52 AM
chandlerc created D47467: [IR] Begin removal of TerminatorInst by removing successor manipulation..
Tue, May 29, 3:30 AM

Sat, May 26

chandlerc updated the diff for D46706: [PM/LoopUnswitch] Support partial trivial unswitching..

Update to rebase on the patch that adds loop-instsimplify and loop-simplifycfg
to the loop pass pipeline as cleanup passes to minimize the cleanup necessary
in the unswitch pass itself.

Sat, May 26, 4:55 PM
chandlerc added a dependent revision for D47408: [PM/LoopUnswitch] When using the new SimpleLoopUnswitch pass, schedule loop-cleanup passes at the beginning of the loop pass pipeline, and re-enqueue loops after even trivial unswitching.: D46706: [PM/LoopUnswitch] Support partial trivial unswitching..
Sat, May 26, 4:55 PM
chandlerc updated the diff for D47408: [PM/LoopUnswitch] When using the new SimpleLoopUnswitch pass, schedule loop-cleanup passes at the beginning of the loop pass pipeline, and re-enqueue loops after even trivial unswitching..

Rebase and teach the old PM to do this as well when using SimpleLoopUnswitch.

Sat, May 26, 3:38 PM
chandlerc added a dependent revision for D47407: [LoopInstSimplify] Re-implement the core logic of loop-instsimplify to be both simpler and substantially more efficient.: D47408: [PM/LoopUnswitch] When using the new SimpleLoopUnswitch pass, schedule loop-cleanup passes at the beginning of the loop pass pipeline, and re-enqueue loops after even trivial unswitching..
Sat, May 26, 3:38 PM
chandlerc created D47408: [PM/LoopUnswitch] When using the new SimpleLoopUnswitch pass, schedule loop-cleanup passes at the beginning of the loop pass pipeline, and re-enqueue loops after even trivial unswitching..
Sat, May 26, 4:24 AM
chandlerc updated the diff for D47407: [LoopInstSimplify] Re-implement the core logic of loop-instsimplify to be both simpler and substantially more efficient..

Fix some formatting goofs that snuck in w/o a run of clang-format to clean them up.

Sat, May 26, 2:56 AM
chandlerc created D47407: [LoopInstSimplify] Re-implement the core logic of loop-instsimplify to be both simpler and substantially more efficient..
Sat, May 26, 2:55 AM

May 25 2018

chandlerc added a comment to D45753: Lift JSON library from clang-tools-extra/clangd to llvm/Support..

Thanks for the ping!

May 25 2018, 1:45 AM

May 24 2018

chandlerc committed rL333250: Restore the LoopInstSimplify pass, reverting r327329 that removed it..
Restore the LoopInstSimplify pass, reverting r327329 that removed it.
May 24 2018, 6:36 PM
chandlerc closed D47353: Restore the LoopInstSimplify pass, reverting r327329 that removed it..
May 24 2018, 6:36 PM
chandlerc created D47353: Restore the LoopInstSimplify pass, reverting r327329 that removed it..
May 24 2018, 5:58 PM
chandlerc added a comment to D47346: [X86] Add a new pass to fold extension into load instructions in previous BB.

We have an MI combine pass IIRC -- why not put this there? (Genuine question, haven't looked at these enough to know if that doesn't work...)

May 24 2018, 5:56 PM
chandlerc created D47352: [instsimplify] Move the instsimplify pass to use more obvious file names and diretory..
May 24 2018, 5:40 PM
chandlerc updated the diff for D46706: [PM/LoopUnswitch] Support partial trivial unswitching..

Updated patch just to show where the code ended up.

May 24 2018, 4:59 PM
chandlerc added a comment to D46706: [PM/LoopUnswitch] Support partial trivial unswitching..

Ok, after some discussion, I'm pretty convinced we just need to stop simplifying here.

May 24 2018, 4:17 PM
chandlerc added a comment to D46706: [PM/LoopUnswitch] Support partial trivial unswitching..

Thanks for the review!

May 24 2018, 2:29 AM
chandlerc updated the diff for D46706: [PM/LoopUnswitch] Support partial trivial unswitching..

Update with fixes from code review.

May 24 2018, 2:29 AM

May 23 2018

chandlerc added a comment to D47308: [ORC] Perform name mangling in findSymbolIn(), as done in findSymbol()..

FWIW, I don't think this is really obvious / trivial enough to land w/o review by someone familiar w/ Orc and the users.

May 23 2018, 9:47 PM

May 21 2018

chandlerc committed rL332940: Merge r332389 to pick up the fix for PR37431, a regression w/ the new EFLAGS….
Merge r332389 to pick up the fix for PR37431, a regression w/ the new EFLAGS…
May 21 2018, 8:12 PM
chandlerc committed rL332939: Merge r330269 to fix egregiously bad codegeneration in the new EFLAGS lowering.
Merge r330269 to fix egregiously bad codegeneration in the new EFLAGS lowering
May 21 2018, 8:07 PM