aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtlanal.c
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2007-10-16 09:13:47 +0000
committerMaxim Kuvyrkov <mkuvyrkov@gcc.gnu.org>2007-10-16 09:13:47 +0000
commit215b063c9d8700616d5c189cd12eef4e748de5fe (patch)
treef33444e9bf6a5e0115d66e6ac3261973224f32ca /gcc/rtlanal.c
parent50f2fe3ad42ccf45a62d3bc899f55d5c068891ac (diff)
downloadgcc-215b063c9d8700616d5c189cd12eef4e748de5fe.zip
gcc-215b063c9d8700616d5c189cd12eef4e748de5fe.tar.gz
gcc-215b063c9d8700616d5c189cd12eef4e748de5fe.tar.bz2
target.h (unspec_may_trap_p): New target hook.
2007-10-16 Paolo Bonzini <bonzini@gnu.org> Maxim Kuvyrkov <maxim@codesourcery.com> * target.h (unspec_may_trap_p): New target hook. * target-def.h (TARGET_UNSPEC_MAY_TRAP_P): New macro. * targhooks.c (default_unspec_may_trap_p): Default implementation of the hook. * targhooks.h (default_unspec_may_trap_p): Declare it. * doc/tm.texi (TARGET_UNSPEC_MAY_TRAP_P): Document new hook. * rtlanal.c (may_trap_p_1): Use new hook. Make global. * rtl.h (may_trap_p_1): Declare. * config/ia64/ia64.c (ia64_unspec_may_trap_p): New function to override default hook implementation. (TARGET_UNSPEC_MAY_TRAP_P): Override default implementation of the hook. * gcc.target/ia64/20040709-2.c: New test. Co-Authored-By: Maxim Kuvyrkov <maxim@codesourcery.com> From-SVN: r129378
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r--gcc/rtlanal.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 423d6ef..0e0f7e3 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -2182,7 +2182,7 @@ enum may_trap_p_flags
cannot trap at its current location, but it might become trapping if moved
elsewhere. */
-static int
+int
may_trap_p_1 (const_rtx x, unsigned flags)
{
int i;
@@ -2209,8 +2209,11 @@ may_trap_p_1 (const_rtx x, unsigned flags)
case SCRATCH:
return 0;
- case ASM_INPUT:
+ case UNSPEC:
case UNSPEC_VOLATILE:
+ return targetm.unspec_may_trap_p (x, flags);
+
+ case ASM_INPUT:
case TRAP_IF:
return 1;