r207766 - Fixing a FIXME -- no longer using std::memcpy, since that would fail for non-trivial types. Replaced with std::copy. No functional changes intended since all uses of this functionality either use pointers or integers.
Aaron Ballman
aaron at aaronballman.com
Thu May 1 08:21:03 PDT 2014
Author: aaronballman
Date: Thu May 1 10:21:03 2014
New Revision: 207766
URL: http://llvm.org/viewvc/llvm-project?rev=207766&view=rev
Log:
Fixing a FIXME -- no longer using std::memcpy, since that would fail for non-trivial types. Replaced with std::copy. No functional changes intended since all uses of this functionality either use pointers or integers.
Modified:
cfe/trunk/include/clang/AST/Attr.h
cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp
Modified: cfe/trunk/include/clang/AST/Attr.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Attr.h?rev=207766&r1=207765&r2=207766&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/Attr.h (original)
+++ cfe/trunk/include/clang/AST/Attr.h Thu May 1 10:21:03 2014
@@ -26,8 +26,8 @@
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
+#include <algorithm>
#include <cassert>
-#include <cstring>
namespace clang {
class ASTContext;
Modified: cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp?rev=207766&r1=207765&r2=207766&view=diff
==============================================================================
--- cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp (original)
+++ cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp Thu May 1 10:21:03 2014
@@ -537,9 +537,8 @@ namespace {
<< "A->" << getLowerName() << "_size()";
}
void writeCtorBody(raw_ostream &OS) const override {
- // FIXME: memcpy is not safe on non-trivial types.
- OS << " std::memcpy(" << getLowerName() << ", " << getUpperName()
- << ", " << getLowerName() << "Size * sizeof(" << getType() << "));\n";
+ OS << " std::copy(" << getUpperName() << ", " << getUpperName()
+ << " + " << getLowerName() << "Size, " << getLowerName() << ");";
}
void writeCtorInitializers(raw_ostream &OS) const override {
OS << getLowerName() << "Size(" << getUpperName() << "Size), "
More information about the cfe-commits
mailing list