Hi,

I applied the following diff to llvm-3.2p1, built firefox-19.0.2 and
firefox-20.0beta6 by this llvm, and both work fine on i386.

  http://svnweb.freebsd.org/base?view=revision&revision=246858

For details:

  http://marc.info/?t=136147545000001&r=1&w=2

Just trivial diffs again:

diff -rupN devel/llvm/patches/patch-lib_Target_X86_X86SelectionDAGInfo_cpp 
mystuff/devel/llvm/patches/patch-lib_Target_X86_X86SelectionDAGInfo_cpp
--- devel/llvm/patches/patch-lib_Target_X86_X86SelectionDAGInfo_cpp     Thu Jan 
 1 09:00:00 1970
+++ mystuff/devel/llvm/patches/patch-lib_Target_X86_X86SelectionDAGInfo_cpp     
Tue Mar 26 13:00:50 2013
@@ -0,0 +1,17 @@
+--- lib/Target/X86/X86SelectionDAGInfo.cpp.orig        Thu Nov  1 17:07:29 2012
++++ lib/Target/X86/X86SelectionDAGInfo.cpp     Tue Mar 26 12:55:52 2013
+@@ -202,6 +202,14 @@ X86SelectionDAGInfo::EmitTargetCodeForMemcpy(Selection
+       SrcPtrInfo.getAddrSpace() >= 256)
+     return SDValue();
+ 
++  // ESI might be used as a base pointer, in that case we can't simply 
overwrite
++  // the register.  Fall back to generic code.
++  const X86RegisterInfo *TRI =
++      static_cast<const X86RegisterInfo *>(DAG.getTarget().getRegisterInfo());
++  if (TRI->hasBasePointer(DAG.getMachineFunction()) &&
++      TRI->getBaseRegister() == X86::ESI)
++    return SDValue();
++
+   MVT AVT;
+   if (Align & 1)
+     AVT = MVT::i8;


diff -rupN www/mozilla-firefox/Makefile mystuff/www/mozilla-firefox/Makefile
--- www/mozilla-firefox/Makefile        Tue Mar 12 04:56:24 2013
+++ mystuff/www/mozilla-firefox/Makefile        Tue Mar 26 13:12:44 2013
@@ -30,9 +30,9 @@ MODPY_RUNDEP =        No
 
 # necessary glue to build with the correct compiler after fx 17
 MODULES +=             gcc4 lang/clang
-MODGCC4_ARCHS =                i386 powerpc
+MODGCC4_ARCHS =                powerpc
 MODGCC4_LANGS =                c c++
-MODCLANG_ARCHS =       amd64
+MODCLANG_ARCHS =       i386 amd64
 MODCLANG_LANGS =       c c++
 
 USE_GROFF =    Yes

Reply via email to