diff options
author | Ilya Enkovich <ilya.enkovich@intel.com> | 2015-04-03 08:51:26 +0000 |
---|---|---|
committer | Ilya Enkovich <ienkovich@gcc.gnu.org> | 2015-04-03 08:51:26 +0000 |
commit | fad71ff5e7497d9b94fcab47e15856114421f7ec (patch) | |
tree | 83a02886edf826102ecef752be208e6e2dfb869b /gcc | |
parent | a3d72251cc7791c95e1913c7e0fe44336028f1cd (diff) | |
download | gcc-fad71ff5e7497d9b94fcab47e15856114421f7ec.zip gcc-fad71ff5e7497d9b94fcab47e15856114421f7ec.tar.gz gcc-fad71ff5e7497d9b94fcab47e15856114421f7ec.tar.bz2 |
i386.c (ix86_expand_call): Avoid nested PARALLEL in returned call value.
* config/i386/i386.c (ix86_expand_call): Avoid nested
PARALLEL in returned call value.
From-SVN: r221851
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 15 |
2 files changed, 18 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a11ec1c..b37e15d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2015-04-02 Ilya Enkovich <ilya.enkovich@intel.com> + * config/i386/i386.c (ix86_expand_call): Avoid nested + PARALLEL in returned call value. + +2015-04-02 Ilya Enkovich <ilya.enkovich@intel.com> + * lto-cgraph.c (input_cgraph_1): Always link instrumented assembler name with original one. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index d8d9983..02b5103 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -25624,8 +25624,19 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx callarg1, { rtx b0 = gen_rtx_REG (BND64mode, FIRST_BND_REG); rtx b1 = gen_rtx_REG (BND64mode, FIRST_BND_REG + 1); - retval = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (3, retval, b0, b1)); - chkp_put_regs_to_expr_list (retval); + if (GET_CODE (retval) == PARALLEL) + { + b0 = gen_rtx_EXPR_LIST (VOIDmode, b0, const0_rtx); + b1 = gen_rtx_EXPR_LIST (VOIDmode, b1, const0_rtx); + rtx par = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, b0, b1)); + retval = chkp_join_splitted_slot (retval, par); + } + else + { + retval = gen_rtx_PARALLEL (VOIDmode, + gen_rtvec (3, retval, b0, b1)); + chkp_put_regs_to_expr_list (retval); + } } call = gen_rtx_SET (VOIDmode, retval, call); |