[PATCH] Disable DAGCombine for -O0 and optnone

Anton Korobeynikov anton at korobeynikov.info
Wed May 27 15:33:37 PDT 2015


In http://reviews.llvm.org/D9992#179746, @mkuper wrote:

> So, there's something that I'm fairly sure will break on x86, and it doesn't seem to be covered by a test. :-(
>  The x86 PerformFMACombine actually performs an essential part of isel - it lowers a target-independent ISD node into a target-dependent one.
>
> Now, for cases where the FMA comes from an x86 intrinsic, it's not an issue, since we never get the target-independent ISD. For cases where the FMA itself is constructed by a DAGCombine (which is what fma_patterns tests), it's not an issue either, because the FMA never gets formed. But it will be hit when the FMA comes from a target-independent intrinsic.
>
> TL;DR:
>  Try compiling this with -mattr=+fma -O0 with your patch, I expect it to fail:
>
>   declare <4 x float> @llvm.fma.v4f32(<4 x float> %a, <4 x float>  %b, <4 x float>  %c)
>  
>   define <4 x float> @test_fma1(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
>     %res = call <4 x float> @llvm.fma.v4f32(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2)
>     ret <4 x float> %res
>   }
>


Wow... then it should be a part of Legalize step.


REPOSITORY
  rL LLVM

http://reviews.llvm.org/D9992

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/






More information about the llvm-commits mailing list