lib1funcs.asm (__udivsi3, __divsi3): Throw an exception for divide-by-zero.
* config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception for divide-by-zero. (__umodsi3, __modsi3): Likewise. From-SVN: r124165
This commit is contained in:
parent
9f8b807381
commit
a2c2290b62
@ -1,3 +1,9 @@
|
|||||||
|
2007-04-25 Bob Wilson <bob.wilson@acm.org>
|
||||||
|
|
||||||
|
* config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
|
||||||
|
for divide-by-zero.
|
||||||
|
(__umodsi3, __modsi3): Likewise.
|
||||||
|
|
||||||
2007-04-25 Dirk Mueller <dmueller@suse.de>
|
2007-04-25 Dirk Mueller <dmueller@suse.de>
|
||||||
|
|
||||||
* c-typeck.c (build_compound_expr): Annotate warning()
|
* c-typeck.c (build_compound_expr): Annotate warning()
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* Assembly functions for the Xtensa version of libgcc1.
|
/* Assembly functions for the Xtensa version of libgcc1.
|
||||||
Copyright (C) 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
|
Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007
|
||||||
|
Free Software Foundation, Inc.
|
||||||
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
|
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
@ -530,7 +531,11 @@ __udivsi3:
|
|||||||
leaf_return
|
leaf_return
|
||||||
|
|
||||||
.Lerror:
|
.Lerror:
|
||||||
/* just return 0; could throw an exception */
|
/* 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:
|
.Lreturn0:
|
||||||
movi a2, 0
|
movi a2, 0
|
||||||
@ -597,7 +602,11 @@ __divsi3:
|
|||||||
leaf_return
|
leaf_return
|
||||||
|
|
||||||
.Lerror:
|
.Lerror:
|
||||||
/* just return 0; could throw an exception */
|
/* 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:
|
.Lreturn0:
|
||||||
movi a2, 0
|
movi a2, 0
|
||||||
@ -645,10 +654,16 @@ __umodsi3:
|
|||||||
leaf_return
|
leaf_return
|
||||||
|
|
||||||
.Lle_one:
|
.Lle_one:
|
||||||
/* The divisor is either 0 or 1, so just return 0.
|
beqz a3, .Lerror
|
||||||
Someday we may want to throw an exception if the divisor is 0. */
|
|
||||||
movi a2, 0
|
movi a2, 0
|
||||||
leaf_return
|
leaf_return
|
||||||
|
|
||||||
|
.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"
|
||||||
.size __umodsi3,.-__umodsi3
|
.size __umodsi3,.-__umodsi3
|
||||||
|
|
||||||
#endif /* L_umodsi3 */
|
#endif /* L_umodsi3 */
|
||||||
@ -697,10 +712,16 @@ __modsi3:
|
|||||||
leaf_return
|
leaf_return
|
||||||
|
|
||||||
.Lle_one:
|
.Lle_one:
|
||||||
/* udivisor is either 0 or 1, so just return 0.
|
beqz a3, .Lerror
|
||||||
Someday we may want to throw an exception if udivisor is 0. */
|
|
||||||
movi a2, 0
|
movi a2, 0
|
||||||
leaf_return
|
leaf_return
|
||||||
|
|
||||||
|
.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"
|
||||||
.size __modsi3,.-__modsi3
|
.size __modsi3,.-__modsi3
|
||||||
|
|
||||||
#endif /* L_modsi3 */
|
#endif /* L_modsi3 */
|
||||||
|
Loading…
Reference in New Issue
Block a user