- if (write_pass)
- write_memory (sp + args_space,
- value_contents_all (args[i]),
- TYPE_LENGTH (arg_type));
-
- /* The System V ABI says that:
-
- "An argument's size is increased, if necessary, to make it a
- multiple of [32-bit] words. This may require tail padding,
- depending on the size of the argument."
-
- This makes sure the stack stays word-aligned. */
- args_space += align_up (TYPE_LENGTH (arg_type), 4);
- }
- }
+ if (write_pass)
+ write_memory (sp + args_space,
+ args[i]->contents_all ().data (),
+ arg_type->length ());
+
+ /* The System V ABI says that:
+
+ "An argument's size is increased, if necessary, to make it a
+ multiple of [32-bit] words. This may require tail padding,
+ depending on the size of the argument."
+
+ This makes sure the stack stays word-aligned. */
+ args_space += align_up (arg_type->length (), 4);
+ }
+ }