[LLVMdev] Avoiding Constant Folding
Cuong Pham
phamcuongbk at gmail.com
Tue Jun 14 10:07:59 PDT 2011
Thank you guys, now I understand the problem.
I am trying to avoid using stack memory (or mutable variable is the term
used in the tutorial). I am also trying to optimize the code as much as I
can before using optimizer passes such as mem2reg (to reduce the compile
time as well).
With regards,
--Cuong
Duncan Sands wrote:
>
> Hi,
>
>>> entry:
>>> ....
>>> %34 = icmp ne i32 %33, 15
>>> br i1 %34, label %then, label %else
>>>
>>> then: ; preds = %entry
>>> %returnValue = or i1 true, false
>>> ....
>>> br label %ifmerge
>>>
>>> else: ; preds = %entry
>>> br label %ifmerge
>>>
>>> ifmerge: ; preds = %else, %then
>>> ...
>>> %41 = icmp ne i32 %40, 15
>>> br i1 %41, label %then1, label %else3
>>>
>>> then1: ; preds = %ifmerge
>>> %returnValue2 = or i1 true, %returnValue
>
> if control flow goes: "entry" -> "else" -> "ifmerge" -> "then1", then you
> will
> try to use %returnValue in then1 without ever defining it. This is what
> the
> error message is trying to tell you.
>
> Ciao, Duncan.
>
>>>
>>> else3: ; preds = %ifmerge
>>> br label %ifmerge4
>>>
>>> ifmerge4: ; preds = %else3,
>>> %then1
>>> ....
>>>
>>> And I'm getting the following error:
>>> Instruction does not dominate all uses!
>>> %returnValue = or i1 true, false
>>> %returnValue2 = or i1 true, %returnValue
>>> Broken module found, compilation aborted!
>
> Ciao, Duncan.
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
--
View this message in context: http://old.nabble.com/Avoiding-Constant-Folding-tp31838929p31844741.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.
More information about the llvm-dev
mailing list