#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double DBL_MAX;
float FLT_MAX;
long double LDBL_MAX;
long long LLONG_MAX;
long long LLONG_MIN;
unsigned long long ULLONG_MAX;
unsigned long ULONG_MAX;
int /*<<< orphan*/ printf(char *, long double);
int main(int argc, const char *argv[]) {
  char charString = 'A';
  char charNumber = 3;
  signed char signedCharValue = -128;
  unsigned char unsignedCharValue = 255;
  short shortValue = 32767;
  short int shortIntValue = 32765;
  signed short signedShortvalue = -32767;
  signed short int signedShortint = -32765;
  unsigned short unsignedShortValue = 65535;
  unsigned short int unsignedShortIntValue = 65534;
  int intValue = -2147483648;
  signed signedValue = -2147483648;
  signed int signedIntValue = -2147483648;
  unsigned unsignedValue = 4294967295;
  unsigned int unsignedIntValue = 4294967295;
  long longValue = -2147483648L;
  long int longIntValue = 2147483647L;
  signed long signedLongValue = -2147483648L;
  signed long int signedLongInt = -2147483648L;
  unsigned long unsignedLongValue = ULONG_MAX;
  unsigned long int unsignedLongIntValue = ULONG_MAX;
  long long longLongValue = LLONG_MIN;
  long long int longLongIntValue = LLONG_MIN;
  signed long long signedLongLongValue = LLONG_MIN;
  signed long long int signedLongLongIntValue = LLONG_MAX;
  unsigned long long unsignedLongLongValue = ULLONG_MAX;
  unsigned long long int unsignedLongLongIntValue = ULLONG_MAX;
  float floatValue = FLT_MAX;
  double doubleValue = DBL_MAX;
  long double longDoubleValue = LDBL_MAX;
  printf("Char string value = %c\n", charString);
  printf("Char number value = %d\n", charNumber);
  printf("signed char value = %hhi\n", signedCharValue);
  printf("unsigned char value = %d\n", unsignedCharValue);
  printf("short value = %hi\n", shortValue);
  printf("short int value = %hi\n", shortIntValue);
  printf("signed short value = %hi\n", signedShortvalue);
  printf("signed short int value = %hi\n", signedShortint);
  printf("unsigned short value = %hu\n", unsignedShortValue);
  printf("unsigned short int value = %hu\n", unsignedShortIntValue);
  printf("int value = %i\n", intValue);
  printf("signed value = %d\n", signedValue);
  printf("signed int value = %i\n", signedIntValue);
  printf("unsigned value = %u\n", unsignedValue);
  printf("unsigned int value = %u\n", unsignedIntValue);
  printf("long value = %li\n", longValue);
  printf("long int value = %li\n", longIntValue);
  printf("signed long value = %li\n", signedLongValue);
  printf("signed long int value = %li\n", signedLongInt);
  printf("unsigned long value = %lu\n", unsignedLongValue);
  printf("unsigned long int value = %lu\n", unsignedLongIntValue);
  printf("long long value = %lli\n", longLongValue);
  printf("long long int value = %lli\n", longLongIntValue);
  printf("signed long long value  = %lli\n", signedLongLongValue);
  printf("signed long long int value = %lli\n", signedLongLongIntValue);
  printf("unsigned long long value  = %llu\n", unsignedLongLongValue);
  printf("unsigned long long int value = %llu\n", unsignedLongLongIntValue);
  printf("float value = %f\n", floatValue);
  printf("double value = %f\n", doubleValue);
  printf("long double value= %Lf\n", longDoubleValue);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x170,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movb   $0x41,-0x11(%rbp)
movb   $0x3,-0x12(%rbp)
movb   $0x80,-0x13(%rbp)
movb   $0xff,-0x14(%rbp)
movw   $0x7fff,-0x16(%rbp)
movw   $0x7ffd,-0x18(%rbp)
movw   $0x8001,-0x1a(%rbp)
movw   $0x8003,-0x1c(%rbp)
movw   $0xffff,-0x1e(%rbp)
movw   $0xfffe,-0x20(%rbp)
movl   $0x80000000,-0x24(%rbp)
movl   $0x80000000,-0x28(%rbp)
movl   $0x80000000,-0x2c(%rbp)
movl   $0xffffffff,-0x30(%rbp)
movl   $0xffffffff,-0x34(%rbp)
movq   $0xffffffff80000000,-0x40(%rbp)
80
movq   $0x7fffffff,-0x48(%rbp)
7f
movq   $0xffffffff80000000,-0x50(%rbp)
80
movq   $0xffffffff80000000,-0x58(%rbp)
80
mov    0x2e01(%rip),%rax
mov    (%rax),%rcx
mov    %rcx,-0x60(%rbp)
mov    (%rax),%rax
mov    %rax,-0x68(%rbp)
mov    0x2e0c(%rip),%rax
mov    (%rax),%rcx
mov    %rcx,-0x70(%rbp)
mov    (%rax),%rcx
mov    %rcx,-0x78(%rbp)
mov    (%rax),%rax
mov    %rax,-0x80(%rbp)
mov    0x2e08(%rip),%rax
mov    (%rax),%rax
mov    %rax,-0x88(%rbp)
mov    0x2dff(%rip),%rax
mov    (%rax),%rcx
mov    %rcx,-0x90(%rbp)
mov    (%rax),%rax
mov    %rax,-0x98(%rbp)
mov    0x2dd4(%rip),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
mov    0x2da1(%rip),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x2d96(%rip),%rax
fldt   (%rax)
fstpt  -0xc0(%rbp)
movsbl -0x11(%rbp),%eax
mov    %ax,-0x136(%rbp)
filds  -0x136(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xdb9(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x12(%rbp),%eax
mov    %ax,-0x138(%rbp)
filds  -0x138(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xdaf(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x13(%rbp),%eax
mov    %ax,-0x13a(%rbp)
filds  -0x13a(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xda5(%rip),%rdi
call   1030 <printf@plt>
movzbl -0x14(%rbp),%eax
mov    %ax,-0x13c(%rbp)
filds  -0x13c(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xd9d(%rip),%rdi
call   1030 <printf@plt>
mov    -0x16(%rbp),%ax
mov    %ax,-0x134(%rbp)
filds  -0x134(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xd9c(%rip),%rdi
call   1030 <printf@plt>
mov    -0x18(%rbp),%ax
mov    %ax,-0x132(%rbp)
filds  -0x132(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xd94(%rip),%rdi
call   1030 <printf@plt>
mov    -0x1a(%rbp),%ax
mov    %ax,-0x130(%rbp)
filds  -0x130(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xd51(%rip),%rdi
call   1030 <printf@plt>
mov    -0x1c(%rbp),%ax
mov    %ax,-0x12e(%rbp)
filds  -0x12e(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xd49(%rip),%rdi
call   1030 <printf@plt>
movzwl -0x1e(%rbp),%eax
mov    %eax,-0x140(%rbp)
fildl  -0x140(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xd46(%rip),%rdi
call   1030 <printf@plt>
movzwl -0x20(%rbp),%eax
mov    %eax,-0x144(%rbp)
fildl  -0x144(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xd41(%rip),%rdi
call   1030 <printf@plt>
mov    -0x24(%rbp),%eax
mov    %eax,-0x12c(%rbp)
fildl  -0x12c(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xd5b(%rip),%rdi
call   1030 <printf@plt>
mov    -0x28(%rbp),%eax
mov    %eax,-0x128(%rbp)
fildl  -0x128(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xd21(%rip),%rdi
call   1030 <printf@plt>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x124(%rbp)
fildl  -0x124(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xd14(%rip),%rdi
call   1030 <printf@plt>
mov    -0x30(%rbp),%eax
mov    %rax,-0x150(%rbp)
fildll -0x150(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xd0a(%rip),%rdi
call   1030 <printf@plt>
mov    -0x34(%rbp),%eax
mov    %rax,-0x158(%rbp)
fildll -0x158(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xcfe(%rip),%rdi
call   1030 <printf@plt>
mov    -0x40(%rbp),%rax
mov    %rax,-0x120(%rbp)
fildll -0x120(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xcfc(%rip),%rdi
call   1030 <printf@plt>
mov    -0x48(%rbp),%rax
mov    %rax,-0x118(%rbp)
fildll -0x118(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xcf3(%rip),%rdi
call   1030 <printf@plt>
mov    -0x50(%rbp),%rax
mov    %rax,-0x110(%rbp)
fildll -0x110(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xcb1(%rip),%rdi
call   1030 <printf@plt>
mov    -0x58(%rbp),%rax
mov    %rax,-0x108(%rbp)
fildll -0x108(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xca8(%rip),%rdi
call   1030 <printf@plt>
mov    -0x60(%rbp),%rax
mov    %rax,-0x100(%rbp)
test   %rax,%rax
sets   %al
movzbl %al,%eax
mov    %eax,%ecx
fildll -0x100(%rbp)
lea    0xb2f(%rip),%rax
mov    %rax,-0x160(%rbp)
flds   (%rax,%rcx,4)
faddp  %st,%st(1)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xc85(%rip),%rdi
call   1030 <printf@plt>
mov    -0x160(%rbp),%rax
mov    -0x68(%rbp),%rcx
mov    %rcx,-0xf8(%rbp)
test   %rcx,%rcx
sets   %cl
movzbl %cl,%ecx
fildll -0xf8(%rbp)
flds   (%rax,%rcx,4)
faddp  %st,%st(1)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xc69(%rip),%rdi
call   1030 <printf@plt>
mov    -0x70(%rbp),%rax
mov    %rax,-0xf0(%rbp)
fildll -0xf0(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xc66(%rip),%rdi
call   1030 <printf@plt>
mov    -0x78(%rbp),%rax
mov    %rax,-0xe8(%rbp)
fildll -0xe8(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xc83(%rip),%rdi
call   1030 <printf@plt>
mov    -0x80(%rbp),%rax
mov    %rax,-0xe0(%rbp)
fildll -0xe0(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xc3a(%rip),%rdi
call   1030 <printf@plt>
mov    -0x88(%rbp),%rax
mov    %rax,-0xd8(%rbp)
fildll -0xd8(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xc35(%rip),%rdi
call   1030 <printf@plt>
mov    -0x160(%rbp),%rax
mov    -0x90(%rbp),%rcx
mov    %rcx,-0xd0(%rbp)
test   %rcx,%rcx
sets   %cl
movzbl %cl,%ecx
fildll -0xd0(%rbp)
flds   (%rax,%rcx,4)
faddp  %st,%st(1)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xc1e(%rip),%rdi
call   1030 <printf@plt>
mov    -0x160(%rbp),%rax
mov    -0x98(%rbp),%rcx
mov    %rcx,-0xc8(%rbp)
test   %rcx,%rcx
sets   %cl
movzbl %cl,%ecx
fildll -0xc8(%rbp)
flds   (%rax,%rcx,4)
faddp  %st,%st(1)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xc06(%rip),%rdi
call   1030 <printf@plt>
flds   -0x9c(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xc14(%rip),%rdi
call   1030 <printf@plt>
fldl   -0xa8(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xc0f(%rip),%rdi
call   1030 <printf@plt>
fldt   -0xc0(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
lea    0xc0b(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x170,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    0x2e86(%rip),%rax
mov    (%rax),%rbx
mov    0x2e9c(%rip),%rax
mov    (%rax),%r15
mov    0x2eaa(%rip),%rax
mov    (%rax),%r14
mov    0x2ea8(%rip),%rax
mov    (%rax),%r12
mov    0x2e8e(%rip),%rax
mov    0x2e67(%rip),%rcx
mov    0x2e68(%rip),%rdx
fldt   (%rdx)
fstpt  0x6c(%rsp)
flds   (%rax)
fstpt  0x54(%rsp)
fldl   (%rcx)
fstpt  0x60(%rsp)
flds   0xe90(%rip)
fstpt  (%rsp)
lea    0xece(%rip),%rdi
call   1030 <printf@plt>
flds   0xe7f(%rip)
fstpt  (%rsp)
lea    0xed1(%rip),%rdi
call   1030 <printf@plt>
flds   0xe6e(%rip)
fstpt  (%rsp)
lea    0xed4(%rip),%rdi
call   1030 <printf@plt>
flds   0xe5d(%rip)
fstpt  (%rsp)
lea    0xed9(%rip),%rdi
call   1030 <printf@plt>
flds   0xe4c(%rip)
fstpt  (%rsp)
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
flds   0xe3b(%rip)
fstpt  (%rsp)
lea    0xeea(%rip),%rdi
call   1030 <printf@plt>
flds   0xe2a(%rip)
fstpt  (%rsp)
lea    0xeb4(%rip),%rdi
call   1030 <printf@plt>
flds   0xe19(%rip)
fstpt  (%rsp)
lea    0xeb9(%rip),%rdi
call   1030 <printf@plt>
flds   0xe08(%rip)
fstpt  (%rsp)
lea    0xec2(%rip),%rdi
call   1030 <printf@plt>
flds   0xdf7(%rip)
fstpt  (%rsp)
lea    0xec9(%rip),%rdi
call   1030 <printf@plt>
flds   0xde6(%rip)
fld    %st(0)
fstpt  0x1c(%rsp)
fstpt  (%rsp)
lea    0xee8(%rip),%rdi
call   1030 <printf@plt>
fldt   0x1c(%rsp)
fstpt  (%rsp)
lea    0xebb(%rip),%rdi
call   1030 <printf@plt>
fldt   0x1c(%rsp)
fstpt  (%rsp)
lea    0xebb(%rip),%rdi
call   1030 <printf@plt>
fldl   0xdad(%rip)
fld    %st(0)
fstpt  0x48(%rsp)
fstpt  (%rsp)
lea    0xeb7(%rip),%rdi
call   1030 <printf@plt>
fldt   0x48(%rsp)
fstpt  (%rsp)
lea    0xeb9(%rip),%rdi
call   1030 <printf@plt>
fldt   0x1c(%rsp)
fstpt  (%rsp)
lea    0xec6(%rip),%rdi
call   1030 <printf@plt>
fldl   0xd74(%rip)
fstpt  (%rsp)
lea    0xeca(%rip),%rdi
call   1030 <printf@plt>
fldt   0x1c(%rsp)
fstpt  (%rsp)
lea    0xe97(%rip),%rdi
call   1030 <printf@plt>
fldt   0x1c(%rsp)
fstpt  (%rsp)
lea    0xe9d(%rip),%rdi
call   1030 <printf@plt>
mov    %rbx,0x28(%rsp)
xor    %eax,%eax
test   %rbx,%rbx
sets   %al
fildll 0x28(%rsp)
lea    0xd2f(%rip),%rbx
fadds  (%rbx,%rax,4)
fld    %st(0)
fstpt  0x1c(%rsp)
fstpt  (%rsp)
lea    0xe8a(%rip),%rdi
call   1030 <printf@plt>
fldt   0x1c(%rsp)
fstpt  (%rsp)
lea    0xe92(%rip),%rdi
call   1030 <printf@plt>
mov    %r15,0x30(%rsp)
fildll 0x30(%rsp)
fld    %st(0)
fstpt  0x1c(%rsp)
fstpt  (%rsp)
lea    0xe93(%rip),%rdi
call   1030 <printf@plt>
fldt   0x1c(%rsp)
fstpt  (%rsp)
lea    0xebf(%rip),%rdi
call   1030 <printf@plt>
fldt   0x1c(%rsp)
fstpt  (%rsp)
lea    0xe85(%rip),%rdi
call   1030 <printf@plt>
mov    %r14,0x38(%rsp)
fildll 0x38(%rsp)
fstpt  (%rsp)
lea    0xe8d(%rip),%rdi
call   1030 <printf@plt>
mov    %r12,0x40(%rsp)
xor    %eax,%eax
test   %r12,%r12
sets   %al
fildll 0x40(%rsp)
fadds  (%rbx,%rax,4)
fld    %st(0)
fstpt  0x1c(%rsp)
fstpt  (%rsp)
lea    0xe87(%rip),%rdi
call   1030 <printf@plt>
fldt   0x1c(%rsp)
fstpt  (%rsp)
lea    0xe96(%rip),%rdi
call   1030 <printf@plt>
fldt   0x54(%rsp)
fstpt  (%rsp)
lea    0xea8(%rip),%rdi
call   1030 <printf@plt>
fldt   0x60(%rsp)
fstpt  (%rsp)
lea    0xea7(%rip),%rdi
call   1030 <printf@plt>
fldt   0x6c(%rsp)
fstpt  (%rsp)
lea    0xea7(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@ULONG_MAX = global i64 0
@LLONG_MIN = global i64 0
@LLONG_MAX = global i64 0
@ULLONG_MAX = global i64 0
@FLT_MAX = global float 0.000000e+00
@DBL_MAX = global double 0.000000e+00
@LDBL_MAX = global x86_fp80 0xK00000000000000000000
@.str = [24 x i8] c"Char string value = %c\0A\00"
@.str.1 = [24 x i8] c"Char number value = %d\0A\00"
@.str.2 = [26 x i8] c"signed char value = %hhi\0A\00"
@.str.3 = [26 x i8] c"unsigned char value = %d\0A\00"
@.str.4 = [19 x i8] c"short value = %hi\0A\00"
@.str.5 = [23 x i8] c"short int value = %hi\0A\00"
@.str.6 = [26 x i8] c"signed short value = %hi\0A\00"
@.str.7 = [30 x i8] c"signed short int value = %hi\0A\00"
@.str.8 = [28 x i8] c"unsigned short value = %hu\0A\00"
@.str.9 = [32 x i8] c"unsigned short int value = %hu\0A\00"
@.str.10 = [16 x i8] c"int value = %i\0A\00"
@.str.11 = [19 x i8] c"signed value = %d\0A\00"
@.str.12 = [23 x i8] c"signed int value = %i\0A\00"
@.str.13 = [21 x i8] c"unsigned value = %u\0A\00"
@.str.14 = [25 x i8] c"unsigned int value = %u\0A\00"
@.str.15 = [18 x i8] c"long value = %li\0A\00"
@.str.16 = [22 x i8] c"long int value = %li\0A\00"
@.str.17 = [25 x i8] c"signed long value = %li\0A\00"
@.str.18 = [29 x i8] c"signed long int value = %li\0A\00"
@.str.19 = [27 x i8] c"unsigned long value = %lu\0A\00"
@.str.20 = [31 x i8] c"unsigned long int value = %lu\0A\00"
@.str.21 = [24 x i8] c"long long value = %lli\0A\00"
@.str.22 = [28 x i8] c"long long int value = %lli\0A\00"
@.str.23 = [32 x i8] c"signed long long value = %lli\0A\00"
@.str.24 = [35 x i8] c"signed long long int value = %lli\0A\00"
@.str.25 = [34 x i8] c"unsigned long long value = %llu\0A\00"
@.str.26 = [37 x i8] c"unsigned long long int value = %llu\0A\00"
@.str.27 = [18 x i8] c"float value = %f\0A\00"
@.str.28 = [19 x i8] c"double value = %f\0A\00"
@.str.29 = [24 x i8] c"long double value= %Lf\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i8
%7 = alloca i8
%8 = alloca i8
%9 = alloca i8
%10 = alloca i16
%11 = alloca i16
%12 = alloca i16
%13 = alloca i16
%14 = alloca i16
%15 = alloca i16
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i64
%22 = alloca i64
%23 = alloca i64
%24 = alloca i64
%25 = alloca i64
%26 = alloca i64
%27 = alloca i64
%28 = alloca i64
%29 = alloca i64
%30 = alloca i64
%31 = alloca i64
%32 = alloca i64
%33 = alloca float
%34 = alloca double
%35 = alloca x86_fp80
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i8 65, i8* %6
store i8 3, i8* %7
store i8 -128, i8* %8
store i8 -1, i8* %9
store i16 32767, i16* %10
store i16 32765, i16* %11
store i16 -32767, i16* %12
store i16 -32765, i16* %13
store i16 -1, i16* %14
store i16 -2, i16* %15
store i32 -2147483648, i32* %16
store i32 -2147483648, i32* %17
store i32 -2147483648, i32* %18
store i32 -1, i32* %19
store i32 -1, i32* %20
store i64 -2147483648, i64* %21
store i64 2147483647, i64* %22
store i64 -2147483648, i64* %23
store i64 -2147483648, i64* %24
%36 = load i64, i64* @ULONG_MAX
store i64 %36, i64* %25
%37 = load i64, i64* @ULONG_MAX
store i64 %37, i64* %26
%38 = load i64, i64* @LLONG_MIN
store i64 %38, i64* %27
%39 = load i64, i64* @LLONG_MIN
store i64 %39, i64* %28
%40 = load i64, i64* @LLONG_MIN
store i64 %40, i64* %29
%41 = load i64, i64* @LLONG_MAX
store i64 %41, i64* %30
%42 = load i64, i64* @ULLONG_MAX
store i64 %42, i64* %31
%43 = load i64, i64* @ULLONG_MAX
store i64 %43, i64* %32
%44 = load float, float* @FLT_MAX
store float %44, float* %33
%45 = load double, double* @DBL_MAX
store double %45, double* %34
%46 = load x86_fp80, x86_fp80* @LDBL_MAX
store x86_fp80 %46, x86_fp80* %35
%47 = load i8, i8* %6
%48 = sitofp i8 %47 to x86_fp80
%49 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i64 0, i64 0), x86_fp80 %48)
%50 = load i8, i8* %7
%51 = sitofp i8 %50 to x86_fp80
%52 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.1, i64 0, i64 0), x86_fp80 %51)
%53 = load i8, i8* %8
%54 = sitofp i8 %53 to x86_fp80
%55 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0), x86_fp80 %54)
%56 = load i8, i8* %9
%57 = uitofp i8 %56 to x86_fp80
%58 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.3, i64 0, i64 0), x86_fp80 %57)
%59 = load i16, i16* %10
%60 = sitofp i16 %59 to x86_fp80
%61 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0), x86_fp80 %60)
%62 = load i16, i16* %11
%63 = sitofp i16 %62 to x86_fp80
%64 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.5, i64 0, i64 0), x86_fp80 %63)
%65 = load i16, i16* %12
%66 = sitofp i16 %65 to x86_fp80
%67 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.6, i64 0, i64 0), x86_fp80 %66)
%68 = load i16, i16* %13
%69 = sitofp i16 %68 to x86_fp80
%70 = call i32 @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.7, i64 0, i64 0), x86_fp80 %69)
%71 = load i16, i16* %14
%72 = uitofp i16 %71 to x86_fp80
%73 = call i32 @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.8, i64 0, i64 0), x86_fp80 %72)
%74 = load i16, i16* %15
%75 = uitofp i16 %74 to x86_fp80
%76 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.9, i64 0, i64 0), x86_fp80 %75)
%77 = load i32, i32* %16
%78 = sitofp i32 %77 to x86_fp80
%79 = call i32 @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0), x86_fp80 %78)
%80 = load i32, i32* %17
%81 = sitofp i32 %80 to x86_fp80
%82 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.11, i64 0, i64 0), x86_fp80 %81)
%83 = load i32, i32* %18
%84 = sitofp i32 %83 to x86_fp80
%85 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.12, i64 0, i64 0), x86_fp80 %84)
%86 = load i32, i32* %19
%87 = uitofp i32 %86 to x86_fp80
%88 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.13, i64 0, i64 0), x86_fp80 %87)
%89 = load i32, i32* %20
%90 = uitofp i32 %89 to x86_fp80
%91 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.14, i64 0, i64 0), x86_fp80 %90)
%92 = load i64, i64* %21
%93 = sitofp i64 %92 to x86_fp80
%94 = call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.15, i64 0, i64 0), x86_fp80 %93)
%95 = load i64, i64* %22
%96 = sitofp i64 %95 to x86_fp80
%97 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.16, i64 0, i64 0), x86_fp80 %96)
%98 = load i64, i64* %23
%99 = sitofp i64 %98 to x86_fp80
%100 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.17, i64 0, i64 0), x86_fp80 %99)
%101 = load i64, i64* %24
%102 = sitofp i64 %101 to x86_fp80
%103 = call i32 @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), x86_fp80 %102)
%104 = load i64, i64* %25
%105 = uitofp i64 %104 to x86_fp80
%106 = call i32 @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), x86_fp80 %105)
%107 = load i64, i64* %26
%108 = uitofp i64 %107 to x86_fp80
%109 = call i32 @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i64 0, i64 0), x86_fp80 %108)
%110 = load i64, i64* %27
%111 = sitofp i64 %110 to x86_fp80
%112 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.21, i64 0, i64 0), x86_fp80 %111)
%113 = load i64, i64* %28
%114 = sitofp i64 %113 to x86_fp80
%115 = call i32 @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.22, i64 0, i64 0), x86_fp80 %114)
%116 = load i64, i64* %29
%117 = sitofp i64 %116 to x86_fp80
%118 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.23, i64 0, i64 0), x86_fp80 %117)
%119 = load i64, i64* %30
%120 = sitofp i64 %119 to x86_fp80
%121 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.24, i64 0, i64 0), x86_fp80 %120)
%122 = load i64, i64* %31
%123 = uitofp i64 %122 to x86_fp80
%124 = call i32 @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.25, i64 0, i64 0), x86_fp80 %123)
%125 = load i64, i64* %32
%126 = uitofp i64 %125 to x86_fp80
%127 = call i32 @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.26, i64 0, i64 0), x86_fp80 %126)
%128 = load float, float* %33
%129 = fpext float %128 to x86_fp80
%130 = call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.27, i64 0, i64 0), x86_fp80 %129)
%131 = load double, double* %34
%132 = fpext double %131 to x86_fp80
%133 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.28, i64 0, i64 0), x86_fp80 %132)
%134 = load x86_fp80, x86_fp80* %35
%135 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.29, i64 0, i64 0), x86_fp80 %134)
ret i32 0
}

LLVM IR (-O2):
@ULONG_MAX = global i64 0
@LLONG_MIN = global i64 0
@LLONG_MAX = global i64 0
@ULLONG_MAX = global i64 0
@FLT_MAX = global float 0.000000e+00
@DBL_MAX = global double 0.000000e+00
@LDBL_MAX = global x86_fp80 0xK00000000000000000000
@.str = [24 x i8] c"Char string value = %c\0A\00"
@.str.1 = [24 x i8] c"Char number value = %d\0A\00"
@.str.2 = [26 x i8] c"signed char value = %hhi\0A\00"
@.str.3 = [26 x i8] c"unsigned char value = %d\0A\00"
@.str.4 = [19 x i8] c"short value = %hi\0A\00"
@.str.5 = [23 x i8] c"short int value = %hi\0A\00"
@.str.6 = [26 x i8] c"signed short value = %hi\0A\00"
@.str.7 = [30 x i8] c"signed short int value = %hi\0A\00"
@.str.8 = [28 x i8] c"unsigned short value = %hu\0A\00"
@.str.9 = [32 x i8] c"unsigned short int value = %hu\0A\00"
@.str.10 = [16 x i8] c"int value = %i\0A\00"
@.str.11 = [19 x i8] c"signed value = %d\0A\00"
@.str.12 = [23 x i8] c"signed int value = %i\0A\00"
@.str.13 = [21 x i8] c"unsigned value = %u\0A\00"
@.str.14 = [25 x i8] c"unsigned int value = %u\0A\00"
@.str.15 = [18 x i8] c"long value = %li\0A\00"
@.str.16 = [22 x i8] c"long int value = %li\0A\00"
@.str.17 = [25 x i8] c"signed long value = %li\0A\00"
@.str.18 = [29 x i8] c"signed long int value = %li\0A\00"
@.str.19 = [27 x i8] c"unsigned long value = %lu\0A\00"
@.str.20 = [31 x i8] c"unsigned long int value = %lu\0A\00"
@.str.21 = [24 x i8] c"long long value = %lli\0A\00"
@.str.22 = [28 x i8] c"long long int value = %lli\0A\00"
@.str.23 = [32 x i8] c"signed long long value = %lli\0A\00"
@.str.24 = [35 x i8] c"signed long long int value = %lli\0A\00"
@.str.25 = [34 x i8] c"unsigned long long value = %llu\0A\00"
@.str.26 = [37 x i8] c"unsigned long long int value = %llu\0A\00"
@.str.27 = [18 x i8] c"float value = %f\0A\00"
@.str.28 = [19 x i8] c"double value = %f\0A\00"
@.str.29 = [24 x i8] c"long double value= %Lf\0A\00"
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = load i64, i64* @ULONG_MAX
%4 = load i64, i64* @LLONG_MIN
%5 = load i64, i64* @LLONG_MAX
%6 = load i64, i64* @ULLONG_MAX
%7 = load float, float* @FLT_MAX
%8 = load double, double* @DBL_MAX
%9 = load x86_fp80, x86_fp80* @LDBL_MAX
%10 = tail call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i64 0, i64 0), x86_fp80 0xK40058200000000000000)
%11 = tail call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.1, i64 0, i64 0), x86_fp80 0xK4000C000000000000000)
%12 = tail call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0), x86_fp80 0xKC0068000000000000000)
%13 = tail call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.3, i64 0, i64 0), x86_fp80 0xK4006FF00000000000000)
%14 = tail call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0), x86_fp80 0xK400DFFFE000000000000)
%15 = tail call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.5, i64 0, i64 0), x86_fp80 0xK400DFFFA000000000000)
%16 = tail call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.6, i64 0, i64 0), x86_fp80 0xKC00DFFFE000000000000)
%17 = tail call i32 @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.7, i64 0, i64 0), x86_fp80 0xKC00DFFFA000000000000)
%18 = tail call i32 @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.8, i64 0, i64 0), x86_fp80 0xK400EFFFF000000000000)
%19 = tail call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.9, i64 0, i64 0), x86_fp80 0xK400EFFFE000000000000)
%20 = tail call i32 @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0), x86_fp80 0xKC01E8000000000000000)
%21 = tail call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.11, i64 0, i64 0), x86_fp80 0xKC01E8000000000000000)
%22 = tail call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.12, i64 0, i64 0), x86_fp80 0xKC01E8000000000000000)
%23 = tail call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.13, i64 0, i64 0), x86_fp80 0xK401EFFFFFFFF00000000)
%24 = tail call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.14, i64 0, i64 0), x86_fp80 0xK401EFFFFFFFF00000000)
%25 = tail call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.15, i64 0, i64 0), x86_fp80 0xKC01E8000000000000000)
%26 = tail call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.16, i64 0, i64 0), x86_fp80 0xK401DFFFFFFFE00000000)
%27 = tail call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.17, i64 0, i64 0), x86_fp80 0xKC01E8000000000000000)
%28 = tail call i32 @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), x86_fp80 0xKC01E8000000000000000)
%29 = uitofp i64 %3 to x86_fp80
%30 = tail call i32 @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), x86_fp80 %29)
%31 = tail call i32 @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i64 0, i64 0), x86_fp80 %29)
%32 = sitofp i64 %4 to x86_fp80
%33 = tail call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.21, i64 0, i64 0), x86_fp80 %32)
%34 = tail call i32 @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.22, i64 0, i64 0), x86_fp80 %32)
%35 = tail call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.23, i64 0, i64 0), x86_fp80 %32)
%36 = sitofp i64 %5 to x86_fp80
%37 = tail call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.24, i64 0, i64 0), x86_fp80 %36)
%38 = uitofp i64 %6 to x86_fp80
%39 = tail call i32 @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.25, i64 0, i64 0), x86_fp80 %38)
%40 = tail call i32 @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.26, i64 0, i64 0), x86_fp80 %38)
%41 = fpext float %7 to x86_fp80
%42 = tail call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.27, i64 0, i64 0), x86_fp80 %41)
%43 = fpext double %8 to x86_fp80
%44 = tail call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.28, i64 0, i64 0), x86_fp80 %43)
%45 = tail call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.29, i64 0, i64 0), x86_fp80 %9)
ret i32 0
}