Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package cvise for openSUSE:Factory checked 
in at 2021-03-28 11:54:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cvise (Old)
 and      /work/SRC/openSUSE:Factory/.cvise.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cvise"

Sun Mar 28 11:54:24 2021 rev:30 rq:881309 version:2.3.0+git.20210325.1a5f305

Changes:
--------
--- /work/SRC/openSUSE:Factory/cvise/cvise.changes      2021-03-21 
23:20:29.772741846 +0100
+++ /work/SRC/openSUSE:Factory/.cvise.new.2401/cvise.changes    2021-03-28 
11:56:26.968228587 +0200
@@ -1,0 +2,6 @@
+Thu Mar 25 12:26:03 UTC 2021 - mli...@suse.cz
+
+- Update to version 2.3.0+git.20210325.1a5f305:
+  * Add new clang pass: class-to-struct (#50).
+
+-------------------------------------------------------------------

Old:
----
  cvise-2.3.0+git.20210320.0ff4a84.tar.xz

New:
----
  cvise-2.3.0+git.20210325.1a5f305.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cvise.spec ++++++
--- /var/tmp/diff_new_pack.AjaR24/_old  2021-03-28 11:56:27.572229122 +0200
+++ /var/tmp/diff_new_pack.AjaR24/_new  2021-03-28 11:56:27.572229122 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           cvise
-Version:        2.3.0+git.20210320.0ff4a84
+Version:        2.3.0+git.20210325.1a5f305
 Release:        0
 Summary:        Super-parallel Python port of the C-Reduce
 License:        BSD-3-Clause

++++++ cvise-2.3.0+git.20210320.0ff4a84.tar.xz -> 
cvise-2.3.0+git.20210325.1a5f305.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cvise-2.3.0+git.20210320.0ff4a84/clang_delta/CMakeLists.txt 
new/cvise-2.3.0+git.20210325.1a5f305/clang_delta/CMakeLists.txt
--- old/cvise-2.3.0+git.20210320.0ff4a84/clang_delta/CMakeLists.txt     
2021-03-20 20:44:38.000000000 +0100
+++ new/cvise-2.3.0+git.20210325.1a5f305/clang_delta/CMakeLists.txt     
2021-03-25 13:22:45.000000000 +0100
@@ -52,6 +52,8 @@
   "/tests/callexpr-to-value/test1.output"
   "/tests/callexpr-to-value/test2.c"
   "/tests/callexpr-to-value/test2.output"
+  "/tests/class-to-struct/class-to-struct1.C"
+  "/tests/class-to-struct/class-to-struct1.output"
   "/tests/copy-propagation/copy1.cpp"
   "/tests/copy-propagation/copy1.output"
   "/tests/copy-propagation/copy2.cpp"
@@ -417,6 +419,8 @@
   ClangDelta.cpp
   ClassTemplateToClass.cpp
   ClassTemplateToClass.h
+  ClassToStruct.cpp
+  ClassToStruct.h
   CombineGlobalVarDecl.cpp
   CombineGlobalVarDecl.h
   CombineLocalVarDecl.cpp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cvise-2.3.0+git.20210320.0ff4a84/clang_delta/ClassToStruct.cpp 
new/cvise-2.3.0+git.20210325.1a5f305/clang_delta/ClassToStruct.cpp
--- old/cvise-2.3.0+git.20210320.0ff4a84/clang_delta/ClassToStruct.cpp  
1970-01-01 01:00:00.000000000 +0100
+++ new/cvise-2.3.0+git.20210325.1a5f305/clang_delta/ClassToStruct.cpp  
2021-03-25 13:22:45.000000000 +0100
@@ -0,0 +1,113 @@
+//===----------------------------------------------------------------------===//
+//
+// Copyright (c) 2012, 2013, 2015, 2016, 2017, 2019 The University of Utah
+// All rights reserved.
+//
+// This file is distributed under the University of Illinois Open Source
+// License.  See the file COPYING for details.
+//
+//===----------------------------------------------------------------------===//
+
+#if HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "ClassToStruct.h"
+
+#include "clang/Basic/SourceManager.h"
+#include "clang/AST/RecursiveASTVisitor.h"
+#include "clang/AST/ASTContext.h"
+#include "clang/Lex/Lexer.h"
+
+#include "TransformationManager.h"
+
+using namespace clang;
+
+static const char *DescriptionMsg = 
+"The pass replaces class with struct keyword. \n";
+
+static RegisterTransformation<ClassToStruct>
+         Trans("class-to-struct", DescriptionMsg);
+
+class ClassToStructVisitor : public 
+  RecursiveASTVisitor<ClassToStructVisitor> {
+
+public:
+  explicit ClassToStructVisitor(
+             ClassToStruct *Instance)
+    : ConsumerInstance(Instance)
+  { }
+
+  bool VisitCXXRecordDecl(CXXRecordDecl *CXXRD);
+
+private:
+  ClassToStruct *ConsumerInstance;
+};
+
+bool ClassToStructVisitor::VisitCXXRecordDecl(
+       CXXRecordDecl *CXXRD)
+{
+  if (!CXXRD->isClass())
+    return true;
+  ConsumerInstance->CXXRDDefSet.insert(CXXRD->getDefinition());
+  return true;
+}
+
+void ClassToStruct::Initialize(ASTContext &context) 
+{
+  Transformation::Initialize(context);
+  CollectionVisitor = new ClassToStructVisitor(this);
+}
+
+void ClassToStruct::HandleTranslationUnit(ASTContext &Ctx)
+{
+  if (TransformationManager::isCLangOpt() ||
+      TransformationManager::isOpenCLLangOpt()) {
+    ValidInstanceNum = 0;
+  }
+  else {
+    CollectionVisitor->TraverseDecl(Ctx.getTranslationUnitDecl());
+    analyzeCXXRDSet();
+  }
+
+  if (QueryInstanceOnly)
+    return;
+
+  if (TransformationCounter > ValidInstanceNum) {
+    TransError = TransMaxInstanceError;
+    return;
+  }
+
+  Ctx.getDiagnostics().setSuppressAllDiagnostics(false);
+  replaceClassWithStruct();
+
+  if (Ctx.getDiagnostics().hasErrorOccurred() ||
+      Ctx.getDiagnostics().hasFatalErrorOccurred())
+    TransError = TransInternalError;
+}
+
+void ClassToStruct::analyzeCXXRDSet()
+{
+  for (CXXRecordDeclSetVector::iterator I = CXXRDDefSet.begin(), 
+       E = CXXRDDefSet.end(); I != E; ++I) {
+    const CXXRecordDecl *Def = (*I);
+    ValidInstanceNum++;
+    if (ValidInstanceNum == TransformationCounter)
+      TheCXXRDDef = Def;
+  }
+}
+
+void ClassToStruct::replaceClassWithStruct()
+{
+  TransAssert(TheCXXRDDef && "NULL Base CXXRD!");
+  SourceLocation LocStart = TheCXXRDDef->getBeginLoc();
+  SourceLocation LocEnd = LocStart.getLocWithOffset(strlen("class"));
+  TransAssert(LocEnd.isValid() && "Invalid Location!");
+  TheRewriter.ReplaceText(SourceRange(LocStart, LocEnd), "struct");
+}
+
+ClassToStruct::~ClassToStruct(void)
+{
+  delete CollectionVisitor;
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cvise-2.3.0+git.20210320.0ff4a84/clang_delta/ClassToStruct.h 
new/cvise-2.3.0+git.20210325.1a5f305/clang_delta/ClassToStruct.h
--- old/cvise-2.3.0+git.20210320.0ff4a84/clang_delta/ClassToStruct.h    
1970-01-01 01:00:00.000000000 +0100
+++ new/cvise-2.3.0+git.20210325.1a5f305/clang_delta/ClassToStruct.h    
2021-03-25 13:22:45.000000000 +0100
@@ -0,0 +1,65 @@
+//===----------------------------------------------------------------------===//
+//
+// Copyright (c) 2012, 2013, 2016 The University of Utah
+// All rights reserved.
+//
+// This file is distributed under the University of Illinois Open Source
+// License.  See the file COPYING for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef CLASS_TO_STRUCT_H
+#define CLASS_TO_STRUCT_H
+
+#include "llvm/ADT/SetVector.h"
+#include "llvm/ADT/SmallPtrSet.h"
+#include "Transformation.h"
+
+namespace clang {
+  class DeclGroupRef;
+  class ASTContext;
+  class CXXRecordDecl;
+}
+
+class ClassToStructVisitor;
+
+class ClassToStruct : public Transformation {
+friend class ClassToStructVisitor;
+
+public:
+  ClassToStruct(const char *TransName, const char *Desc)
+    : Transformation(TransName, Desc),
+      CollectionVisitor(NULL),
+      TheCXXRDDef(NULL)
+  { }
+
+  ~ClassToStruct(void);
+
+private:
+  typedef llvm::SmallPtrSet<const clang::CXXRecordDecl *, 10> CXXRecordDeclSet;
+  typedef llvm::SetVector<const clang::CXXRecordDecl *> CXXRecordDeclSetVector;
+
+  virtual void Initialize(clang::ASTContext &context);
+
+  virtual void HandleTranslationUnit(clang::ASTContext &Ctx);
+
+  void analyzeCXXRDSet();
+
+  void replaceClassWithStruct();
+
+  CXXRecordDeclSetVector CXXRDDefSet;
+
+  ClassToStructVisitor *CollectionVisitor;
+
+  const clang::CXXRecordDecl *TheCXXRDDef;
+
+  // Unimplemented
+  ClassToStruct(void);
+
+  ClassToStruct(const ClassToStruct &);
+
+  void operator=(const ClassToStruct &);
+};
+
+#endif
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cvise-2.3.0+git.20210320.0ff4a84/clang_delta/tests/class-to-struct/class-to-struct1.C
 
new/cvise-2.3.0+git.20210325.1a5f305/clang_delta/tests/class-to-struct/class-to-struct1.C
--- 
old/cvise-2.3.0+git.20210320.0ff4a84/clang_delta/tests/class-to-struct/class-to-struct1.C
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/cvise-2.3.0+git.20210325.1a5f305/clang_delta/tests/class-to-struct/class-to-struct1.C
   2021-03-25 13:22:45.000000000 +0100
@@ -0,0 +1,12 @@
+template <typename T>
+class MyName
+{
+  public:
+    T a;
+};
+
+int main()
+{
+  MyName<int> a;
+  return a.a;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cvise-2.3.0+git.20210320.0ff4a84/clang_delta/tests/class-to-struct/class-to-struct1.output
 
new/cvise-2.3.0+git.20210325.1a5f305/clang_delta/tests/class-to-struct/class-to-struct1.output
--- 
old/cvise-2.3.0+git.20210320.0ff4a84/clang_delta/tests/class-to-struct/class-to-struct1.output
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/cvise-2.3.0+git.20210325.1a5f305/clang_delta/tests/class-to-struct/class-to-struct1.output
      2021-03-25 13:22:45.000000000 +0100
@@ -0,0 +1,12 @@
+template <typename T>
+struct MyName
+{
+  public:
+    T a;
+};
+
+int main()
+{
+  MyName<int> a;
+  return a.a;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cvise-2.3.0+git.20210320.0ff4a84/clang_delta/tests/test_clang_delta.py 
new/cvise-2.3.0+git.20210325.1a5f305/clang_delta/tests/test_clang_delta.py
--- old/cvise-2.3.0+git.20210320.0ff4a84/clang_delta/tests/test_clang_delta.py  
2021-03-20 20:44:38.000000000 +0100
+++ new/cvise-2.3.0+git.20210325.1a5f305/clang_delta/tests/test_clang_delta.py  
2021-03-25 13:22:45.000000000 +0100
@@ -543,3 +543,6 @@
 
     def test_simple_inliner_alias(self):
         self.check_clang_delta('simple-inliner/alias-crash.c', 
'--transformation=simple-inliner --counter=1')
+
+    def test_class_to_struct(self):
+        self.check_clang_delta('class-to-struct/class-to-struct1.C', 
'--transformation=class-to-struct --counter=1')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cvise-2.3.0+git.20210320.0ff4a84/cvise/pass_groups/all.json 
new/cvise-2.3.0+git.20210325.1a5f305/cvise/pass_groups/all.json
--- old/cvise-2.3.0+git.20210320.0ff4a84/cvise/pass_groups/all.json     
2021-03-20 20:44:38.000000000 +0100
+++ new/cvise-2.3.0+git.20210325.1a5f305/cvise/pass_groups/all.json     
2021-03-25 13:22:45.000000000 +0100
@@ -104,6 +104,7 @@
     {"pass": "clang", "arg": "simplify-recursive-template-instantiation", "c": 
true },
     {"pass": "clang", "arg": "vector-to-array", "c": true },
     {"pass": "clang", "arg": "remove-try-catch", "c": true },
+    {"pass": "clang", "arg": "class-to-struct", "c": true },
     {"pass": "lines", "arg": "0"},
     {"pass": "lines", "arg": "1"},
     {"pass": "lines", "arg": "2"},

Reply via email to