poly_int: expand_ifn_atomic_compare_exchange_into_call
This patch makes the mode size assumptions in expand_ifn_atomic_compare_exchange_into_call a bit more explicit, so that a later patch can add a to_constant () call. 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert that the mode size is in the set {1, 2, 4, 8, 16}. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r256157
This commit is contained in:
parent
0f5d092808
commit
4871e1ed17
@ -1,3 +1,10 @@
|
||||
2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
Alan Hayward <alan.hayward@arm.com>
|
||||
David Sherwood <david.sherwood@arm.com>
|
||||
|
||||
* builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
|
||||
that the mode size is in the set {1, 2, 4, 8, 16}.
|
||||
|
||||
2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
Alan Hayward <alan.hayward@arm.com>
|
||||
David Sherwood <david.sherwood@arm.com>
|
||||
|
@ -5990,9 +5990,12 @@ expand_ifn_atomic_compare_exchange_into_call (gcall *call, machine_mode mode)
|
||||
/* Skip the boolean weak parameter. */
|
||||
for (z = 4; z < 6; z++)
|
||||
vec->quick_push (gimple_call_arg (call, z));
|
||||
/* At present we only have BUILT_IN_ATOMIC_COMPARE_EXCHANGE_{1,2,4,8,16}. */
|
||||
unsigned int bytes_log2 = exact_log2 (GET_MODE_SIZE (mode));
|
||||
gcc_assert (bytes_log2 < 5);
|
||||
built_in_function fncode
|
||||
= (built_in_function) ((int) BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1
|
||||
+ exact_log2 (GET_MODE_SIZE (mode)));
|
||||
+ bytes_log2);
|
||||
tree fndecl = builtin_decl_explicit (fncode);
|
||||
tree fn = build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fndecl)),
|
||||
fndecl);
|
||||
|
Loading…
Reference in New Issue
Block a user