On Fri, Mar 29, 2013 at 09:25:13PM +0900, Wada Hiroyuki wrote: > 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
Thanks a lot, this is _very_ helpful. I'll make sure to test this asap. Landry > 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 >
