Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Sep 2014 05:40:33 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r271737 - stable/9/contrib/llvm/lib/Target/X86
Message-ID:  <201409180540.s8I5eXYF015555@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Thu Sep 18 05:40:33 2014
New Revision: 271737
URL: http://svnweb.freebsd.org/changeset/base/271737

Log:
  MFC r271597:
  
  Pull in r217410 from upstream llvm trunk (by Bob Wilson):
  
    Set trunc store action to Expand for all X86 targets.
  
    When compiling without SSE2, isTruncStoreLegal(F64, F32) would return
    Legal, whereas with SSE2 it would return Expand. And since the Target
    doesn't seem to actually handle a truncstore for double -> float, it
    would just output a store of a full double in the space for a float
    hence overwriting other bits on the stack.
  
    Patch by Luqman Aden!
  
  This should fix clang -O0 on i386 assigning garbage to floats, in
  certain scenarios.
  
  PR:		187437
  Submitted by:	cebd@gmail.com
  Obtained from:	http://llvm.org/viewvc/llvm-project?rev=217410&view=rev

Modified:
  stable/9/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
Directory Properties:
  stable/9/contrib/llvm/   (props changed)

Modified: stable/9/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
==============================================================================
--- stable/9/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp	Thu Sep 18 03:11:59 2014	(r271736)
+++ stable/9/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp	Thu Sep 18 05:40:33 2014	(r271737)
@@ -300,6 +300,8 @@ void X86TargetLowering::resetOperationAc
   setTruncStoreAction(MVT::i32, MVT::i8 , Expand);
   setTruncStoreAction(MVT::i16, MVT::i8,  Expand);
 
+  setTruncStoreAction(MVT::f64, MVT::f32, Expand);
+
   // SETOEQ and SETUNE require checking two conditions.
   setCondCodeAction(ISD::SETOEQ, MVT::f32, Expand);
   setCondCodeAction(ISD::SETOEQ, MVT::f64, Expand);
@@ -1011,8 +1013,6 @@ void X86TargetLowering::resetOperationAc
       AddPromotedToType (ISD::SELECT, VT, MVT::v2i64);
     }
 
-    setTruncStoreAction(MVT::f64, MVT::f32, Expand);
-
     // Custom lower v2i64 and v2f64 selects.
     setOperationAction(ISD::LOAD,               MVT::v2f64, Legal);
     setOperationAction(ISD::LOAD,               MVT::v2i64, Legal);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201409180540.s8I5eXYF015555>