+2016-05-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/49244
+ * gimple.c (gimple_builtin_call_types_compatible_p): Allow
+ char/short arguments promoted to int because of promote_prototypes.
+
2016-05-02 Uros Bizjak <ubizjak@gmail.com>
* config/i386/predicates.md (register_ssemem_operand): New predicate.
if (!targs)
return true;
tree arg = gimple_call_arg (stmt, i);
- if (!useless_type_conversion_p (TREE_VALUE (targs), TREE_TYPE (arg)))
+ tree type = TREE_VALUE (targs);
+ if (!useless_type_conversion_p (type, TREE_TYPE (arg))
+ /* char/short integral arguments are promoted to int
+ by several frontends if targetm.calls.promote_prototypes
+ is true. Allow such promotion too. */
+ && !(INTEGRAL_TYPE_P (type)
+ && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)
+ && targetm.calls.promote_prototypes (TREE_TYPE (fndecl))
+ && useless_type_conversion_p (integer_type_node,
+ TREE_TYPE (arg))))
return false;
targs = TREE_CHAIN (targs);
}