diff options
author | sandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-05-15 14:20:55 +0000 |
---|---|---|
committer | sandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-05-15 14:20:55 +0000 |
commit | d5a9653a026684886b07d3c82e69366f4fdd779c (patch) | |
tree | a4e17d6e5cc9b040396bbab73e36efd218a6a7be /gcc/optabs.c | |
parent | f1c02c87fdddc46638ce02ab6ff4e8460368b89d (diff) | |
download | gcc-d5a9653a026684886b07d3c82e69366f4fdd779c.tar.gz |
2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
gcc/
* optabs.c (prepare_float_lib_cmp): Test that the comparison,
swapped, and reversed optabs exist before trying to use them.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147578 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/optabs.c')
-rw-r--r-- | gcc/optabs.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/optabs.c b/gcc/optabs.c index 9c8cb86dd14..3a13eaddc8c 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -4322,10 +4322,12 @@ prepare_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison, mode != VOIDmode; mode = GET_MODE_WIDER_MODE (mode)) { - if ((libfunc = optab_libfunc (code_to_optab[comparison], mode))) + if (code_to_optab[comparison] + && (libfunc = optab_libfunc (code_to_optab[comparison], mode))) break; - if ((libfunc = optab_libfunc (code_to_optab[swapped] , mode))) + if (code_to_optab[swapped] + && (libfunc = optab_libfunc (code_to_optab[swapped], mode))) { rtx tmp; tmp = x; x = y; y = tmp; @@ -4333,7 +4335,8 @@ prepare_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison, break; } - if ((libfunc = optab_libfunc (code_to_optab[reversed], mode)) + if (code_to_optab[reversed] + && (libfunc = optab_libfunc (code_to_optab[reversed], mode)) && FLOAT_LIB_COMPARE_RETURNS_BOOL (mode, reversed)) { comparison = reversed; |