Page MenuHomePhabricator

sanjoy (Sanjoy Das)
User

Projects

User does not belong to any projects.

User Details

User Since
Jun 6 2014, 4:30 PM (279 w, 5 d)

Recent Activity

Fri, Oct 4

sanjoy added a comment to D68082: [LV] Emitting SCEV checks with OptForSize.

I agree with @Ayal about changing getAsAddRec for OptForSize. In general, it's better to not "Analyze" if we know we won't be using the result of analysis.

Fri, Oct 4, 3:26 PM · Restricted Project

Wed, Sep 18

sanjoy accepted D67512: [Analysis] Allow -scalar-evolution-max-iterations more than once.

This patch individually is fine, but why are you setting scalar-evolution-max-iterations in the first place? It is a debug option that end-users should ideally never have to change.

Wed, Sep 18, 8:22 PM · Restricted Project
sanjoy added a comment to D66012: [AArch64][Statepoints] Statepoint support for AArch64..

I don't work on statepoints anymore.

Wed, Sep 18, 1:51 PM · Restricted Project
sanjoy edited reviewers for D66012: [AArch64][Statepoints] Statepoint support for AArch64., added: apilipenko; removed: sanjoy.
Wed, Sep 18, 1:51 PM · Restricted Project

Sep 13 2019

sanjoy committed rGfe4dc2e71324: Add dependency from Orc to Passes (authored by sanjoy).
Add dependency from Orc to Passes
Sep 13 2019, 2:09 PM
sanjoy committed rL371898: Add dependency from Orc to Passes.
Add dependency from Orc to Passes
Sep 13 2019, 2:06 PM
sanjoy closed D67477: Add dependency from Orc to Passes.
Sep 13 2019, 2:06 PM · Restricted Project

Sep 11 2019

sanjoy created D67477: Add dependency from Orc to Passes.
Sep 11 2019, 7:49 PM · Restricted Project

Sep 7 2019

sanjoy removed a reviewer for D67147: Remove the additional constant which requires an extra register for statepoint lowering.: sanjoy.
Sep 7 2019, 9:29 AM · Restricted Project

Aug 24 2019

sanjoy accepted D61007: [NFC] SCEVExpander: add SetCurrentDebugLocation() / getCurrentDebugLocation() wrappers.

Lgtm

Aug 24 2019, 10:02 AM · Restricted Project

Aug 6 2019

sanjoy accepted D65474: [SCEV] Return zero from computeConstantDifference(X, X).

LGTM

Aug 6 2019, 7:32 PM · Restricted Project

Aug 4 2019

sanjoy requested changes to D65474: [SCEV] Return zero from computeConstantDifference(X, X).

Let's make this a friend function, I'm already not super happy with how wide SCEV's API is. You can make the diff lambda a member function of ScalarEvolutionsTest to make this work.

Aug 4 2019, 10:28 AM · Restricted Project

Jul 31 2019

sanjoy accepted D65490: [SimplifyCFG] Mark missed Changed to true..

lgtm

Jul 31 2019, 5:59 PM · Restricted Project

Jul 30 2019

sanjoy requested changes to D65474: [SCEV] Return zero from computeConstantDifference(X, X).

We use computeConstantDifference in some downstream code, and I was surprised to find out that it fails to compute (X - X) difference, unless X is a SCEVAddExpr.

Jul 30 2019, 3:02 PM · Restricted Project

Jul 8 2019

sanjoy accepted D64215: Add a transform pass to make the executable semantics of poison explicit in the IR.

I think Alive and this are complementary. Alive is useful in proving the correctness of _new_ transformations, whereas this pass should let us quickly figure out if a large unreduced application is misbehaving it branches on poison.

Jul 8 2019, 9:56 PM · Restricted Project

Jul 5 2019

sanjoy added inline comments to D64215: Add a transform pass to make the executable semantics of poison explicit in the IR.
Jul 5 2019, 10:20 AM · Restricted Project

Jul 4 2019

sanjoy added a comment to D64215: Add a transform pass to make the executable semantics of poison explicit in the IR.

I think this is an excellent idea!!

Jul 4 2019, 1:03 PM · Restricted Project
sanjoy added reviewers for D64215: Add a transform pass to make the executable semantics of poison explicit in the IR: manasij7479, aqjune.
Jul 4 2019, 12:53 PM · Restricted Project

Jun 23 2019

sanjoy added a comment to D63618: Exploit a zero LoopExit count to eliminate loop exits.

Agreed. I'm mainly curious about the specific test changes in this patch, not with the general idea.

I dug into this a bit, and it turns out the Nikita is partly right. What's going on is that when we visit a cast (for the widening analysis), we always skip it's users (for the simplifying transforms). This doesn't seem to really make any sense, and removing it doesn't appear to break any test. Anyone have any idea why this might be the case? I'm really tempted to just remove the continue.

Jun 23 2019, 12:44 PM · Restricted Project
sanjoy committed rGe2291f5af929: Fix typo in comment; NFC (authored by sanjoy).
Fix typo in comment; NFC
Jun 23 2019, 12:26 PM
sanjoy committed rL364159: Fix typo in comment; NFC.
Fix typo in comment; NFC
Jun 23 2019, 12:26 PM

Jun 21 2019

sanjoy accepted D63618: Exploit a zero LoopExit count to eliminate loop exits.

it seems like there are a lot of cases where SCEV's exit count reasoning is stronger than it's isKnownPredicate reasoning.

This is somewhat surprising. For instance in @test_06 I would have expected SCEV to compute the range of %narrow.iv to be [INT32_MAX, INT32_MAX+1) (using the fact that the backedge taken count is 0), and thus figure resolve the icmp slt to false by just looking at the ranges. Any idea why that's not happening?

I haven't looked into that one specifically,

Jun 21 2019, 11:10 AM · Restricted Project

Jun 20 2019

sanjoy added a comment to D63618: Exploit a zero LoopExit count to eliminate loop exits.

it seems like there are a lot of cases where SCEV's exit count reasoning is stronger than it's isKnownPredicate reasoning.

Jun 20 2019, 7:39 PM · Restricted Project

Jun 17 2019

sanjoy added a comment to D63439: Wordsmith the semantics of invariant.load.

I'm ok with this change however I think that "executed" term may be somehow specified more. May be "executed at runtime" ?

Jun 17 2019, 10:10 PM · Restricted Project
sanjoy created D63439: Wordsmith the semantics of invariant.load.
Jun 17 2019, 9:25 AM · Restricted Project
sanjoy added a comment to D63401: SROA: Allow touching addrspacecast with volatile.

I don't have opinions on this, but Philip might have comments around whether this is okay for GC pointers.

Jun 17 2019, 8:49 AM
sanjoy edited reviewers for D63401: SROA: Allow touching addrspacecast with volatile, added: reames; removed: sanjoy.
Jun 17 2019, 8:47 AM

Jun 14 2019

sanjoy accepted D60035: [SCEV] Use unsigned/signed intersection type in SCEV.

lgtm

Jun 14 2019, 7:13 PM · Restricted Project
sanjoy accepted D63224: Teach getSCEVAtScope how to handle loop phis w/invariant operands in loops w/taken backedges.

lgtm

Jun 14 2019, 7:07 PM · Restricted Project

Jun 6 2019

sanjoy accepted D62880: Prepare for multi-exit LFTR [NFC].

I should just include the resultng test change in this commit and not worry about it.

Jun 6 2019, 9:27 PM · Restricted Project
sanjoy accepted D62959: TailDuplicator: Remove no-op analyzeBranch call.

lgtm

Jun 6 2019, 8:01 PM

May 15 2019

sanjoy accepted D61652: [Attr] Introduce dereferenceable_globally.
May 15 2019, 8:11 PM · Restricted Project

May 14 2019

sanjoy added inline comments to D61652: [Attr] Introduce dereferenceable_globally.
May 14 2019, 10:13 PM · Restricted Project
sanjoy accepted D59065: Add ptrmask intrinsic.

@sanjoy it would be great if you could have a quick look and check if the new approach makes sense to you.

May 14 2019, 9:11 PM · Restricted Project
sanjoy added inline comments to D61652: [Attr] Introduce dereferenceable_globally.
May 14 2019, 9:06 PM · Restricted Project

May 9 2019

sanjoy added a comment to D60047: [CaptureTracking] Don't let comparisons against null escape inbounds pointers.

Hello,

One mode of reasoning that could invalidate this example is that p *could have been* something other than 2^64-4 which would invoke UB. This UB would both let us pretend that foo does not escape p, and also print 2^64-4 even though p was not 2^64-4 in the execution we chose. This seems a bit subtle though, and I'm not entirely sure this is sound reasoning.

(sorry for my sudden interruption :)

That is what I did to re-start the discussion on this thread as well...

I think this reasoning makes sense, but to say why it makes sense a few minor details should be explained.
[...]
I think the story is similar here. We can define that the address of allocation is nondeterministically chosen (like the case of a racy program), so LLVM can pick the most problematic one, and say that the source program already has undefined behavior. :)

Cool. @sanjoy, are we in agreement?

May 9 2019, 9:42 PM · Restricted Project
sanjoy accepted D61721: SelectionDAG: accommodate atomic floating stores.

Thanks for the quick fix!

May 9 2019, 1:01 PM · Restricted Project

May 8 2019

sanjoy added inline comments to D58982: DAG: allow DAG pointer size different from memory representation..
May 8 2019, 7:36 PM · Restricted Project

May 7 2019

sanjoy accepted D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.

lgtm

May 7 2019, 8:00 PM · Restricted Project
sanjoy added a comment to D60047: [CaptureTracking] Don't let comparisons against null escape inbounds pointers.

To get the escape case you have to have guessed the correct offset from the initial pointer value to null.

foo(p_with_offset); in void bar_0() would be UB if you would have chosen any offset not in {0,4} (both bytes). The first because the dereferenceability property is fulfilled, the second because it happens to result in a null pointer.

May 7 2019, 4:46 PM · Restricted Project
sanjoy added a comment to D60047: [CaptureTracking] Don't let comparisons against null escape inbounds pointers.

Could you explain this again with example code? I don't think I understand what you are saying, sorry.

May 7 2019, 3:06 PM · Restricted Project
sanjoy added a comment to D60047: [CaptureTracking] Don't let comparisons against null escape inbounds pointers.

I don't see it and your example misses the very important dereferenceable_or_null part.

Even if they are colluding, the behavior is undefined if the "guessed" (= modified) pointer is outside the dereferenceable range and not null.
So, assuming the pointer is initially not known and not null. Furthermore, it is B bytes dereferenceable and O bytes "away" from null.
All checks with a positive offset <= B are, as mentioned before, useless.
Any check with an offset > B that is not equivalent to the O offset will cause UB.
Only "guessing" the O offset will not cause UB. Now if you could do that, you could also not do the comparison at all and simply go with ptr + O.

May 7 2019, 11:07 AM · Restricted Project

May 6 2019

sanjoy requested changes to D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.

Only minor nitpicky comments, will LGTM once these are fixed.

May 6 2019, 9:36 PM · Restricted Project
sanjoy added a comment to D60047: [CaptureTracking] Don't let comparisons against null escape inbounds pointers.

I again think dereferenceable_or_null is fine because you basically have a single shot to guess the pointer by making it null:

Any guess (with an offset) that keeps it in the dereferenceable part is useless as it cannot be null.

May 6 2019, 9:25 PM · Restricted Project

May 5 2019

sanjoy added a comment to D60047: [CaptureTracking] Don't let comparisons against null escape inbounds pointers.

Should we interpret your comment as "the reasoning seems sound", or did you only want to point out the special case which I discuss below?

May 5 2019, 11:09 PM · Restricted Project
sanjoy added a comment to D60047: [CaptureTracking] Don't let comparisons against null escape inbounds pointers.
  1. A scope (=function) in which null is not a valid pointer (see NullPointerIsDefined(Function *, unsigned AddrSpace))
  2. A dereferenceable_or_null pointer Ptr (see Value::getPointerDereferenceableBytes) Now comparing Ptr agains null should be noescape.

My reasoning (which has to be checked!):

The idea is that you cannot arbitrarily manipulate the pointer while keeping the two properties.
If Ptr is null to begin with, we are fine (I think).
If it is not, it points to an allocation with extend [start:end) where end - start equals the dereferenceable bytes.
Due to property 1) we know null is not contained in [start:end).
That means we cannot manipulate a pointer such that 2) holds and a null comparison would leak information because it always has to be false.

May 5 2019, 3:58 PM · Restricted Project
sanjoy accepted D50167: RFC: [SCEV] Add explicit representations of umin/smin.

LGTM. If possible (and you haven't already) try bootstrapping clang in a few configurations to double check things are okay.

May 5 2019, 12:37 PM · Restricted Project

May 4 2019

sanjoy requested changes to D60935: [IndVarSimplify] Fixup nowrap flags during LFTR when moving to post-inc (PR31181).

I'm not sure if the current fix is correct. I'd suggest doing one of the following:

May 4 2019, 1:17 PM · Restricted Project
sanjoy updated subscribers of D61306: [NFC] Refactor visitIntrinsicCall so it doesn't return a const char*.
May 4 2019, 12:33 AM · Restricted Project

Apr 28 2019

sanjoy accepted D61166: [SCEV] Use isKnownViaNonRecursiveReasoning for smax simplification.

and as I found out also stack overflows

Apr 28 2019, 12:39 PM · Restricted Project
sanjoy accepted D50167: RFC: [SCEV] Add explicit representations of umin/smin.

This change in isolation LGTM (modulo some minor comments inline) -- at the very least having separate umin / smin nodes makes min expressions more readable (as demonstrated by the updates to the test cases).

Apr 28 2019, 12:36 PM · Restricted Project

Apr 27 2019

sanjoy accepted D60960: [ConstantRange] Add makeExactNoWrapRegion().

I got confused on the terminology

Apr 27 2019, 11:54 AM · Restricted Project

Apr 18 2019

sanjoy accepted D60638: [LoopUnroll] Move list of params into a struct [NFCI]..
Apr 18 2019, 4:04 PM · Restricted Project

Apr 13 2019

sanjoy added a comment to D60632: [ConstantRange] Disallow NUW | NSW in makeGuaranteedNoWrapRegion().

That was added in D13612 This will be used in a future change to ScalarEvolution.,
but indeed, the (OBO::NoSignedWrap | OBO::NoUnsignedWrap) combination is not used anywhere.
I'm wondering if @sanjoy has any comments?

Apr 13 2019, 11:00 AM · Restricted Project

Apr 10 2019

sanjoy accepted D60144: [SCEV] Add option to forget everything in SCEV..

lgtm

Apr 10 2019, 7:12 PM · Restricted Project

Apr 4 2019

sanjoy added a comment to D60144: [SCEV] Add option to forget everything in SCEV..

Here are the times I got for compiling the aggregated bitcode files for clang and a few others. Before is ToT, After is with -forget-scev-loop-unroll=true
File Before (s) After (s)
clang-9.bc 7267.91 6639.14
llvm-as.bc 194.12 194.12
llvm-dis.bc 62.50 62.50
opt.bc 1855.85 1857.53

The current test I have is not publishable, I'm still trying to get one.
In the mean time, the above results might motivate having this enabled by default.

Apr 4 2019, 11:20 AM · Restricted Project
sanjoy added a comment to D59065: Add ptrmask intrinsic.

Ah thanks, I was missing the global nature of physical pointers. I couldn't find this described anywhere (besides some of those things mentioned at a tutorial at EuroLLVM). If this is not described anywhere, do you think it would make sense to add it to the AliasAnalysis documentation page, for example?

Apr 4 2019, 11:06 AM · Restricted Project

Apr 2 2019

sanjoy added a comment to D59065: Add ptrmask intrinsic.

Ah thanks, together with @aqjune 's response, I think I now know what I was missing. If we have something like

int8_t* obj1 = malloc(4);
int8_t* obj2 = malloc(4);
int p = (intptr_t)(obj1 + 4);
 
if (p != (intptr_t) obj2) return;
  
*(int8_t*)(intptr_t)(obj1 + 4) = 0;   // <- here we alias ob1 and obj2?

I thought the information obtained via the control flow, p aliases both obj1 and obj2, is limited to the uses of p, but do I understand correctly that this is not the case and the information leaks to all equivalent expressions (that is for the snippet above, without GVN or any common code elimination)?

Apr 2 2019, 7:52 PM · Restricted Project
sanjoy added a comment to D59065: Add ptrmask intrinsic.

@sanjoy I haven't tried to solve this problem myself, but it seems pretty important. It sounds to me like you're laying out an argument for introducing LLVM pointer masking intrinsics that would preserve some sort of inbound property. Is it fair to say that we probably can't fully optimize tagged pointers without using intrinsics to avoid this ptrtoint optimizer trap?

I think your understanding is correct. To support full optimization opportunity, an intrinsic like llvm.ptrmask(p, mask) would work.

Apr 2 2019, 7:31 PM · Restricted Project

Apr 1 2019

sanjoy removed a reviewer for D60078: [FunctionAttrs] Remove old "no-capture" and memory behavior argument deduction: sanjoy.
Apr 1 2019, 11:10 AM · Restricted Project
sanjoy removed a reviewer for D58311: [MemorySSA & LoopPassManager] Enable MemorySSA as loop dependency. Update tests.: sanjoy.
Apr 1 2019, 11:10 AM · Restricted Project
sanjoy removed a reviewer for D59903: [NFC][FnAttrs] Stress tests for attribute deduction: sanjoy.
Apr 1 2019, 11:10 AM · Restricted Project
sanjoy removed a reviewer for D60077: [Attributor] Deduce memory location function attributes: sanjoy.
Apr 1 2019, 11:07 AM · Restricted Project
sanjoy removed a reviewer for D60076: [Attributor] Deduce memory behavior function attributes: sanjoy.
Apr 1 2019, 11:07 AM · Restricted Project, Restricted Project
sanjoy removed a reviewer for D60075: [FunctionAttrs] Remove post order "no-recurse" attribute deduction: sanjoy.
Apr 1 2019, 11:06 AM · Restricted Project
sanjoy removed a reviewer for D60074: [Attributor] Deduce "no-recurse" function attribute: sanjoy.
Apr 1 2019, 11:06 AM · Restricted Project
sanjoy removed a reviewer for D60073: [Attributor] Enable backwards propagation from callback callees.: sanjoy.
Apr 1 2019, 11:06 AM · Restricted Project
sanjoy removed a reviewer for D60072: [Attributor] Deduce "no-capture" attributes for call site arguments: sanjoy.
Apr 1 2019, 11:06 AM · Restricted Project
sanjoy removed a reviewer for D59980: [Attributor] Deduce memory behavior argument attributes: sanjoy.
Apr 1 2019, 11:06 AM · Restricted Project, Restricted Project
sanjoy removed a reviewer for D59978: [Attributor] Deduce the "no-return" attribute for functions: sanjoy.
Apr 1 2019, 11:06 AM · Restricted Project
sanjoy removed a reviewer for D59922: [Attributor] Deduce "no-capture" argument attribute: sanjoy.
Apr 1 2019, 11:06 AM · Restricted Project, Restricted Project
sanjoy removed a reviewer for D59920: [FunctionAttrs] Remove old "returned" argument deduction: sanjoy.
Apr 1 2019, 11:06 AM · Restricted Project
sanjoy removed a reviewer for D59919: [Attributor] Deduce "returned" argument attribute: sanjoy.
Apr 1 2019, 11:06 AM · Restricted Project, Restricted Project

Mar 31 2019

sanjoy added a comment to D59065: Add ptrmask intrinsic.

I'm not sure about this. You could have:

int32* ptr0 = malloc(4);
int32* ptr1 = malloc(4);

if (ptr0+1 != ptr1) return;

int32* ptr = (int*)(int64)(ptr0+1);

in which ptr would alias ptr1. But if you transform ptr to ptr0+1 then it would not alias ptr1.

I am probably missing something, but I am not sure how such a case would be possible with this patch? It specifically looks for a inttoptr(and(ptrtoint, C)) sequence, where C is such that the (logical) destination of the pointer remains unchanged. Unfortunately I do not think the LangRef is clear about 'irrelevant' bits in pointers (due to alignment or address spaces)

Mar 31 2019, 6:51 PM · Restricted Project
sanjoy removed a reviewer for D58560: [AST] Set 'MayAlias' instead of 'MustAlias' in AliasSets for PHI nodes (bugzilla bug#36801): sanjoy.
Mar 31 2019, 10:35 AM · Restricted Project
sanjoy removed a reviewer for D59020: [StackMaps] Update llvm-readobj to parse V3 Stackmaps: sanjoy.
Mar 31 2019, 10:35 AM · Restricted Project
sanjoy requested changes to D59065: Add ptrmask intrinsic.
Mar 31 2019, 10:35 AM · Restricted Project
sanjoy requested changes to D60047: [CaptureTracking] Don't let comparisons against null escape inbounds pointers.

Things that are UB in C++ are not necessarily UB in LLVM. For instance you could capture a pointer by doing something like this:

Mar 31 2019, 10:29 AM · Restricted Project

Mar 29 2019

sanjoy added a comment to D59065: Add ptrmask intrinsic.

I am also not entirely sure how control dependencies could add new underlying objects with this patch

Please read this https://bugs.llvm.org/show_bug.cgi?id=34548

I *think* that this is okay if the ptrtoint and the and have only one user, and they're in the same basic block, and there's nothing that can throw, etc. in between?

Mar 29 2019, 6:28 PM · Restricted Project
sanjoy committed rG53a5952a9318: Try to fix buildbot error (authored by sanjoy).
Try to fix buildbot error
Mar 29 2019, 3:26 PM
sanjoy committed rL357324: Try to fix buildbot error.
Try to fix buildbot error
Mar 29 2019, 3:26 PM
sanjoy committed rG32fd32bc6f6d: [SCEV] Check the cache in get{S|U}MaxExpr before doing any work (authored by sanjoy).
[SCEV] Check the cache in get{S|U}MaxExpr before doing any work
Mar 29 2019, 3:02 PM
sanjoy committed rL357320: [SCEV] Check the cache in get{S|U}MaxExpr before doing any work.
[SCEV] Check the cache in get{S|U}MaxExpr before doing any work
Mar 29 2019, 3:01 PM
sanjoy closed D60010: [SCEV] Check the cache in get{S|U}MaxExpr before doing any work.
Mar 29 2019, 3:01 PM · Restricted Project
sanjoy updated the diff for D60010: [SCEV] Check the cache in get{S|U}MaxExpr before doing any work.

Fix bug: when trying to look up the smax/umax SCEV again (after simplification) we can't use the older ID since it was computed based on the unsimplified operands.

Mar 29 2019, 2:26 PM · Restricted Project
sanjoy planned changes to D60010: [SCEV] Check the cache in get{S|U}MaxExpr before doing any work.

Sorry, this is buggy, one moment.

Mar 29 2019, 1:54 PM · Restricted Project
sanjoy created D60010: [SCEV] Check the cache in get{S|U}MaxExpr before doing any work.
Mar 29 2019, 1:47 PM · Restricted Project

Mar 20 2019

sanjoy added inline comments to D59500: [ConstantFolding] Fix GetConstantFoldFPValue to avoid cast overflow..
Mar 20 2019, 12:20 AM · Restricted Project

Mar 19 2019

sanjoy accepted D59500: [ConstantFolding] Fix GetConstantFoldFPValue to avoid cast overflow..

Lgtm

Mar 19 2019, 6:29 PM · Restricted Project

Mar 18 2019

sanjoy requested changes to D59500: [ConstantFolding] Fix GetConstantFoldFPValue to avoid cast overflow..

This change needs a test, as Roman said.

Mar 18 2019, 1:24 PM · Restricted Project

Mar 16 2019

sanjoy accepted D57428: [SCEV] Guard movement of insertion point for loop-invariants (take 2).

Ok, looks like we're somewhat sloppy with our choice of insertion points here (and it should not be incumbent on you to fix this). Can you please add a comment that mentions that this is due to indvarsimplify?

Mar 16 2019, 2:04 PM · Restricted Project
sanjoy added a comment to D59335: [RFC] Enable vectorization on Neon even without fast-math.

I'm curious as to how will we generate these flags.

Is this the responsibility of the front-end, based on command line options, language standards, target-specific?

Mar 16 2019, 12:39 PM · Restricted Project

Mar 14 2019

sanjoy added a comment to D57428: [SCEV] Guard movement of insertion point for loop-invariants (take 2).

Apologies for the late review Warren.

Mar 14 2019, 9:17 PM · Restricted Project

Mar 13 2019

sanjoy added a comment to D59335: [RFC] Enable vectorization on Neon even without fast-math.

langref part seems to be missing.

Mar 13 2019, 3:49 PM · Restricted Project
sanjoy created D59335: [RFC] Enable vectorization on Neon even without fast-math.
Mar 13 2019, 3:11 PM · Restricted Project

Mar 11 2019

sanjoy accepted D58994: [SCEV] Use depth limit for trunc analysis.

lgtm!

Mar 11 2019, 9:32 PM · Restricted Project
sanjoy committed rG3f5ce18658f0: Reland "Relax constraints for reduction vectorization" (authored by sanjoy).
Reland "Relax constraints for reduction vectorization"
Mar 11 2019, 6:32 PM
sanjoy committed rL355889: Reland "Relax constraints for reduction vectorization".
Reland "Relax constraints for reduction vectorization"
Mar 11 2019, 6:32 PM
sanjoy committed rG2136a5bc49bf: Revert "Relax constraints for reduction vectorization" (authored by sanjoy).
Revert "Relax constraints for reduction vectorization"
Mar 11 2019, 3:37 PM
sanjoy committed rL355873: Revert "Relax constraints for reduction vectorization".
Revert "Relax constraints for reduction vectorization"
Mar 11 2019, 3:37 PM