[Mlir-commits] [mlir] [mlir] Add the ability to define dialect-specific location attrs. (PR #105584)
River Riddle
llvmlistbot at llvm.org
Wed Sep 18 09:42:06 PDT 2024
================
@@ -38,34 +38,14 @@ void BuiltinDialect::registerLocationAttributes() {
//===----------------------------------------------------------------------===//
WalkResult LocationAttr::walk(function_ref<WalkResult(Location)> walkFn) {
- if (walkFn(*this).wasInterrupted())
- return WalkResult::interrupt();
-
- return TypeSwitch<LocationAttr, WalkResult>(*this)
- .Case([&](CallSiteLoc callLoc) -> WalkResult {
- if (callLoc.getCallee()->walk(walkFn).wasInterrupted())
- return WalkResult::interrupt();
- return callLoc.getCaller()->walk(walkFn);
- })
- .Case([&](FusedLoc fusedLoc) -> WalkResult {
- for (Location subLoc : fusedLoc.getLocations())
- if (subLoc->walk(walkFn).wasInterrupted())
- return WalkResult::interrupt();
- return WalkResult::advance();
- })
- .Case([&](NameLoc nameLoc) -> WalkResult {
- return nameLoc.getChildLoc()->walk(walkFn);
- })
- .Case([&](OpaqueLoc opaqueLoc) -> WalkResult {
- return opaqueLoc.getFallbackLocation()->walk(walkFn);
- })
- .Default(WalkResult::advance());
+ AttrTypeWalker walker;
+ walker.addWalk([&](LocationAttr loc) { return walkFn(loc); });
----------------
River707 wrote:
That was the original purpose of this API -> Find instances of a location (most generally just finding a FileLineColLoc) without delving into general metadata (which is kind of separate from the location itself). When you go into random metadata you enter situations where you find a location that isn't really connected to the one you have.
https://github.com/llvm/llvm-project/pull/105584
More information about the Mlir-commits
mailing list