summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValentin Tolmer <valentin.tolmer@gmail.com>2020-09-09 16:43:22 +0200
committerAkim Demaille <akim.demaille@gmail.com>2020-09-12 14:10:02 +0200
commitb7e2cac2aaee433415209ac65092425164eccd76 (patch)
treef8d9f701402cc6e319ff24a2533598e43a28017a
parent93d6a5ba4df9ccc0935ef2c8bc892c02c8c1540d (diff)
downloadbison-b7e2cac2aaee433415209ac65092425164eccd76.tar.gz
glr2.cc: add copy constructor to yyGLRStackItem
This silences the clang warning -Wdeprecated-copy. * data/skeletons/glr2.cc: here.
-rw-r--r--data/skeletons/glr2.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/data/skeletons/glr2.cc b/data/skeletons/glr2.cc
index 987ac2e4..f115dcc0 100644
--- a/data/skeletons/glr2.cc
+++ b/data/skeletons/glr2.cc
@@ -127,6 +127,7 @@ m4_define([b4_shared_declarations],
b4_percent_code_get([[requires]])[
#include <algorithm>
#include <cstddef> // ptrdiff_t
+#include <cstring> // memcpy
#include <iostream>
#include <iomanip>
#include <stdexcept>
@@ -1239,6 +1240,18 @@ struct yyGLRStackItem {
}
}
+ yyGLRStackItem(const yyGLRStackItem& other)
+ : isState_(other.isState_) {
+ std::memcpy(raw_, other.raw_, union_size);
+ }
+
+ yyGLRStackItem& operator=(yyGLRStackItem other)
+ {
+ std::swap(isState_, other.isState_);
+ std::swap(raw_, other.raw_);
+ return *this;
+ }
+
~yyGLRStackItem() {
if (isState()) {
getState().~yyGLRState();