Commit fd39794a by Jakub Jelinek Committed by Jakub Jelinek

re PR target/49244 (__sync or __atomic builtins will not emit 'lock bts/btr/btc')

	PR target/49244
	* gimple.c (gimple_builtin_call_types_compatible_p): Allow
	char/short arguments promoted to int because of promote_prototypes.

From-SVN: r235792
parent 50d94c29
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.
......
......@@ -2486,7 +2486,16 @@ gimple_builtin_call_types_compatible_p (const gimple *stmt, tree fndecl)
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);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment