; ModuleID = '2003-08-05-CastFPToUint.c'
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
target triple = "i386-pc-linux-gnu"

module asm "\09.ident\09\22GCC: (GNU) 4.5.1 20100510 (prerelease) LLVM: 104604:104605\22"

%char = type i8
%"char[]" = type [30 x i8]
%double = type double
%int = type i32
%"unsigned int" = type i32

@.str = private constant %"char[]" c"DC = %lf, DS = %lf, DI = %lf\0A\00", align 1 ; <%"char[]"*> [#uses=1]
@.str1 = private constant [27 x i8] c"uc = %u, us = %u, ui = %u\0A\00", align 1 ; <[27 x i8]*> [#uses=1]

define internal double @getDC() nounwind {
entry:
  %memtmp = alloca double, align 8                ; <double*> [#uses=2]
  %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
  %"ssa point" = bitcast i32 0 to i32             ; <i32> [#uses=0]
  br label %"2"

"2":                                              ; preds = %entry
  store double 2.400000e+02, double* %memtmp, align 1
  br label %return

return:                                           ; preds = %"2"
  %retval = load double* %memtmp                  ; <double> [#uses=1]
  ret double %retval
}

define internal double @getDS() nounwind {
entry:
  %memtmp = alloca double, align 8                ; <double*> [#uses=2]
  %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
  %"ssa point" = bitcast i32 0 to i32             ; <i32> [#uses=0]
  br label %"2"

"2":                                              ; preds = %entry
  store double 6.552000e+04, double* %memtmp, align 1
  br label %return

return:                                           ; preds = %"2"
  %retval = load double* %memtmp                  ; <double> [#uses=1]
  ret double %retval
}

define internal double @getDI() nounwind {
entry:
  %memtmp = alloca double, align 8                ; <double*> [#uses=2]
  %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
  %"ssa point" = bitcast i32 0 to i32             ; <i32> [#uses=0]
  br label %"2"

"2":                                              ; preds = %entry
  store double 0x41EFFFFFFE000000, double* %memtmp, align 1
  br label %return

return:                                           ; preds = %"2"
  %retval = load double* %memtmp                  ; <double> [#uses=1]
  ret double %retval
}

define i32 @main(i32 %argc, i8** %argv) nounwind {
entry:
  %argc_addr = alloca i32                         ; <i32*> [#uses=1]
  %argv_addr = alloca i8**                        ; <i8***> [#uses=1]
  %memtmp = alloca i32                            ; <i32*> [#uses=2]
  %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
  store i32 %argc, i32* %argc_addr
  store i8** %argv, i8*** %argv_addr
  %"ssa point" = bitcast i32 0 to i32             ; <i32> [#uses=0]
  br label %"2"

"2":                                              ; preds = %entry
  %0 = call double @getDC() nounwind              ; <double> [#uses=2]
  %1 = call double @getDS() nounwind              ; <double> [#uses=2]
  %2 = call double @getDI() nounwind              ; <double> [#uses=2]
  %3 = fptoui double %0 to i8                     ; <i8> [#uses=1]
  %4 = fptoui double %1 to i16                    ; <i16> [#uses=1]
  %5 = fptoui double %2 to i32                    ; <i32> [#uses=1]
  %6 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds (%"char[]"* @.str, i32 0, i32 0), double %0, double %1, double %2) nounwind ; <i32> [#uses=0]
  %7 = zext i16 %4 to i32                         ; <i32> [#uses=1]
  %8 = zext i8 %3 to i32                          ; <i32> [#uses=1]
  %9 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([27 x i8]* @.str1, i32 0, i32 0), i32 %8, i32 %7, i32 %5) nounwind ; <i32> [#uses=0]
  store i32 0, i32* %memtmp, align 1
  br label %return

return:                                           ; preds = %"2"
  %retval = load i32* %memtmp                     ; <i32> [#uses=1]
  ret i32 %retval
}

declare i32 @printf(i8*, ...)
