Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Sep 2015 21:20:00 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r288195 - projects/clang370-import/contrib/llvm/include/llvm/Analysis
Message-ID:  <201509242120.t8OLK0HF045769@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Thu Sep 24 21:20:00 2015
New Revision: 288195
URL: https://svnweb.freebsd.org/changeset/base/288195

Log:
  Pull in r248439 from upstream llvm trunk (by Sanjay Patel):
  
    set div/rem default values to 'expensive' in TargetTransformInfo's
    cost model
  
    ...because that's what the cost model was intended to do.
  
    As discussed in D12882, this fix has a temporary unintended
    consequence for SimplifyCFG: it causes us to not speculate an fdiv.
    However, two wrongs make PR24818 right, and two wrongs make PR24343
    act right even though it's really still wrong.
  
    I intend to correct SimplifyCFG and add to CodeGenPrepare to account
    for this cost model change and preserve the righteousness for the bug
    report cases.
  
    https://llvm.org/bugs/show_bug.cgi?id=24818
    https://llvm.org/bugs/show_bug.cgi?id=24343
  
    Differential Revision: http://reviews.llvm.org/D12882
  
  This fixes the too-eager fdiv hoisting in pow(), which could lead to
  unexpected floating point exceptions.

Modified:
  projects/clang370-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h

Modified: projects/clang370-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
==============================================================================
--- projects/clang370-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h	Thu Sep 24 21:04:48 2015	(r288194)
+++ projects/clang370-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h	Thu Sep 24 21:20:00 2015	(r288195)
@@ -60,6 +60,14 @@ public:
       // Otherwise, the default basic cost is used.
       return TTI::TCC_Basic;
 
+    case Instruction::FDiv:
+    case Instruction::FRem:
+    case Instruction::SDiv:
+    case Instruction::SRem:
+    case Instruction::UDiv:
+    case Instruction::URem:
+      return TTI::TCC_Expensive;
+
     case Instruction::IntToPtr: {
       // An inttoptr cast is free so long as the input is a legal integer type
       // which doesn't contain values outside the range of a pointer.



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