Question about addr capture

Shuxin Yang shuxin.llvm at gmail.com
Fri Mar 22 14:48:04 PDT 2013


Hi,

   Arnold just show me a crazy contrived example which I think it is 
really hard, if not impossible, to analyze.
Thank you all for the input.

Shuxin

On 3/22/13 1:45 PM, Duncan Sands wrote:
> Hi Shuxin,
>
> On 22/03/13 18:56, Shuxin Yang wrote:
>> Hi, list:
>>
>>       Would someone shed some light on the following code.  How can 
>> an address
>> be captured via icmp?
>
> using icmp you can determine each bit of the value, one by one, and then
> reconstruct the value from those bits.
>
> Ciao, Duncan.
>
> PS: I think there are some fairly comprehensive test cases for capture 
> tracking,
> and they are commented IIRC.  If you disable some logic, like this, 
> you should
> see a test case fail.  Hopefully it should then become clear from the 
> test case
> what the issue is.
>
>>
>> Thanks
>> Shuxin
>>
>> cat -n lib/Analysis/CaptureTracking.cpp
>> ==========================
>> 157     case Instruction::ICmp:
>> 158       // Don't count comparisons of a no-alias return value 
>> against null as
>> 159       // captures. This allows us to ignore comparisons of malloc 
>> results
>> 160       // with null, for example.
>> 161       if (isNoAliasCall(V->stripPointerCasts()))
>> 162         if (ConstantPointerNull *CPN =
>> 163 dyn_cast<ConstantPointerNull>(I->getOperand(1)))
>> 164           if (CPN->getType()->getAddressSpace() == 0)
>> 165             break;
>> 166       // Otherwise, be conservative. There are crazy ways to 
>> capture pointers
>> 167       // using comparisons.
>> 168       if (Tracker->captured(U))
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list