| Index: tools/clang/scripts/update.sh | 
| diff --git a/tools/clang/scripts/update.sh b/tools/clang/scripts/update.sh | 
| index 3a70e74c1b3ffafa2993bfc6b8c2675489f199ca..386e8cb651a0cd68782d0e7b29d045d6c8138481 100755 | 
| --- a/tools/clang/scripts/update.sh | 
| +++ b/tools/clang/scripts/update.sh | 
| @@ -8,15 +8,17 @@ | 
| # Do NOT CHANGE this if you don't know what you're doing -- see | 
| # https://code.google.com/p/chromium/wiki/UpdatingClang | 
| # Reverting problematic clang rolls is safe, though. | 
| -CLANG_REVISION=198389 | 
| +CLANG_REVISION=202554 | 
|  | 
| THIS_DIR="$(dirname "${0}")" | 
| LLVM_DIR="${THIS_DIR}/../../../third_party/llvm" | 
| LLVM_BUILD_DIR="${LLVM_DIR}/../llvm-build" | 
| LLVM_BOOTSTRAP_DIR="${LLVM_DIR}/../llvm-bootstrap" | 
| +LLVM_BOOTSTRAP_INSTALL_DIR="${LLVM_DIR}/../llvm-bootstrap-install" | 
| CLANG_DIR="${LLVM_DIR}/tools/clang" | 
| CLANG_TOOLS_EXTRA_DIR="${CLANG_DIR}/tools/extra" | 
| COMPILER_RT_DIR="${LLVM_DIR}/projects/compiler-rt" | 
| +LIBCXX_DIR="${LLVM_DIR}/projects/libcxx" | 
| ANDROID_NDK_DIR="${LLVM_DIR}/../android_tools/ndk" | 
| STAMP_FILE="${LLVM_BUILD_DIR}/cr_build_revision" | 
|  | 
| @@ -259,6 +261,673 @@ echo Getting compiler-rt r"${CLANG_REVISION}" in "${COMPILER_RT_DIR}" | 
| svn co --force "${LLVM_REPO_URL}/compiler-rt/trunk@${CLANG_REVISION}" \ | 
| "${COMPILER_RT_DIR}" | 
|  | 
| +# clang needs a libc++ checkout, else -stdlib=libc++ won't find includes | 
| +# (i.e. this is needed for bootstrap builds). | 
| +if [ "${OS}" = "Darwin" ]; then | 
| +  echo Getting libc++ r"${CLANG_REVISION}" in "${LIBCXX_DIR}" | 
| +  svn co --force "${LLVM_REPO_URL}/libcxx/trunk@${CLANG_REVISION}" \ | 
| +                 "${LIBCXX_DIR}" | 
| +fi | 
| + | 
| +# Apply patch for test failing with --disable-pthreads (llvm.org/PR11974) | 
| +cd "${CLANG_DIR}" | 
| +svn revert test/Index/crash-recovery-modules.m | 
| +cat << 'EOF' | | 
| +--- third_party/llvm/tools/clang/test/Index/crash-recovery-modules.m	(revision 202554) | 
| ++++ third_party/llvm/tools/clang/test/Index/crash-recovery-modules.m	(working copy) | 
| +@@ -12,6 +12,8 @@ | 
| + | 
| + // REQUIRES: crash-recovery | 
| + // REQUIRES: shell | 
| ++// XFAIL: * | 
| ++//    (PR11974) | 
| + | 
| + @import Crash; | 
| +EOF | 
| +patch -p4 | 
| +cd - | 
| + | 
| +# Temporary patches to make build on android work. | 
| +# Merge LLVM r202793, r203601 | 
| +cd "${COMPILER_RT_DIR}" | 
| +svn revert lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc | 
| +svn revert make/platform/clang_linux.mk | 
| +cat << 'EOF' | | 
| +Index: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc | 
| +=================================================================== | 
| +--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc (original) | 
| ++++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc Tue Mar 11 15:23:59 2014 | 
| +@@ -32,18 +32,10 @@ | 
| + // C++ demangling function, as required by Itanium C++ ABI. This is weak, | 
| + // because we do not require a C++ ABI library to be linked to a program | 
| + // using sanitizers; if it's not present, we'll just use the mangled name. | 
| +-// | 
| +-// On Android, this is not weak, because we are using shared runtime library | 
| +-// AND static libstdc++, and there is no good way to conditionally export | 
| +-// __cxa_demangle. By making this a non-weak symbol, we statically link | 
| +-// __cxa_demangle into ASan runtime library. | 
| + namespace __cxxabiv1 { | 
| +-  extern "C" | 
| +-#if !SANITIZER_ANDROID | 
| +-  SANITIZER_WEAK_ATTRIBUTE | 
| +-#endif | 
| +-  char *__cxa_demangle(const char *mangled, char *buffer, size_t *length, | 
| +-                       int *status); | 
| ++  extern "C" SANITIZER_WEAK_ATTRIBUTE | 
| ++  char *__cxa_demangle(const char *mangled, char *buffer, | 
| ++                                  size_t *length, int *status); | 
| + } | 
| + | 
| + namespace __sanitizer { | 
| +@@ -55,7 +47,7 @@ static const char *DemangleCXXABI(const | 
| +   // own demangler (libc++abi's implementation could be adapted so that | 
| +   // it does not allocate). For now, we just call it anyway, and we leak | 
| +   // the returned value. | 
| +-  if (SANITIZER_ANDROID || &__cxxabiv1::__cxa_demangle) | 
| ++  if (__cxxabiv1::__cxa_demangle) | 
| +     if (const char *demangled_name = | 
| +           __cxxabiv1::__cxa_demangle(name, 0, 0, 0)) | 
| +       return demangled_name; | 
| + | 
| +Index: compiler-rt/trunk/make/platform/clang_linux.mk | 
| +=================================================================== | 
| +--- compiler-rt/trunk/make/platform/clang_linux.mk (original) | 
| ++++ compiler-rt/trunk/make/platform/clang_linux.mk Tue Mar  4 01:17:38 2014 | 
| +@@ -110,9 +110,10 @@ ANDROID_COMMON_FLAGS := -target arm-linu | 
| + 	--sysroot=$(LLVM_ANDROID_TOOLCHAIN_DIR)/sysroot \ | 
| + 	-B$(LLVM_ANDROID_TOOLCHAIN_DIR) | 
| + CFLAGS.asan-arm-android := $(CFLAGS) -fPIC -fno-builtin \ | 
| +-	$(ANDROID_COMMON_FLAGS) -fno-rtti | 
| ++	$(ANDROID_COMMON_FLAGS) -fno-rtti \ | 
| ++	-I$(ProjSrcRoot)/third_party/android/include | 
| + LDFLAGS.asan-arm-android := $(LDFLAGS) $(ANDROID_COMMON_FLAGS) -ldl -lm -llog \ | 
| +-	-Wl,-soname=libclang_rt.asan-arm-android.so -Wl,-z,defs | 
| ++	-lstdc++ -Wl,-soname=libclang_rt.asan-arm-android.so -Wl,-z,defs | 
| + | 
| + # Use our stub SDK as the sysroot to support more portable building. For now we | 
| + # just do this for the core module, because the stub SDK doesn't have | 
| +EOF | 
| +patch -p2 | 
| +cd - | 
| + | 
| +# Merge LLVM r203635 | 
| +cd "${LLVM_DIR}" | 
| +svn revert lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp | 
| +svn revert test/CodeGen/ARM/debug-frame-large-stack.ll | 
| +svn revert test/CodeGen/ARM/debug-frame-vararg.ll | 
| +svn revert test/CodeGen/ARM/debug-frame.ll | 
| +cat << 'EOF' | | 
| +Index: lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp | 
| +=================================================================== | 
| +--- lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp | 
| ++++ lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp | 
| +@@ -54,4 +54,7 @@ | 
| +   UseParensForSymbolVariant = true; | 
| + | 
| +   UseIntegratedAssembler = true; | 
| ++ | 
| ++  // gas doesn't handle VFP register names in cfi directives. | 
| ++  DwarfRegNumForCFI = true; | 
| + } | 
| +Index: test/CodeGen/ARM/debug-frame-large-stack.ll | 
| +=================================================================== | 
| +--- test/CodeGen/ARM/debug-frame-large-stack.ll | 
| ++++ test/CodeGen/ARM/debug-frame-large-stack.ll | 
| +@@ -42,8 +42,8 @@ | 
| + ; CHECK-ARM: .cfi_startproc | 
| + ; CHECK-ARM: push    {r4, r5} | 
| + ; CHECK-ARM: .cfi_def_cfa_offset 8 | 
| +-; CHECK-ARM: .cfi_offset r5, -4 | 
| +-; CHECK-ARM: .cfi_offset r4, -8 | 
| ++; CHECK-ARM: .cfi_offset 5, -4 | 
| ++; CHECK-ARM: .cfi_offset 4, -8 | 
| + ; CHECK-ARM: sub    sp, sp, #72 | 
| + ; CHECK-ARM: sub    sp, sp, #4096 | 
| + ; CHECK-ARM: .cfi_def_cfa_offset 4176 | 
| +@@ -54,7 +54,7 @@ | 
| + ; CHECK-ARM-FP_ELIM: push    {r4, r5} | 
| + ; CHECK-ARM-FP_ELIM: .cfi_def_cfa_offset 8 | 
| + ; CHECK-ARM-FP_ELIM: .cfi_offset 54, -4 | 
| +-; CHECK-ARM-FP_ELIM: .cfi_offset r4, -8 | 
| ++; CHECK-ARM-FP_ELIM: .cfi_offset 4, -8 | 
| + ; CHECK-ARM-FP_ELIM: sub    sp, sp, #72 | 
| + ; CHECK-ARM-FP_ELIM: sub    sp, sp, #4096 | 
| + ; CHECK-ARM-FP_ELIM: .cfi_def_cfa_offset 4176 | 
| +@@ -73,11 +73,11 @@ | 
| + ; CHECK-ARM: .cfi_startproc | 
| + ; CHECK-ARM: push    {r4, r5, r11} | 
| + ; CHECK-ARM: .cfi_def_cfa_offset 12 | 
| +-; CHECK-ARM: .cfi_offset r11, -4 | 
| +-; CHECK-ARM: .cfi_offset r5, -8 | 
| +-; CHECK-ARM: .cfi_offset r4, -12 | 
| ++; CHECK-ARM: .cfi_offset 11, -4 | 
| ++; CHECK-ARM: .cfi_offset 5, -8 | 
| ++; CHECK-ARM: .cfi_offset 4, -12 | 
| + ; CHECK-ARM: add    r11, sp, #8 | 
| +-; CHECK-ARM: .cfi_def_cfa r11, 4 | 
| ++; CHECK-ARM: .cfi_def_cfa 11, 4 | 
| + ; CHECK-ARM: sub    sp, sp, #20 | 
| + ; CHECK-ARM: sub    sp, sp, #805306368 | 
| + ; CHECK-ARM: bic    sp, sp, #15 | 
| +@@ -87,11 +87,11 @@ | 
| + ; CHECK-ARM-FP-ELIM: .cfi_startproc | 
| + ; CHECK-ARM-FP-ELIM: push    {r4, r5, r11} | 
| + ; CHECK-ARM-FP-ELIM: .cfi_def_cfa_offset 12 | 
| +-; CHECK-ARM-FP-ELIM: .cfi_offset r11, -4 | 
| +-; CHECK-ARM-FP-ELIM: .cfi_offset r5, -8 | 
| +-; CHECK-ARM-FP-ELIM: .cfi_offset r4, -12 | 
| ++; CHECK-ARM-FP-ELIM: .cfi_offset 11, -4 | 
| ++; CHECK-ARM-FP-ELIM: .cfi_offset 5, -8 | 
| ++; CHECK-ARM-FP-ELIM: .cfi_offset 4, -12 | 
| + ; CHECK-ARM-FP-ELIM: add    r11, sp, #8 | 
| +-; CHECK-ARM-FP-ELIM: .cfi_def_cfa r11, 4 | 
| ++; CHECK-ARM-FP-ELIM: .cfi_def_cfa 11, 4 | 
| + ; CHECK-ARM-FP-ELIM: sub    sp, sp, #20 | 
| + ; CHECK-ARM-FP-ELIM: sub    sp, sp, #805306368 | 
| + ; CHECK-ARM-FP-ELIM: bic    sp, sp, #15 | 
| +Index: test/CodeGen/ARM/debug-frame-vararg.ll | 
| +=================================================================== | 
| +--- test/CodeGen/ARM/debug-frame-vararg.ll | 
| ++++ test/CodeGen/ARM/debug-frame-vararg.ll | 
| +@@ -66,8 +66,8 @@ | 
| + ; CHECK-FP: .cfi_def_cfa_offset 16 | 
| + ; CHECK-FP: push   {r4, lr} | 
| + ; CHECK-FP: .cfi_def_cfa_offset 24 | 
| +-; CHECK-FP: .cfi_offset lr, -20 | 
| +-; CHECK-FP: .cfi_offset r4, -24 | 
| ++; CHECK-FP: .cfi_offset 14, -20 | 
| ++; CHECK-FP: .cfi_offset 4, -24 | 
| + ; CHECK-FP: sub    sp, sp, #8 | 
| + ; CHECK-FP: .cfi_def_cfa_offset 32 | 
| + | 
| +@@ -77,22 +77,22 @@ | 
| + ; CHECK-FP-ELIM: .cfi_def_cfa_offset 16 | 
| + ; CHECK-FP-ELIM: push   {r4, r11, lr} | 
| + ; CHECK-FP-ELIM: .cfi_def_cfa_offset 28 | 
| +-; CHECK-FP-ELIM: .cfi_offset lr, -20 | 
| +-; CHECK-FP-ELIM: .cfi_offset r11, -24 | 
| +-; CHECK-FP-ELIM: .cfi_offset r4, -28 | 
| ++; CHECK-FP-ELIM: .cfi_offset 14, -20 | 
| ++; CHECK-FP-ELIM: .cfi_offset 11, -24 | 
| ++; CHECK-FP-ELIM: .cfi_offset 4, -28 | 
| + ; CHECK-FP-ELIM: add    r11, sp, #4 | 
| +-; CHECK-FP-ELIM: .cfi_def_cfa r11, 24 | 
| ++; CHECK-FP-ELIM: .cfi_def_cfa 11, 24 | 
| + | 
| + ; CHECK-THUMB-FP-LABEL: sum | 
| + ; CHECK-THUMB-FP: .cfi_startproc | 
| + ; CHECK-THUMB-FP: sub    sp, #16 | 
| + ; CHECK-THUMB-FP: .cfi_def_cfa_offset 16 | 
| + ; CHECK-THUMB-FP: push   {r4, r5, r7, lr} | 
| + ; CHECK-THUMB-FP: .cfi_def_cfa_offset 32 | 
| +-; CHECK-THUMB-FP: .cfi_offset lr, -20 | 
| +-; CHECK-THUMB-FP: .cfi_offset r7, -24 | 
| +-; CHECK-THUMB-FP: .cfi_offset r5, -28 | 
| +-; CHECK-THUMB-FP: .cfi_offset r4, -32 | 
| ++; CHECK-THUMB-FP: .cfi_offset 14, -20 | 
| ++; CHECK-THUMB-FP: .cfi_offset 7, -24 | 
| ++; CHECK-THUMB-FP: .cfi_offset 5, -28 | 
| ++; CHECK-THUMB-FP: .cfi_offset 4, -32 | 
| + ; CHECK-THUMB-FP: sub    sp, #8 | 
| + ; CHECK-THUMB-FP: .cfi_def_cfa_offset 40 | 
| + | 
| +@@ -102,12 +102,12 @@ | 
| + ; CHECK-THUMB-FP-ELIM: .cfi_def_cfa_offset 16 | 
| + ; CHECK-THUMB-FP-ELIM: push   {r4, r5, r7, lr} | 
| + ; CHECK-THUMB-FP-ELIM: .cfi_def_cfa_offset 32 | 
| +-; CHECK-THUMB-FP-ELIM: .cfi_offset lr, -20 | 
| +-; CHECK-THUMB-FP-ELIM: .cfi_offset r7, -24 | 
| +-; CHECK-THUMB-FP-ELIM: .cfi_offset r5, -28 | 
| +-; CHECK-THUMB-FP-ELIM: .cfi_offset r4, -32 | 
| ++; CHECK-THUMB-FP-ELIM: .cfi_offset 14, -20 | 
| ++; CHECK-THUMB-FP-ELIM: .cfi_offset 7, -24 | 
| ++; CHECK-THUMB-FP-ELIM: .cfi_offset 5, -28 | 
| ++; CHECK-THUMB-FP-ELIM: .cfi_offset 4, -32 | 
| + ; CHECK-THUMB-FP-ELIM: add    r7, sp, #8 | 
| +-; CHECK-THUMB-FP-ELIM: .cfi_def_cfa r7, 24 | 
| ++; CHECK-THUMB-FP-ELIM: .cfi_def_cfa 7, 24 | 
| + | 
| + define i32 @sum(i32 %count, ...) { | 
| + entry: | 
| +Index: test/CodeGen/ARM/debug-frame.ll | 
| +=================================================================== | 
| +--- test/CodeGen/ARM/debug-frame.ll | 
| ++++ test/CodeGen/ARM/debug-frame.ll | 
| +@@ -163,131 +163,131 @@ | 
| + ; CHECK-FP:   .cfi_startproc | 
| + ; CHECK-FP:   push   {r4, r5, r6, r7, r8, r9, r10, r11, lr} | 
| + ; CHECK-FP:   .cfi_def_cfa_offset 36 | 
| +-; CHECK-FP:   .cfi_offset lr, -4 | 
| +-; CHECK-FP:   .cfi_offset r11, -8 | 
| +-; CHECK-FP:   .cfi_offset r10, -12 | 
| +-; CHECK-FP:   .cfi_offset r9, -16 | 
| +-; CHECK-FP:   .cfi_offset r8, -20 | 
| +-; CHECK-FP:   .cfi_offset r7, -24 | 
| +-; CHECK-FP:   .cfi_offset r6, -28 | 
| +-; CHECK-FP:   .cfi_offset r5, -32 | 
| +-; CHECK-FP:   .cfi_offset r4, -36 | 
| ++; CHECK-FP:   .cfi_offset 14, -4 | 
| ++; CHECK-FP:   .cfi_offset 11, -8 | 
| ++; CHECK-FP:   .cfi_offset 10, -12 | 
| ++; CHECK-FP:   .cfi_offset 9, -16 | 
| ++; CHECK-FP:   .cfi_offset 8, -20 | 
| ++; CHECK-FP:   .cfi_offset 7, -24 | 
| ++; CHECK-FP:   .cfi_offset 6, -28 | 
| ++; CHECK-FP:   .cfi_offset 5, -32 | 
| ++; CHECK-FP:   .cfi_offset 4, -36 | 
| + ; CHECK-FP:   add    r11, sp, #28 | 
| +-; CHECK-FP:   .cfi_def_cfa r11, 8 | 
| ++; CHECK-FP:   .cfi_def_cfa 11, 8 | 
| + ; CHECK-FP:   sub    sp, sp, #28 | 
| + ; CHECK-FP:   .cfi_endproc | 
| + | 
| + ; CHECK-FP-ELIM-LABEL: _Z4testiiiiiddddd: | 
| + ; CHECK-FP-ELIM:   .cfi_startproc | 
| + ; CHECK-FP-ELIM:   push  {r4, r5, r6, r7, r8, r9, r10, r11, lr} | 
| + ; CHECK-FP-ELIM:   .cfi_def_cfa_offset 36 | 
| +-; CHECK-FP-ELIM:   .cfi_offset lr, -4 | 
| +-; CHECK-FP-ELIM:   .cfi_offset r11, -8 | 
| +-; CHECK-FP-ELIM:   .cfi_offset r10, -12 | 
| +-; CHECK-FP-ELIM:   .cfi_offset r9, -16 | 
| +-; CHECK-FP-ELIM:   .cfi_offset r8, -20 | 
| +-; CHECK-FP-ELIM:   .cfi_offset r7, -24 | 
| +-; CHECK-FP-ELIM:   .cfi_offset r6, -28 | 
| +-; CHECK-FP-ELIM:   .cfi_offset r5, -32 | 
| +-; CHECK-FP-ELIM:   .cfi_offset r4, -36 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 14, -4 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 11, -8 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 10, -12 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 9, -16 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 8, -20 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 7, -24 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 6, -28 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 5, -32 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 4, -36 | 
| + ; CHECK-FP-ELIM:   sub   sp, sp, #28 | 
| + ; CHECK-FP-ELIM:   .cfi_def_cfa_offset 64 | 
| + ; CHECK-FP-ELIM:   .cfi_endproc | 
| + | 
| + ; CHECK-V7-FP-LABEL: _Z4testiiiiiddddd: | 
| + ; CHECK-V7-FP:   .cfi_startproc | 
| + ; CHECK-V7-FP:   push   {r4, r11, lr} | 
| + ; CHECK-V7-FP:   .cfi_def_cfa_offset 12 | 
| +-; CHECK-V7-FP:   .cfi_offset lr, -4 | 
| +-; CHECK-V7-FP:   .cfi_offset r11, -8 | 
| +-; CHECK-V7-FP:   .cfi_offset r4, -12 | 
| ++; CHECK-V7-FP:   .cfi_offset 14, -4 | 
| ++; CHECK-V7-FP:   .cfi_offset 11, -8 | 
| ++; CHECK-V7-FP:   .cfi_offset 4, -12 | 
| + ; CHECK-V7-FP:   add    r11, sp, #4 | 
| +-; CHECK-V7-FP:   .cfi_def_cfa r11, 8 | 
| ++; CHECK-V7-FP:   .cfi_def_cfa 11, 8 | 
| + ; CHECK-V7-FP:   vpush  {d8, d9, d10, d11, d12} | 
| +-; CHECK-V7-FP:   .cfi_offset d12, -24 | 
| +-; CHECK-V7-FP:   .cfi_offset d11, -32 | 
| +-; CHECK-V7-FP:   .cfi_offset d10, -40 | 
| +-; CHECK-V7-FP:   .cfi_offset d9, -48 | 
| +-; CHECK-V7-FP:   .cfi_offset d8, -56 | 
| ++; CHECK-V7-FP:   .cfi_offset 268, -24 | 
| ++; CHECK-V7-FP:   .cfi_offset 267, -32 | 
| ++; CHECK-V7-FP:   .cfi_offset 266, -40 | 
| ++; CHECK-V7-FP:   .cfi_offset 265, -48 | 
| ++; CHECK-V7-FP:   .cfi_offset 264, -56 | 
| + ; CHECK-V7-FP:   sub    sp, sp, #28 | 
| + ; CHECK-V7-FP:   .cfi_endproc | 
| + | 
| + ; CHECK-V7-FP-ELIM-LABEL: _Z4testiiiiiddddd: | 
| + ; CHECK-V7-FP-ELIM:   .cfi_startproc | 
| + ; CHECK-V7-FP-ELIM:   push   {r4, lr} | 
| + ; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 8 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset lr, -4 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset r4, -8 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 14, -4 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 4, -8 | 
| + ; CHECK-V7-FP-ELIM:   vpush  {d8, d9, d10, d11, d12} | 
| + ; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 48 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset d12, -16 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset d11, -24 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset d10, -32 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset d9, -40 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset d8, -48 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 268, -16 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 267, -24 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 266, -32 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 265, -40 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 264, -48 | 
| + ; CHECK-V7-FP-ELIM:   sub    sp, sp, #24 | 
| + ; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 72 | 
| + ; CHECK-V7-FP-ELIM:   .cfi_endproc | 
| + | 
| + ; CHECK-THUMB-FP-LABEL: _Z4testiiiiiddddd: | 
| + ; CHECK-THUMB-FP:   .cfi_startproc | 
| + ; CHECK-THUMB-FP:   push   {r4, r5, r6, r7, lr} | 
| + ; CHECK-THUMB-FP:   .cfi_def_cfa_offset 20 | 
| +-; CHECK-THUMB-FP:   .cfi_offset lr, -4 | 
| +-; CHECK-THUMB-FP:   .cfi_offset r7, -8 | 
| +-; CHECK-THUMB-FP:   .cfi_offset r6, -12 | 
| +-; CHECK-THUMB-FP:   .cfi_offset r5, -16 | 
| +-; CHECK-THUMB-FP:   .cfi_offset r4, -20 | 
| ++; CHECK-THUMB-FP:   .cfi_offset 14, -4 | 
| ++; CHECK-THUMB-FP:   .cfi_offset 7, -8 | 
| ++; CHECK-THUMB-FP:   .cfi_offset 6, -12 | 
| ++; CHECK-THUMB-FP:   .cfi_offset 5, -16 | 
| ++; CHECK-THUMB-FP:   .cfi_offset 4, -20 | 
| + ; CHECK-THUMB-FP:   add    r7, sp, #12 | 
| +-; CHECK-THUMB-FP:   .cfi_def_cfa r7, 8 | 
| ++; CHECK-THUMB-FP:   .cfi_def_cfa 7, 8 | 
| + ; CHECK-THUMB-FP:   sub    sp, #60 | 
| + ; CHECK-THUMB-FP:   .cfi_endproc | 
| + | 
| + ; CHECK-THUMB-FP-ELIM-LABEL: _Z4testiiiiiddddd: | 
| + ; CHECK-THUMB-FP-ELIM:   .cfi_startproc | 
| + ; CHECK-THUMB-FP-ELIM:   push   {r4, r5, r6, r7, lr} | 
| + ; CHECK-THUMB-FP-ELIM:   .cfi_def_cfa_offset 20 | 
| +-; CHECK-THUMB-FP-ELIM:   .cfi_offset lr, -4 | 
| +-; CHECK-THUMB-FP-ELIM:   .cfi_offset r7, -8 | 
| +-; CHECK-THUMB-FP-ELIM:   .cfi_offset r6, -12 | 
| +-; CHECK-THUMB-FP-ELIM:   .cfi_offset r5, -16 | 
| +-; CHECK-THUMB-FP-ELIM:   .cfi_offset r4, -20 | 
| ++; CHECK-THUMB-FP-ELIM:   .cfi_offset 14, -4 | 
| ++; CHECK-THUMB-FP-ELIM:   .cfi_offset 7, -8 | 
| ++; CHECK-THUMB-FP-ELIM:   .cfi_offset 6, -12 | 
| ++; CHECK-THUMB-FP-ELIM:   .cfi_offset 5, -16 | 
| ++; CHECK-THUMB-FP-ELIM:   .cfi_offset 4, -20 | 
| + ; CHECK-THUMB-FP-ELIM:   sub    sp, #60 | 
| + ; CHECK-THUMB-FP-ELIM:   .cfi_def_cfa_offset 80 | 
| + ; CHECK-THUMB-FP-ELIM:   .cfi_endproc | 
| + | 
| + ; CHECK-THUMB-V7-FP-LABEL: _Z4testiiiiiddddd: | 
| + ; CHECK-THUMB-V7-FP:   .cfi_startproc | 
| + ; CHECK-THUMB-V7-FP:   push.w   {r4, r7, r11, lr} | 
| + ; CHECK-THUMB-V7-FP:   .cfi_def_cfa_offset 16 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset lr, -4 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset r11, -8 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset r7, -12 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset r4, -16 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 14, -4 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 11, -8 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 7, -12 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 4, -16 | 
| + ; CHECK-THUMB-V7-FP:   add    r7, sp, #4 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_def_cfa r7, 12 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_def_cfa 7, 12 | 
| + ; CHECK-THUMB-V7-FP:   vpush  {d8, d9, d10, d11, d12} | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset d12, -24 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset d11, -32 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset d10, -40 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset d9, -48 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset d8, -56 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 268, -24 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 267, -32 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 266, -40 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 265, -48 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 264, -56 | 
| + ; CHECK-THUMB-V7-FP:   sub    sp, #24 | 
| + ; CHECK-THUMB-V7-FP:   .cfi_endproc | 
| + | 
| + ; CHECK-THUMB-V7-FP-ELIM-LABEL: _Z4testiiiiiddddd: | 
| + ; CHECK-THUMB-V7-FP-ELIM:   .cfi_startproc | 
| + ; CHECK-THUMB-V7-FP-ELIM:   push   {r4, lr} | 
| + ; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 8 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset lr, -4 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r4, -8 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 14, -4 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 4, -8 | 
| + ; CHECK-THUMB-V7-FP-ELIM:   vpush  {d8, d9, d10, d11, d12} | 
| + ; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 48 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d12, -16 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d11, -24 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d10, -32 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d9, -40 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d8, -48 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 268, -16 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 267, -24 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 266, -32 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 265, -40 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 264, -48 | 
| + ; CHECK-THUMB-V7-FP-ELIM:   sub    sp, #24 | 
| + ; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 72 | 
| + ; CHECK-THUMB-V7-FP-ELIM:   .cfi_endproc | 
| +@@ -309,81 +309,81 @@ | 
| + ; CHECK-FP:   .cfi_startproc | 
| + ; CHECK-FP:   push   {r11, lr} | 
| + ; CHECK-FP:   .cfi_def_cfa_offset 8 | 
| +-; CHECK-FP:   .cfi_offset lr, -4 | 
| +-; CHECK-FP:   .cfi_offset r11, -8 | 
| ++; CHECK-FP:   .cfi_offset 14, -4 | 
| ++; CHECK-FP:   .cfi_offset 11, -8 | 
| + ; CHECK-FP:   mov    r11, sp | 
| +-; CHECK-FP:   .cfi_def_cfa_register r11 | 
| ++; CHECK-FP:   .cfi_def_cfa_register 11 | 
| + ; CHECK-FP:   pop    {r11, lr} | 
| + ; CHECK-FP:   mov    pc, lr | 
| + ; CHECK-FP:   .cfi_endproc | 
| + | 
| + ; CHECK-FP-ELIM-LABEL: test2: | 
| + ; CHECK-FP-ELIM:   .cfi_startproc | 
| + ; CHECK-FP-ELIM:   push  {r11, lr} | 
| + ; CHECK-FP-ELIM:   .cfi_def_cfa_offset 8 | 
| +-; CHECK-FP-ELIM:   .cfi_offset lr, -4 | 
| +-; CHECK-FP-ELIM:   .cfi_offset r11, -8 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 14, -4 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 11, -8 | 
| + ; CHECK-FP-ELIM:   pop   {r11, lr} | 
| + ; CHECK-FP-ELIM:   mov   pc, lr | 
| + ; CHECK-FP-ELIM:   .cfi_endproc | 
| + | 
| + ; CHECK-V7-FP-LABEL: test2: | 
| + ; CHECK-V7-FP:   .cfi_startproc | 
| + ; CHECK-V7-FP:   push   {r11, lr} | 
| + ; CHECK-V7-FP:   .cfi_def_cfa_offset 8 | 
| +-; CHECK-V7-FP:   .cfi_offset lr, -4 | 
| +-; CHECK-V7-FP:   .cfi_offset r11, -8 | 
| ++; CHECK-V7-FP:   .cfi_offset 14, -4 | 
| ++; CHECK-V7-FP:   .cfi_offset 11, -8 | 
| + ; CHECK-V7-FP:   mov    r11, sp | 
| +-; CHECK-V7-FP:   .cfi_def_cfa_register r11 | 
| ++; CHECK-V7-FP:   .cfi_def_cfa_register 11 | 
| + ; CHECK-V7-FP:   pop    {r11, pc} | 
| + ; CHECK-V7-FP:   .cfi_endproc | 
| + | 
| + ; CHECK-V7-FP-ELIM-LABEL: test2: | 
| + ; CHECK-V7-FP-ELIM:   .cfi_startproc | 
| + ; CHECK-V7-FP-ELIM:   push  {r11, lr} | 
| + ; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 8 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset lr, -4 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset r11, -8 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 14, -4 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 11, -8 | 
| + ; CHECK-V7-FP-ELIM:   pop   {r11, pc} | 
| + ; CHECK-V7-FP-ELIM:   .cfi_endproc | 
| + | 
| + ; CHECK-THUMB-FP-LABEL: test2: | 
| + ; CHECK-THUMB-FP:   .cfi_startproc | 
| + ; CHECK-THUMB-FP:   push   {r7, lr} | 
| + ; CHECK-THUMB-FP:   .cfi_def_cfa_offset 8 | 
| +-; CHECK-THUMB-FP:   .cfi_offset lr, -4 | 
| +-; CHECK-THUMB-FP:   .cfi_offset r7, -8 | 
| ++; CHECK-THUMB-FP:   .cfi_offset 14, -4 | 
| ++; CHECK-THUMB-FP:   .cfi_offset 7, -8 | 
| + ; CHECK-THUMB-FP:   add    r7, sp, #0 | 
| +-; CHECK-THUMB-FP:   .cfi_def_cfa_register r7 | 
| ++; CHECK-THUMB-FP:   .cfi_def_cfa_register 7 | 
| + ; CHECK-THUMB-FP:   pop    {r7, pc} | 
| + ; CHECK-THUMB-FP:   .cfi_endproc | 
| + | 
| + ; CHECK-THUMB-FP-ELIM-LABEL: test2: | 
| + ; CHECK-THUMB-FP-ELIM:   .cfi_startproc | 
| + ; CHECK-THUMB-FP-ELIM:   push  {r7, lr} | 
| + ; CHECK-THUMB-FP-ELIM:   .cfi_def_cfa_offset 8 | 
| +-; CHECK-THUMB-FP-ELIM:   .cfi_offset lr, -4 | 
| +-; CHECK-THUMB-FP-ELIM:   .cfi_offset r7, -8 | 
| ++; CHECK-THUMB-FP-ELIM:   .cfi_offset 14, -4 | 
| ++; CHECK-THUMB-FP-ELIM:   .cfi_offset 7, -8 | 
| + ; CHECK-THUMB-FP-ELIM:   pop   {r7, pc} | 
| + ; CHECK-THUMB-FP-ELIM:   .cfi_endproc | 
| + | 
| + ; CHECK-THUMB-V7-FP-LABEL: test2: | 
| + ; CHECK-THUMB-V7-FP:   .cfi_startproc | 
| + ; CHECK-THUMB-V7-FP:   push   {r7, lr} | 
| + ; CHECK-THUMB-V7-FP:   .cfi_def_cfa_offset 8 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset lr, -4 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset r7, -8 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 14, -4 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 7, -8 | 
| + ; CHECK-THUMB-V7-FP:   mov    r7, sp | 
| +-; CHECK-THUMB-V7-FP:   .cfi_def_cfa_register r7 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_def_cfa_register 7 | 
| + ; CHECK-THUMB-V7-FP:   pop    {r7, pc} | 
| + ; CHECK-THUMB-V7-FP:   .cfi_endproc | 
| + | 
| + ; CHECK-THUMB-V7-FP-ELIM-LABEL: test2: | 
| + ; CHECK-THUMB-V7-FP-ELIM:   .cfi_startproc | 
| + ; CHECK-THUMB-V7-FP-ELIM:   push.w  {r11, lr} | 
| + ; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 8 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset lr, -4 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r11, -8 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 14, -4 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 11, -8 | 
| + ; CHECK-THUMB-V7-FP-ELIM:   pop.w   {r11, pc} | 
| + ; CHECK-THUMB-V7-FP-ELIM:   .cfi_endproc | 
| + | 
| +@@ -413,97 +413,97 @@ | 
| + ; CHECK-FP:   .cfi_startproc | 
| + ; CHECK-FP:   push   {r4, r5, r11, lr} | 
| + ; CHECK-FP:   .cfi_def_cfa_offset 16 | 
| +-; CHECK-FP:   .cfi_offset lr, -4 | 
| +-; CHECK-FP:   .cfi_offset r11, -8 | 
| +-; CHECK-FP:   .cfi_offset r5, -12 | 
| +-; CHECK-FP:   .cfi_offset r4, -16 | 
| ++; CHECK-FP:   .cfi_offset 14, -4 | 
| ++; CHECK-FP:   .cfi_offset 11, -8 | 
| ++; CHECK-FP:   .cfi_offset 5, -12 | 
| ++; CHECK-FP:   .cfi_offset 4, -16 | 
| + ; CHECK-FP:   add    r11, sp, #8 | 
| +-; CHECK-FP:   .cfi_def_cfa r11, 8 | 
| ++; CHECK-FP:   .cfi_def_cfa 11, 8 | 
| + ; CHECK-FP:   pop    {r4, r5, r11, lr} | 
| + ; CHECK-FP:   mov    pc, lr | 
| + ; CHECK-FP:   .cfi_endproc | 
| + | 
| + ; CHECK-FP-ELIM-LABEL: test3: | 
| + ; CHECK-FP-ELIM:   .cfi_startproc | 
| + ; CHECK-FP-ELIM:   push  {r4, r5, r11, lr} | 
| + ; CHECK-FP-ELIM:   .cfi_def_cfa_offset 16 | 
| +-; CHECK-FP-ELIM:   .cfi_offset lr, -4 | 
| +-; CHECK-FP-ELIM:   .cfi_offset r11, -8 | 
| +-; CHECK-FP-ELIM:   .cfi_offset r5, -12 | 
| +-; CHECK-FP-ELIM:   .cfi_offset r4, -16 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 14, -4 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 11, -8 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 5, -12 | 
| ++; CHECK-FP-ELIM:   .cfi_offset 4, -16 | 
| + ; CHECK-FP-ELIM:   pop   {r4, r5, r11, lr} | 
| + ; CHECK-FP-ELIM:   mov   pc, lr | 
| + ; CHECK-FP-ELIM:   .cfi_endproc | 
| + | 
| + ; CHECK-V7-FP-LABEL: test3: | 
| + ; CHECK-V7-FP:   .cfi_startproc | 
| + ; CHECK-V7-FP:   push   {r4, r5, r11, lr} | 
| + ; CHECK-V7-FP:   .cfi_def_cfa_offset 16 | 
| +-; CHECK-V7-FP:   .cfi_offset lr, -4 | 
| +-; CHECK-V7-FP:   .cfi_offset r11, -8 | 
| +-; CHECK-V7-FP:   .cfi_offset r5, -12 | 
| +-; CHECK-V7-FP:   .cfi_offset r4, -16 | 
| ++; CHECK-V7-FP:   .cfi_offset 14, -4 | 
| ++; CHECK-V7-FP:   .cfi_offset 11, -8 | 
| ++; CHECK-V7-FP:   .cfi_offset 5, -12 | 
| ++; CHECK-V7-FP:   .cfi_offset 4, -16 | 
| + ; CHECK-V7-FP:   add    r11, sp, #8 | 
| +-; CHECK-V7-FP:   .cfi_def_cfa r11, 8 | 
| ++; CHECK-V7-FP:   .cfi_def_cfa 11, 8 | 
| + ; CHECK-V7-FP:   pop    {r4, r5, r11, pc} | 
| + ; CHECK-V7-FP:   .cfi_endproc | 
| + | 
| + ; CHECK-V7-FP-ELIM-LABEL: test3: | 
| + ; CHECK-V7-FP-ELIM:   .cfi_startproc | 
| + ; CHECK-V7-FP-ELIM:   push  {r4, r5, r11, lr} | 
| + ; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 16 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset lr, -4 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset r11, -8 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset r5, -12 | 
| +-; CHECK-V7-FP-ELIM:   .cfi_offset r4, -16 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 14, -4 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 11, -8 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 5, -12 | 
| ++; CHECK-V7-FP-ELIM:   .cfi_offset 4, -16 | 
| + ; CHECK-V7-FP-ELIM:   pop   {r4, r5, r11, pc} | 
| + ; CHECK-V7-FP-ELIM:   .cfi_endproc | 
| + | 
| + ; CHECK-THUMB-FP-LABEL: test3: | 
| + ; CHECK-THUMB-FP:   .cfi_startproc | 
| + ; CHECK-THUMB-FP:   push   {r4, r5, r7, lr} | 
| + ; CHECK-THUMB-FP:   .cfi_def_cfa_offset 16 | 
| +-; CHECK-THUMB-FP:   .cfi_offset lr, -4 | 
| +-; CHECK-THUMB-FP:   .cfi_offset r7, -8 | 
| +-; CHECK-THUMB-FP:   .cfi_offset r5, -12 | 
| +-; CHECK-THUMB-FP:   .cfi_offset r4, -16 | 
| ++; CHECK-THUMB-FP:   .cfi_offset 14, -4 | 
| ++; CHECK-THUMB-FP:   .cfi_offset 7, -8 | 
| ++; CHECK-THUMB-FP:   .cfi_offset 5, -12 | 
| ++; CHECK-THUMB-FP:   .cfi_offset 4, -16 | 
| + ; CHECK-THUMB-FP:   add    r7, sp, #8 | 
| +-; CHECK-THUMB-FP:   .cfi_def_cfa r7, 8 | 
| ++; CHECK-THUMB-FP:   .cfi_def_cfa 7, 8 | 
| + ; CHECK-THUMB-FP:   pop    {r4, r5, r7, pc} | 
| + ; CHECK-THUMB-FP:   .cfi_endproc | 
| + | 
| + ; CHECK-THUMB-FP-ELIM-LABEL: test3: | 
| + ; CHECK-THUMB-FP-ELIM:   .cfi_startproc | 
| + ; CHECK-THUMB-FP-ELIM:   push  {r4, r5, r7, lr} | 
| + ; CHECK-THUMB-FP-ELIM:   .cfi_def_cfa_offset 16 | 
| +-; CHECK-THUMB-FP-ELIM:   .cfi_offset lr, -4 | 
| +-; CHECK-THUMB-FP-ELIM:   .cfi_offset r7, -8 | 
| +-; CHECK-THUMB-FP-ELIM:   .cfi_offset r5, -12 | 
| +-; CHECK-THUMB-FP-ELIM:   .cfi_offset r4, -16 | 
| ++; CHECK-THUMB-FP-ELIM:   .cfi_offset 14, -4 | 
| ++; CHECK-THUMB-FP-ELIM:   .cfi_offset 7, -8 | 
| ++; CHECK-THUMB-FP-ELIM:   .cfi_offset 5, -12 | 
| ++; CHECK-THUMB-FP-ELIM:   .cfi_offset 4, -16 | 
| + ; CHECK-THUMB-FP-ELIM:   pop   {r4, r5, r7, pc} | 
| + ; CHECK-THUMB-FP-ELIM:   .cfi_endproc | 
| + | 
| + ; CHECK-THUMB-V7-FP-LABEL: test3: | 
| + ; CHECK-THUMB-V7-FP:   .cfi_startproc | 
| + ; CHECK-THUMB-V7-FP:   push   {r4, r5, r7, lr} | 
| + ; CHECK-THUMB-V7-FP:   .cfi_def_cfa_offset 16 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset lr, -4 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset r7, -8 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset r5, -12 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_offset r4, -16 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 14, -4 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 7, -8 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 5, -12 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_offset 4, -16 | 
| + ; CHECK-THUMB-V7-FP:   add    r7, sp, #8 | 
| +-; CHECK-THUMB-V7-FP:   .cfi_def_cfa r7, 8 | 
| ++; CHECK-THUMB-V7-FP:   .cfi_def_cfa 7, 8 | 
| + ; CHECK-THUMB-V7-FP:   pop    {r4, r5, r7, pc} | 
| + ; CHECK-THUMB-V7-FP:   .cfi_endproc | 
| + | 
| + ; CHECK-THUMB-V7-FP-ELIM-LABEL: test3: | 
| + ; CHECK-THUMB-V7-FP-ELIM:   .cfi_startproc | 
| + ; CHECK-THUMB-V7-FP-ELIM:   push.w  {r4, r5, r11, lr} | 
| + ; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 16 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset lr, -4 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r11, -8 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r5, -12 | 
| +-; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r4, -16 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 14, -4 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 11, -8 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 5, -12 | 
| ++; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset 4, -16 | 
| + ; CHECK-THUMB-V7-FP-ELIM:   pop.w   {r4, r5, r11, pc} | 
| + ; CHECK-THUMB-V7-FP-ELIM:   .cfi_endproc | 
| + | 
| +EOF | 
| +patch -p0 | 
| +cd - | 
| + | 
| # Echo all commands. | 
| set -x | 
|  | 
| @@ -277,9 +946,21 @@ fi | 
|  | 
| export CFLAGS="" | 
| export CXXFLAGS="" | 
| +# LLVM uses C++11 starting in llvm 3.5. On Linux, this means libstdc++4.7+ is | 
| +# needed, on OS X it requires libc++. clang only automatically links to libc++ | 
| +# when targeting OS X 10.9+, so add stdlib=libc++ explicitly so clang can run on | 
| +# OS X versions as old as 10.7. | 
| +# TODO(thakis): Enable this once all bots are on 10.7, and remove the | 
| +# --disable-compiler-version-checks flags below, and change all | 
| +# MACOSX_DEPLOYMENT_TARGET values to 10.7. | 
| +if [ "${OS}" = "Darwin" ]; then | 
| +  #CXXFLAGS="-stdlib=libc++" | 
| +  CXXFLAGS="-std=gnu++98" | 
| +fi | 
|  | 
| # Build bootstrap clang if requested. | 
| if [[ -n "${bootstrap}" ]]; then | 
| +  ABS_INSTALL_DIR="${PWD}/${LLVM_BOOTSTRAP_INSTALL_DIR}" | 
| echo "Building bootstrap compiler" | 
| mkdir -p "${LLVM_BOOTSTRAP_DIR}" | 
| cd "${LLVM_BOOTSTRAP_DIR}" | 
| @@ -289,30 +970,33 @@ if [[ -n "${bootstrap}" ]]; then | 
| # compiler should be as similar to the final compiler as possible, so do | 
| # keep --disable-threads & co. | 
| ../llvm/configure \ | 
| +        --disable-compiler-version-checks \ | 
| --enable-optimized \ | 
| --enable-targets=host-only \ | 
| +        --enable-libedit=no \ | 
| --disable-threads \ | 
| --disable-pthreads \ | 
| --without-llvmgcc \ | 
| -        --without-llvmgxx | 
| +        --without-llvmgxx \ | 
| +        --prefix="${ABS_INSTALL_DIR}" | 
| +  fi | 
| + | 
| +  MACOSX_DEPLOYMENT_TARGET=10.5 ${MAKE} -j"${NUM_JOBS}" | 
| +  if [[ -n "${run_tests}" ]]; then | 
| +    ${MAKE} check-all | 
| fi | 
|  | 
| +  MACOSX_DEPLOYMENT_TARGET=10.5 ${MAKE} install | 
| if [[ -n "${gcc_toolchain}" ]]; then | 
| # Copy that gcc's stdlibc++.so.6 to the build dir, so the bootstrap | 
| # compiler can start. | 
| -    mkdir -p Release+Asserts/lib | 
| cp -v "$(${CXX} -print-file-name=libstdc++.so.6)" \ | 
| -      "Release+Asserts/lib/" | 
| +      "${ABS_INSTALL_DIR}/lib/" | 
| fi | 
|  | 
| - | 
| -  MACOSX_DEPLOYMENT_TARGET=10.5 ${MAKE} -j"${NUM_JOBS}" | 
| -  if [[ -n "${run_tests}" ]]; then | 
| -    ${MAKE} check-all | 
| -  fi | 
| cd - | 
| -  export CC="${PWD}/${LLVM_BOOTSTRAP_DIR}/Release+Asserts/bin/clang" | 
| -  export CXX="${PWD}/${LLVM_BOOTSTRAP_DIR}/Release+Asserts/bin/clang++" | 
| +  export CC="${ABS_INSTALL_DIR}/bin/clang" | 
| +  export CXX="${ABS_INSTALL_DIR}/bin/clang++" | 
|  | 
| if [[ -n "${gcc_toolchain}" ]]; then | 
| # Tell the bootstrap compiler to use a specific gcc prefix to search | 
| @@ -331,7 +1015,9 @@ mkdir -p "${LLVM_BUILD_DIR}" | 
| cd "${LLVM_BUILD_DIR}" | 
| if [[ ! -f ./config.status ]]; then | 
| ../llvm/configure \ | 
| +      --disable-compiler-version-checks \ | 
| --enable-optimized \ | 
| +      --enable-libedit=no \ | 
| --disable-threads \ | 
| --disable-pthreads \ | 
| --without-llvmgcc \ | 
|  |