The if condition in arc_return_address_register which selects the arc return address is not correct as the brackets are incorect placed. The issue is signalized in bugzilla 85968.
The patch is committed as obvious. gcc/ 2018-06-15 Claudiu Zissulescu <claz...@synopsys.com> * config/arc/arc.c (arc_return_address_register): Fix if-condition. --- gcc/ChangeLog | 6 ++++++ gcc/config/arc/arc.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f95eb582f7..bf057e44926 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-06-15 Claudiu Zissulescu <claz...@synopsys.com> + + PR target/85968 + * config/arc/arc.c (arc_return_address_register): Fix + if-condition. + 2018-06-15 Richard Biener <rguent...@suse.de> PR middle-end/86076 diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index 477500cd0b2..4d4d248abf5 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -9818,7 +9818,7 @@ arc_return_address_register (unsigned int fn_type) if (ARC_INTERRUPT_P (fn_type)) { - if (((fn_type & ARC_FUNCTION_ILINK1) | ARC_FUNCTION_FIRQ) != 0) + if ((fn_type & (ARC_FUNCTION_ILINK1 | ARC_FUNCTION_FIRQ)) != 0) regno = ILINK1_REGNUM; else if ((fn_type & ARC_FUNCTION_ILINK2) != 0) regno = ILINK2_REGNUM; -- 2.17.0