diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in
index 3d948fb9b09..72df00d7df4 100644
--- a/config/autoconf.mk.in
+++ b/config/autoconf.mk.in
@@ -308,6 +308,7 @@ WARNINGS_AS_ERRORS = @WARNINGS_AS_ERRORS@
MOZ_OPTIMIZE = @MOZ_OPTIMIZE@
MOZ_OPTIMIZE_FLAGS = @MOZ_OPTIMIZE_FLAGS@
MOZ_OPTIMIZE_LDFLAGS = @MOZ_OPTIMIZE_LDFLAGS@
+MOZ_OPTIMIZE_SIZE_TWEAK = @MOZ_OPTIMIZE_SIZE_TWEAK@
MOZ_RTTI_FLAGS_ON = @_MOZ_RTTI_FLAGS_ON@
MOZ_EXCEPTIONS_FLAGS_ON = @_MOZ_EXCEPTIONS_FLAGS_ON@
diff --git a/configure.in b/configure.in
index 317cb1f7320..6151b59af3c 100644
--- a/configure.in
+++ b/configure.in
@@ -2206,9 +2206,9 @@ ia64*-hpux*)
esac
# If we're building with --enable-profiling, we need a frame pointer.
if test -z "$MOZ_PROFILING"; then
- MOZ_OPTIMIZE_FLAGS="-O3 -fomit-frame-pointer"
+ MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
else
- MOZ_OPTIMIZE_FLAGS="-O3 -fno-omit-frame-pointer"
+ MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-omit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
fi
MOZ_DEBUG_FLAGS="-g"
fi
@@ -7224,6 +7224,7 @@ fi # COMPILE_ENVIRONMENT
AC_SUBST(MOZ_OPTIMIZE)
AC_SUBST(MOZ_OPTIMIZE_FLAGS)
AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
+AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
dnl ========================================================
dnl = (Deprecated) generation of debugger info for specific modules
diff --git a/js/src/config/autoconf.mk.in b/js/src/config/autoconf.mk.in
index 8eb00acfb51..28c3ea06968 100644
--- a/js/src/config/autoconf.mk.in
+++ b/js/src/config/autoconf.mk.in
@@ -146,6 +146,7 @@ WARNINGS_AS_ERRORS = @WARNINGS_AS_ERRORS@
MOZ_OPTIMIZE = @MOZ_OPTIMIZE@
MOZ_OPTIMIZE_FLAGS = @MOZ_OPTIMIZE_FLAGS@
MOZ_OPTIMIZE_LDFLAGS = @MOZ_OPTIMIZE_LDFLAGS@
+MOZ_OPTIMIZE_SIZE_TWEAK = @MOZ_OPTIMIZE_SIZE_TWEAK@
MOZ_RTTI_FLAGS_ON = @_MOZ_RTTI_FLAGS_ON@
MOZ_EXCEPTIONS_FLAGS_ON = @_MOZ_EXCEPTIONS_FLAGS_ON@
diff --git a/js/src/configure.in b/js/src/configure.in
index 00dd391c406..a71e2b93d78 100644
--- a/js/src/configure.in
+++ b/js/src/configure.in
@@ -1899,9 +1899,9 @@ ia64*-hpux*)
esac
# If we're building with --enable-profiling, we need a frame pointer.
if test -z "$MOZ_PROFILING"; then
- MOZ_OPTIMIZE_FLAGS="-O3 -fomit-frame-pointer"
+ MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
else
- MOZ_OPTIMIZE_FLAGS="-Os -fno-omit-frame-pointer"
+ MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fno-omit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
fi
MOZ_DEBUG_FLAGS="-g"
fi
@@ -4272,6 +4272,7 @@ fi # COMPILE_ENVIRONMENT
AC_SUBST(MOZ_OPTIMIZE)
AC_SUBST(MOZ_OPTIMIZE_FLAGS)
AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
+AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
dnl ========================================================
dnl = (Deprecated) generation of debugger info for specific modules
diff --git a/layout/reftests/css-calc/border-radius-1-ref.html b/layout/reftests/css-calc/border-radius-1-ref.html
index e5de63e6c6e..a8463c3f251 100644
--- a/layout/reftests/css-calc/border-radius-1-ref.html
+++ b/layout/reftests/css-calc/border-radius-1-ref.html
@@ -3,10 +3,10 @@
diff --git a/layout/reftests/css-calc/border-radius-1.html b/layout/reftests/css-calc/border-radius-1.html
index 16af05680ac..6726cb50649 100644
--- a/layout/reftests/css-calc/border-radius-1.html
+++ b/layout/reftests/css-calc/border-radius-1.html
@@ -3,20 +3,10 @@
diff --git a/layout/style/test/test_transitions_per_property.html b/layout/style/test/test_transitions_per_property.html
index 1846ba47f7a..dab7bc13f75 100644
--- a/layout/style/test/test_transitions_per_property.html
+++ b/layout/style/test/test_transitions_per_property.html
@@ -553,10 +553,8 @@ function test_radius_transition(prop) {
// FIXME: Test a square for now, since we haven't updated to the spec
// for vertical components being relative to the height.
- // Note: We use powers of two here so the floating-point math comes out
- // nicely.
- div.style.setProperty("width", "256px", "");
- div.style.setProperty("height", "256px", "");
+ div.style.setProperty("width", "200px", "");
+ div.style.setProperty("height", "200px", "");
div.style.setProperty("border", "none", "");
div.style.setProperty("padding", "0", "");
@@ -570,14 +568,14 @@ function test_radius_transition(prop) {
"radius-valued property " + prop + ": interpolation of radius");
check_distance(prop, "3px", "6px", "15px");
div.style.setProperty("-moz-transition-property", "none", "");
- div.style.setProperty(prop, "12.5%", "");
- is(cs.getPropertyValue(prop), "32px",
+ div.style.setProperty(prop, "5%", "");
+ is(cs.getPropertyValue(prop), "10px",
"radius-valued property " + prop + ": computed value before transition");
div.style.setProperty("-moz-transition-property", prop, "");
div.style.setProperty(prop, "25%", "");
- is(cs.getPropertyValue(prop), "40px",
+ is(cs.getPropertyValue(prop), "20px",
"radius-valued property " + prop + ": interpolation of radius");
- check_distance(prop, "12.5%", "15.625%", "25%");
+ check_distance(prop, "5%", "10%", "25%");
div.style.setProperty("-moz-transition-property", "none", "");
div.style.setProperty(prop, "3px 8px", "");
is(cs.getPropertyValue(prop), "3px 8px",
@@ -588,21 +586,21 @@ function test_radius_transition(prop) {
"radius-valued property " + prop + ": interpolation of radius");
check_distance(prop, "3px 8px", "6px 9px", "15px 12px");
div.style.setProperty("-moz-transition-property", "none", "");
- div.style.setProperty(prop, "12.5% 6.25%", "");
- is(cs.getPropertyValue(prop), "32px 16px",
+ div.style.setProperty(prop, "5% 15%", "");
+ is(cs.getPropertyValue(prop), "10px 30px",
"radius-valued property " + prop + ": computed value before transition");
div.style.setProperty("-moz-transition-property", prop, "");
div.style.setProperty(prop, "25%", "");
- is(cs.getPropertyValue(prop), "40px 28px",
+ is(cs.getPropertyValue(prop), "20px 35px",
"radius-valued property " + prop + ": interpolation of radius");
check_distance(prop, "5% 15%", "10% 17.5%", "25%");
div.style.setProperty("-moz-transition-property", "none", "");
- div.style.setProperty(prop, "6.25% 12.5%", "");
- is(cs.getPropertyValue(prop), "16px 32px",
+ div.style.setProperty(prop, "8% 12%", "");
+ is(cs.getPropertyValue(prop), "16px 24px",
"radius-valued property " + prop + ": computed value before transition");
div.style.setProperty("-moz-transition-property", prop, "");
- div.style.setProperty(prop, "64px 16px", "");
- is(cs.getPropertyValue(prop), "28px",
+ div.style.setProperty(prop, "40px 20px", "");
+ is(cs.getPropertyValue(prop), "22px 23px",
"radius-valued property " + prop + ": interpolation of radius with mixed units");
check_distance(prop, "8% 12%", "-moz-calc(6% + 10px) -moz-calc(5px + 9%)",
"40px 20px");
@@ -914,11 +912,9 @@ function test_transform_transition(prop) {
expected_uncomputed: 'translateY(-30%)',
expected: 'matrix(1, 0, 0, 1, 0px, -15px)' },
{ start: 'none', end: 'rotate(90deg) translate(20%, 20%) rotate(-90deg)',
- expected_uncomputed: 'rotate(22.5deg) translate(5%, 5%) rotate(-22.5deg)',
- round_error_ok: true },
+ expected_uncomputed: 'rotate(22.5deg) translate(5%, 5%) rotate(-22.5deg)' },
{ start: 'none', end: 'rotate(-90deg) translate(20%, 20%) rotate(90deg)',
- expected_uncomputed: 'rotate(-22.5deg) translate(5%, 5%) rotate(22.5deg)',
- round_error_ok: true },
+ expected_uncomputed: 'rotate(-22.5deg) translate(5%, 5%) rotate(22.5deg)' },
// test percent translation using matrix decomposition
{ start: 'rotate(45deg) rotate(-45deg)',
end: 'rotate(90deg) translate(20%, 20%) rotate(-90deg)',
diff --git a/xpcom/io/Makefile.in b/xpcom/io/Makefile.in
index 2d2f9567ecf..37c7ed6de61 100644
--- a/xpcom/io/Makefile.in
+++ b/xpcom/io/Makefile.in
@@ -51,7 +51,7 @@ MOZILLA_INTERNAL_API = 1
# work around bug 408258
ifdef GNU_CC
ifneq ($(OS_ARCH), Darwin)
-MODULE_OPTIMIZE_FLAGS = -O3 -fno-strict-aliasing
+MODULE_OPTIMIZE_FLAGS = -Os -fno-strict-aliasing $(MOZ_OPTIMIZE_SIZE_TWEAK)
endif
endif