author | Nicholas Nethercote <nnethercote@mozilla.com> |
Wed, 21 Mar 2012 21:46:27 -0700 | |
changeset 89996 | a821cc27e7d396c04f6ded145379afe3a30b86cc |
parent 89799 | 0124795a8cbba6a6b9cc001b28a4e44def14e3f1 |
child 89997 | 7856e3c1e5cd5f7fb5ec00202bf90e25786bcdae |
push id | 7422 |
push user | nnethercote@mozilla.com |
push date | Thu, 22 Mar 2012 05:00:16 +0000 |
treeherder | mozilla-inbound@2e9b82b333dc [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | me |
bugs | 711895 |
milestone | 14.0a1 |
backs out | 0124795a8cbba6a6b9cc001b28a4e44def14e3f1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/build/autoconf/compiler-opts.m4 +++ b/build/autoconf/compiler-opts.m4 @@ -77,54 +77,8 @@ if test "$GNU_CC" -a "$GCC_USE_GNU_LD" - fi rm -rf conftest*]) if test "$GC_SECTIONS_BREAKS_DEBUG_RANGES" = no; then DSO_LDOPTS="$DSO_LDOPTS -Wl,--gc-sections" fi fi ]) - -dnl GCC and clang will fail if given an unknown warning option like -Wfoobar. -dnl But later versions won't fail if given an unknown negated warning option -dnl like -Wno-foobar. So when we are check for support of negated warning -dnl options, we actually test the positive form, but add the negated form to -dnl the flags variable. - -AC_DEFUN([MOZ_C_SUPPORTS_WARNING], -[ - AC_CACHE_CHECK(whether the C compiler supports $1$2, $3, - [ - AC_LANG_SAVE - AC_LANG_C - _SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -W$2" - AC_TRY_COMPILE([], - [return(0);], - $3="yes", - $3="no") - CFLAGS="$_SAVE_CFLAGS" - AC_LANG_RESTORE - ]) - if test "${$3}" = "yes"; then - _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} $1$2" - fi -]) - -AC_DEFUN([MOZ_CXX_SUPPORTS_WARNING], -[ - AC_CACHE_CHECK(whether the C++ compiler supports $1$2, $3, - [ - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - _SAVE_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -W$2" - AC_TRY_COMPILE([], - [return(0);], - $3="yes", - $3="no") - CXXFLAGS="$_SAVE_CXXFLAGS" - AC_LANG_RESTORE - ]) - if test "${$3}" = "yes"; then - _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} $1$2" - fi -])
--- a/configure.in +++ b/configure.in @@ -1691,54 +1691,46 @@ if test "$GNU_CC"; then fi WARNINGS_AS_ERRORS='-Werror -Wno-error=uninitialized' DSO_CFLAGS='' DSO_PIC_CFLAGS='-fPIC' ASFLAGS="$ASFLAGS -fPIC" _MOZ_RTTI_FLAGS_ON=-frtti _MOZ_RTTI_FLAGS_OFF=-fno-rtti - # Turn on GNU-specific warnings: - # -Wall - turn on a lot of warnings - # -pedantic - this is turned on below - # -Wpointer-arith - enabled with -pedantic, but good to have even if not - # -Werror=declaration-after-statement - MSVC doesn't like these - # -Werror=return-type - catches missing returns, zero false positives - # -Wtype-limits - catches overflow bugs, few false positives - # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives - # - _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Werror=declaration-after-statement" - MOZ_C_SUPPORTS_WARNING(-W, error=return-type, ac_c_has_werror_return_type) - MOZ_C_SUPPORTS_WARNING(-W, type-limits, ac_c_has_wtype_limits) - MOZ_C_SUPPORTS_WARNING(-W, empty-body, ac_c_has_wempty_body) - - # Turn off the following warnings that -Wall/-pedantic turn on: - # -Wno-overlength-strings - we exceed the minimum maximum length frequently - # -Wno-unused - lots of violations in third-party code - # - _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-overlength-strings -Wno-unused" - + # Turn on GNU specific features + # -Wall - turn on all warnings + # -pedantic - make compiler warn about non-ANSI stuff, and + # be a little bit stricter + # -Wdeclaration-after-statement - MSVC doesn't like these + # Warnings slamm took out for now (these were giving more noise than help): + # -Wbad-function-cast - warns when casting a function to a new return type + # -Wshadow - removed because it generates more noise than help --pete + _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith -Wdeclaration-after-statement" if test -z "$INTEL_CC" -a -z "$CLANG_CC"; then # Don't use -Wcast-align with ICC or clang case "$CPU_ARCH" in # And don't use it on hppa, ia64, sparc, arm, since it's noisy there hppa | ia64 | sparc | arm) ;; *) _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align" ;; esac fi dnl Turn pedantic on but disable the warnings for long long _PEDANTIC=1 + if test -z "$INTEL_CC"; then + _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W" + fi + _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT' _USE_CPP_INCLUDE_FLAG=1 - elif test "$SOLARIS_SUNPRO_CC"; then DSO_CFLAGS='' if test "$CPU_ARCH" = "sparc"; then # for Sun Studio on Solaris/SPARC DSO_PIC_CFLAGS='-xcode=pic32' else DSO_PIC_CFLAGS='-KPIC' fi @@ -1756,41 +1748,18 @@ else DSO_CFLAGS='' DSO_PIC_CFLAGS='-KPIC' _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT' fi if test "$GNU_CXX"; then # FIXME: Let us build with strict aliasing. bug 414641. CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing" - - # Turn on GNU-specific warnings: - # -Wall - turn on a lot of warnings - # -pedantic - this is turned on below - # -Wpointer-arith - enabled with -pedantic, but good to have even if not - # -Woverloaded-virtual - ??? - # -Werror=return-type - catches missing returns, zero false positives - # -Wtype-limits - catches overflow bugs, few false positives - # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives - # - _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual" - MOZ_CXX_SUPPORTS_WARNING(-W, error=return-type, ac_cxx_has_werror_return_type) - MOZ_CXX_SUPPORTS_WARNING(-W, type-limits, ac_cxx_has_wtype_limits) - MOZ_CXX_SUPPORTS_WARNING(-W, empty-body, ac_cxx_has_wempty_body) - - # Turn off the following warnings that -Wall/-pedantic turn on: - # -Wno-overlength-strings - we exceed the minimum maximum length frequently - # -Wno-ctor-dtor-privacy - ??? - # -Wno-invalid-offsetof - we use offsetof on non-POD types frequently - # -Wno-variadic-macros - ??? - # - _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-overlength-strings -Wno-ctor-dtor-privacy" - MOZ_CXX_SUPPORTS_WARNING(-Wno-, invalid-offsetof, ac_cxx_has_wno_invalid_offsetof) - MOZ_CXX_SUPPORTS_WARNING(-Wno-, variadic-macros, ac_cxx_has_wno_variadic_macros) - + # Turn on GNU specific features + _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor" if test -z "$INTEL_CXX" -a -z "$CLANG_CXX"; then # Don't use -Wcast-align with ICC or clang case "$CPU_ARCH" in # And don't use it on hppa, ia64, sparc, arm, since it's noisy there hppa | ia64 | sparc | arm) ;; *) _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align" @@ -1804,17 +1773,91 @@ if test "$GNU_CXX"; then # Recent clang and gcc support C++11 deleted functions without warnings if # compiling with -std=c++0x or -std=gnu++0x (or c++11 or gnu++11 in very new # versions). We can't use -std=c++0x yet, so gcc's support must remain # unused. But clang's warning can be disabled, so when compiling with clang # we use it to opt out of the warning, enabling (macro-encapsulated) use of # deleted function syntax. if test "$CLANG_CXX"; then _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions" - MOZ_CXX_SUPPORTS_WARNING(-Wno-, extended-offsetof, ac_cxx_has_wno_extended_offsetof) + fi + + AC_CACHE_CHECK(whether the compiler supports -Wno-extended-offsetof, + ac_has_wno_extended_offsetof, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + _SAVE_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -Wno-extended-offsetof" + AC_TRY_COMPILE([$configure_static_assert_macros + #ifndef __has_warning + #define __has_warning(x) 0 + #endif], + [CONFIGURE_STATIC_ASSERT(__has_warning("-Wextended-offsetof"))], + ac_has_wno_extended_offsetof="yes", + ac_has_wno_extended_offsetof="no") + CXXFLAGS="$_SAVE_CXXFLAGS" + AC_LANG_RESTORE + ]) + if test "$ac_has_wno_extended_offsetof" = "yes"; then + _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-extended-offsetof" + fi + + AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof, + ac_has_wno_invalid_offsetof, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + _SAVE_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof" + AC_TRY_COMPILE([], + [return(0);], + ac_has_wno_invalid_offsetof="yes", + ac_has_wno_invalid_offsetof="no") + CXXFLAGS="$_SAVE_CXXFLAGS" + AC_LANG_RESTORE + ]) + if test "$ac_has_wno_invalid_offsetof" = "yes"; then + _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-invalid-offsetof" + fi + + AC_CACHE_CHECK(whether the compiler supports -Wno-variadic-macros, + ac_has_wno_variadic_macros, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + _SAVE_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -Wno-variadic-macros" + AC_TRY_COMPILE([], + [return(0);], + ac_has_wno_variadic_macros="yes", + ac_has_wno_variadic_macros="no") + CXXFLAGS="$_SAVE_CXXFLAGS" + AC_LANG_RESTORE + ]) + if test "$ac_has_wno_variadic_macros" = "yes"; then + _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-variadic-macros" + fi + + AC_CACHE_CHECK(whether the compiler supports -Werror=return-type, + ac_has_werror_return_type, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + _SAVE_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -Werror=return-type" + AC_TRY_COMPILE([], + [return(0);], + ac_has_werror_return_type="yes", + ac_has_werror_return_type="no") + CXXFLAGS="$_SAVE_CXXFLAGS" + AC_LANG_RESTORE + ]) + if test "$ac_has_werror_return_type" = "yes"; then + _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=return-type" fi else _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)' fi dnl gcc can come with its own linker so it is better to use the pass-thru calls dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
--- a/content/smil/nsSMILAnimationFunction.cpp +++ b/content/smil/nsSMILAnimationFunction.cpp @@ -666,17 +666,17 @@ nsSMILAnimationFunction::ScaleSimpleProg return aProgress; PRUint32 numTimes = mKeyTimes.Length(); if (numTimes < 2) return aProgress; PRUint32 i = 0; - for (; i < numTimes - 2 && aProgress >= mKeyTimes[i+1]; ++i) { } + for (; i < numTimes - 2 && aProgress >= mKeyTimes[i+1]; ++i); if (aCalcMode == CALC_DISCRETE) { // discrete calcMode behaviour differs in that each keyTime defines the time // from when the corresponding value is set, and therefore the last value // needn't be 1. So check if we're in the last 'interval', that is, the // space between the final value and 1.0. if (aProgress >= mKeyTimes[i+1]) { NS_ABORT_IF_FALSE(i == numTimes - 2,
--- a/content/smil/nsSMILTimedElement.cpp +++ b/content/smil/nsSMILTimedElement.cpp @@ -1762,17 +1762,17 @@ nsSMILTimedElement::GetNextInterval(cons nsSMILInstanceTime* nsSMILTimedElement::GetNextGreater(const InstanceTimeList& aList, const nsSMILTimeValue& aBase, PRInt32& aPosition) const { nsSMILInstanceTime* result = nsnull; while ((result = GetNextGreaterOrEqual(aList, aBase, aPosition)) && - result->Time() == aBase) { } + result->Time() == aBase); return result; } nsSMILInstanceTime* nsSMILTimedElement::GetNextGreaterOrEqual(const InstanceTimeList& aList, const nsSMILTimeValue& aBase, PRInt32& aPosition) const {
--- a/content/xslt/src/base/txExpandedNameMap.h +++ b/content/xslt/src/base/txExpandedNameMap.h @@ -97,26 +97,28 @@ protected: bool next() { return ++mCurrentPos < mMap.mItems.Length(); } const txExpandedName key() { - NS_ASSERTION(mCurrentPos < mMap.mItems.Length(), + NS_ASSERTION(mCurrentPos >= 0 && + mCurrentPos < mMap.mItems.Length(), "invalid position in txExpandedNameMap::iterator"); return txExpandedName(mMap.mItems[mCurrentPos].mNamespaceID, mMap.mItems[mCurrentPos].mLocalName); } protected: void* itemValue() { - NS_ASSERTION(mCurrentPos < mMap.mItems.Length(), + NS_ASSERTION(mCurrentPos >= 0 && + mCurrentPos < mMap.mItems.Length(), "invalid position in txExpandedNameMap::iterator"); return mMap.mItems[mCurrentPos].mValue; } private: txExpandedNameMap_base& mMap; PRUint32 mCurrentPos; };
--- a/gfx/thebes/gfxFont.h +++ b/gfx/thebes/gfxFont.h @@ -2274,29 +2274,29 @@ public: } bool CanHyphenateBefore(PRUint32 aPos) { NS_ASSERTION(aPos < mCharacterCount, "aPos out of range"); return mCharacterGlyphs[aPos].CanBreakBefore() == CompressedGlyph::FLAG_BREAK_TYPE_HYPHEN; } bool CharIsSpace(PRUint32 aPos) { - NS_ASSERTION(aPos < mCharacterCount, "aPos out of range"); + NS_ASSERTION(0 <= aPos && aPos < mCharacterCount, "aPos out of range"); return mCharacterGlyphs[aPos].CharIsSpace(); } bool CharIsTab(PRUint32 aPos) { - NS_ASSERTION(aPos < mCharacterCount, "aPos out of range"); + NS_ASSERTION(0 <= aPos && aPos < mCharacterCount, "aPos out of range"); return mCharacterGlyphs[aPos].CharIsTab(); } bool CharIsNewline(PRUint32 aPos) { - NS_ASSERTION(aPos < mCharacterCount, "aPos out of range"); + NS_ASSERTION(0 <= aPos && aPos < mCharacterCount, "aPos out of range"); return mCharacterGlyphs[aPos].CharIsNewline(); } bool CharIsLowSurrogate(PRUint32 aPos) { - NS_ASSERTION(aPos < mCharacterCount, "aPos out of range"); + NS_ASSERTION(0 <= aPos && aPos < mCharacterCount, "aPos out of range"); return mCharacterGlyphs[aPos].CharIsLowSurrogate(); } PRUint32 GetLength() { return mCharacterCount; } // All PRUint32 aStart, PRUint32 aLength ranges below are restricted to // grapheme cluster boundaries! All offsets are in terms of the string // passed into MakeTextRun.
deleted file mode 100644 --- a/gfx/ycbcr/QuellGccWarnings.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/gfx/ycbcr/yuv_convert.cpp b/gfx/ycbcr/yuv_convert.cpp ---- a/gfx/ycbcr/yuv_convert.cpp -+++ b/gfx/ycbcr/yuv_convert.cpp -@@ -337,16 +337,17 @@ NS_GFX_(void) ScaleYCbCrToRGB32(const ui - source_dx_uv >> kFractionBits); - } - } - else { - ScaleYUVToRGB32Row_C(y_ptr, u_ptr, v_ptr, - dest_pixel, width, source_dx); - } - #else -+ (void)source_dx_uv; - ScaleYUVToRGB32Row(y_ptr, u_ptr, v_ptr, - dest_pixel, width, source_dx); - #endif - } - } - // MMX used for FastConvertYUVToRGB32Row and FilterRows requires emms. - if (has_mmx) - EMMS(); -diff --git a/gfx/ycbcr/yuv_row.h b/gfx/ycbcr/yuv_row.h ---- a/gfx/ycbcr/yuv_row.h -+++ b/gfx/ycbcr/yuv_row.h -@@ -129,14 +129,14 @@ extern SIMD_ALIGNED(int16 kCoefficientsR - #if defined(ARCH_CPU_X86) && !defined(ARCH_CPU_X86_64) - #if defined(_MSC_VER) - #define EMMS() __asm emms - #pragma warning(disable: 4799) - #else - #define EMMS() asm("emms") - #endif - #else --#define EMMS() -+#define EMMS() ((void)0) - #endif - - } // extern "C" - - #endif // MEDIA_BASE_YUV_ROW_H_
--- a/gfx/ycbcr/README +++ b/gfx/ycbcr/README @@ -20,10 +20,8 @@ convert.patch contains the following cha * Add YCbCr 4:4:4 support * Bug 619178 - Update CPU detection in yuv_convert to new SSE.h interface. * Bug 616778 - Split yuv_convert FilterRows vectorized code into separate files so it can be properly guarded with cpuid() calls. win64.patch: SSE2 optimization for Microsoft Visual C++ x64 version TypeFromSize.patch: Bug 656185 - Add a method to detect YUVType from plane sizes. - -QuellGccWarnings.patch: Bug 711895 - Avoid some GCC compilation warnings.
--- a/gfx/ycbcr/update.sh +++ b/gfx/ycbcr/update.sh @@ -4,9 +4,8 @@ cp $1/media/base/yuv_convert.cc yuv_conv cp $1/media/base/yuv_row.h . cp $1/media/base/yuv_row_table.cc yuv_row_table.cpp cp $1/media/base/yuv_row_posix.cc yuv_row_posix.cpp cp $1/media/base/yuv_row_win.cc yuv_row_win.cpp cp $1/media/base/yuv_row_posix.cc yuv_row_c.cpp patch -p3 <convert.patch patch -p3 <win64.patch patch -p3 <TypeFromSize.patch -patch -p3 <QuellGccWarnings.patch
--- a/gfx/ycbcr/yuv_convert.cpp +++ b/gfx/ycbcr/yuv_convert.cpp @@ -337,17 +337,16 @@ NS_GFX_(void) ScaleYCbCrToRGB32(const ui source_dx_uv >> kFractionBits); } } else { ScaleYUVToRGB32Row_C(y_ptr, u_ptr, v_ptr, dest_pixel, width, source_dx); } #else - (void)source_dx_uv; ScaleYUVToRGB32Row(y_ptr, u_ptr, v_ptr, dest_pixel, width, source_dx); #endif } } // MMX used for FastConvertYUVToRGB32Row and FilterRows requires emms. if (has_mmx) EMMS();
--- a/gfx/ycbcr/yuv_row.h +++ b/gfx/ycbcr/yuv_row.h @@ -129,14 +129,14 @@ extern SIMD_ALIGNED(int16 kCoefficientsR #if defined(ARCH_CPU_X86) && !defined(ARCH_CPU_X86_64) #if defined(_MSC_VER) #define EMMS() __asm emms #pragma warning(disable: 4799) #else #define EMMS() asm("emms") #endif #else -#define EMMS() ((void)0) +#define EMMS() #endif } // extern "C" #endif // MEDIA_BASE_YUV_ROW_H_
--- a/js/jsd/jsd.h +++ b/js/jsd/jsd.h @@ -374,16 +374,20 @@ jsd_SetErrorReporter(JSDContext* j JSD_ErrorReporter reporter, void* callerdata); extern JSBool jsd_GetErrorReporter(JSDContext* jsdc, JSD_ErrorReporter* reporter, void** callerdata); +static JSBool +jsd_DebugErrorHook(JSContext *cx, const char *message, + JSErrorReport *report, void *closure); + /***************************************************************************/ /* Script functions */ extern JSBool jsd_InitScriptManager(JSDContext *jsdc); extern void jsd_DestroyScriptManager(JSDContext* jsdc);
--- a/js/jsd/jsd_high.c +++ b/js/jsd/jsd_high.c @@ -271,20 +271,16 @@ jsd_DebuggerPause(JSDContext* jsdc, JSBo if (forceAllHooksOff || !(jsdc->flags & JSD_COLLECT_PROFILE_DATA)) { JS_SetExecuteHook(jsdc->jsrt, NULL, NULL); JS_SetCallHook(jsdc->jsrt, NULL, NULL); } JS_SetThrowHook(jsdc->jsrt, NULL, NULL); JS_SetDebugErrorHook(jsdc->jsrt, NULL, NULL); } -static JSBool -jsd_DebugErrorHook(JSContext *cx, const char *message, - JSErrorReport *report, void *closure); - void jsd_DebuggerUnpause(JSDContext* jsdc) { JS_SetDebuggerHandler(jsdc->jsrt, jsd_DebuggerHandler, jsdc); JS_SetExecuteHook(jsdc->jsrt, jsd_TopLevelCallHook, jsdc); JS_SetCallHook(jsdc->jsrt, jsd_FunctionCallHook, jsdc); JS_SetThrowHook(jsdc->jsrt, jsd_ThrowHandler, jsdc); JS_SetDebugErrorHook(jsdc->jsrt, jsd_DebugErrorHook, jsdc);
--- a/js/src/build/autoconf/compiler-opts.m4 +++ b/js/src/build/autoconf/compiler-opts.m4 @@ -77,54 +77,8 @@ if test "$GNU_CC" -a "$GCC_USE_GNU_LD" - fi rm -rf conftest*]) if test "$GC_SECTIONS_BREAKS_DEBUG_RANGES" = no; then DSO_LDOPTS="$DSO_LDOPTS -Wl,--gc-sections" fi fi ]) - -dnl GCC and clang will fail if given an unknown warning option like -Wfoobar. -dnl But later versions won't fail if given an unknown negated warning option -dnl like -Wno-foobar. So when we are check for support of negated warning -dnl options, we actually test the positive form, but add the negated form to -dnl the flags variable. - -AC_DEFUN([MOZ_C_SUPPORTS_WARNING], -[ - AC_CACHE_CHECK(whether the C compiler supports $1$2, $3, - [ - AC_LANG_SAVE - AC_LANG_C - _SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -W$2" - AC_TRY_COMPILE([], - [return(0);], - $3="yes", - $3="no") - CFLAGS="$_SAVE_CFLAGS" - AC_LANG_RESTORE - ]) - if test "${$3}" = "yes"; then - _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} $1$2" - fi -]) - -AC_DEFUN([MOZ_CXX_SUPPORTS_WARNING], -[ - AC_CACHE_CHECK(whether the C++ compiler supports $1$2, $3, - [ - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - _SAVE_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -W$2" - AC_TRY_COMPILE([], - [return(0);], - $3="yes", - $3="no") - CXXFLAGS="$_SAVE_CXXFLAGS" - AC_LANG_RESTORE - ]) - if test "${$3}" = "yes"; then - _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} $1$2" - fi -])
--- a/js/src/configure.in +++ b/js/src/configure.in @@ -1616,54 +1616,45 @@ if test "$GNU_CC"; then fi WARNINGS_AS_ERRORS='-Werror -Wno-error=uninitialized' DSO_CFLAGS='' DSO_PIC_CFLAGS='-fPIC' ASFLAGS="$ASFLAGS -fPIC" _MOZ_RTTI_FLAGS_ON=-frtti _MOZ_RTTI_FLAGS_OFF=-fno-rtti - # Turn on GNU-specific warnings: - # -Wall - turn on a lot of warnings - # -pedantic - this is turned on below - # -Wpointer-arith - enabled with -pedantic, but good to have even if not - # -Werror=declaration-after-statement - MSVC doesn't like these - # -Werror=return-type - catches missing returns, zero false positives - # -Wtype-limits - catches overflow bugs, few false positives - # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives - # - _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Werror=declaration-after-statement" - MOZ_C_SUPPORTS_WARNING(-W, error=return-type, ac_c_has_werror_return_type) - MOZ_C_SUPPORTS_WARNING(-W, type-limits, ac_c_has_wtype_limits) - MOZ_C_SUPPORTS_WARNING(-W, empty-body, ac_c_has_wempty_body) - - # Turn off the following warnings that -Wall/-pedantic turn on: - # -Wno-overlength-strings - we exceed the minimum maximum length frequently - # -Wno-unused - lots of violations in third-party code - # - _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-overlength-strings -Wno-unused" - + # Turn on GNU specific features + # -Wall - turn on all warnings + # -pedantic - make compiler warn about non-ANSI stuff, and + # be a little bit stricter + # Warnings slamm took out for now (these were giving more noise than help): + # -Wbad-function-cast - warns when casting a function to a new return type + # -Wshadow - removed because it generates more noise than help --pete + _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith" if test -z "$INTEL_CC" -a -z "$CLANG_CC"; then # Don't use -Wcast-align with ICC or clang case "$CPU_ARCH" in # And don't use it on hppa, ia64, sparc, arm, since it's noisy there hppa | ia64 | sparc | arm) ;; *) _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align" ;; esac fi dnl Turn pedantic on but disable the warnings for long long _PEDANTIC=1 + if test -z "$INTEL_CC"; then + _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W" + fi + _DEFINES_CFLAGS='-include $(DEPTH)/js-confdefs.h -DMOZILLA_CLIENT' _USE_CPP_INCLUDE_FLAG=1 - elif test "$SOLARIS_SUNPRO_CC"; then DSO_CFLAGS='' if test "$CPU_ARCH" = "sparc"; then # for Sun Studio on Solaris/SPARC DSO_PIC_CFLAGS='-xcode=pic32' else DSO_PIC_CFLAGS='-KPIC' fi @@ -1679,40 +1670,18 @@ else fi DSO_CFLAGS='' DSO_PIC_CFLAGS='-KPIC' _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT' fi if test "$GNU_CXX"; then - # Turn on GNU-specific warnings: - # -Wall - turn on a lot of warnings - # -pedantic - this is turned on below - # -Wpointer-arith - enabled with -pedantic, but good to have even if not - # -Woverloaded-virtual - ??? - # -Werror=return-type - catches missing returns, zero false positives - # -Wtype-limits - catches overflow bugs, few false positives - # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives - # - _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual" - MOZ_CXX_SUPPORTS_WARNING(-W, error=return-type, ac_cxx_has_werror_return_type) - MOZ_CXX_SUPPORTS_WARNING(-W, type-limits, ac_cxx_has_wtype_limits) - MOZ_CXX_SUPPORTS_WARNING(-W, empty-body, ac_cxx_has_wempty_body) - - # Turn off the following warnings that -Wall/-pedantic turn on: - # -Wno-overlength-strings - we exceed the minimum maximum length frequently - # -Wno-ctor-dtor-privacy - ??? - # -Wno-invalid-offsetof - we use offsetof on non-POD types frequently - # -Wno-variadic-macros - ??? - # - _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-overlength-strings -Wno-ctor-dtor-privacy" - MOZ_CXX_SUPPORTS_WARNING(-Wno-, invalid-offsetof, ac_cxx_has_wno_invalid_offsetof) - MOZ_CXX_SUPPORTS_WARNING(-Wno-, variadic-macros, ac_cxx_has_wno_variadic_macros) - + # Turn on GNU specific features + _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor" if test -z "$INTEL_CXX" -a -z "$CLANG_CXX"; then # Don't use -Wcast-align with ICC or clang case "$CPU_ARCH" in # And don't use it on hppa, ia64, sparc, arm, since it's noisy there hppa | ia64 | sparc | arm) ;; *) _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align" @@ -1726,17 +1695,91 @@ if test "$GNU_CXX"; then # Recent clang and gcc support C++11 deleted functions without warnings if # compiling with -std=c++0x or -std=gnu++0x (or c++11 or gnu++11 in very new # versions). We can't use -std=c++0x yet, so gcc's support must remain # unused. But clang's warning can be disabled, so when compiling with clang # we use it to opt out of the warning, enabling (macro-encapsulated) use of # deleted function syntax. if test "$CLANG_CXX"; then _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions" - MOZ_CXX_SUPPORTS_WARNING(-Wno-, extended-offsetof, ac_cxx_has_wno_extended_offsetof) + fi + + AC_CACHE_CHECK(whether the compiler supports -Wno-extended-offsetof, + ac_has_wno_extended_offsetof, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + _SAVE_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -Wno-extended-offsetof" + AC_TRY_COMPILE([$configure_static_assert_macros + #ifndef __has_warning + #define __has_warning(x) 0 + #endif], + [CONFIGURE_STATIC_ASSERT(__has_warning("-Wextended-offsetof"))], + ac_has_wno_extended_offsetof="yes", + ac_has_wno_extended_offsetof="no") + CXXFLAGS="$_SAVE_CXXFLAGS" + AC_LANG_RESTORE + ]) + if test "$ac_has_wno_extended_offsetof" = "yes"; then + _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-extended-offsetof" + fi + + AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof, + ac_has_wno_invalid_offsetof, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + _SAVE_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof" + AC_TRY_COMPILE([], + [return(0);], + ac_has_wno_invalid_offsetof="yes", + ac_has_wno_invalid_offsetof="no") + CXXFLAGS="$_SAVE_CXXFLAGS" + AC_LANG_RESTORE + ]) + if test "$ac_has_wno_invalid_offsetof" = "yes"; then + _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-invalid-offsetof" + fi + + AC_CACHE_CHECK(whether the compiler supports -Wno-variadic-macros, + ac_has_wno_variadic_macros, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + _SAVE_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -Wno-variadic-macros" + AC_TRY_COMPILE([], + [return(0);], + ac_has_wno_variadic_macros="yes", + ac_has_wno_variadic_macros="no") + CXXFLAGS="$_SAVE_CXXFLAGS" + AC_LANG_RESTORE + ]) + if test "$ac_has_wno_variadic_macros" = "yes"; then + _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-variadic-macros" + fi + + AC_CACHE_CHECK(whether the compiler supports -Werror=return-type, + ac_has_werror_return_type, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + _SAVE_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -Werror=return-type" + AC_TRY_COMPILE([], + [return(0);], + ac_has_werror_return_type="yes", + ac_has_werror_return_type="no") + CXXFLAGS="$_SAVE_CXXFLAGS" + AC_LANG_RESTORE + ]) + if test "$ac_has_werror_return_type" = "yes"; then + _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=return-type" fi else _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_JS_CONFDEFS_H_ $(ACDEFINES)' fi dnl gcc can come with its own linker so it is better to use the pass-thru calls dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
--- a/js/src/jsarray.cpp +++ b/js/src/jsarray.cpp @@ -399,33 +399,20 @@ DoGetElement(JSContext *cx, JSObject *ob *hole = !present; if (*hole) vp->setUndefined(); return true; } template<typename IndexType> -static void -AssertGreaterThanZero(IndexType index) -{ - JS_ASSERT(index >= 0); -} - -template<> -void -AssertGreaterThanZero(uint32_t index) -{ -} - -template<typename IndexType> static JSBool GetElement(JSContext *cx, JSObject *obj, IndexType index, JSBool *hole, Value *vp) { - AssertGreaterThanZero(index); + JS_ASSERT(index >= 0); if (obj->isDenseArray() && index < obj->getDenseArrayInitializedLength() && !(*vp = obj->getDenseArrayElement(uint32_t(index))).isMagic(JS_ARRAY_HOLE)) { *hole = JS_FALSE; return JS_TRUE; } if (obj->isArguments()) { if (obj->asArguments().getElement(uint32_t(index), vp)) { *hole = JS_FALSE;
--- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -1413,17 +1413,17 @@ JSCompartment::setGCLastBytes(size_t las gcTriggerBytes = ComputeTriggerBytes(lastBytes, rt->gcMaxBytes, gckind); gcTriggerMallocAndFreeBytes = ComputeTriggerBytes(lastMallocBytes, SIZE_MAX, gckind); } void JSCompartment::reduceGCTriggerBytes(size_t amount) { JS_ASSERT(amount > 0); - JS_ASSERT(gcTriggerBytes >= amount); + JS_ASSERT(gcTriggerBytes - amount >= 0); if (gcTriggerBytes - amount < GC_ALLOCATION_THRESHOLD * GC_HEAP_GROWTH_FACTOR) return; gcTriggerBytes -= amount; } namespace js { namespace gc {
--- a/js/src/jstypedarray.cpp +++ b/js/src/jstypedarray.cpp @@ -1770,17 +1770,19 @@ class TypedArrayTemplate static void copyIndexToValue(JSContext *cx, JSObject *tarray, uint32_t index, Value *vp); static JSObject * createSubarray(JSContext *cx, JSObject *tarray, uint32_t begin, uint32_t end) { JS_ASSERT(tarray); + JS_ASSERT(0 <= begin); JS_ASSERT(begin <= getLength(tarray)); + JS_ASSERT(0 <= end); JS_ASSERT(end <= getLength(tarray)); JSObject *bufobj = getBuffer(tarray); JS_ASSERT(bufobj); JS_ASSERT(begin <= end); uint32_t length = end - begin;
--- a/layout/generic/nsHTMLReflowMetrics.h +++ b/layout/generic/nsHTMLReflowMetrics.h @@ -66,21 +66,21 @@ enum nsOverflowType { eVisualOverflow, e for (nsOverflowType var_ = nsOverflowType(0); var_ < 2; \ var_ = nsOverflowType(var_ + 1)) struct nsOverflowAreas { private: nsRect mRects[2]; public: nsRect& Overflow(size_t aIndex) { - NS_ASSERTION(aIndex < 2, "index out of range"); + NS_ASSERTION(0 <= aIndex && aIndex < 2, "index out of range"); return mRects[aIndex]; } const nsRect& Overflow(size_t aIndex) const { - NS_ASSERTION(aIndex < 2, "index out of range"); + NS_ASSERTION(0 <= aIndex && aIndex < 2, "index out of range"); return mRects[aIndex]; } nsRect& VisualOverflow() { return mRects[eVisualOverflow]; } const nsRect& VisualOverflow() const { return mRects[eVisualOverflow]; } nsRect& ScrollableOverflow() { return mRects[eScrollableOverflow]; } const nsRect& ScrollableOverflow() const { return mRects[eScrollableOverflow]; }
--- a/layout/svg/base/src/nsSVGOuterSVGFrame.h +++ b/layout/svg/base/src/nsSVGOuterSVGFrame.h @@ -171,17 +171,17 @@ protected: // A hash-set containing our nsSVGForeignObjectFrame descendants. Note we use // a hash-set to avoid the O(N^2) behavior we'd get tearing down an SVG frame // subtree if we were to use a list (see bug 381285 comment 20). nsTHashtable<nsVoidPtrHashKey> mForeignObjectHash; nsAutoPtr<gfxMatrix> mCanvasTM; - PRInt32 mRedrawSuspendCount; + PRUint32 mRedrawSuspendCount; float mFullZoom; bool mViewportInitialized; #ifdef XP_MACOSX bool mEnableBitmapFallback; #endif bool mIsRootContent; };
--- a/other-licenses/android/linker.c +++ b/other-licenses/android/linker.c @@ -1920,17 +1920,16 @@ static unsigned int plt_reloc(soinfo *si return *(unsigned int *)(si->base + si->plt_rel[num].r_offset); } #ifdef ANDROID_SH_LINKER if (si->plt_rela) { reloc_library_a(si, &si->plt_rela[num], 1); return *(unsigned int *)(si->base + si->plt_rela[num].r_offset); } #endif - return 0; // NOT REACHED } /* As this function is only referenced from assembly, we need to tell the * compiler not to throw it away */ static unsigned int plt_reloc(soinfo *si, unsigned int num) __attribute__((used)); #ifdef ANDROID_ARM_LINKER /* On ARM, the runtime symbol resolution function is called with