From 3061f01f25ff9aab62bfcdf4e942c92c3fa49503 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Mon, 17 Sep 2018 16:16:24 +0900 Subject: [PATCH] [coco] Return Def instead Producer (#1521) This commit revises Object::def method to return a pointer to Def instead of a pointer to its Producer. This commit also revises all the related implementations and tests. Signed-off-by: Jonghyun Park --- contrib/coco/core/include/coco/IR/Object.h | 5 +++-- contrib/coco/core/src/IR/Bag.cpp | 4 ++-- contrib/coco/core/src/IR/Def.test.cpp | 4 ++-- contrib/coco/core/src/IR/Instr.test.cpp | 2 +- contrib/coco/core/src/IR/Object.cpp | 11 ++++++----- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/contrib/coco/core/include/coco/IR/Object.h b/contrib/coco/core/include/coco/IR/Object.h index 60bfd6f..d73421c 100644 --- a/contrib/coco/core/include/coco/IR/Object.h +++ b/contrib/coco/core/include/coco/IR/Object.h @@ -4,6 +4,7 @@ #include "coco/IR/Bag.h" #include "coco/IR/Dep.h" #include "coco/IR/ObjectInfo.forward.h" +#include "coco/IR/Def.forward.h" #include "coco/IR/FeatureObject.forward.h" #include "coco/IR/KernelObject.forward.h" @@ -60,8 +61,8 @@ private: ObjectInfo *info(void) const; public: - // WARN These methods are deprecated. Please use 'producer' and 'consumers' instead. - Producer *def(void) const; + Def *def(void) const; + // WARN user methods are deprecated. Please use below 'consumers' instead. const ConsumerSet *user(void) const; private: diff --git a/contrib/coco/core/src/IR/Bag.cpp b/contrib/coco/core/src/IR/Bag.cpp index c55c93b..90fdb59 100644 --- a/contrib/coco/core/src/IR/Bag.cpp +++ b/contrib/coco/core/src/IR/Bag.cpp @@ -114,9 +114,9 @@ Bag::UpdaterSet updaters(const Bag *b) for (auto obj : dependent_objects(b)) { - if (obj->def()) + if (auto p = producer(obj)) { - res.insert(obj->def()); + res.insert(p); } } diff --git a/contrib/coco/core/src/IR/Def.test.cpp b/contrib/coco/core/src/IR/Def.test.cpp index 7abce04..d0711b6 100644 --- a/contrib/coco/core/src/IR/Def.test.cpp +++ b/contrib/coco/core/src/IR/Def.test.cpp @@ -48,7 +48,7 @@ TEST_F(DefTest, value) ASSERT_EQ(slot.value(), o); - ASSERT_EQ(o->def(), &def); + ASSERT_EQ(o->def(), &slot); slot.value(nullptr); @@ -65,7 +65,7 @@ TEST_F(DefTest, unlink_on_destruction) auto slot = make_unique(&obj_link, &def); slot->value(o); - ASSERT_EQ(o->def(), &def); + ASSERT_EQ(o->def(), slot.get()); // Let's destruct the allocated slot slot.reset(nullptr); diff --git a/contrib/coco/core/src/IR/Instr.test.cpp b/contrib/coco/core/src/IR/Instr.test.cpp index 296c6ce..cdba1c6 100644 --- a/contrib/coco/core/src/IR/Instr.test.cpp +++ b/contrib/coco/core/src/IR/Instr.test.cpp @@ -90,7 +90,7 @@ TEST_F(FeatureInstrTest, ofm_update) ins.ofm(obj); ASSERT_EQ(ins.ofm(), obj); - ASSERT_EQ(obj->def(), &ins); + ASSERT_EQ(coco::producer(obj), &ins); } // TODO Move these tests into UnitF.test.cpp diff --git a/contrib/coco/core/src/IR/Object.cpp b/contrib/coco/core/src/IR/Object.cpp index 664ba32..2338d08 100644 --- a/contrib/coco/core/src/IR/Object.cpp +++ b/contrib/coco/core/src/IR/Object.cpp @@ -22,9 +22,13 @@ ObjectInfo *Object::info(void) const return res; } -Object::Producer *Object::def(void) const +Def *Object::def(void) const { return info()->def(); } + +const Object::ConsumerSet *Object::user(void) const { return info()->user(); } + +Object::Producer *producer(const Object *obj) { - if (auto d = info()->def()) + if (auto d = obj->def()) { return d->producer(); } @@ -32,9 +36,6 @@ Object::Producer *Object::def(void) const return nullptr; } -const Object::ConsumerSet *Object::user(void) const { return info()->user(); } - -Object::Producer *producer(const Object *obj) { return obj->def(); } Object::ConsumerSet consumers(const Object *obj) { return *(obj->user()); } } // namespace coco -- 2.7.4