[LLVMdev] finding implicit casts

Chris Lattner sabre at nondot.org
Tue Apr 25 22:05:03 PDT 2006


On Tue, 25 Apr 2006, John Trimble wrote:
> I'm trying to find all the implicit casts in a program compiled with
> llvm-gcc.

I'm not sure exactly what you're trying to do here.  In particular, 
llvm-gcc will turn any casts that are implicit in the C code into explicit 
casts in the LLVM... which means that there is no good way to tell the 
difference between an implicit or explicit cast.

> What I've been doing is for each function taking all the
> instruction and going through each of their operands (and the opreands of
> their operands etc...) and checking to see if any are an instance of
> UnaryConstantExpr. When I encounter such an instance, I determine whether
> the type of that value and its 0th operand differ, if they do its an
> implicit cast. I do basically the same procedure for the the global
> variables. Is this the best approach to take or is there a better way of
> going about this?

I'm not sure I follow here.  It sounds like you are detecting things like:

short A = ...
int   B = ...
int   C = (int)A + B;

However, there isn't a way to tell if the "(int)" was implicit or 
explicit.

> I've asked at least a few questions on this mailing-list and you haveall
> been VERY helpful. Thank you all so much.

:)

-Chris

-- 
http://nondot.org/sabre/
http://llvm.org/




More information about the llvm-dev mailing list