MLIR 22.0.0git
DebuggerExecutionContextHook.h
Go to the documentation of this file.
1//===- DebuggerExecutionContextHook.h - Debugger Support --------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file contains a set of C API functions that are used by the debugger to
10// interact with the ExecutionContext.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef MLIR_SUPPORT_DEBUGGEREXECUTIONCONTEXTHOOK_H
15#define MLIR_SUPPORT_DEBUGGEREXECUTIONCONTEXTHOOK_H
16
17#include "mlir-c/IR.h"
19#include "llvm/Support/Compiler.h"
20
21extern "C" {
22struct MLIRBreakpoint;
23struct MLIRIRunit;
24typedef struct MLIRBreakpoint *BreakpointHandle;
25typedef struct MLIRIRunit *irunitHandle;
26
27/// This is used by the debugger to control what to do after a breakpoint is
28/// hit. See tracing::ExecutionContext::Control for more information.
29void mlirDebuggerSetControl(int controlOption);
30
31/// Print the available context for the current Action.
33
34/// Print the current action backtrace.
35void mlirDebuggerPrintActionBacktrace(bool withContext);
36
37//===----------------------------------------------------------------------===//
38// Cursor Management: The cursor is used to select an IRUnit from the context
39// and to navigate through the IRUnit hierarchy.
40//===----------------------------------------------------------------------===//
41
42/// Print the current IR unit cursor.
43void mlirDebuggerCursorPrint(bool withRegion);
44
45/// Select the IR unit from the current context by ID.
47
48/// Select the parent IR unit of the provided IR unit, or print an error if the
49/// IR unit has no parent.
51
52/// Select the child IR unit at the provided index, print an error if the index
53/// is out of bound. For example if the irunit is an operation, the children IR
54/// units will be the operation's regions.
56
57/// Return the next IR unit logically in the IR. For example if the irunit is a
58/// Region the next IR unit will be the next region in the parent operation or
59/// nullptr if there is no next region.
61
62/// Return the previous IR unit logically in the IR. For example if the irunit
63/// is a Region, the previous IR unit will be the previous region in the parent
64/// operation or nullptr if there is no previous region.
66
67//===----------------------------------------------------------------------===//
68// Breakpoint Management
69//===----------------------------------------------------------------------===//
70
71/// Enable the provided breakpoint.
73
74/// Disable the provided breakpoint.
76
77/// Add a breakpoint matching exactly the provided tag.
79
80/// Add a breakpoint matching a pattern by name.
81void mlirDebuggerAddRewritePatternBreakpoint(const char *patternNameInfo);
82
83/// Add a breakpoint matching a file, line and column.
84void mlirDebuggerAddFileLineColLocBreakpoint(const char *file, int line,
85 int col);
86
87} // extern "C"
88
89namespace mlir {
90// Setup the debugger hooks as a callback on the provided ExecutionContext.
92 tracing::ExecutionContext &executionContext);
93
94} // namespace mlir
95
96#endif // MLIR_SUPPORT_DEBUGGEREXECUTIONCONTEXTHOOK_H
void mlirDebuggerEnableBreakpoint(BreakpointHandle breakpoint)
Enable the provided breakpoint.
void mlirDebuggerCursorPrint(bool withRegion)
Print the current IR unit cursor.
void mlirDebuggerPrintActionBacktrace(bool withContext)
Print the current action backtrace.
struct MLIRIRunit * irunitHandle
void mlirDebuggerCursorSelectChildIRUnit(int index)
Select the child IR unit at the provided index, print an error if the index is out of bound.
struct MLIRBreakpoint * BreakpointHandle
void mlirDebuggerPrintContext()
Print the available context for the current Action.
void mlirDebuggerCursorSelectIRUnitFromContext(int index)
Select the IR unit from the current context by ID.
void mlirDebuggerAddRewritePatternBreakpoint(const char *patternNameInfo)
Add a breakpoint matching a pattern by name.
void mlirDebuggerDisableBreakpoint(BreakpointHandle breakpoint)
Disable the provided breakpoint.
void mlirDebuggerAddFileLineColLocBreakpoint(const char *file, int line, int col)
Add a breakpoint matching a file, line and column.
void mlirDebuggerSetControl(int controlOption)
This is used by the debugger to control what to do after a breakpoint is hit.
void mlirDebuggerCursorSelectPreviousIRUnit()
Return the next IR unit logically in the IR.
void mlirDebuggerCursorSelectNextIRUnit()
Return the previous IR unit logically in the IR.
BreakpointHandle mlirDebuggerAddTagBreakpoint(const char *tag)
Add a breakpoint matching exactly the provided tag.
void mlirDebuggerCursorSelectParentIRUnit()
Select the parent IR unit of the provided IR unit, or print an error if the IR unit has no parent.
The ExecutionContext is the main orchestration of the infrastructure, it acts as a handler in the MLI...
Include the generated interface declarations.
void setupDebuggerExecutionContextHook(tracing::ExecutionContext &executionContext)