<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>