[LLVMdev] Instruction does not dominate all uses ???
Chayan Sarkar
chayan.ju at gmail.com
Tue Jun 22 23:13:31 PDT 2010
Hi,
Thank you so much for your suggestion. Actually, the use is in
different block and the use block does not dominated by the def block.
So I need to insert PHI instruction in the use block.
Regards,
Chayan
On Wed, Jun 23, 2010 at 12:07 PM, John Criswell <criswell at uiuc.edu> wrote:
> Chayan Sarkar wrote:
>>
>> Hi,
>>
>> I am trying to write a small pass. In my pass, I have inserted some
>> instruction and used that in another. But, during OPT it is showing
>> "Instruction does not dominate all uses" like following -
>>
>> %b.1 = bitcast i32 4 to i32 ; <i32> [#uses=8] %11
>> = add i32 %a.1, %b.1 ; <i32>
>> [#uses=1]Instruction does not dominate all uses!
>>
>>
>> Any idea, what is wrong with this?
>>
>
> Not to be snarky, but the problem is that the definition of b.1 does not
> dominate the use of b.1 in the add instruction.
>
> This may be due to two reasons:
>
> 1) The instructions are in the same basic block, but they're in the wrong
> order. The definition of b.1 follows the use of it in the add instruction.
> If this is the case, you simply need to make sure your transform orders the
> instructions correctly within the basic block.
>
> 2) The instructions are in different basic blocks. The definition of b.1 is
> in a block that does not dominate the add instruction. You have either
> added b.1 to the wrong basic block, or you have not considered the
> possibility that the basic block to which b.1 belongs may not always be
> executed before the basic block to which the add instruction belongs.
>
> In case you don't know what domination means in this context, a basic block
> A dominates a basic block B if all paths from the entry basic block of the
> function to basic block B pass through basic block A. Informally, if basic
> block B has executed, we know that basic block A has already been executed
> at least once, so all of the SSA definitions within it are available for
> use.
>
> -- John T.
>
>> Regards,
>> Chayan
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>
>
More information about the llvm-dev
mailing list