From 82d91ddb4f3a8f44166cde07af47217fcc3023fb Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Tue, 11 Aug 2015 19:39:36 +0000 Subject: [PATCH] fix minsize detection: minsize attribute implies optimizing for size Also, add a test for optsize because this was not part of any existing regression test. llvm-svn: 244651 --- llvm/lib/CodeGen/CodeGenPrepare.cpp | 3 +-- llvm/test/CodeGen/X86/slow-div.ll | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index 3768807..9e0ac96 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -214,8 +214,7 @@ bool CodeGenPrepare::runOnFunction(Function &F) { TLI = TM->getSubtargetImpl(F)->getTargetLowering(); TLInfo = &getAnalysis().getTLI(); TTI = &getAnalysis().getTTI(F); - // FIXME: Use Function::optForSize(). - OptSize = F.hasFnAttribute(Attribute::OptimizeForSize); + OptSize = F.optForSize(); /// This optimization identifies DIV instructions that can be /// profitably bypassed and carried out with a shorter, faster divide. diff --git a/llvm/test/CodeGen/X86/slow-div.ll b/llvm/test/CodeGen/X86/slow-div.ll index 5222382..8292852 100644 --- a/llvm/test/CodeGen/X86/slow-div.ll +++ b/llvm/test/CodeGen/X86/slow-div.ll @@ -25,4 +25,19 @@ entry: ret i64 %div } +; Verify that no extra code is generated when optimizing for size. + +define i32 @div32_optsize(i32 %a, i32 %b) optsize { +; DIV32-LABEL: div32_optsize: +; DIV32-NOT: divb + %div = sdiv i32 %a, %b + ret i32 %div +} + +define i32 @div32_minsize(i32 %a, i32 %b) minsize { +; DIV32-LABEL: div32_minsize: +; DIV32-NOT: divb + %div = sdiv i32 %a, %b + ret i32 %div +} -- 2.7.4