Permalink
Browse files

Bug 788276 - Properly check for broken (deprecated) compilers. r=gps.

Check for old gcc versions.
  • Loading branch information...
1 parent 30781c7 commit e0b6f615140fbd57589a43bf400beef160f88882 Rafael Ávila de Espíndola committed Sep 12, 2012
Showing with 78 additions and 0 deletions.
  1. +1 −0 aclocal.m4
  2. +37 −0 build/autoconf/gcc-pr39608.m4
  3. +1 −0 configure.in
  4. +1 −0 js/src/aclocal.m4
  5. +37 −0 js/src/build/autoconf/gcc-pr39608.m4
  6. +1 −0 js/src/configure.in
View
1 aclocal.m4
@@ -17,6 +17,7 @@ builtin(include, build/autoconf/mozcommonheader.m4)dnl
builtin(include, build/autoconf/acwinpaths.m4)dnl
builtin(include, build/autoconf/lto.m4)dnl
builtin(include, build/autoconf/gcc-pr49911.m4)dnl
+builtin(include, build/autoconf/gcc-pr39608.m4)dnl
builtin(include, build/autoconf/llvm-pr8927.m4)dnl
builtin(include, build/autoconf/frameptr.m4)dnl
builtin(include, build/autoconf/compiler-opts.m4)dnl
View
37 build/autoconf/gcc-pr39608.m4
@@ -0,0 +1,37 @@
+dnl This Source Code Form is subject to the terms of the Mozilla Public
+dnl License, v. 2.0. If a copy of the MPL was not distributed with this
+dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+dnl Check if the compiler is gcc and has pr39608. If so
+dnl disable vrp.
+
+AC_DEFUN([MOZ_GCC_PR39608],
+[
+AC_MSG_CHECKING(for gcc pr39608)
+ac_have_gcc_pr39608="yes"
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+
+AC_TRY_COMPILE([
+typedef void (*FuncType)();
+template<FuncType Impl>
+void f();
+template<typename T> class C {
+ typedef C<T> ThisC;
+ template<int g()>
+ static void h() {
+ f<ThisC::h<g> >();
+ }
+};
+], true,
+ ac_have_gcc_pr39608="no",
+ true)
+
+AC_LANG_RESTORE
+
+AC_MSG_RESULT($ac_have_gcc_pr39608)
+if test "$ac_have_gcc_pr39608" = "yes"; then
+ echo This compiler would fail to build firefox, plase upgrade.
+ exit 1
+fi
+])
View
1 configure.in
@@ -2944,6 +2944,7 @@ AC_SUBST(WRAP_SYSTEM_INCLUDES)
AC_SUBST(VISIBILITY_FLAGS)
MOZ_GCC_PR49911
+MOZ_GCC_PR39608
MOZ_LLVM_PR8927
dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
View
1 js/src/aclocal.m4
@@ -16,6 +16,7 @@ builtin(include, build/autoconf/mozcommonheader.m4)dnl
builtin(include, build/autoconf/acwinpaths.m4)dnl
builtin(include, build/autoconf/lto.m4)dnl
builtin(include, build/autoconf/gcc-pr49911.m4)dnl
+builtin(include, build/autoconf/gcc-pr39608.m4)dnl
builtin(include, build/autoconf/llvm-pr8927.m4)dnl
builtin(include, build/autoconf/frameptr.m4)dnl
builtin(include, build/autoconf/compiler-opts.m4)dnl
View
37 js/src/build/autoconf/gcc-pr39608.m4
@@ -0,0 +1,37 @@
+dnl This Source Code Form is subject to the terms of the Mozilla Public
+dnl License, v. 2.0. If a copy of the MPL was not distributed with this
+dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+dnl Check if the compiler is gcc and has pr39608. If so
+dnl disable vrp.
+
+AC_DEFUN([MOZ_GCC_PR39608],
+[
+AC_MSG_CHECKING(for gcc pr39608)
+ac_have_gcc_pr39608="yes"
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+
+AC_TRY_COMPILE([
+typedef void (*FuncType)();
+template<FuncType Impl>
+void f();
+template<typename T> class C {
+ typedef C<T> ThisC;
+ template<int g()>
+ static void h() {
+ f<ThisC::h<g> >();
+ }
+};
+], true,
+ ac_have_gcc_pr39608="no",
+ true)
+
+AC_LANG_RESTORE
+
+AC_MSG_RESULT($ac_have_gcc_pr39608)
+if test "$ac_have_gcc_pr39608" = "yes"; then
+ echo This compiler would fail to build firefox, plase upgrade.
+ exit 1
+fi
+])
View
1 js/src/configure.in
@@ -2527,6 +2527,7 @@ AC_SUBST(WRAP_SYSTEM_INCLUDES)
AC_SUBST(VISIBILITY_FLAGS)
MOZ_GCC_PR49911
+MOZ_GCC_PR39608
MOZ_LLVM_PR8927
dnl Checks for header files.

0 comments on commit e0b6f61

Please sign in to comment.