[PATCH] Handle some cases of mismatched types in IRCE

Hal Finkel hfinkel at anl.gov
Sat Jan 24 13:11:07 PST 2015


----- Original Message -----
> From: "Sanjoy Das" <sanjoy at playingwithpointers.com>
> To: "Hal Finkel" <hfinkel at anl.gov>
> Cc: "Philip Reames" <listmail at philipreames.com>, "Commit Messages and Patches for LLVM" <llvm-commits at cs.uiuc.edu>,
> reviews+D7082+public+8b032afab4f8a3be at reviews.llvm.org
> Sent: Saturday, January 24, 2015 2:57:38 PM
> Subject: Re: [PATCH] Handle some cases of mismatched types in IRCE
> 
> > I understood your motivation, I just don't understand the code ;)
> > -- why does calling forgetLoop(L) not clear the cache of backedge
> > counts for loop L?
> 
> AFAICT it does, but only if NDEBUG is #defined and VerifyIndVars is
> true.  In other words, SimplifyIndVars has the "correct" behavior in
> debug mode when run with '-verify-indvars'.

Ack; I see --- that's also bad. NDEBUG should not cause behavioral changes like that.

> 
> So one way to fix the problem is to just unconditionally call
> SE->forgetLoop() after running indvars.  But I am not sure if
> SE->forgetLoop() is too big of a hammer when all I need is to adjust
> the type of the backedge taken count.

Hrmm. Maybe we need a forgetBackedgeCounts(L) function?

 -Hal

> 
> -- Sanjoy
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-commits mailing list