Hi,

Find the attached patch for the subjected issue.
Please let me know your thoughts and comments on the same.

>-      if (!global_options_set.x_aix_struct_return)
>+      if (!global_options_set.x_aix_struct_return
>+    && !rs6000_current_svr4_struct_return)
According to the value of aix_struct_return it will decide which one need to use
register or memory. After that, it will check which alignment is there
for register
according to the given option.

ChangeLogs
/gcc/ChangeLog
2019-01-10  Lokesh Janghel  <lokeshjanghe...@gmail.com>

        PR target/84762
        * config/rs6000/rs6000.c (rs6000_return_in_msb): Retrun in svr4
        for small struct value.
        (rs6000_option_override_internal): Add the condition for aix or
        svr4 (LSB/MSB aligned).
        * config/rs6000/rs6000.opt: Extend the -msvr4-struct-return option
        for LSB aligned value and MSB aligned value.

/gcc/testsuite/ChangeLog
2019-01-10  Lokesh Janghel  <lokeshjanghe...@gmail.com>

        PR target/84762
        * gcc.target/pr84762-1.c: New testcase.
        * gcc.target/pr84762-2.c: New testcase.
        * gcc.target/pr84762-3.c: New testcase.

-- 
Thanks
Lokesh Janghel

Attachment: 84762 .patch
Description: Binary data

Reply via email to