[LLVMdev] Avoiding Constant Folding

Cuong Pham phamcuongbk at gmail.com
Mon Jun 13 17:33:08 PDT 2011


Hi All,

My codegen is trying to generate some thing like this:

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

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!

>From the code I can see all the operands are i1 type, so the 'or'
instructions should be valid. Could some one give me some clues how to fix
this problem?

With Regards,

--Cuong
-- 
View this message in context: http://old.nabble.com/Avoiding-Constant-Folding-tp31838929p31838929.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.




More information about the llvm-dev mailing list