[llvm-commits] [llvm] r164173 - in /llvm/trunk: include/llvm/Transforms/Utils/IntegerDivision.h lib/Transforms/Utils/CMakeLists.txt lib/Transforms/Utils/IntegerDivision.cpp

Bill Wendling wendling at apple.com
Tue Sep 18 23:22:21 PDT 2012


On Sep 18, 2012, at 3:02 PM, Michael Ilseman <milseman at apple.com> wrote:

> Author: milseman
> Date: Tue Sep 18 17:02:40 2012
> New Revision: 164173
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=164173&view=rev
> Log:
> New utility for expanding integer division for targets that don't support it.
> 
> Implementation derived from compiler-rt's implementation of signed and unsigned integer division.
> 
> 
> Added:
>    llvm/trunk/include/llvm/Transforms/Utils/IntegerDivision.h
>    llvm/trunk/lib/Transforms/Utils/IntegerDivision.cpp
> Modified:
>    llvm/trunk/lib/Transforms/Utils/CMakeLists.txt
> 
> Added: llvm/trunk/include/llvm/Transforms/Utils/IntegerDivision.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Utils/IntegerDivision.h?rev=164173&view=auto
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/Utils/IntegerDivision.h (added)
> +++ llvm/trunk/include/llvm/Transforms/Utils/IntegerDivision.h Tue Sep 18 17:02:40 2012
> @@ -0,0 +1,26 @@
> +//===- llvm/Transforms/Utils/IntegerDivision.h ------------------*- C++ -*-===//
> +//
> +//                     The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +//
> +// This file contains an implementation of 32bit integer division for targets
> +// that don't have native support. It's largely derived from compiler-rt's
> +// implementation of __udivsi3, but hand-tuned for targets that prefer less
> +// control flow.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +#ifndef TRANSFORMS_UTILS_INTEGERDIVISION_H
> +#define TRANSFORMS_UTILS_INTEGERDIVISION_H
> +
> +namespace llvm {
> +
> +  bool expandDivision(BinaryOperator* Div);
> +
> +} // End llvm namespace
> +
> +#endif

This will fail to compile if BinaryOperator isn't declared first. Please add a declaration before it. E.g.:

namespace llvm {
  class BinaryOperator;
//...

-bw




More information about the llvm-commits mailing list