]> gcc.gnu.org Git - gcc.git/commitdiff
Makefile.in (LIB2_DIVMOD_EXCEPTION_FLAGS): Default to -fexceptions -fnon-call-excepti...
authorJulian Brown <julian@codesourcery.com>
Fri, 17 Aug 2012 15:06:06 +0000 (15:06 +0000)
committerJulian Brown <jules@gcc.gnu.org>
Fri, 17 Aug 2012 15:06:06 +0000 (15:06 +0000)
    libgcc/
    * Makefile.in (LIB2_DIVMOD_EXCEPTION_FLAGS): Default to
    -fexceptions -fnon-call-exceptions if not defined.
    ($(lib2-divmod-o), $(lib2-divmod-s-o)): Use above.
    * config/arm/t-bpabi (LIB2_DIVMOD_EXCEPTION_FLAGS): Define.

    gcc/testsuite/
    * gcc.target/arm/div64-unwinding.c: New test.

From-SVN: r190483

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/div64-unwinding.c [new file with mode: 0644]
libgcc/ChangeLog
libgcc/Makefile.in
libgcc/config/arm/t-bpabi

index e680b76516960b4878831828db64050a25d76d81..3936642d60f61fd03cec382241af0dd915475cc4 100644 (file)
@@ -1,3 +1,7 @@
+2012-08-17  Julian Brown  <julian@codesourcery.com>
+
+       * gcc.target/arm/div64-unwinding.c: New test.
+
 2012-08-17  Jakub Jelinek  <jakub@redhat.com>
 
        * gcc.dg/torture/Wsizeof-pointer-memaccess1.c: New test.
diff --git a/gcc/testsuite/gcc.target/arm/div64-unwinding.c b/gcc/testsuite/gcc.target/arm/div64-unwinding.c
new file mode 100644 (file)
index 0000000..b7ed891
--- /dev/null
@@ -0,0 +1,24 @@
+/* Performing a 64-bit division should not pull in the unwinder.  */
+
+/* { dg-do run } */
+/* { dg-options "-O0" } */
+
+#include <stdlib.h>
+
+long long
+foo (long long c, long long d)
+{
+  return c/d;
+}
+
+long long x = 0;
+long long y = 1;
+
+extern int (*_Unwind_RaiseException) (void *) __attribute__((weak));
+
+int main(void)
+{
+  if (&_Unwind_RaiseException != NULL)
+    abort ();;
+  return foo (x, y);
+}
index e3f991d094d08d328189ca85a85a0fe65f9f60ec..3ec62d6a3eb8c54627f00fa2592ea24a53b34f8d 100644 (file)
@@ -1,3 +1,10 @@
+2012-08-17  Julian Brown  <julian@codesourcery.com>
+
+       * Makefile.in (LIB2_DIVMOD_EXCEPTION_FLAGS): Default to
+       -fexceptions -fnon-call-exceptions if not defined.
+       ($(lib2-divmod-o), $(lib2-divmod-s-o)): Use above.
+       * config/arm/t-bpabi (LIB2_DIVMOD_EXCEPTION_FLAGS): Define.
+
 2012-08-17  Andreas Schwab  <schwab@linux-m68k.org>
 
        * config/m68k/linux-atomic.c (__sync_lock_test_and_set_1): Fix
index 4904a376274d13f6734abf323474f0198dbb2668..73f57d6565899ce3eea4359596858901caf1d10b 100644 (file)
@@ -497,18 +497,24 @@ libgcc-s-objects += $(patsubst %,%_s$(objext),$(sifuncs) $(difuncs) $(tifuncs))
 endif
 endif
 
+ifeq ($(LIB2_DIVMOD_EXCEPTION_FLAGS),)
+# Provide default flags for compiling divmod functions, if they haven't been
+# set already by a target-specific Makefile fragment.
+LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions -fnon-call-exceptions
+endif
+
 # Build LIB2_DIVMOD_FUNCS.
 lib2-divmod-o = $(patsubst %,%$(objext),$(LIB2_DIVMOD_FUNCS))
 $(lib2-divmod-o): %$(objext): $(srcdir)/libgcc2.c
        $(gcc_compile) -DL$* -c $< \
-         -fexceptions -fnon-call-exceptions $(vis_hide)
+         $(LIB2_DIVMOD_EXCEPTION_FLAGS) $(vis_hide)
 libgcc-objects += $(lib2-divmod-o)
 
 ifeq ($(enable_shared),yes)
 lib2-divmod-s-o = $(patsubst %,%_s$(objext),$(LIB2_DIVMOD_FUNCS))
 $(lib2-divmod-s-o): %_s$(objext): $(srcdir)/libgcc2.c
        $(gcc_s_compile) -DL$* -c $< \
-         -fexceptions -fnon-call-exceptions
+         $(LIB2_DIVMOD_EXCEPTION_FLAGS)
 libgcc-s-objects += $(lib2-divmod-s-o)
 endif
 
index e79cbd7064e044e8d13f6eda02fa931cb0d7ff9c..dddddc7c444ba19093e710512c9a86af6df8877a 100644 (file)
@@ -13,3 +13,8 @@ LIB2ADDEH = $(srcdir)/config/arm/unwind-arm.c \
 
 # Add the BPABI names.
 SHLIB_MAPFILES += $(srcdir)/config/arm/libgcc-bpabi.ver
+
+# On ARM, specifying -fnon-call-exceptions will needlessly pull in
+# the unwinder in simple programs which use 64-bit division.  Omitting
+# the option is safe.
+LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
This page took 0.096836 seconds and 5 git commands to generate.