* src/SDCCast.c, src/SDCCast.h: fixed RFE #1901171: inerger promotion
[fw/sdcc] / src / SDCCast.c
index ac571b5afa5332a9bacabb3b05d6e80dc86226a8..94a1c5a24e80b7a06776e58d3b7fa8a5bf978e0c 100644 (file)
@@ -854,9 +854,12 @@ processParms (ast *func,
       ast *newType = NULL;
       sym_link *ftype;
 
-      if (IS_CAST_OP (*actParm) ||
+      /* don't perform integer promotion of explicitly typecasted variable arguments
+       * if sdcc extensions are enabled */
+      if (options.std_sdcc && 
+        (IS_CAST_OP (*actParm) ||
         (IS_AST_SYM_VALUE (*actParm) && AST_VALUES (*actParm, removedCast)) ||
-        (IS_AST_LIT_VALUE (*actParm) && AST_VALUES (*actParm, literalFromCast)))
+        (IS_AST_LIT_VALUE (*actParm) && AST_VALUES (*actParm, literalFromCast))))
         {
           /* Parameter was explicitly typecast; don't touch it. */
           return 0;