summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir.cpp
diff options
context:
space:
mode:
authorSriram Murali <85252063+sriramm-nv@users.noreply.github.com>2024-05-01 00:06:59 -0700
committerGitHub <noreply@github.com>2024-05-01 00:06:59 -0700
commitca62ec2591de40e7c8226330670cc8c8d4840065 (patch)
treedc02bfcd70623be6c8a00ff4ed260272ef41357e /source/slang/slang-ir.cpp
parent2abd5bd5770b8052b8e4ceed86ff4ced883d2af7 (diff)
Adds functionality to dump IR to stdout (#4065)
Adds a member dump() to IRInst that can writes the immediate value or IR inst value to stdout to help with debugging
Diffstat (limited to 'source/slang/slang-ir.cpp')
-rw-r--r--source/slang/slang-ir.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/source/slang/slang-ir.cpp b/source/slang/slang-ir.cpp
index 5a917e88c..5f49d1966 100644
--- a/source/slang/slang-ir.cpp
+++ b/source/slang/slang-ir.cpp
@@ -4,6 +4,7 @@
#include "slang-ir-util.h"
#include "../core/slang-basic.h"
+#include "../core/slang-writer.h"
#include "slang-ir-dominators.h"
@@ -8605,6 +8606,25 @@ namespace Slang
}
}
+ void IRInst::dump()
+ {
+ if (auto intLit = as<IRIntLit>(this))
+ {
+ std::cout << intLit->getValue() << std::endl;
+ }
+ else if (auto stringLit = as<IRStringLit>(this))
+ {
+ std::cout << stringLit->getStringSlice().begin() << std::endl;
+ }
+ else
+ {
+ StringBuilder sb;
+ IRDumpOptions options;
+ StringWriter writer(&sb, Slang::WriterFlag::AutoFlush);
+ dumpIR(this, options, nullptr, &writer);
+ std::cout << sb.toString().begin() << std::endl;
+ }
+ }
} // namespace Slang
#if SLANG_VC