diff options
author | Chris Lattner <sabre@nondot.org> | 2001-09-07 16:29:18 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2001-09-07 16:29:18 +0000 |
commit | 539a4bf4b587e7aa334888bfb1145f1c7adf63f3 (patch) | |
tree | ef5a86dd608d8596616f5effd63ad783b3ad3a9f /lib/VMCore/ConstantFolding.h | |
parent | 5f30d241752587d98a8de3c8807c35e84136d95c (diff) | |
download | external_llvm-539a4bf4b587e7aa334888bfb1145f1c7adf63f3.zip external_llvm-539a4bf4b587e7aa334888bfb1145f1c7adf63f3.tar.gz external_llvm-539a4bf4b587e7aa334888bfb1145f1c7adf63f3.tar.bz2 |
You no longer have to delete constants! They are located in a global
constant pool instead of in local ones.
Change bool handling to prevent modification of bool values
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@436 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/ConstantFolding.h')
-rw-r--r-- | lib/VMCore/ConstantFolding.h | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/lib/VMCore/ConstantFolding.h b/lib/VMCore/ConstantFolding.h index 501f726..453c3e8 100644 --- a/lib/VMCore/ConstantFolding.h +++ b/lib/VMCore/ConstantFolding.h @@ -12,10 +12,8 @@ // //===----------------------------------------------------------------------===// // -// WARNING: These operators return pointers to newly 'new'd objects. You MUST -// make sure to free them if you don't want them hanging around. Also, -// note that these may return a null object if I don't know how to -// perform those operations on the specified constant types. +// WARNING: These operators may return a null object if I don't know how to +// perform the specified operation on the specified constant types. // //===----------------------------------------------------------------------===// // @@ -42,13 +40,18 @@ namespace opt { //===----------------------------------------------------------------------===// -// Implement == directly... +// Implement == and != directly... //===----------------------------------------------------------------------===// inline ConstPoolBool *operator==(const ConstPoolVal &V1, const ConstPoolVal &V2) { assert(V1.getType() == V2.getType() && "Constant types must be identical!"); - return new ConstPoolBool(V1.equals(&V2)); + return ConstPoolBool::get(&V1 == &V2); +} + +inline ConstPoolBool *operator!=(const ConstPoolVal &V1, + const ConstPoolVal &V2) { + return ConstPoolBool::get(&V1 != &V2); } //===----------------------------------------------------------------------===// @@ -156,25 +159,14 @@ inline ConstPoolBool *operator>(const ConstPoolVal &V1, return V2 < V1; } -inline ConstPoolBool *operator!=(const ConstPoolVal &V1, - const ConstPoolVal &V2) { - ConstPoolBool *Result = V1 == V2; - Result->setValue(!Result->getValue()); // Invert value - return Result; // !(V1 == V2) -} - inline ConstPoolBool *operator>=(const ConstPoolVal &V1, const ConstPoolVal &V2) { - ConstPoolBool *Result = V1 < V2; - Result->setValue(!Result->getValue()); // Invert value - return Result; // !(V1 < V2) + return (V1 < V2)->inverted(); // !(V1 < V2) } inline ConstPoolBool *operator<=(const ConstPoolVal &V1, const ConstPoolVal &V2) { - ConstPoolBool *Result = V1 > V2; - Result->setValue(!Result->getValue()); // Invert value - return Result; // !(V1 > V2) + return (V1 > V2)->inverted(); // !(V1 > V2) } |