llvm-6502/include/llvm/AttributesImpl.h
Bill Wendling 8e635dbc78 Begin the transition to using the AttributesImpl object for the Attributes ivar.
Start using the AttributesImpl object to hold the value of the attributes. All
queries go through the interfaces now.

This has one unfortunate consequence. I needed to move the AttributesImpl.h file
into include/llvm. But this is only temporary! Otherwise, the changes needed to
support this would be too large.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165433 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-08 21:47:17 +00:00

51 lines
1.3 KiB
C++

//===-- AttributesImpl.h - Attributes Internals -----------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines various helper methods and classes used by LLVMContextImpl
// for creating and managing attributes.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_ATTRIBUTESIMPL_H
#define LLVM_ATTRIBUTESIMPL_H
#include "llvm/ADT/FoldingSet.h"
namespace llvm {
class Attributes;
class AttributesImpl : public FoldingSetNode {
friend class Attributes;
uint64_t Bits; // FIXME: We will be expanding this.
public:
AttributesImpl(uint64_t bits) : Bits(bits) {}
bool hasAttribute(uint64_t A) const;
bool hasAttributes() const;
bool hasAttributes(const Attributes &A) const;
uint64_t getAlignment() const;
uint64_t getStackAlignment() const;
bool isEmptyOrSingleton() const;
void Profile(FoldingSetNodeID &ID) const {
Profile(ID, Bits);
}
static void Profile(FoldingSetNodeID &ID, uint64_t Bits) {
ID.AddInteger(Bits);
}
};
} // end llvm namespace
#endif