aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/arc/arc.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/arc/arc.c')
-rw-r--r--gcc/config/arc/arc.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
index c838f32..f0c1bf2 100644
--- a/gcc/config/arc/arc.c
+++ b/gcc/config/arc/arc.c
@@ -2396,7 +2396,11 @@ arc_external_libcall (rtx fun ATTRIBUTE_UNUSED)
static bool
arc_return_in_memory (tree type, tree fntype ATTRIBUTE_UNUSED)
{
- return (AGGREGATE_TYPE_P (type)
- || int_size_in_bytes (type) > 8
- || TREE_ADDRESSABLE (type));
+ if (AGGREGATE_TYPE_P (type))
+ return true;
+ else
+ {
+ HOST_WIDE_INT size = int_size_in_bytes (type);
+ return (size == -1 || size > 8);
+ }
}