Index: src/frontc/cabs2cil.ml
===================================================================
--- src/frontc/cabs2cil.ml	(revision 11974)
+++ src/frontc/cabs2cil.ml	(working copy)
@@ -1172,6 +1172,10 @@
   | TEnum (ei, a) -> integralPromotion (TInt(ei.ekind, a)) (* gcc packed enums can be < int *)
   | t -> E.s (error "integralPromotion: not expecting %a" d_type t)
   
+let defaultArgumentPromotion (t : typ) : typ = (* c.f. ISO 6.5.2.2:6 *)
+  match unrollType t with
+  | TFloat (FFloat, a) -> TFloat (FDouble, a)
+  | _ -> if isIntegralType t then integralPromotion t else t
 
 let arithmeticConversion    (* c.f. ISO 6.3.1.8 *)
     (t1: typ)
@@ -4071,7 +4075,9 @@
                       let (ss, args') = loop args in
                       let (sa, a', at) = force_right_to_left_evaluation 
                           (doExp false a (AExp None)) in
-                      (sa :: ss, a' :: args')
+                      let promoted_type = defaultArgumentPromotion at in
+                      let _, a'' = castTo at promoted_type a' in
+                      (sa :: ss, a'' :: args')
                 in
                 loop args
         in
