diff --git a/lib/Target/ARM/ARMGlobalMerge.cpp b/lib/Target/ARM/ARMGlobalMerge.cpp index 3f0238387a2..ab6c00e6e1a 100644 --- a/lib/Target/ARM/ARMGlobalMerge.cpp +++ b/lib/Target/ARM/ARMGlobalMerge.cpp @@ -53,6 +53,7 @@ #define DEBUG_TYPE "arm-global-merge" #include "ARM.h" +#include "ARMTargetMachine.h" #include "llvm/CodeGen/Passes.h" #include "llvm/Attributes.h" #include "llvm/Constants.h" @@ -167,6 +168,11 @@ bool ARMGlobalMerge::doInitialization(Module &M) { unsigned MaxOffset = TLI->getMaximalGlobalOffset(); bool Changed = false; + // Disable this pass on darwin. The debugger is not yet ready to extract + // variable's info from a merged global. + if (TLI->getTargetMachine().getSubtarget().isTargetDarwin()) + return false; + // Grab all non-const globals. for (Module::global_iterator I = M.global_begin(), E = M.global_end(); I != E; ++I) { diff --git a/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll b/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll index 94842124fb0..a137eefbc9e 100644 --- a/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll +++ b/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll @@ -1,5 +1,5 @@ ; RUN: llc < %s | FileCheck %s - +; XFAIL: darwin target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32" target triple = "thumbv7-apple-darwin10" diff --git a/test/CodeGen/ARM/global-merge.ll b/test/CodeGen/ARM/global-merge.ll index 28bf2214740..80c46934605 100644 --- a/test/CodeGen/ARM/global-merge.ll +++ b/test/CodeGen/ARM/global-merge.ll @@ -1,4 +1,5 @@ ; RUN: llc < %s -mtriple=thumb-apple-darwin | FileCheck %s +; XFAIL: darwin ; Test the ARMGlobalMerge pass. Use -march=thumb because it has a small ; value for the maximum offset (127).