]> granicus.if.org Git - clang/commit
[Sema] Promote compound assignment exprs. with fp16 LHS and int. RHS.
authorAhmed Bougacha <ahmed.bougacha@gmail.com>
Fri, 29 May 2015 22:54:57 +0000 (22:54 +0000)
committerAhmed Bougacha <ahmed.bougacha@gmail.com>
Fri, 29 May 2015 22:54:57 +0000 (22:54 +0000)
commitf7739e8ed67fc3edb5ae712eecfe7f90585a2b93
tree3ac39448434dcdb25e11bb3dc1462cc4495c819b
parentf102f777ae55a658713e8c0cc0d013c07cd942e3
[Sema] Promote compound assignment exprs. with fp16 LHS and int. RHS.

We catch most of the various other __fp16 implicit conversions to
float, but not this one:

  __fp16 a;
  int i;
  ...
  a += i;

For which we used to generate something 'fun' like:

  %conv = sitofp i32 %i to float
  %1 = tail call i16 @llvm.convert.to.fp16.f32(float %conv)
  %add = add i16 %0, %1

Instead, when we have an __fp16 LHS and an integer RHS, we should
use float as the result type.

While there, add a bunch of missing tests for mixed
__fp16/integer expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@238625 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaExpr.cpp
test/CodeGen/fp16-ops.c