[PATCH] D18528: Don't fold double constant to an integer if dest type not integral

Teresa Johnson via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 31 07:14:36 PDT 2016


tejohnson updated this revision to Diff 52201.
tejohnson added a comment.

Move new test to test/Assembler where there are some existing constant
fold tests.


http://reviews.llvm.org/D18528

Files:
  lib/IR/ConstantFold.cpp
  test/Assembler/mmx-bitcast-fold.ll

Index: test/Assembler/mmx-bitcast-fold.ll
===================================================================
--- /dev/null
+++ test/Assembler/mmx-bitcast-fold.ll
@@ -0,0 +1,12 @@
+; RUN: opt -mtriple=x86_64-- -early-cse < %s -S | FileCheck %s
+
+; CHECK: @foo(x86_mmx bitcast (double 0.000000e+00 to x86_mmx))
+
+define void @bar() {
+entry:
+  %0 = bitcast double 0.0 to x86_mmx
+  %1 = call x86_mmx @foo(x86_mmx %0)
+  ret void
+}
+
+declare x86_mmx @foo(x86_mmx)
Index: lib/IR/ConstantFold.cpp
===================================================================
--- lib/IR/ConstantFold.cpp
+++ lib/IR/ConstantFold.cpp
@@ -191,6 +191,10 @@
     if (FP->getType()->isPPC_FP128Ty())
       return nullptr;
 
+    // Make sure dest type is compatible with the folded integer constant.
+    if (!DestTy->isIntegerTy())
+      return nullptr;
+
     return ConstantInt::get(FP->getContext(),
                             FP->getValueAPF().bitcastToAPInt());
   }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D18528.52201.patch
Type: text/x-patch
Size: 961 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160331/4af89617/attachment.bin>


More information about the llvm-commits mailing list