diff options
author | bwilson <bwilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-04-30 17:59:10 +0000 |
---|---|---|
committer | bwilson <bwilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-04-30 17:59:10 +0000 |
commit | 2751c7d48f654df48925752bdbe179096104ca91 (patch) | |
tree | 5dcc80c69dfb0279ebc5b7971841ddabfc3f672f | |
parent | 6084da09a030fd735c7ff46bcd5aefbdbe91ddc5 (diff) | |
download | gcc-2751c7d48f654df48925752bdbe179096104ca91.tar.gz |
* config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
DIV0 exception can fall through to a normal return.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124303 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/xtensa/lib1funcs.asm | 18 |
2 files changed, 15 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 906135b4a71..386d898e70a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-04-30 Bob Wilson <bob.wilson@acm.org> + + * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that + DIV0 exception can fall through to a normal return. + 2007-04-30 Alexandre Oliva <aoliva@redhat.com> PR middle-end/22156 diff --git a/gcc/config/xtensa/lib1funcs.asm b/gcc/config/xtensa/lib1funcs.asm index 6db2a7d7239..7cb994dfd2e 100644 --- a/gcc/config/xtensa/lib1funcs.asm +++ b/gcc/config/xtensa/lib1funcs.asm @@ -654,16 +654,17 @@ __umodsi3: leaf_return .Lle_one: - beqz a3, .Lerror - movi a2, 0 - leaf_return + bnez a3, .Lreturn0 -.Lerror: /* Divide by zero: Use an illegal instruction to force an exception. The subsequent "DIV0" string can be recognized by the exception handler to identify the real cause of the exception. */ ill .ascii "DIV0" + +.Lreturn0: + movi a2, 0 + leaf_return .size __umodsi3,.-__umodsi3 #endif /* L_umodsi3 */ @@ -712,16 +713,17 @@ __modsi3: leaf_return .Lle_one: - beqz a3, .Lerror - movi a2, 0 - leaf_return + bnez a3, .Lreturn0 -.Lerror: /* Divide by zero: Use an illegal instruction to force an exception. The subsequent "DIV0" string can be recognized by the exception handler to identify the real cause of the exception. */ ill .ascii "DIV0" + +.Lreturn0: + movi a2, 0 + leaf_return .size __modsi3,.-__modsi3 #endif /* L_modsi3 */ |