Add support to FoldingSet for hashing APInt objects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46833 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2008-02-06 23:09:15 +00:00
parent 69de1932b3
commit 167b8bc24d
2 changed files with 6 additions and 0 deletions

View File

@ -22,6 +22,7 @@
namespace llvm {
class APFloat;
class APInt;
/// This folding set used for two purposes:
/// 1. Given information about a node we want to create, look up the unique
@ -206,6 +207,7 @@ public:
void AddFloat(float F);
void AddDouble(double D);
void AddAPFloat(const APFloat& apf);
void AddAPInt(const APInt& api);
void AddString(const std::string &String);
/// clear - Clear the accumulated profile, allowing this FoldingSetNodeID

View File

@ -16,6 +16,7 @@
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/Support/MathExtras.h"
#include <cassert>
using namespace llvm;
@ -59,6 +60,9 @@ void FoldingSetNodeID::AddDouble(double D) {
}
void FoldingSetNodeID::AddAPFloat(const APFloat& apf) {
APInt api = apf.convertToAPInt();
AddAPInt(api);
}
void FoldingSetNodeID::AddAPInt(const APInt& api) {
const uint64_t *p = api.getRawData();
for (unsigned i=0; i<api.getNumWords(); i++)
AddInteger(*p++);