aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
diff options
context:
space:
mode:
authorjyu2-git <jennifer.yu@intel.com>2023-11-07 20:43:40 -0800
committerGitHub <noreply@github.com>2023-11-07 20:43:40 -0800
commitc79b544d2b988e26f35db829088e0e5088c57498 (patch)
tree70cf24b4b1b5ae037694b37aa0115558130aeb37 /lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
parent64ed4edca8e76e2ce2586584fdcb3b906532aa18 (diff)
downloadllvm-c79b544d2b988e26f35db829088e0e5088c57498.zip
llvm-c79b544d2b988e26f35db829088e0e5088c57498.tar.gz
llvm-c79b544d2b988e26f35db829088e0e5088c57498.tar.bz2
[SEH] Fix assertin when return scalar value from __try block. (#71488)
Current compler assert with `!SI->isAtomic() && !SI->isVolatile()' failed This due to following rule: First, no exception can move in or out of _try region., i.e., no "potential faulty instruction can be moved across _try boundary. Second, the order of exceptions for instructions 'directly' under a _try must be preserved (not applied to those in callees). Finally, global states (local/global/heap variables) that can be read outside of _try region must be updated in memory (not just in register) before the subsequent exception occurs. All memory instructions inside a _try are considered as 'volatile' to assure 2nd and 3rd rules for C-code above. This is a little sub-optimized. But it's acceptable as the amount of code directly under _try is very small. However during findDominatingStoreToReturnValue: those are not allowed. To fix just skip the assertion when current function has seh try.
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp')
0 files changed, 0 insertions, 0 deletions