From 9e4419db3668f964b54a9090ff2a94f00bfe3bc0 Mon Sep 17 00:00:00 2001 From: Andrew Kaylor Date: Thu, 7 Jul 2016 18:55:02 +0000 Subject: [PATCH] Include SelectionDAGISel in the opt-bisect process Differential Revision: http://reviews.llvm.org/D21143 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274786 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 2 +- test/Other/X86/opt-bisect-isel.ll | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 test/Other/X86/opt-bisect-isel.ll diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 7acab3cd4a8..6594e45e9c7 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -443,7 +443,7 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) { TM.resetTargetOptions(Fn); // Reset OptLevel to None for optnone functions. CodeGenOpt::Level NewOptLevel = OptLevel; - if (Fn.hasFnAttribute(Attribute::OptimizeNone)) + if (OptLevel != CodeGenOpt::None && skipFunction(Fn)) NewOptLevel = CodeGenOpt::None; OptLevelChanger OLC(*this, NewOptLevel); diff --git a/test/Other/X86/opt-bisect-isel.ll b/test/Other/X86/opt-bisect-isel.ll new file mode 100644 index 00000000000..78a5f202646 --- /dev/null +++ b/test/Other/X86/opt-bisect-isel.ll @@ -0,0 +1,22 @@ +; This test verifies that no optimizations are performed on the @f function +; when the -opt-bisect-limit=0 option is used. In particular, the X86 +; instruction selector will optimize the cmp instruction to a sub instruction +; if it is not run in -O0 mode. + +; RUN: llc -O3 -opt-bisect-limit=0 -o - %s | FileCheck %s + +target triple = "x86_64-unknown-linux-gnu" + +define void @f() { +entry: + %cmp = icmp slt i32 undef, 8 + br i1 %cmp, label %middle, label %end + +middle: + br label %end + +end: + ret void +} + +; CHECK: cmpl $8, %eax -- 2.49.0