| 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 suffers from http://llvm.org/pr8927. If so, ask the |
| dnl user to upgrade. |
| |
| AC_DEFUN([MOZ_LLVM_PR8927], |
| [ |
| AC_MSG_CHECKING(for llvm pr8927) |
| ac_have_llvm_pr8927="no" |
| AC_LANG_SAVE |
| AC_LANG_C |
| |
| _SAVE_CFLAGS=$CFLAGS |
| CFLAGS="-O2" |
| AC_TRY_RUN([ |
| struct foobar { |
| int x; |
| }; |
| static const struct foobar* foo() { |
| static const struct foobar d = { 0 }; |
| return &d; |
| } |
| static const struct foobar* bar() { |
| static const struct foobar d = { 0 }; |
| return &d; |
| } |
| __attribute__((noinline)) int zed(const struct foobar *a, |
| const struct foobar *b) { |
| return a == b; |
| } |
| int main() { |
| return zed(foo(), bar()); |
| } |
| ], true, |
| ac_have_llvm_pr8927="yes", |
| true) |
| CFLAGS="$_SAVE_CFLAGS" |
| |
| AC_LANG_RESTORE |
| |
| if test "$ac_have_llvm_pr8927" = "yes"; then |
| AC_MSG_RESULT(yes) |
| echo This compiler would miscompile firefox, plase upgrade. |
| echo see http://developer.mozilla.org/en-US/docs/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites |
| echo for more information. |
| exit 1 |
| else |
| AC_MSG_RESULT(no) |
| fi |
| ]) |