[llvm-commits] [llvm] r158800 - in /llvm/trunk: include/llvm/ADT/STLExtras.h include/llvm/Analysis/Dominators.h include/llvm/Analysis/LoopInfo.h include/llvm/Bitcode/ReaderWriter.h include/llvm/CodeGen/MachineInstrBundle.h include/llvm/Instructions.h include/llvm/Object/ObjectFile.h include/llvm/Support/AlignOf.h include/llvm/Support/Endian.h include/llvm/Support/MathExtras.h lib/Target/X86/MCTargetDesc/X86BaseInfo.h
Chris Lattner
clattner at apple.com
Wed Jun 20 22:00:23 PDT 2012
On Jun 20, 2012, at 1:39 AM, Chandler Carruth wrote:
> Author: chandlerc
> Date: Wed Jun 20 03:39:33 2012
> New Revision: 158800
>
> URL: http://llvm.org/viewvc/llvm-project?rev=158800&view=rev
> Log:
> Remove 'static' from inline functions defined in header files.
>
> There is a pretty staggering amount of this in LLVM's header files, this
> is not all of the instances I'm afraid. These include all of the
> functions that (in my build) are used by a non-static inline (or
> external) function. Specifically, these issues were caught by the new
> '-Winternal-linkage-in-inline' warning.
Should this patch be reverted? I thought it was decided that that flag was a bad idea for C++ code, since the whole concept is predicated on "inline" working like the C99 inline semantics, which are bone-headed...
-Chris
>
> I'll try to just clean up the remainder of the clearly redundant "static
> inline" cases on functions (not methods!) defined within headers if
> I can do so in a reliable way.
>
> There were even several cases of a missing 'inline' altogether, or my
> personal favorite "static bool inline". Go figure. ;]
>
> Modified:
> llvm/trunk/include/llvm/ADT/STLExtras.h
> llvm/trunk/include/llvm/Analysis/Dominators.h
> llvm/trunk/include/llvm/Analysis/LoopInfo.h
> llvm/trunk/include/llvm/Bitcode/ReaderWriter.h
> llvm/trunk/include/llvm/CodeGen/MachineInstrBundle.h
> llvm/trunk/include/llvm/Instructions.h
> llvm/trunk/include/llvm/Object/ObjectFile.h
> llvm/trunk/include/llvm/Support/AlignOf.h
> llvm/trunk/include/llvm/Support/Endian.h
> llvm/trunk/include/llvm/Support/MathExtras.h
> llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
>
> Modified: llvm/trunk/include/llvm/ADT/STLExtras.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/STLExtras.h?rev=158800&r1=158799&r2=158800&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/ADT/STLExtras.h (original)
> +++ llvm/trunk/include/llvm/ADT/STLExtras.h Wed Jun 20 03:39:33 2012
> @@ -59,7 +59,7 @@
> // for_each(V.begin(), B.end(), deleter<Interval>);
> //
> template <class T>
> -static inline void deleter(T *Ptr) {
> +inline void deleter(T *Ptr) {
> delete Ptr;
> }
>
> @@ -238,7 +238,7 @@
> /// array_pod_sort_comparator - This is helper function for array_pod_sort,
> /// which just uses operator< on T.
> template<typename T>
> -static inline int array_pod_sort_comparator(const void *P1, const void *P2) {
> +inline int array_pod_sort_comparator(const void *P1, const void *P2) {
> if (*reinterpret_cast<const T*>(P1) < *reinterpret_cast<const T*>(P2))
> return -1;
> if (*reinterpret_cast<const T*>(P2) < *reinterpret_cast<const T*>(P1))
> @@ -249,7 +249,7 @@
> /// get_array_pad_sort_comparator - This is an internal helper function used to
> /// get type deduction of T right.
> template<typename T>
> -static int (*get_array_pad_sort_comparator(const T &))
> +inline int (*get_array_pad_sort_comparator(const T &))
> (const void*, const void*) {
> return array_pod_sort_comparator<T>;
> }
> @@ -270,7 +270,7 @@
> /// NOTE: If qsort_r were portable, we could allow a custom comparator and
> /// default to std::less.
> template<class IteratorTy>
> -static inline void array_pod_sort(IteratorTy Start, IteratorTy End) {
> +inline void array_pod_sort(IteratorTy Start, IteratorTy End) {
> // Don't dereference start iterator of empty sequence.
> if (Start == End) return;
> qsort(&*Start, End-Start, sizeof(*Start),
> @@ -278,7 +278,7 @@
> }
>
> template<class IteratorTy>
> -static inline void array_pod_sort(IteratorTy Start, IteratorTy End,
> +inline void array_pod_sort(IteratorTy Start, IteratorTy End,
> int (*Compare)(const void*, const void*)) {
> // Don't dereference start iterator of empty sequence.
> if (Start == End) return;
>
> Modified: llvm/trunk/include/llvm/Analysis/Dominators.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/Dominators.h?rev=158800&r1=158799&r2=158800&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/Dominators.h (original)
> +++ llvm/trunk/include/llvm/Analysis/Dominators.h Wed Jun 20 03:39:33 2012
> @@ -152,7 +152,7 @@
> EXTERN_TEMPLATE_INSTANTIATION(class DomTreeNodeBase<MachineBasicBlock>);
>
> template<class NodeT>
> -static raw_ostream &operator<<(raw_ostream &o,
> +inline raw_ostream &operator<<(raw_ostream &o,
> const DomTreeNodeBase<NodeT> *Node) {
> if (Node->getBlock())
> WriteAsOperand(o, Node->getBlock(), false);
> @@ -165,7 +165,7 @@
> }
>
> template<class NodeT>
> -static void PrintDomTree(const DomTreeNodeBase<NodeT> *N, raw_ostream &o,
> +inline void PrintDomTree(const DomTreeNodeBase<NodeT> *N, raw_ostream &o,
> unsigned Lev) {
> o.indent(2*Lev) << "[" << Lev << "] " << N;
> for (typename DomTreeNodeBase<NodeT>::const_iterator I = N->begin(),
>
> Modified: llvm/trunk/include/llvm/Analysis/LoopInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopInfo.h?rev=158800&r1=158799&r2=158800&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/LoopInfo.h (original)
> +++ llvm/trunk/include/llvm/Analysis/LoopInfo.h Wed Jun 20 03:39:33 2012
> @@ -46,7 +46,7 @@
> namespace llvm {
>
> template<typename T>
> -static void RemoveFromVector(std::vector<T*> &V, T *N) {
> +inline void RemoveFromVector(std::vector<T*> &V, T *N) {
> typename std::vector<T*>::iterator I = std::find(V.begin(), V.end(), N);
> assert(I != V.end() && "N is not in this list!");
> V.erase(I);
>
> Modified: llvm/trunk/include/llvm/Bitcode/ReaderWriter.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/ReaderWriter.h?rev=158800&r1=158799&r2=158800&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Bitcode/ReaderWriter.h (original)
> +++ llvm/trunk/include/llvm/Bitcode/ReaderWriter.h Wed Jun 20 03:39:33 2012
> @@ -71,8 +71,8 @@
> /// isBitcodeWrapper - Return true if the given bytes are the magic bytes
> /// for an LLVM IR bitcode wrapper.
> ///
> - static inline bool isBitcodeWrapper(const unsigned char *BufPtr,
> - const unsigned char *BufEnd) {
> + inline bool isBitcodeWrapper(const unsigned char *BufPtr,
> + const unsigned char *BufEnd) {
> // See if you can find the hidden message in the magic bytes :-).
> // (Hint: it's a little-endian encoding.)
> return BufPtr != BufEnd &&
> @@ -85,8 +85,8 @@
> /// isRawBitcode - Return true if the given bytes are the magic bytes for
> /// raw LLVM IR bitcode (without a wrapper).
> ///
> - static inline bool isRawBitcode(const unsigned char *BufPtr,
> - const unsigned char *BufEnd) {
> + inline bool isRawBitcode(const unsigned char *BufPtr,
> + const unsigned char *BufEnd) {
> // These bytes sort of have a hidden message, but it's not in
> // little-endian this time, and it's a little redundant.
> return BufPtr != BufEnd &&
> @@ -99,8 +99,8 @@
> /// isBitcode - Return true if the given bytes are the magic bytes for
> /// LLVM IR bitcode, either with or without a wrapper.
> ///
> - static bool inline isBitcode(const unsigned char *BufPtr,
> - const unsigned char *BufEnd) {
> + inline bool isBitcode(const unsigned char *BufPtr,
> + const unsigned char *BufEnd) {
> return isBitcodeWrapper(BufPtr, BufEnd) ||
> isRawBitcode(BufPtr, BufEnd);
> }
> @@ -121,9 +121,9 @@
> /// BC file.
> /// If 'VerifyBufferSize' is true, check that the buffer is large enough to
> /// contain the whole bitcode file.
> - static inline bool SkipBitcodeWrapperHeader(const unsigned char *&BufPtr,
> - const unsigned char *&BufEnd,
> - bool VerifyBufferSize) {
> + inline bool SkipBitcodeWrapperHeader(const unsigned char *&BufPtr,
> + const unsigned char *&BufEnd,
> + bool VerifyBufferSize) {
> enum {
> KnownHeaderSize = 4*4, // Size of header we read.
> OffsetField = 2*4, // Offset in bytes to Offset field.
>
> Modified: llvm/trunk/include/llvm/CodeGen/MachineInstrBundle.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineInstrBundle.h?rev=158800&r1=158799&r2=158800&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/MachineInstrBundle.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/MachineInstrBundle.h Wed Jun 20 03:39:33 2012
> @@ -43,14 +43,14 @@
>
> /// getBundleStart - Returns the first instruction in the bundle containing MI.
> ///
> -static inline MachineInstr *getBundleStart(MachineInstr *MI) {
> +inline MachineInstr *getBundleStart(MachineInstr *MI) {
> MachineBasicBlock::instr_iterator I = MI;
> while (I->isInsideBundle())
> --I;
> return I;
> }
>
> -static inline const MachineInstr *getBundleStart(const MachineInstr *MI) {
> +inline const MachineInstr *getBundleStart(const MachineInstr *MI) {
> MachineBasicBlock::const_instr_iterator I = MI;
> while (I->isInsideBundle())
> --I;
>
> Modified: llvm/trunk/include/llvm/Instructions.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Instructions.h?rev=158800&r1=158799&r2=158800&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Instructions.h (original)
> +++ llvm/trunk/include/llvm/Instructions.h Wed Jun 20 03:39:33 2012
> @@ -701,7 +701,7 @@
> // checkGEPType - Simple wrapper function to give a better assertion failure
> // message on bad indexes for a gep instruction.
> //
> -static inline Type *checkGEPType(Type *Ty) {
> +inline Type *checkGEPType(Type *Ty) {
> assert(Ty && "Invalid GetElementPtrInst indices for type!");
> return Ty;
> }
>
> Modified: llvm/trunk/include/llvm/Object/ObjectFile.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ObjectFile.h?rev=158800&r1=158799&r2=158800&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Object/ObjectFile.h (original)
> +++ llvm/trunk/include/llvm/Object/ObjectFile.h Wed Jun 20 03:39:33 2012
> @@ -76,13 +76,13 @@
> }
> };
>
> -static bool operator ==(const DataRefImpl &a, const DataRefImpl &b) {
> +inline bool operator ==(const DataRefImpl &a, const DataRefImpl &b) {
> // Check bitwise identical. This is the only legal way to compare a union w/o
> // knowing which member is in use.
> return std::memcmp(&a, &b, sizeof(DataRefImpl)) == 0;
> }
>
> -static bool operator <(const DataRefImpl &a, const DataRefImpl &b) {
> +inline bool operator <(const DataRefImpl &a, const DataRefImpl &b) {
> // Check bitwise identical. This is the only legal way to compare a union w/o
> // knowing which member is in use.
> return std::memcmp(&a, &b, sizeof(DataRefImpl)) < 0;
>
> Modified: llvm/trunk/include/llvm/Support/AlignOf.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/AlignOf.h?rev=158800&r1=158799&r2=158800&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/AlignOf.h (original)
> +++ llvm/trunk/include/llvm/Support/AlignOf.h Wed Jun 20 03:39:33 2012
> @@ -57,7 +57,7 @@
> /// class besides some cosmetic cleanliness. Example usage:
> /// alignOf<int>() returns the alignment of an int.
> template <typename T>
> -static inline unsigned alignOf() { return AlignOf<T>::Alignment; }
> +inline unsigned alignOf() { return AlignOf<T>::Alignment; }
>
>
> /// \brief Helper for building an aligned character array type.
>
> Modified: llvm/trunk/include/llvm/Support/Endian.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Endian.h?rev=158800&r1=158799&r2=158800&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/Endian.h (original)
> +++ llvm/trunk/include/llvm/Support/Endian.h Wed Jun 20 03:39:33 2012
> @@ -49,7 +49,7 @@
>
> namespace endian {
> template<typename value_type, alignment align>
> - static value_type read_le(const void *memory) {
> + inline value_type read_le(const void *memory) {
> value_type t =
> reinterpret_cast<const detail::alignment_access_helper
> <value_type, align> *>(memory)->val;
> @@ -59,7 +59,7 @@
> }
>
> template<typename value_type, alignment align>
> - static void write_le(void *memory, value_type value) {
> + inline void write_le(void *memory, value_type value) {
> if (sys::isBigEndianHost())
> value = sys::SwapByteOrder(value);
> reinterpret_cast<detail::alignment_access_helper<value_type, align> *>
> @@ -67,7 +67,7 @@
> }
>
> template<typename value_type, alignment align>
> - static value_type read_be(const void *memory) {
> + inline value_type read_be(const void *memory) {
> value_type t =
> reinterpret_cast<const detail::alignment_access_helper
> <value_type, align> *>(memory)->val;
> @@ -77,7 +77,7 @@
> }
>
> template<typename value_type, alignment align>
> - static void write_be(void *memory, value_type value) {
> + inline void write_be(void *memory, value_type value) {
> if (sys::isLittleEndianHost())
> value = sys::SwapByteOrder(value);
> reinterpret_cast<detail::alignment_access_helper<value_type, align> *>
>
> Modified: llvm/trunk/include/llvm/Support/MathExtras.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/MathExtras.h?rev=158800&r1=158799&r2=158800&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/MathExtras.h (original)
> +++ llvm/trunk/include/llvm/Support/MathExtras.h Wed Jun 20 03:39:33 2012
> @@ -414,14 +414,14 @@
>
> /// MinAlign - A and B are either alignments or offsets. Return the minimum
> /// alignment that may be assumed after adding the two together.
> -static inline uint64_t MinAlign(uint64_t A, uint64_t B) {
> +inline uint64_t MinAlign(uint64_t A, uint64_t B) {
> // The largest power of 2 that divides both A and B.
> return (A | B) & -(A | B);
> }
>
> /// NextPowerOf2 - Returns the next power of two (in 64-bits)
> /// that is strictly greater than A. Returns zero on overflow.
> -static inline uint64_t NextPowerOf2(uint64_t A) {
> +inline uint64_t NextPowerOf2(uint64_t A) {
> A |= (A >> 1);
> A |= (A >> 2);
> A |= (A >> 4);
>
> Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h?rev=158800&r1=158799&r2=158800&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h (original)
> +++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h Wed Jun 20 03:39:33 2012
> @@ -481,17 +481,17 @@
> // getBaseOpcodeFor - This function returns the "base" X86 opcode for the
> // specified machine instruction.
> //
> - static inline unsigned char getBaseOpcodeFor(uint64_t TSFlags) {
> + inline unsigned char getBaseOpcodeFor(uint64_t TSFlags) {
> return TSFlags >> X86II::OpcodeShift;
> }
>
> - static inline bool hasImm(uint64_t TSFlags) {
> + inline bool hasImm(uint64_t TSFlags) {
> return (TSFlags & X86II::ImmMask) != 0;
> }
>
> /// getSizeOfImm - Decode the "size of immediate" field from the TSFlags field
> /// of the specified instruction.
> - static inline unsigned getSizeOfImm(uint64_t TSFlags) {
> + inline unsigned getSizeOfImm(uint64_t TSFlags) {
> switch (TSFlags & X86II::ImmMask) {
> default: llvm_unreachable("Unknown immediate size");
> case X86II::Imm8:
> @@ -506,7 +506,7 @@
>
> /// isImmPCRel - Return true if the immediate of the specified instruction's
> /// TSFlags indicates that it is pc relative.
> - static inline unsigned isImmPCRel(uint64_t TSFlags) {
> + inline unsigned isImmPCRel(uint64_t TSFlags) {
> switch (TSFlags & X86II::ImmMask) {
> default: llvm_unreachable("Unknown immediate size");
> case X86II::Imm8PCRel:
> @@ -529,7 +529,7 @@
> /// is duplicated in the MCInst (e.g. "EAX = addl EAX, [mem]") it is only
> /// counted as one operand.
> ///
> - static inline int getMemoryOperandNo(uint64_t TSFlags, unsigned Opcode) {
> + inline int getMemoryOperandNo(uint64_t TSFlags, unsigned Opcode) {
> switch (TSFlags & X86II::FormMask) {
> case X86II::MRMInitReg:
> // FIXME: Remove this form.
> @@ -591,7 +591,7 @@
>
> /// isX86_64ExtendedReg - Is the MachineOperand a x86-64 extended (r8 or
> /// higher) register? e.g. r8, xmm8, xmm13, etc.
> - static inline bool isX86_64ExtendedReg(unsigned RegNo) {
> + inline bool isX86_64ExtendedReg(unsigned RegNo) {
> switch (RegNo) {
> default: break;
> case X86::R8: case X86::R9: case X86::R10: case X86::R11:
> @@ -613,7 +613,7 @@
> return false;
> }
>
> - static inline bool isX86_64NonExtLowByteReg(unsigned reg) {
> + inline bool isX86_64NonExtLowByteReg(unsigned reg) {
> return (reg == X86::SPL || reg == X86::BPL ||
> reg == X86::SIL || reg == X86::DIL);
> }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list