diff options
author | Jason Merrill <jason@casey.cygnus.com> | 2000-03-01 00:01:31 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2000-02-29 19:01:31 -0500 |
commit | 19e3f61a82b5fa0fef88527c9026f864c2b76b5d (patch) | |
tree | bd8682a7d33529b240ffe036d1e25fd460bb2467 /gcc | |
parent | 1fcd0c12e3fabc3567a64ddf2fccd006a49c2c06 (diff) | |
download | gcc-19e3f61a82b5fa0fef88527c9026f864c2b76b5d.zip gcc-19e3f61a82b5fa0fef88527c9026f864c2b76b5d.tar.gz gcc-19e3f61a82b5fa0fef88527c9026f864c2b76b5d.tar.bz2 |
* calls.c (emit_library_call): Check for null REG.
From-SVN: r32270
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/calls.c | 22 |
2 files changed, 16 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index da5a814..1868dbe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2000-02-29 Jason Merrill <jason@casey.cygnus.com> + + * calls.c (emit_library_call): Check for null REG. + 2000-03-01 Martin von Loewis <loewis@informatik.hu-berlin.de> * c-decl.c (current_function_decl): Move to toplev.c. diff --git a/gcc/calls.c b/gcc/calls.c index c4e6039..a5bf750c 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -3086,7 +3086,7 @@ emit_library_call VPARAMS((rtx orgfun, int no_queue, enum machine_mode outmode, /* Handle calls that pass values in multiple non-contiguous locations. The PA64 has examples of this for library calls. */ - if (GET_CODE (reg) == PARALLEL) + if (reg != 0 && GET_CODE (reg) == PARALLEL) emit_group_load (reg, val, GET_MODE_SIZE (GET_MODE (val)), GET_MODE_ALIGNMENT (GET_MODE (val))); @@ -3103,10 +3103,11 @@ emit_library_call VPARAMS((rtx orgfun, int no_queue, enum machine_mode outmode, /* Any regs containing parms remain in use through the call. */ for (count = 0; count < nargs; count++) { - if (GET_CODE (argvec[count].reg) == PARALLEL) - use_group_regs (&call_fusage, argvec[count].reg); - else if (argvec[count].reg != 0) - use_reg (&call_fusage, argvec[count].reg); + rtx reg = argvec[count].reg; + if (reg != 0 && GET_CODE (argvec[count].reg) == PARALLEL) + use_group_regs (&call_fusage, reg); + else if (reg != 0) + use_reg (&call_fusage, reg); } /* Don't allow popping to be deferred, since then @@ -3673,7 +3674,7 @@ emit_library_call_value VPARAMS((rtx orgfun, rtx value, int no_queue, /* Handle calls that pass values in multiple non-contiguous locations. The PA64 has examples of this for library calls. */ - if (GET_CODE (reg) == PARALLEL) + if (reg != 0 && GET_CODE (reg) == PARALLEL) emit_group_load (reg, val, GET_MODE_SIZE (GET_MODE (val)), GET_MODE_ALIGNMENT (GET_MODE (val))); @@ -3692,10 +3693,11 @@ emit_library_call_value VPARAMS((rtx orgfun, rtx value, int no_queue, /* Any regs containing parms remain in use through the call. */ for (count = 0; count < nargs; count++) { - if (GET_CODE (argvec[count].reg) == PARALLEL) - use_group_regs (&call_fusage, argvec[count].reg); - else if (argvec[count].reg != 0) - use_reg (&call_fusage, argvec[count].reg); + rtx reg = argvec[count].reg; + if (reg != 0 && GET_CODE (reg) == PARALLEL) + use_group_regs (&call_fusage, reg); + else if (reg != 0) + use_reg (&call_fusage, reg); } /* Pass the function the address in which to return a structure value. */ |