aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pa/pa.md
diff options
context:
space:
mode:
authorJohn David Anglin <dave@hiauly1.hia.nrc.ca>2002-12-05 01:57:27 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2002-12-05 01:57:27 +0000
commit9e1ab8c1a5a7ff3bd09136c309a3800ab96b5c96 (patch)
treefda007f92e35470b1291d41085ebd993dff2dde0 /gcc/config/pa/pa.md
parent16823694d5a03199161bfb60157a9a6e3a2ee697 (diff)
downloadgcc-9e1ab8c1a5a7ff3bd09136c309a3800ab96b5c96.zip
gcc-9e1ab8c1a5a7ff3bd09136c309a3800ab96b5c96.tar.gz
gcc-9e1ab8c1a5a7ff3bd09136c309a3800ab96b5c96.tar.bz2
fptr.c (__canonicalize_funcptr_for_compare): New file and function.
* pa/fptr.c (__canonicalize_funcptr_for_compare): New file and function. * pa.md (canonicalize_funcptr_for_compare): Output library call to canonicalize_funcptr_for_compare_libfunc on TARGET_ELF32. * pa32-linux.h (CANONICALIZE_FUNCPTR_FOR_COMPARE_LIBCALL, CTOR_LIST_BEGIN): New defines. * pa/t-linux (LIB2FUNCS_EXTRA): New define. (fptr.c): Add make rules. From-SVN: r59842
Diffstat (limited to 'gcc/config/pa/pa.md')
-rw-r--r--gcc/config/pa/pa.md13
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md
index cd28ce8..640196b 100644
--- a/gcc/config/pa/pa.md
+++ b/gcc/config/pa/pa.md
@@ -7277,9 +7277,20 @@
(clobber (reg:SI 31))])
(set (match_operand:SI 0 "register_operand" "")
(reg:SI 29))]
- "! TARGET_PORTABLE_RUNTIME && !TARGET_64BIT && !TARGET_ELF32"
+ "!TARGET_PORTABLE_RUNTIME && !TARGET_64BIT"
"
{
+ if (TARGET_ELF32)
+ {
+ rtx canonicalize_funcptr_for_compare_libfunc
+ = init_one_libfunc (CANONICALIZE_FUNCPTR_FOR_COMPARE_LIBCALL);
+
+ emit_library_call_value (canonicalize_funcptr_for_compare_libfunc,
+ operands[0], LCT_NORMAL, Pmode,
+ 1, operands[1], Pmode);
+ DONE;
+ }
+
operands[2] = gen_reg_rtx (SImode);
if (GET_CODE (operands[1]) != REG)
{