aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/calls.c3
-rw-r--r--gcc/gimple-expr.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index f3da183..dd8ff2a 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -2397,7 +2397,8 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED,
already in memory, instead of making a copy. Likewise if we want
to make the copy in the callee instead of the caller. */
if ((call_from_thunk_p || callee_copies)
- && (base = get_base_address (args[i].tree_value))
+ && TREE_CODE (args[i].tree_value) != WITH_SIZE_EXPR
+ && ((base = get_base_address (args[i].tree_value)), true)
&& TREE_CODE (base) != SSA_NAME
&& (!DECL_P (base) || MEM_P (DECL_RTL (base))))
{
diff --git a/gcc/gimple-expr.c b/gcc/gimple-expr.c
index b8c732b..c321179 100644
--- a/gcc/gimple-expr.c
+++ b/gcc/gimple-expr.c
@@ -900,6 +900,8 @@ flush_mark_addressable_queue ()
void
mark_addressable (tree x)
{
+ if (TREE_CODE (x) == WITH_SIZE_EXPR)
+ x = TREE_OPERAND (x, 0);
while (handled_component_p (x))
x = TREE_OPERAND (x, 0);
if (TREE_CODE (x) == MEM_REF