[LLVMdev] [LLVM, llvm-diff] Question about FunctionDifferenceEngine and DiffConsumer::printValue

John McCall rjmccall at apple.com
Sat Oct 29 01:24:32 PDT 2011


On Oct 28, 2011, at 2:00 AM, Stepan Dyatkovskiy wrote:
> I found next code when switch instruction differs:
> 
> Engine.logf("right switch has extra case %r") << CaseValue;
> 
> Where CaseValue is a ConstantInt object. Looking how logf works I found 
> that it invokes DiffConsumer::printValue method for CaseValue. And here 
> I found that CaseValue itself will never printed. On first look how 
> DiffConsumer::printValue works it seems that for all constants "object 
> numbering" should be printed:
> 
> out << '%' << ctxt.RNumbering[V]; // V = CaseValue in our case.
>                                   // RNumbering is instance of 
> DenseMap<Value*,unsigned>.
> 
> Then I look into DiffConsumer.cpp, ComputeNumbering method that fills 
> RNumbering and LNumbering. Well, numbering computed for function 
> arguments, basic blocks and instructions only.
> 
> It means that for Constants "%0" will be printed always. If so, I 
> propose to add case for constants in DiffConsumer::printValue method, 
> that will print constant itself.

Patches welcome!

John.



More information about the llvm-dev mailing list