-
Notifications
You must be signed in to change notification settings - Fork 33
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1445 from IntelPython/main
Merges latest changes from main to gold/2021
- Loading branch information
Showing
28 changed files
with
555 additions
and
492 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
# SPDX-FileCopyrightText: 2020 - 2024 Intel Corporation | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
"""Implements a custom debug metadata generator class for numba-dpex kernels. | ||
""" | ||
|
||
from numba.core import debuginfo | ||
|
||
|
||
class DIBuilder(debuginfo.DIBuilder): | ||
"""Overrides Numba's default DIBuilder with numba-dpex-specific customizations.""" | ||
|
||
# pylint: disable=too-many-arguments | ||
def mark_subprogram(self, function, qualname, argnames, argtypes, line): | ||
"""Sets DW_AT_name and DW_AT_linkagename tags for a kernel decorated function. | ||
Numba generates a unique name for every function it compiles, but in | ||
upstream Numba the unique name is not used as the "qualified" name of | ||
the function. The behavior leads to a bug discovered in Numba-dpex when | ||
a compiled function uses closure variables. | ||
Refer (https://github.com/IntelPython/numba-dpex/issues/898). | ||
To resolve the issue numba-dpex uses the unique_name as the qualified | ||
name. Refer to | ||
:class:`numba_dpex.core.passes.passes.QualNameDisambiguationLowering`. | ||
However, doing so breaks setting GDB breakpoints based on function | ||
name as the function name is no longer what is in the source, but what | ||
is the unique name generated by Numba. To fix it, numba-dpex uses a | ||
modified DISubprogram metadata generator. The name (DW_AT_name) tag is | ||
set to the base function name, discarding the unique qualifier and | ||
linkagename is set to an empty string. | ||
""" | ||
name = qualname[0 : qualname.find("$")] # noqa: E203 | ||
argmap = dict(zip(argnames, argtypes)) | ||
|
||
di_subp = self._add_subprogram( | ||
name=name, | ||
linkagename="", | ||
line=line, | ||
function=function, | ||
argmap=argmap, | ||
) | ||
function.set_metadata("dbg", di_subp) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.