void f(char char_, short short_, int int_, long long_, long long longlong_,
       float float_, double double_, long double longdouble_) {
  _Static_assert(__builtin_types_compatible_p(__typeof(char_ + char_), int),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(char_ + short_), int),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(char_ + int_), int),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(char_ + long_), long),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(char_ + longlong_), long long),
      "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(char_ + float_), float),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(char_ + double_), double), "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(char_ + longdouble_), long double),
      "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(short_ + char_), int),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(short_ + short_), int),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(short_ + int_), int),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(short_ + long_), long),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(short_ + longlong_), long long),
      "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(short_ + float_), float),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(short_ + double_), double), "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(short_ + longdouble_), long double),
      "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(int_ + char_), int),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(int_ + short_), int),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(int_ + int_), int), "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(int_ + long_), long),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(int_ + longlong_), long long), "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(int_ + float_), float),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(int_ + double_), double),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(int_ + longdouble_), long double),
      "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(long_ + char_), long),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(long_ + short_), long),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(long_ + int_), long),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(long_ + long_), long),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(long_ + longlong_), long long),
      "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(long_ + float_), float),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(long_ + double_), double), "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(long_ + longdouble_), long double),
      "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(longlong_ + char_), long long),
      "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(longlong_ + short_), long long),
      "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(longlong_ + int_), long long), "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(longlong_ + long_), long long),
      "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(longlong_ + longlong_), long long),
      "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(longlong_ + float_), float), "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(longlong_ + double_), double), "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(longlong_ + longdouble_),
                                              long double),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(float_ + char_), float),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(float_ + short_), float),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(float_ + int_), float),
                 "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(float_ + long_), float),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(float_ + longlong_), float), "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(float_ + float_), float),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(float_ + double_), double), "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(float_ + longdouble_), long double),
      "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(double_ + char_), double), "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(double_ + short_), double), "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(double_ + int_), double),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(double_ + long_), double), "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(double_ + longlong_), double), "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(double_ + float_), double), "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(double_ + double_), double), "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(double_ + longdouble_),
                                              long double),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(longdouble_ + char_), long double),
      "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(longdouble_ + short_), long double),
      "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(longdouble_ + int_), long double),
      "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(longdouble_ + long_), long double),
      "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(longdouble_ + longlong_),
                                              long double),
                 "?");
  _Static_assert(
      __builtin_types_compatible_p(__typeof(longdouble_ + float_), long double),
      "?");
  _Static_assert(__builtin_types_compatible_p(__typeof(longdouble_ + double_),
                                              long double),
                 "?");
  _Static_assert(__builtin_types_compatible_p(
                     __typeof(longdouble_ + longdouble_), long double),
                 "?");
}


x86 assembly (clang, -O0):
<f>:
push   %rbp
mov    %rsp,%rbp
mov    %si,%ax
mov    %dil,%sil
fldt   0x10(%rbp)
mov    %sil,-0x1(%rbp)
mov    %ax,-0x4(%rbp)
mov    %edx,-0x8(%rbp)
mov    %rcx,-0x10(%rbp)
mov    %r8,-0x18(%rbp)
movss  %xmm0,-0x1c(%rbp)
movsd  %xmm1,-0x28(%rbp)
fstpt  -0x40(%rbp)
pop    %rbp
ret

x86 assembly (clang, -O2):
<f>:
ret

LLVM IR (-O0):
define void @f(i8 signext %0, i16 signext %1, i32 %2, i64 %3, i64 %4, float %5, double %6, x86_fp80 %7) {
%9 = alloca i8
%10 = alloca i16
%11 = alloca i32
%12 = alloca i64
%13 = alloca i64
%14 = alloca float
%15 = alloca double
%16 = alloca x86_fp80
store i8 %0, i8* %9
store i16 %1, i16* %10
store i32 %2, i32* %11
store i64 %3, i64* %12
store i64 %4, i64* %13
store float %5, float* %14
store double %6, double* %15
store x86_fp80 %7, x86_fp80* %16
ret void
}

LLVM IR (-O2):
define void @f(i8 signext %0, i16 signext %1, i32 %2, i64 %3, i64 %4, float %5, double %6, x86_fp80 %7) {
ret void
}