[all-commits] [llvm/llvm-project] 0ec579: [ARM] Fix infinite loop when lowering STRICT_FP_EX...

john-brawn-arm via All-commits all-commits at lists.llvm.org
Thu Feb 13 08:14:40 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 0ec57972967dfb43fc022c2e3788be041d1db730
      https://github.com/llvm/llvm-project/commit/0ec57972967dfb43fc022c2e3788be041d1db730
  Author: John Brawn <john.brawn at arm.com>
  Date:   2020-02-13 (Thu, 13 Feb 2020)

  Changed paths:
    M llvm/lib/Target/ARM/ARMISelLowering.cpp
    M llvm/test/CodeGen/ARM/fp-intrinsics.ll

  Log Message:
  -----------
  [ARM] Fix infinite loop when lowering STRICT_FP_EXTEND

If the target has FP64 but not FP16 then we have custom lowering for FP_EXTEND
and STRICT_FP_EXTEND with type f64. However if the extend is from f32 to f64 the
current implementation will cause in infinite loop for STRICT_FP_EXTEND due to
emitting a merge_values of the original node which after replacement becomes a
merge_values of itself.

Fix this by not doing anything for f32 to f64 extend when we have FP64, though
for STRICT_FP_EXTEND we have to do the strict-to-nonstrict mutation as that
doesn't happen automatically for opcodes with custom lowering.

Differential Revision: https://reviews.llvm.org/D74559




More information about the All-commits mailing list