From 4048a082847cea72431aa8235f54941ed064913b Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Sat, 19 Jan 2008 04:31:12 +0000 Subject: [PATCH] Added FoldingSet style 'profiling' support for APSInt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46189 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/APSInt.h | 4 ++++ lib/Support/APSInt.cpp | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 lib/Support/APSInt.cpp diff --git a/include/llvm/ADT/APSInt.h b/include/llvm/ADT/APSInt.h index 25cf245c365..1fc083d9ba6 100644 --- a/include/llvm/ADT/APSInt.h +++ b/include/llvm/ADT/APSInt.h @@ -125,6 +125,10 @@ public: assert(IsUnsigned == RHS.IsUnsigned && "Signedness mismatch!"); return IsUnsigned ? uge(RHS) : sge(RHS); } + + /// Profile - Used to insert APSInt objects, or objects that contain APSInt + /// objects, into FoldingSets. + void Profile(FoldingSetNodeID& ID) const; }; } // end namespace llvm diff --git a/lib/Support/APSInt.cpp b/lib/Support/APSInt.cpp new file mode 100644 index 00000000000..73acafa690c --- /dev/null +++ b/lib/Support/APSInt.cpp @@ -0,0 +1,23 @@ +//===-- llvm/ADT/APSInt.cpp - Arbitrary Precision Signed Int ---*- C++ -*--===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements the APSInt class, which is a simple class that +// represents an arbitrary sized integer that knows its signedness. +// +//===----------------------------------------------------------------------===// + +#include "llvm/ADT/APSInt.h" +#include "llvm/ADT/FoldingSet.h" + +using namespace llvm; + +void APSInt::Profile(FoldingSetNodeID& ID) const { + ID.AddInteger((unsigned) (IsUnsigned ? 1 : 0)); + APInt::Profile(ID); +}