diff --git a/lib/CodeGen/CodeGenPrepare.cpp b/lib/CodeGen/CodeGenPrepare.cpp index 3768807702b..9e0ac96ba56 100644 --- a/lib/CodeGen/CodeGenPrepare.cpp +++ b/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/test/CodeGen/X86/slow-div.ll b/test/CodeGen/X86/slow-div.ll index 52223824bf9..82928521ac2 100644 --- a/test/CodeGen/X86/slow-div.ll +++ b/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 +}