<div dir="ltr"><div><div>I am getting the following error :<br><br>Instruction does not dominate all uses!<br> %88 = phi float [ %42, %._crit_edge ], [ %85, %43 ]<br> %90 = fsub float 1.000000e+00, %88<br>Instruction does not dominate all uses!<br>
%88 = phi float [ %42, %._crit_edge ], [ %85, %43 ]<br> %92 = phi float [ %88, %._crit_edge1 ], [ %90, %89 ]<br><br><br></div>for the following code:<br><br>define float @CNDF(float %InputX) nounwind uwtable {<br> %1 = fcmp olt float %InputX, 0.000000e+00<br>
br i1 %1, label %43, label %._crit_edge<br><br>._crit_edge: ; preds = %0<br> %2 = fmul float %InputX, -5.000000e-01<br> %3 = fmul float %InputX, %2<br> %4 = fpext float %3 to double<br>
%5 = tail call double @exp(double %4) nounwind<br> %6 = fptrunc double %5 to float<br> %7 = fpext float %6 to double<br> %8 = fmul double %7, 0x3FD9884533D43651<br> %9 = fptrunc double %8 to float<br> %10 = fpext float %InputX to double<br>
%11 = fmul double %10, 2.316419e-01<br> %12 = fptrunc double %11 to float<br> %13 = fadd float %12, 1.000000e+00<br> %14 = fdiv float 1.000000e+00, %13<br> %15 = bitcast float %14 to float<br> %16 = bitcast float %15 to float<br>
%17 = bitcast float %15 to float<br> %18 = fmul float %17, %17<br> %19 = fmul float %17, %18<br> %20 = fmul float %16, %19<br> %21 = fmul float %16, %20<br> %22 = fpext float %14 to double<br> %23 = fmul double %22, 0x3FD470BF3A92F8EC<br>
%24 = fptrunc double %23 to float<br> %25 = fpext float %18 to double<br> %26 = fmul double %25, 0xBFD6D1F0E5A8325B<br> %27 = fptrunc double %26 to float<br> %28 = fpext float %19 to double<br> %29 = fmul double %28, 0x3FFC80EF025F5E68<br>
%30 = fptrunc double %29 to float<br> %31 = fadd float %27, %30<br> %32 = fpext float %20 to double<br> %33 = fmul double %32, 0xBFFD23DD4EF278D0<br> %34 = fptrunc double %33 to float<br> %35 = fadd float %31, %34<br>
%36 = fpext float %21 to double<br> %37 = fmul double %36, 0x3FF548CDD6F42943<br> %38 = fptrunc double %37 to float<br> %39 = fadd float %35, %38<br> %40 = fadd float %24, %39<br> %41 = fmul float %9, %40<br> %42 = fsub float 1.000000e+00, %41<br>
br label %86<br><br>; <label>:43 ; preds = %0<br> %44 = fsub float -0.000000e+00, %InputX<br> %45 = fmul float %44, -5.000000e-01<br> %46 = fmul float %44, %45<br> %47 = fpext float %46 to double<br>
%48 = tail call double @exp(double %47) nounwind<br> %49 = fptrunc double %48 to float<br> %50 = fpext float %49 to double<br> %51 = fmul double %50, 0x3FD9884533D43651<br> %52 = fptrunc double %51 to float<br> %53 = fpext float %44 to double<br>
%54 = fmul double %53, 2.316419e-01<br> %55 = fptrunc double %54 to float<br> %56 = fadd float %55, 1.000000e+00<br> %57 = fdiv float 1.000000e+00, %56<br> %58 = bitcast float %57 to float<br> %59 = bitcast float %58 to float<br>
%60 = bitcast float %58 to float<br> %61 = fmul float %60, %60<br> %62 = fmul float %60, %61<br> %63 = fmul float %59, %62<br> %64 = fmul float %59, %63<br> %65 = fpext float %57 to double<br> %66 = fmul double %65, 0x3FD470BF3A92F8EC<br>
%67 = fptrunc double %66 to float<br> %68 = fpext float %61 to double<br> %69 = fmul double %68, 0xBFD6D1F0E5A8325B<br> %70 = fptrunc double %69 to float<br> %71 = fpext float %62 to double<br> %72 = fmul double %71, 0x3FFC80EF025F5E68<br>
%73 = fptrunc double %72 to float<br> %74 = fadd float %70, %73<br> %75 = fpext float %63 to double<br> %76 = fmul double %75, 0xBFFD23DD4EF278D0<br> %77 = fptrunc double %76 to float<br> %78 = fadd float %74, %77<br>
%79 = fpext float %64 to double<br> %80 = fmul double %79, 0x3FF548CDD6F42943<br> %81 = fptrunc double %80 to float<br> %82 = fadd float %78, %81<br> %83 = fadd float %67, %82<br> %84 = fmul float %52, %83<br> %85 = fsub float 1.000000e+00, %84<br>
br label %86<br><br>; <label>:86 ; preds = %43, %._crit_edge<br> %87 = phi i1 [ false, %._crit_edge ], [ true, %43 ]<br> %88 = phi float [ %42, %._crit_edge ], [ %85, %43 ]<br>
br i1 %87, label %89, label %._crit_edge1<br><br>._crit_edge1: ; preds = %86<br> br label %91<br><br>; <label>:89 ; preds = %86<br> %90 = fsub float 1.000000e+00, %88<br>
br label %91<br><br>; <label>:91 ; preds = %89, %._crit_edge1<br> %92 = phi float [ %88, %._crit_edge1 ], [ %90, %89 ]<br> ret float %92<br>}<br><br><br></div><div>The error is weird because the said instruction does dominate all its uses. Any thoughts are welcome.<br>
<br></div><div>Thanks.<br></div><div>-Apala<br></div><div><div><div><br><br><br clear="all"><div><div dir="ltr"><div><div>Apala Guha</div>Assistant Professor<br></div>IIIT-Delhi, New Delhi, India<br><div><div><a href="https://sites.google.com/site/apalaguha/home" target="_blank">http://www.iiitd.edu.in/~apala</a></div>
</div></div></div>
</div></div></div></div>