[optnone] Skip pass Float2Int on optnone functions.
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Wed, 25 Mar 2015 12:22:37 +0000 (12:22 +0000)
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Wed, 25 Mar 2015 12:22:37 +0000 (12:22 +0000)
Added test Float2Int/float2int-optnone.ll to verify that pass Float2Int
is not run on optnone functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233183 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/Float2Int.cpp
test/Transforms/Float2Int/float2int-optnone.ll [new file with mode: 0644]

index 3d7457ea5dc90aa17f32351b55fc96e29c59358d..33bc86030397f9400882caf11b49c1a5ac6f80c3 100644 (file)
@@ -511,6 +511,9 @@ void Float2Int::cleanup() {
 }
 
 bool Float2Int::runOnFunction(Function &F) {
+  if (skipOptnoneFunction(F))
+    return false;
+
   DEBUG(dbgs() << "F2I: Looking at function " << F.getName() << "\n");
   // Clear out all state.
   ECs = EquivalenceClasses<Instruction*>();
diff --git a/test/Transforms/Float2Int/float2int-optnone.ll b/test/Transforms/Float2Int/float2int-optnone.ll
new file mode 100644 (file)
index 0000000..c1eeea7
--- /dev/null
@@ -0,0 +1,17 @@
+; RUN: opt < %s -float2int -S | FileCheck %s
+;
+; Verify that pass float2int is not run on optnone functions.
+
+define i16 @simple1(i8 %a) #0 {
+; CHECK-LABEL: @simple1
+; CHECK:  %1 = uitofp i8 %a to float
+; CHECK-NEXT:  %2 = fadd float %1, 1.0
+; CHECK-NEXT:  %3 = fptoui float %2 to i16
+; CHECK-NEXT:  ret i16 %3
+  %1 = uitofp i8 %a to float
+  %2 = fadd float %1, 1.0
+  %3 = fptoui float %2 to i16
+  ret i16 %3
+}
+
+attributes #0 = { noinline optnone }