diff options
author | Richard Biener <rguenther@suse.de> | 2025-02-28 09:58:36 +0100 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2025-02-28 12:38:00 +0100 |
commit | 95f5d6cc17e7d6b689674756c62b6b5e1284afd0 (patch) | |
tree | ef06ad8a285b1fa51d9411cbc2e61a62f353d91a /gcc/expr.cc | |
parent | 616d1bd1ae28bb7617a21eb9d118e2bbeb01a409 (diff) | |
download | gcc-95f5d6cc17e7d6b689674756c62b6b5e1284afd0.zip gcc-95f5d6cc17e7d6b689674756c62b6b5e1284afd0.tar.gz gcc-95f5d6cc17e7d6b689674756c62b6b5e1284afd0.tar.bz2 |
middle-end/66279 - gimplification clobbers shared asm constraints
When the C++ frontend clones a CTOR we do not copy ASM_EXPR constraints
fully as walk_tree does not recurse to TREE_PURPOSE of TREE_LIST nodes.
At this point doing that seems too dangerous so the following instead
avoids gimplification of ASM_EXPRs to clobber the shared constraints
and unshares it there, like it also unshares TREE_VALUE when it
re-writes a "+" output constraint to separate "=" output and matching
input constraint.
PR middle-end/66279
* gimplify.cc (gimplify_asm_expr): Copy TREE_PURPOSE before
rewriting it for "+" processing.
* g++.dg/pr66279.C: New testcase.
Diffstat (limited to 'gcc/expr.cc')
0 files changed, 0 insertions, 0 deletions