#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 */
int /*<<< orphan*/ printf(char *, ...);
t1() {
  char c;
  int i;
  long l;
  unsigned u;
  float f;
  printf("(int) '\\377' = %d\n", (int)'\377');
  printf("(long) -1 = %ld\n", (long)-1);
  printf("(float) 12 = %f\n", (float)12);
  printf("(int) 3.14 = %d\n", (int)3.14);
  printf("(int) 32767L = %d\n", (int)32767L);
  printf("(int) -32768L = %d\n", (int)-32768L);
  printf("(char) 128L = %d\n", (char)128L);
  printf("(char) 0377 = %d\n", (char)0377);
  printf("(char) -1 = %d\n", (char)-1);
  printf("(char) 10000 = %d\n", (char)10000);
  printf("From character\n");
  c = 127;
  i = c;
  l = c;
  u = c;
  f = c;
  printf("\tchar %5d, int %6d, unsigned %6o, long %11ld\n", c, i, u, l);
  printf("\t\t\t\t\tfloat %f\n", f);
  c = -1;
  i = c;
  l = c;
  u = c;
  f = c;
  printf("\tchar %5d, int %6d, unsigned %6o, long %11ld\n", c, i, u, l);
  printf("\t\t\t\t\tfloat %f\n", f);
  c = 0377;
  i = c;
  l = c;
  u = c;
  f = c;
  printf("\tchar %5d, int %6d, unsigned %6o, long %11ld\n", c, i, u, l);
  printf("\t\t\t\t\tfloat %f\n", f);
  printf("From integer\n");
  i = -64;
  c = i;
  l = i;
  u = i;
  f = i;
  printf("\tchar %5d, int %6d, unsigned %6o, long %11ld\n", c, i, u, l);
  printf("\t\t\t\t\tfloat %f\n", f);
  printf("From long\n");
  l = -3;
  c = l;
  i = l;
  u = l;
  f = l;
  printf("\tchar %5d, int %6d, unsigned %6o, long %11ld\n", c, i, u, l);
  printf("\t\t\t\t\tfloat %f\n", f);
  printf("Casts from long\n");
  l = 75000;
  printf("\tchar %5d, int %d, unsigned short %6o, long %11ld\n", (char)l,
         (int)l, (unsigned short)l, l);
  printf("From float\n");
  f = 121.5;
  c = f;
  i = f;
  u = f;
  l = f;
  printf("\tchar %5d, int %6d, unsigned %6o, long %11ld, float %f\n", c, i, u,
         l, f);
  f = 1e-4;
  c = f;
  i = f;
  u = f;
  l = f;
  printf("\tchar %5d, int %6d, unsigned %6o, long %11ld, float %f\n", c, i, u,
         l, f);
  f = 3276.6e1;
  i = f;
  u = f;
  l = f;
  printf("\tint %6d, unsigned %6o, long %11ld, float %f\n", i, u, l, f);
  f = 1223432e3;
  l = f;
  printf("\tlong %11ld, float %f\n", l, f);
  {
    int a[4];
    l = 3;
    a[3] = -17;
    printf("a[l] (l==%ld) %d\n", l, a[l]);
    printf("a[3l] %d\n", a[3l]);
  }
  return 0;
}


x86 assembly (clang, -O0):
<t1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
lea    0xef1(%rip),%rdi
xor    %eax,%eax
mov    %al,-0x41(%rbp)
mov    $0xffffffff,%esi
mov    %esi,-0x5c(%rbp)
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
lea    0xee8(%rip),%rdi
mov    $0xffffffffffffffff,%rsi
call   1030 <printf@plt>
lea    0xee6(%rip),%rdi
movsd  0xeb2(%rip),%xmm0
mov    $0x1,%al
mov    %al,-0x31(%rbp)
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
lea    0xedb(%rip),%rdi
mov    $0x3,%esi
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
lea    0xed8(%rip),%rdi
mov    $0x7fff,%esi
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
lea    0xed7(%rip),%rdi
mov    $0xffff8000,%esi
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
lea    0xed7(%rip),%rdi
mov    $0xffffff80,%esi
call   1030 <printf@plt>
mov    -0x5c(%rbp),%esi
mov    -0x41(%rbp),%al
lea    0xed2(%rip),%rdi
call   1030 <printf@plt>
mov    -0x5c(%rbp),%esi
mov    -0x41(%rbp),%al
lea    0xed2(%rip),%rdi
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
lea    0xed3(%rip),%rdi
mov    $0x10,%esi
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
lea    0xed2(%rip),%rdi
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
movb   $0x7f,-0x1(%rbp)
movsbl -0x1(%rbp),%ecx
mov    %ecx,-0x8(%rbp)
movsbq -0x1(%rbp),%rcx
mov    %rcx,-0x10(%rbp)
movsbl -0x1(%rbp),%ecx
mov    %ecx,-0x14(%rbp)
movsbl -0x1(%rbp),%ecx
cvtsi2ss %ecx,%xmm0
movss  %xmm0,-0x18(%rbp)
movsbl -0x1(%rbp),%esi
mov    -0x8(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%r8
lea    0xe9d(%rip),%rdi
mov    %rdi,-0x58(%rbp)
call   1030 <printf@plt>
mov    -0x31(%rbp),%al
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xeaf(%rip),%rdi
mov    %rdi,-0x50(%rbp)
call   1030 <printf@plt>
mov    -0x58(%rbp),%rdi
mov    -0x41(%rbp),%al
movb   $0xff,-0x1(%rbp)
movsbl -0x1(%rbp),%ecx
mov    %ecx,-0x8(%rbp)
movsbq -0x1(%rbp),%rcx
mov    %rcx,-0x10(%rbp)
movsbl -0x1(%rbp),%ecx
mov    %ecx,-0x14(%rbp)
movsbl -0x1(%rbp),%ecx
cvtsi2ss %ecx,%xmm0
movss  %xmm0,-0x18(%rbp)
movsbl -0x1(%rbp),%esi
mov    -0x8(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%r8
call   1030 <printf@plt>
mov    -0x50(%rbp),%rdi
mov    -0x31(%rbp),%al
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1030 <printf@plt>
mov    -0x58(%rbp),%rdi
mov    -0x41(%rbp),%al
movb   $0xff,-0x1(%rbp)
movsbl -0x1(%rbp),%ecx
mov    %ecx,-0x8(%rbp)
movsbq -0x1(%rbp),%rcx
mov    %rcx,-0x10(%rbp)
movsbl -0x1(%rbp),%ecx
mov    %ecx,-0x14(%rbp)
movsbl -0x1(%rbp),%ecx
cvtsi2ss %ecx,%xmm0
movss  %xmm0,-0x18(%rbp)
movsbl -0x1(%rbp),%esi
mov    -0x8(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%r8
call   1030 <printf@plt>
mov    -0x50(%rbp),%rdi
mov    -0x31(%rbp),%al
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
lea    0xdfd(%rip),%rdi
call   1030 <printf@plt>
mov    -0x58(%rbp),%rdi
mov    -0x41(%rbp),%al
movl   $0xffffffc0,-0x8(%rbp)
mov    -0x8(%rbp),%cl
mov    %cl,-0x1(%rbp)
movslq -0x8(%rbp),%rcx
mov    %rcx,-0x10(%rbp)
mov    -0x8(%rbp),%ecx
mov    %ecx,-0x14(%rbp)
cvtsi2ssl -0x8(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movsbl -0x1(%rbp),%esi
mov    -0x8(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%r8
call   1030 <printf@plt>
mov    -0x50(%rbp),%rdi
mov    -0x31(%rbp),%al
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
lea    0xda8(%rip),%rdi
call   1030 <printf@plt>
mov    -0x58(%rbp),%rdi
mov    -0x41(%rbp),%al
movq   $0xfffffffffffffffd,-0x10(%rbp)
ff
mov    -0x10(%rbp),%cl
mov    %cl,-0x1(%rbp)
mov    -0x10(%rbp),%ecx
mov    %ecx,-0x8(%rbp)
mov    -0x10(%rbp),%ecx
mov    %ecx,-0x14(%rbp)
cvtsi2ssq -0x10(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movsbl -0x1(%rbp),%esi
mov    -0x8(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%r8
call   1030 <printf@plt>
mov    -0x50(%rbp),%rdi
mov    -0x31(%rbp),%al
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
lea    0xd50(%rip),%rdi
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
movq   $0x124f8,-0x10(%rbp)
mov    -0x10(%rbp),%r8
mov    %r8d,%edx
mov    %dl,%cl
movsbl %cl,%esi
mov    %dx,%cx
movzwl %cx,%ecx
lea    0xd38(%rip),%rdi
call   1030 <printf@plt>
mov    -0x41(%rbp),%al
lea    0xd5c(%rip),%rdi
call   1030 <printf@plt>
mov    -0x31(%rbp),%al
movl   $0x42f30000,-0x18(%rbp)
cvttss2si -0x18(%rbp),%ecx
mov    %cl,-0x1(%rbp)
cvttss2si -0x18(%rbp),%ecx
mov    %ecx,-0x8(%rbp)
cvttss2si -0x18(%rbp),%rcx
mov    %ecx,-0x14(%rbp)
cvttss2si -0x18(%rbp),%rcx
mov    %rcx,-0x10(%rbp)
movsbl -0x1(%rbp),%esi
mov    -0x8(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%r8
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xd18(%rip),%rdi
mov    %rdi,-0x40(%rbp)
call   1030 <printf@plt>
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
movl   $0x38d1b717,-0x18(%rbp)
cvttss2si -0x18(%rbp),%ecx
mov    %cl,-0x1(%rbp)
cvttss2si -0x18(%rbp),%ecx
mov    %ecx,-0x8(%rbp)
cvttss2si -0x18(%rbp),%rcx
mov    %ecx,-0x14(%rbp)
cvttss2si -0x18(%rbp),%rcx
mov    %rcx,-0x10(%rbp)
movsbl -0x1(%rbp),%esi
mov    -0x8(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%r8
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1030 <printf@plt>
movl   $0x46fffc00,-0x18(%rbp)
cvttss2si -0x18(%rbp),%eax
mov    %eax,-0x8(%rbp)
cvttss2si -0x18(%rbp),%rax
mov    %eax,-0x14(%rbp)
cvttss2si -0x18(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x8(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x10(%rbp),%rcx
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xcbe(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movss  0xafd(%rip),%xmm0
movss  %xmm0,-0x18(%rbp)
cvttss2si -0x18(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rsi
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xcba(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movq   $0x3,-0x10(%rbp)
movl   $0xffffffef,-0x24(%rbp)
mov    -0x10(%rbp),%rsi
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp,%rax,4),%edx
lea    0xca8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x24(%rbp),%esi
lea    0xca9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<t1>:
push   %r14
push   %rbx
push   %rax
lea    0xf1d(%rip),%rdi
mov    $0xffffffff,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf1d(%rip),%rdi
mov    $0xffffffffffffffff,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf19(%rip),%rdi
movsd  0xea5(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xf14(%rip),%rdi
mov    $0x3,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf12(%rip),%rdi
mov    $0x7fff,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf12(%rip),%rdi
mov    $0xffff8000,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf13(%rip),%rdi
mov    $0xffffff80,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf12(%rip),%rdi
mov    $0xffffffff,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf11(%rip),%rdi
mov    $0xffffffff,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf0e(%rip),%rdi
mov    $0x10,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x1017(%rip),%rdi
call   1030 <puts@plt>
lea    0xf02(%rip),%r14
mov    $0x7f,%r8d
mov    %r14,%rdi
mov    $0x7f,%esi
mov    $0x7f,%edx
mov    $0x7f,%ecx
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf0a(%rip),%rbx
movsd  0xde0(%rip),%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    %r14,%rdi
mov    $0xffffffff,%esi
mov    $0xffffffff,%edx
mov    $0xffffffff,%ecx
mov    $0xffffffffffffffff,%r8
xor    %eax,%eax
call   1040 <printf@plt>
movsd  0xdb6(%rip),%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    %r14,%rdi
mov    $0xffffffff,%esi
mov    $0xffffffff,%edx
mov    $0xffffffff,%ecx
mov    $0xffffffffffffffff,%r8
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
movsd  0xd81(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xf77(%rip),%rdi
call   1030 <puts@plt>
mov    %r14,%rdi
mov    $0xffffffc0,%esi
mov    $0xffffffc0,%edx
mov    $0xffffffc0,%ecx
mov    $0xffffffffffffffc0,%r8
xor    %eax,%eax
call   1040 <printf@plt>
movsd  0xd4e(%rip),%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xf46(%rip),%rdi
call   1030 <puts@plt>
mov    %r14,%rdi
mov    $0xfffffffd,%esi
mov    $0xfffffffd,%edx
mov    $0xfffffffd,%ecx
mov    $0xfffffffffffffffd,%r8
xor    %eax,%eax
call   1040 <printf@plt>
movsd  0xd18(%rip),%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xf12(%rip),%rdi
call   1030 <puts@plt>
lea    0xe14(%rip),%rdi
mov    $0x124f8,%r8d
mov    $0xfffffff8,%esi
mov    $0x124f8,%edx
mov    $0x24f8,%ecx
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xef3(%rip),%rdi
call   1030 <puts@plt>
lea    0xe18(%rip),%rbx
movsd  0xccc(%rip),%xmm0
mov    $0x79,%r8d
mov    %rbx,%rdi
mov    $0x79,%esi
mov    $0x79,%edx
mov    $0x79,%ecx
mov    $0x1,%al
call   1040 <printf@plt>
movsd  0xcad(%rip),%xmm0
mov    %rbx,%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %ecx,%ecx
xor    %r8d,%r8d
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xe07(%rip),%rdi
movsd  0xc93(%rip),%xmm0
mov    $0x7ffe,%ecx
mov    $0x7ffe,%esi
mov    $0x7ffe,%edx
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xe10(%rip),%rdi
movsd  0xc76(%rip),%xmm0
mov    $0x48ec1700,%esi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xe0c(%rip),%rdi
mov    $0x3,%esi
mov    $0xffffffef,%edx
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe06(%rip),%rdi
mov    $0xffffffef,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@.str = [19 x i8] c"(int) '\\377' = %d\0A\00"
@.str.1 = [17 x i8] c"(long) -1 = %ld\0A\00"
@.str.2 = [17 x i8] c"(float) 12 = %f\0A\00"
@.str.3 = [17 x i8] c"(int) 3.14 = %d\0A\00"
@.str.4 = [19 x i8] c"(int) 32767L = %d\0A\00"
@.str.5 = [20 x i8] c"(int) -32768L = %d\0A\00"
@.str.6 = [18 x i8] c"(char) 128L = %d\0A\00"
@.str.7 = [18 x i8] c"(char) 0377 = %d\0A\00"
@.str.8 = [16 x i8] c"(char) -1 = %d\0A\00"
@.str.9 = [19 x i8] c"(char) 10000 = %d\0A\00"
@.str.10 = [16 x i8] c"From character\0A\00"
@.str.11 = [46 x i8] c"\09char %5d, int %6d, unsigned %6o, long %11ld\0A\00"
@.str.12 = [15 x i8] c"\09\09\09\09\09float %f\0A\00"
@.str.13 = [14 x i8] c"From integer\0A\00"
@.str.14 = [11 x i8] c"From long\0A\00"
@.str.15 = [17 x i8] c"Casts from long\0A\00"
@.str.16 = [51 x i8] c"\09char %5d, int %d, unsigned short %6o, long %11ld\0A\00"
@.str.17 = [12 x i8] c"From float\0A\00"
@.str.18 = [56 x i8] c"\09char %5d, int %6d, unsigned %6o, long %11ld, float %f\0A\00"
@.str.19 = [46 x i8] c"\09int %6d, unsigned %6o, long %11ld, float %f\0A\00"
@.str.20 = [23 x i8] c"\09long %11ld, float %f\0A\00"
@.str.21 = [18 x i8] c"a[l] (l==%ld) %d\0A\00"
@.str.22 = [10 x i8] c"a[3l] %d\0A\00"
define i32 @t1() {
%1 = alloca i8
%2 = alloca i32
%3 = alloca i64
%4 = alloca i32
%5 = alloca float
%6 = alloca [4 x i32]
%7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 -1)
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), i64 -1)
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0), double 1.200000e+01)
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.3, i64 0, i64 0), i32 3)
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0), i32 32767)
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0), i32 -32768)
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i32 -128)
%14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), i32 -1)
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.8, i64 0, i64 0), i32 -1)
%16 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.9, i64 0, i64 0), i32 16)
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0))
store i8 127, i8* %1
%18 = load i8, i8* %1
%19 = sext i8 %18 to i32
store i32 %19, i32* %2
%20 = load i8, i8* %1
%21 = sext i8 %20 to i64
store i64 %21, i64* %3
%22 = load i8, i8* %1
%23 = sext i8 %22 to i32
store i32 %23, i32* %4
%24 = load i8, i8* %1
%25 = sitofp i8 %24 to float
store float %25, float* %5
%26 = load i8, i8* %1
%27 = sext i8 %26 to i32
%28 = load i32, i32* %2
%29 = load i32, i32* %4
%30 = load i64, i64* %3
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i32 %27, i32 %28, i32 %29, i64 %30)
%32 = load float, float* %5
%33 = fpext float %32 to double
%34 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), double %33)
store i8 -1, i8* %1
%35 = load i8, i8* %1
%36 = sext i8 %35 to i32
store i32 %36, i32* %2
%37 = load i8, i8* %1
%38 = sext i8 %37 to i64
store i64 %38, i64* %3
%39 = load i8, i8* %1
%40 = sext i8 %39 to i32
store i32 %40, i32* %4
%41 = load i8, i8* %1
%42 = sitofp i8 %41 to float
store float %42, float* %5
%43 = load i8, i8* %1
%44 = sext i8 %43 to i32
%45 = load i32, i32* %2
%46 = load i32, i32* %4
%47 = load i64, i64* %3
%48 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i32 %44, i32 %45, i32 %46, i64 %47)
%49 = load float, float* %5
%50 = fpext float %49 to double
%51 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), double %50)
store i8 -1, i8* %1
%52 = load i8, i8* %1
%53 = sext i8 %52 to i32
store i32 %53, i32* %2
%54 = load i8, i8* %1
%55 = sext i8 %54 to i64
store i64 %55, i64* %3
%56 = load i8, i8* %1
%57 = sext i8 %56 to i32
store i32 %57, i32* %4
%58 = load i8, i8* %1
%59 = sitofp i8 %58 to float
store float %59, float* %5
%60 = load i8, i8* %1
%61 = sext i8 %60 to i32
%62 = load i32, i32* %2
%63 = load i32, i32* %4
%64 = load i64, i64* %3
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i32 %61, i32 %62, i32 %63, i64 %64)
%66 = load float, float* %5
%67 = fpext float %66 to double
%68 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), double %67)
%69 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.13, i64 0, i64 0))
store i32 -64, i32* %2
%70 = load i32, i32* %2
%71 = trunc i32 %70 to i8
store i8 %71, i8* %1
%72 = load i32, i32* %2
%73 = sext i32 %72 to i64
store i64 %73, i64* %3
%74 = load i32, i32* %2
store i32 %74, i32* %4
%75 = load i32, i32* %2
%76 = sitofp i32 %75 to float
store float %76, float* %5
%77 = load i8, i8* %1
%78 = sext i8 %77 to i32
%79 = load i32, i32* %2
%80 = load i32, i32* %4
%81 = load i64, i64* %3
%82 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i32 %78, i32 %79, i32 %80, i64 %81)
%83 = load float, float* %5
%84 = fpext float %83 to double
%85 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), double %84)
%86 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.14, i64 0, i64 0))
store i64 -3, i64* %3
%87 = load i64, i64* %3
%88 = trunc i64 %87 to i8
store i8 %88, i8* %1
%89 = load i64, i64* %3
%90 = trunc i64 %89 to i32
store i32 %90, i32* %2
%91 = load i64, i64* %3
%92 = trunc i64 %91 to i32
store i32 %92, i32* %4
%93 = load i64, i64* %3
%94 = sitofp i64 %93 to float
store float %94, float* %5
%95 = load i8, i8* %1
%96 = sext i8 %95 to i32
%97 = load i32, i32* %2
%98 = load i32, i32* %4
%99 = load i64, i64* %3
%100 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i32 %96, i32 %97, i32 %98, i64 %99)
%101 = load float, float* %5
%102 = fpext float %101 to double
%103 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), double %102)
%104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0))
store i64 75000, i64* %3
%105 = load i64, i64* %3
%106 = trunc i64 %105 to i8
%107 = sext i8 %106 to i32
%108 = load i64, i64* %3
%109 = trunc i64 %108 to i32
%110 = load i64, i64* %3
%111 = trunc i64 %110 to i16
%112 = zext i16 %111 to i32
%113 = load i64, i64* %3
%114 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.16, i64 0, i64 0), i32 %107, i32 %109, i32 %112, i64 %113)
%115 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.17, i64 0, i64 0))
store float 1.215000e+02, float* %5
%116 = load float, float* %5
%117 = fptosi float %116 to i8
store i8 %117, i8* %1
%118 = load float, float* %5
%119 = fptosi float %118 to i32
store i32 %119, i32* %2
%120 = load float, float* %5
%121 = fptoui float %120 to i32
store i32 %121, i32* %4
%122 = load float, float* %5
%123 = fptosi float %122 to i64
store i64 %123, i64* %3
%124 = load i8, i8* %1
%125 = sext i8 %124 to i32
%126 = load i32, i32* %2
%127 = load i32, i32* %4
%128 = load i64, i64* %3
%129 = load float, float* %5
%130 = fpext float %129 to double
%131 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.18, i64 0, i64 0), i32 %125, i32 %126, i32 %127, i64 %128, double %130)
store float 0x3F1A36E2E0000000, float* %5
%132 = load float, float* %5
%133 = fptosi float %132 to i8
store i8 %133, i8* %1
%134 = load float, float* %5
%135 = fptosi float %134 to i32
store i32 %135, i32* %2
%136 = load float, float* %5
%137 = fptoui float %136 to i32
store i32 %137, i32* %4
%138 = load float, float* %5
%139 = fptosi float %138 to i64
store i64 %139, i64* %3
%140 = load i8, i8* %1
%141 = sext i8 %140 to i32
%142 = load i32, i32* %2
%143 = load i32, i32* %4
%144 = load i64, i64* %3
%145 = load float, float* %5
%146 = fpext float %145 to double
%147 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.18, i64 0, i64 0), i32 %141, i32 %142, i32 %143, i64 %144, double %146)
store float 3.276600e+04, float* %5
%148 = load float, float* %5
%149 = fptosi float %148 to i32
store i32 %149, i32* %2
%150 = load float, float* %5
%151 = fptoui float %150 to i32
store i32 %151, i32* %4
%152 = load float, float* %5
%153 = fptosi float %152 to i64
store i64 %153, i64* %3
%154 = load i32, i32* %2
%155 = load i32, i32* %4
%156 = load i64, i64* %3
%157 = load float, float* %5
%158 = fpext float %157 to double
%159 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i32 %154, i32 %155, i64 %156, double %158)
store float 0x41D23B05C0000000, float* %5
%160 = load float, float* %5
%161 = fptosi float %160 to i64
store i64 %161, i64* %3
%162 = load i64, i64* %3
%163 = load float, float* %5
%164 = fpext float %163 to double
%165 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.20, i64 0, i64 0), i64 %162, double %164)
store i64 3, i64* %3
%166 = getelementptr inbounds [4 x i32], [4 x i32]* %6, i64 0, i64 3
store i32 -17, i32* %166
%167 = load i64, i64* %3
%168 = load i64, i64* %3
%169 = getelementptr inbounds [4 x i32], [4 x i32]* %6, i64 0, i64 %168
%170 = load i32, i32* %169
%171 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.21, i64 0, i64 0), i64 %167, i32 %170)
%172 = getelementptr inbounds [4 x i32], [4 x i32]* %6, i64 0, i64 3
%173 = load i32, i32* %172
%174 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.22, i64 0, i64 0), i32 %173)
ret i32 0
}

LLVM IR (-O2):
@.str = [19 x i8] c"(int) '\\377' = %d\0A\00"
@.str.1 = [17 x i8] c"(long) -1 = %ld\0A\00"
@.str.2 = [17 x i8] c"(float) 12 = %f\0A\00"
@.str.3 = [17 x i8] c"(int) 3.14 = %d\0A\00"
@.str.4 = [19 x i8] c"(int) 32767L = %d\0A\00"
@.str.5 = [20 x i8] c"(int) -32768L = %d\0A\00"
@.str.6 = [18 x i8] c"(char) 128L = %d\0A\00"
@.str.7 = [18 x i8] c"(char) 0377 = %d\0A\00"
@.str.8 = [16 x i8] c"(char) -1 = %d\0A\00"
@.str.9 = [19 x i8] c"(char) 10000 = %d\0A\00"
@.str.11 = [46 x i8] c"\09char %5d, int %6d, unsigned %6o, long %11ld\0A\00"
@.str.12 = [15 x i8] c"\09\09\09\09\09float %f\0A\00"
@.str.16 = [51 x i8] c"\09char %5d, int %d, unsigned short %6o, long %11ld\0A\00"
@.str.18 = [56 x i8] c"\09char %5d, int %6d, unsigned %6o, long %11ld, float %f\0A\00"
@.str.19 = [46 x i8] c"\09int %6d, unsigned %6o, long %11ld, float %f\0A\00"
@.str.20 = [23 x i8] c"\09long %11ld, float %f\0A\00"
@.str.21 = [18 x i8] c"a[l] (l==%ld) %d\0A\00"
@.str.22 = [10 x i8] c"a[3l] %d\0A\00"
@str = [15 x i8] c"From character\00"
@str.23 = [13 x i8] c"From integer\00"
@str.24 = [10 x i8] c"From long\00"
@str.25 = [16 x i8] c"Casts from long\00"
@str.26 = [11 x i8] c"From float\00"
define i32 @t1() {
%1 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 -1)
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), i64 -1)
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0), double 1.200000e+01)
%4 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.3, i64 0, i64 0), i32 3)
%5 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0), i32 32767)
%6 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0), i32 -32768)
%7 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i32 -128)
%8 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), i32 -1)
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.8, i64 0, i64 0), i32 -1)
%10 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.9, i64 0, i64 0), i32 16)
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @str, i64 0, i64 0))
%12 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i32 127, i32 127, i32 127, i64 127)
%13 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), double 1.270000e+02)
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i32 -1, i32 -1, i32 -1, i64 -1)
%15 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), double -1.000000e+00)
%16 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i32 -1, i32 -1, i32 -1, i64 -1)
%17 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), double -1.000000e+00)
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.23, i64 0, i64 0))
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i32 -64, i32 -64, i32 -64, i64 -64)
%20 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), double -6.400000e+01)
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @str.24, i64 0, i64 0))
%22 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i32 -3, i32 -3, i32 -3, i64 -3)
%23 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), double -3.000000e+00)
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.25, i64 0, i64 0))
%25 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @.str.16, i64 0, i64 0), i32 -8, i32 75000, i32 9464, i64 75000)
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.26, i64 0, i64 0))
%27 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @.str.18, i64 0, i64 0), i32 121, i32 121, i32 121, i64 121, double 1.215000e+02)
%28 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @.str.18, i64 0, i64 0), i32 0, i32 0, i32 0, i64 0, double 0x3F1A36E2E0000000)
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i32 32766, i32 32766, i64 32766, double 3.276600e+04)
%30 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.20, i64 0, i64 0), i64 1223431936, double 0x41D23B05C0000000)
%31 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.21, i64 0, i64 0), i64 3, i32 -17)
%32 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.22, i64 0, i64 0), i32 -17)
ret i32 0
}