diff options
author | Jason Merrill <jason@redhat.com> | 2022-11-30 14:22:03 -0500 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2022-11-30 22:46:05 -0500 |
commit | 4304e09a1617bcf1c87f5bc96017ae5017379d75 (patch) | |
tree | ea3d7c8715a87b686240adfa369ba853ed536653 /gcc/cp/pt.cc | |
parent | cda29c540037fbcf00a377196050953aab1d3d5b (diff) | |
download | gcc-4304e09a1617bcf1c87f5bc96017ae5017379d75.zip gcc-4304e09a1617bcf1c87f5bc96017ae5017379d75.tar.gz gcc-4304e09a1617bcf1c87f5bc96017ae5017379d75.tar.bz2 |
c++: small contracts fixes
The first is an actual bug: remove_contract_attributes was only keeping one
attribute. The second just helps flow analysis in optimizers and static
analyzers.
gcc/cp/ChangeLog:
* contracts.cc (remove_contract_attributes): Actually prepend
to the list.
* pt.cc (tsubst_contract): Only look for a postcondition if type is
nonnull.
Diffstat (limited to 'gcc/cp/pt.cc')
-rw-r--r-- | gcc/cp/pt.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 2d8e4fd..08de273 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -11561,7 +11561,7 @@ tsubst_contract (tree decl, tree t, tree args, tsubst_flags_t complain, tree r = copy_node (t); /* Rebuild the result variable. */ - if (POSTCONDITION_P (t) && POSTCONDITION_IDENTIFIER (t)) + if (type && POSTCONDITION_P (t) && POSTCONDITION_IDENTIFIER (t)) { tree oldvar = POSTCONDITION_IDENTIFIER (t); |