[LLVMdev] SSA?
dan mihai
dnmh68 at hotmail.com
Wed Nov 25 17:18:58 PST 2009
Hello,
I am a bit confused about the nature of LLVM's SSA and IR in general.
Questions:
1) Is it possible to get LLVM to generate code as in /*2*/ (bellow)?
2) if not, how can I tell if an operand has been previously defined?
Here is why:
I thought (wrongly) that all operands of an instruction must have been
previously defined or some constants.
I see that the 'bitcast' instruction is certainly standalone in certain cases, such as
%[65]"alloca point" = bitcast i32 [34]0 to i32; <i32> [#uses=0]
However the following instruction has a 'bitcast' inserted as an operand,
rather then the result of a previous bitcast:
/*1*/
(void)store i32 (...)* bitcast (i32 ()* @pf to i32 (...)*), i32 (...)** @[2]pf0, align 8
In this case, the bitcast is a constant, but it does DEFINE a new value
and that value is the operand. I would have thought that the above code
should have been "pure IR/SSA":
/*2*/
%TMP = bitcast (i32 ()* @pf to i32 (...)*)
(void)store i32 (...)* %TMP, i32 (...)** @[2]pf0, align 8
or something like that...
Thank you,
Dan
_________________________________________________________________
Hotmail: Trusted email with powerful SPAM protection.
http://clk.atdmt.com/GBL/go/177141665/direct/01/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20091126/8dcd364f/attachment.html>
More information about the llvm-dev
mailing list