[LLVMdev] Avoiding Constant Folding

Duncan Sands baldrick at free.fr
Tue Jun 14 00:33:29 PDT 2011


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.



More information about the llvm-dev mailing list