Hello community,

here is the log from the commit of package creduce for openSUSE:Factory checked 
in at 2017-05-20 10:14:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/creduce (Old)
 and      /work/SRC/openSUSE:Factory/.creduce.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "creduce"

Sat May 20 10:14:16 2017 rev:10 rq:496502 version:2.7.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/creduce/creduce.changes  2017-04-28 
09:13:51.149436009 +0200
+++ /work/SRC/openSUSE:Factory/.creduce.new/creduce.changes     2017-05-20 
10:14:19.590260676 +0200
@@ -1,0 +2,8 @@
+Fri May 19 08:11:00 UTC 2017 - idon...@suse.com
+
+- Update to version 2.7.0
+  * Minor bugfixes
+  * LLVM 4.0 support
+- Depend on llvm4/clang4
+
+-------------------------------------------------------------------

Old:
----
  creduce-2.6.0.tar.gz

New:
----
  creduce-2.7.0.tar.gz

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

Other differences:
------------------
++++++ creduce.spec ++++++
--- /var/tmp/diff_new_pack.cWlYuq/_old  2017-05-20 10:14:20.062193996 +0200
+++ /var/tmp/diff_new_pack.cWlYuq/_new  2017-05-20 10:14:20.066193431 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           creduce
-Version:        2.6.0
+Version:        2.7.0
 Release:        0
 Summary:        C-Reduce, a C program reducer
 License:        BSD-3-Clause
@@ -25,11 +25,11 @@
 Url:            https://github.com/csmith-project/creduce
 Source:         
https://github.com/csmith-project/%{name}/archive/creduce-%{version}.tar.gz
 BuildRequires:  astyle
-BuildRequires:  clang3_9-devel
+BuildRequires:  clang4-devel
 BuildRequires:  delta
 BuildRequires:  flex
 BuildRequires:  indent
-BuildRequires:  llvm3_9-devel
+BuildRequires:  llvm4-devel
 BuildRequires:  ncurses-devel
 BuildRequires:  perl-Benchmark-Timer
 BuildRequires:  perl-Exporter-Lite
@@ -40,10 +40,10 @@
 BuildRequires:  perl-Term-ReadKey
 BuildRequires:  zlib-devel
 Requires:       astyle
-Requires:       clang3_9-devel
+Requires:       clang4-devel
 Requires:       delta
 Requires:       indent
-Requires:       llvm3_9-devel
+Requires:       llvm4-devel
 Requires:       perl-Benchmark-Timer
 Requires:       perl-Exporter-Lite
 Requires:       perl-File-Which

++++++ creduce-2.6.0.tar.gz -> creduce-2.7.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/.travis.yml 
new/creduce-creduce-2.7.0/.travis.yml
--- old/creduce-creduce-2.6.0/.travis.yml       2016-12-16 21:57:38.000000000 
+0100
+++ new/creduce-creduce-2.7.0/.travis.yml       2017-05-18 18:42:08.000000000 
+0200
@@ -1,5 +1,5 @@
 ##
-## Copyright (c) 2015, 2016 The University of Utah
+## Copyright (c) 2015, 2016, 2017 The University of Utah
 ## Copyright (c) 2015 Tamir Duberstein
 ## All rights reserved.
 ##
@@ -17,9 +17,9 @@
   - sudo scripts/travis_deps.sh
 
 script: >
-  CXX=/usr/lib/llvm-3.9/bin/clang++
-  CC=/usr/lib/llvm-3.9/bin/clang
-  ./configure --with-llvm=/usr/lib/llvm-3.9 &&
+  CXX=/usr/lib/llvm-4.0/bin/clang++
+  CC=/usr/lib/llvm-4.0/bin/clang
+  ./configure --with-llvm=/usr/lib/llvm-4.0 &&
   make -j2 &&
   make check
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/CMakeLists.txt 
new/creduce-creduce-2.7.0/CMakeLists.txt
--- old/creduce-creduce-2.6.0/CMakeLists.txt    2016-12-16 21:57:38.000000000 
+0100
+++ new/creduce-creduce-2.7.0/CMakeLists.txt    2017-05-18 18:42:08.000000000 
+0200
@@ -1,6 +1,6 @@
 ## -*- mode: CMake -*-
 ##
-## Copyright (c) 2012, 2013, 2014, 2015, 2016 The University of Utah
+## Copyright (c) 2012, 2013, 2014, 2015, 2016, 2017 The University of Utah
 ## All rights reserved.
 ##
 ## This file is distributed under the University of Illinois Open Source
@@ -26,9 +26,14 @@
 find_package(LLVM REQUIRED CONFIG NO_CMAKE_BUILDS_PATH)
 message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
 message(STATUS "Using LLVMConfig.cmake in ${LLVM_DIR}")
-if (${LLVM_PACKAGE_VERSION} VERSION_LESS "3.9")
-  message(FATAL_ERROR "C-Reduce requires LLVM 3.9 or later")
+if (${LLVM_PACKAGE_VERSION} VERSION_LESS "4.0")
+  message(FATAL_ERROR "C-Reduce requires LLVM 4.0 or later")
 endif()
+#
+# Do this here, too, just to keep it with the LLVM check above.
+#
+find_package(Clang REQUIRED CONFIG NO_CMAKE_BUILDS_PATH)
+message(STATUS "Using ClangConfig.cmake in ${Clang_DIR}")
 
 # Locate Perl and check its version.
 #
@@ -51,7 +56,7 @@
 # `git archive' inserts the abbreviated hash of the archive's commit into this
 # file.  (See the `.gitattributes' file.)
 #
-set(GIT_HASH "b02c375")
+set(GIT_HASH "c0c7f0be")
 if(GIT_HASH MATCHES "^\\$")
   ## METHOD 2: The source tree is a git repository.
   get_git_head_revision(GIT_REFSPEC GIT_HASH)
@@ -85,11 +90,11 @@
 set(creduce_PACKAGE                    "creduce")
 set(creduce_PACKAGE_BUGREPORT          "creduce-b...@flux.utah.edu")
 set(creduce_PACKAGE_NAME               "creduce")
-set(creduce_PACKAGE_STRING             "creduce 2.6.0")
+set(creduce_PACKAGE_STRING             "creduce 2.7.0")
 set(creduce_PACKAGE_TARNAME            "creduce")
 set(creduce_PACKAGE_URL                        
"http://embed.cs.utah.edu/creduce/";)
-set(creduce_PACKAGE_VERSION            "2.6.0")
-set(creduce_VERSION                    "2.6.0")
+set(creduce_PACKAGE_VERSION            "2.7.0")
+set(creduce_VERSION                    "2.7.0")
 
 # FIXME: Should be determined automatically.
 set(YYTEXT_POINTER 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/INSTALL 
new/creduce-creduce-2.7.0/INSTALL
--- old/creduce-creduce-2.6.0/INSTALL   2016-12-16 21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/INSTALL   2017-05-18 18:42:08.000000000 +0200
@@ -33,10 +33,10 @@
 
   http://perlbrew.pl/
 
-On FreeBSD 10.2, the prerequisites can be installed like this:
+On FreeBSD 10.3, the prerequisites can be installed like this:
 
   sudo pkg install \
-    llvm39 \
+    llvm40 \
     p5-Exporter-Lite p5-File-Which p5-Getopt-Tabular p5-Regexp-Common \
     flex
 
@@ -46,8 +46,8 @@
 Flex:
   http://flex.sourceforge.net/
 
-LLVM/Clang 3.9.0:
-  http://llvm.org/releases/download.html#3.9.0
+LLVM/Clang 4.0.0:
+  http://llvm.org/releases/download.html#4.0.0
   (No need to compile it: the appropriate "Clang binaries" package is
   all you need.  If you use one of the binary packages, you may need to
   install additional packages that the binary package depends on.  For
@@ -89,7 +89,7 @@
   cpan -i 'Term::ReadKey'
   cpan -i 'Sys::CPU'
 
-On FreeBSD 10.2:
+On FreeBSD 10.3:
 
   sudo pkg install p5-Term-ReadKey p5-Sys-CPU
 
@@ -137,6 +137,9 @@
   # Use the LLVM/Clang tree rooted at /opt/llvm
   configure --with-llvm=/opt/llvm
 
+Note that you must actually *build* LLVM and Clang before building
+C-Reduce.
+
 Note that assertions are enabled by default (which is probably what
 you want).  To disable assertions:
 
@@ -160,6 +163,9 @@
   # Use the LLVM/Clang tree rooted at /opt/llvm
   cmake [source-dir] -DCMAKE_PREFIX_PATH=/opt/llvm
 
+Note that you must actually *build* LLVM and Clang before building
+C-Reduce.
+
 Note that assertions are enabled by default (which is probably what
 you want).  To disable assertions:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/Makefile.in 
new/creduce-creduce-2.7.0/Makefile.in
--- old/creduce-creduce-2.6.0/Makefile.in       2016-12-16 21:57:38.000000000 
+0100
+++ new/creduce-creduce-2.7.0/Makefile.in       2017-05-18 18:42:08.000000000 
+0200
@@ -92,7 +92,8 @@
 target_triplet = @target@
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_clang.m4 \
+       $(top_srcdir)/m4/ax_compare_version.m4 \
        $(top_srcdir)/m4/ax_llvm.m4 \
        $(top_srcdir)/m4/ax_prog_perl_modules.m4 \
        $(top_srcdir)/m4/ax_prog_perl_version.m4 \
@@ -231,7 +232,9 @@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLANG_CPPFLAGS = @CLANG_CPPFLAGS@
 CLANG_FORMAT = @CLANG_FORMAT@
+CLANG_LDFLAGS = @CLANG_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/aclocal.m4 
new/creduce-creduce-2.7.0/aclocal.m4
--- old/creduce-creduce-2.6.0/aclocal.m4        2016-12-16 21:57:38.000000000 
+0100
+++ new/creduce-creduce-2.7.0/aclocal.m4        2017-05-18 18:42:08.000000000 
+0200
@@ -1204,6 +1204,7 @@
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
+m4_include([m4/ax_clang.m4])
 m4_include([m4/ax_compare_version.m4])
 m4_include([m4/ax_llvm.m4])
 m4_include([m4/ax_prog_perl_modules.m4])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/clang_delta/CMakeLists.txt 
new/creduce-creduce-2.7.0/clang_delta/CMakeLists.txt
--- old/creduce-creduce-2.6.0/clang_delta/CMakeLists.txt        2016-12-16 
21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/clang_delta/CMakeLists.txt        2017-05-18 
18:42:08.000000000 +0200
@@ -1,6 +1,6 @@
 ## -*- mode: CMake -*-
 ##
-## Copyright (c) 2012, 2013, 2014, 2015, 2016 The University of Utah
+## Copyright (c) 2012, 2013, 2014, 2015, 2016, 2017 The University of Utah
 ## All rights reserved.
 ##
 ## This file is distributed under the University of Illinois Open Source
@@ -14,6 +14,7 @@
 ###############################################################################
 
 # find_package(LLVM) is done by the topmost "CMakeLists.txt" file.
+# find_package(Clang) is done by the topmost "CMakeLists.txt" file.
 
 # Generate file "git_version.cpp".
 #
@@ -28,6 +29,8 @@
 include_directories(${CMAKE_BINARY_DIR})
 include_directories(${PROJECT_SOURCE_DIR}) # needed for gen'ed .cpp files
 include_directories(${LLVM_INCLUDE_DIRS})
+include_directories(${CLANG_INCLUDE_DIRS}) # only works for LLVM post-4.0
+
 link_directories(${LLVM_LIBRARY_DIRS})
 
 llvm_map_components_to_libnames(LLVM_LIBS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/creduce-creduce-2.6.0/clang_delta/ExpressionDetector.cpp 
new/creduce-creduce-2.7.0/clang_delta/ExpressionDetector.cpp
--- old/creduce-creduce-2.6.0/clang_delta/ExpressionDetector.cpp        
2016-12-16 21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/clang_delta/ExpressionDetector.cpp        
2017-05-18 18:42:08.000000000 +0200
@@ -452,8 +452,8 @@
   }
 
   case Stmt::StringLiteralClass: {
-    const StringLiteral *Lit1 = cast<StringLiteral>(E1);
-    const StringLiteral *Lit2 = cast<StringLiteral>(E2);
+    const clang::StringLiteral *Lit1 = cast<clang::StringLiteral>(E1);
+    const clang::StringLiteral *Lit2 = cast<clang::StringLiteral>(E2);
     return Lit1->getBytes() == Lit2->getBytes();
   }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/clang_delta/Makefile.am 
new/creduce-creduce-2.7.0/clang_delta/Makefile.am
--- old/creduce-creduce-2.6.0/clang_delta/Makefile.am   2016-12-16 
21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/clang_delta/Makefile.am   2017-05-18 
18:42:08.000000000 +0200
@@ -1,6 +1,6 @@
 ## -*- mode: Makefile-Automake -*-
 ##
-## Copyright (c) 2012, 2013, 2014, 2015, 2016 The University of Utah
+## Copyright (c) 2012, 2013, 2014, 2015, 2016, 2017 The University of Utah
 ## All rights reserved.
 ##
 ## This file is distributed under the University of Illinois Open Source
@@ -80,6 +80,7 @@
                   $(shell "$(LLVM_CONFIG)" \--system-libs)
 
 clang_delta_CPPFLAGS = \
+       $(CLANG_CPPFLAGS) \
        -I"$(LLVMINCLUDEDIR)/clang"
 
 clang_delta_CXXFLAGS = \
@@ -113,6 +114,7 @@
        -lclangRewriteFrontend -lclangRewrite -lclangAST -lclangBasic 
-lclangEdit -lclangLex \
        -lclangARCMigrate \
        $(LLVMLIBS) \
+       $(CLANG_LDFLAGS) \
        $(LLVMLDFLAGS)
 
 # Automake doesn't grok our use of $(shell) in `clang_delta_LDADD', so it puts
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/clang_delta/Makefile.in 
new/creduce-creduce-2.7.0/clang_delta/Makefile.in
--- old/creduce-creduce-2.6.0/clang_delta/Makefile.in   2016-12-16 
21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/clang_delta/Makefile.in   2017-05-18 
18:42:08.000000000 +0200
@@ -94,7 +94,8 @@
 libexec_PROGRAMS = clang_delta$(EXEEXT)
 subdir = clang_delta
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_clang.m4 \
+       $(top_srcdir)/m4/ax_compare_version.m4 \
        $(top_srcdir)/m4/ax_llvm.m4 \
        $(top_srcdir)/m4/ax_prog_perl_modules.m4 \
        $(top_srcdir)/m4/ax_prog_perl_version.m4 \
@@ -186,6 +187,7 @@
 nodist_clang_delta_OBJECTS = clang_delta-git_version.$(OBJEXT)
 clang_delta_OBJECTS = $(am_clang_delta_OBJECTS) \
        $(nodist_clang_delta_OBJECTS)
+am__DEPENDENCIES_1 =
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
@@ -284,7 +286,9 @@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLANG_CPPFLAGS = @CLANG_CPPFLAGS@
 CLANG_FORMAT = @CLANG_FORMAT@
+CLANG_LDFLAGS = @CLANG_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
@@ -470,6 +474,7 @@
                   $(shell "$(LLVM_CONFIG)" \--system-libs)
 
 clang_delta_CPPFLAGS = \
+       $(CLANG_CPPFLAGS) \
        -I"$(LLVMINCLUDEDIR)/clang"
 
 clang_delta_CXXFLAGS = \
@@ -504,6 +509,7 @@
        -lclangRewriteFrontend -lclangRewrite -lclangAST -lclangBasic 
-lclangEdit -lclangLex \
        -lclangARCMigrate \
        $(LLVMLIBS) \
+       $(CLANG_LDFLAGS) \
        $(LLVMLDFLAGS)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/creduce-creduce-2.6.0/clang_delta/ReducePointerLevel.cpp 
new/creduce-creduce-2.7.0/clang_delta/ReducePointerLevel.cpp
--- old/creduce-creduce-2.6.0/clang_delta/ReducePointerLevel.cpp        
2016-12-16 21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/clang_delta/ReducePointerLevel.cpp        
2017-05-18 18:42:08.000000000 +0200
@@ -598,7 +598,8 @@
   if (const DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(E)) {
     const ValueDecl *ValueD = DRE->getDecl();
     DD = dyn_cast<DeclaratorDecl>(ValueD);
-    TransAssert(DD && "Bad Declarator!");
+    if (!DD)
+      return NULL;
   }
   else if (const MemberExpr *ME = dyn_cast<MemberExpr>(E)) {
     ValueDecl *OrigDecl = ME->getMemberDecl();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/creduce-creduce-2.6.0/clang_delta/RemoveUnusedFunction.cpp 
new/creduce-creduce-2.7.0/clang_delta/RemoveUnusedFunction.cpp
--- old/creduce-creduce-2.6.0/clang_delta/RemoveUnusedFunction.cpp      
2016-12-16 21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/clang_delta/RemoveUnusedFunction.cpp      
2017-05-18 18:42:08.000000000 +0200
@@ -1,6 +1,6 @@
 
//===----------------------------------------------------------------------===//
 //
-// Copyright (c) 2012, 2013, 2014, 2015, 2016 The University of Utah
+// Copyright (c) 2012, 2013, 2014, 2015, 2016, 2017 The University of Utah
 // All rights reserved.
 //
 // This file is distributed under the University of Illinois Open Source
@@ -388,6 +388,8 @@
                  const FunctionDecl *FD)
 {
   SourceLocation LocStart = FD->getLocStart();
+  bool RecordLoc = false;
+
   // check if FD is from a function template
   if (FunctionTemplateDecl *FTD = FD->getDescribedFunctionTemplate()) {
     // get FTD->getLocStart() only if it is less than FD->getLocStart,
@@ -396,8 +398,10 @@
     //   template<typename T> template<typename T1> void S<T>::foo() { }
     // where
     //   FTD->getLocStart() points to the begining of "template<typename T1>"
-    if (hasValidOuterLocStart(FTD, FD))
+    if (hasValidOuterLocStart(FTD, FD)) {
       LocStart = FTD->getLocStart();
+      RecordLoc = true;
+    }
   }
 
   if (LocStart.isMacroID())
@@ -406,6 +410,17 @@
   // this is ugly, but how do we get the location of __extension__? e.g.:
   // __extension__ void foo();
   LocStart = getExtensionLocStart(LocStart);
+
+  // In some cases where the given input is not well-formed, we may
+  // end up with duplicate locations for the FunctionTemplateDecl
+  // case. In such cases, we simply return an invalid SourceLocation,
+  // which will ben skipped by the caller of getFunctionOuterLocStart.
+  if (RecordLoc) {
+    if (VisitedLocations.count(LocStart))
+      return SourceLocation();
+    VisitedLocations.insert(LocStart);
+  }
+
   return LocStart;
 }
 
@@ -468,6 +483,8 @@
     LocEnd = SrcManager->getExpansionLoc(LocEnd);
   if (!FD->isInExternCContext() && !FD->isInExternCXXContext()) {
     SourceLocation FuncLocStart = getFunctionOuterLocStart(FD);
+    if (FuncLocStart.isInvalid())
+      return;
     LocEnd = getFunctionLocEnd(FuncLocStart, LocEnd, FD);
     if (SrcManager->isWrittenInMainFile(FuncLocStart) &&
         SrcManager->isWrittenInMainFile(LocEnd))
@@ -479,6 +496,8 @@
   const LinkageSpecDecl *Linkage = dyn_cast<LinkageSpecDecl>(Ctx);
   if (!Linkage) {
     SourceLocation FuncLocStart = getFunctionOuterLocStart(FD);
+    if (FuncLocStart.isInvalid())
+      return;
     LocEnd = getFunctionLocEnd(FuncLocStart, LocEnd, FD);
     TheRewriter.RemoveText(SourceRange(FuncLocStart, LocEnd));
     return;
@@ -488,6 +507,8 @@
   // namespace { using ::foo; }
   if (Linkage->hasBraces()) {
     SourceLocation FuncLocStart = getFunctionOuterLocStart(FD);
+    if (FuncLocStart.isInvalid())
+      return;
     TheRewriter.RemoveText(SourceRange(FuncLocStart, LocEnd));
     return;
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/creduce-creduce-2.6.0/clang_delta/RemoveUnusedFunction.h 
new/creduce-creduce-2.7.0/clang_delta/RemoveUnusedFunction.h
--- old/creduce-creduce-2.6.0/clang_delta/RemoveUnusedFunction.h        
2016-12-16 21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/clang_delta/RemoveUnusedFunction.h        
2017-05-18 18:42:08.000000000 +0200
@@ -1,6 +1,6 @@
 
//===----------------------------------------------------------------------===//
 //
-// Copyright (c) 2012, 2013, 2014, 2016 The University of Utah
+// Copyright (c) 2012, 2013, 2014, 2016, 2017 The University of Utah
 // All rights reserved.
 //
 // This file is distributed under the University of Illinois Open Source
@@ -14,8 +14,9 @@
 #include <string>
 #include <map>
 #include <set>
-#include "llvm/ADT/SmallPtrSet.h"
 #include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/SmallPtrSet.h"
+#include "llvm/ADT/SmallSet.h"
 #include "Transformation.h"
 #include "clang/Basic/SourceLocation.h"
 
@@ -98,6 +99,8 @@
 
   typedef std::set<std::string> SystemFunctionsSet;
 
+  typedef llvm::SmallSet<clang::SourceLocation, 5> LocSet;
+
   virtual void Initialize(clang::ASTContext &context);
 
   virtual void HandleTranslationUnit(clang::ASTContext &Ctx);
@@ -188,6 +191,8 @@
 
   SystemFunctionsSet ExistingSystemFunctions;
 
+  LocSet VisitedLocations;
+
   FunctionDeclVector AllValidFunctionDecls;
 
   RUFAnalysisVisitor *AnalysisVisitor;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/creduce-creduce-2.6.0/clang_delta/RenameCXXMethod.cpp 
new/creduce-creduce-2.7.0/clang_delta/RenameCXXMethod.cpp
--- old/creduce-creduce-2.6.0/clang_delta/RenameCXXMethod.cpp   2016-12-16 
21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/clang_delta/RenameCXXMethod.cpp   2017-05-18 
18:42:08.000000000 +0200
@@ -1,6 +1,6 @@
 
//===----------------------------------------------------------------------===//
 //
-// Copyright (c) 2012, 2013, 2014, 2015, 2016 The University of Utah
+// Copyright (c) 2012, 2013, 2014, 2015, 2016, 2017 The University of Utah
 // All rights reserved.
 //
 // This file is distributed under the University of Illinois Open Source
@@ -430,7 +430,7 @@
   if (!NamePrefix.equals(MethodNamePrefix))
     return false;
   llvm::APInt Num;
-  return Name.drop_front(PrefixLen).getAsInteger(10, Num);
+  return !Name.drop_front(PrefixLen).getAsInteger(10, Num);
 }
 
 void RenameCXXMethod::addOneMethodName(const CXXMethodDecl *MD,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/clang_delta/RewriteUtils.cpp 
new/creduce-creduce-2.7.0/clang_delta/RewriteUtils.cpp
--- old/creduce-creduce-2.6.0/clang_delta/RewriteUtils.cpp      2016-12-16 
21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/clang_delta/RewriteUtils.cpp      2017-05-18 
18:42:08.000000000 +0200
@@ -1,6 +1,6 @@
 
//===----------------------------------------------------------------------===//
 //
-// Copyright (c) 2012, 2013, 2014, 2015, 2016 The University of Utah
+// Copyright (c) 2012, 2013, 2014, 2015, 2016, 2017 The University of Utah
 // All rights reserved.
 //
 // This file is distributed under the University of Illinois Open Source
@@ -588,6 +588,10 @@
 {
   SourceRange ExprRange = E->getSourceRange();
   SourceLocation StartLoc = ExprRange.getBegin();
+  if (StartLoc.isInvalid() && !StartLoc.isMacroID()) {
+    ES = "<invalid-expr>";
+    return false;
+  }
 
   int RangeSize = TheRewriter->getRangeSize(ExprRange);
   if (RangeSize == -1) {
@@ -597,6 +601,7 @@
       RangeSize = TheRewriter->getRangeSize(SourceRange(StartLoc, EndLoc));
     }
     else {
+      ES = "<invalid-expr>";
       return false;
     }
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/clang_delta/Transformation.cpp 
new/creduce-creduce-2.7.0/clang_delta/Transformation.cpp
--- old/creduce-creduce-2.6.0/clang_delta/Transformation.cpp    2016-12-16 
21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/clang_delta/Transformation.cpp    2017-05-18 
18:42:08.000000000 +0200
@@ -1,6 +1,6 @@
 
//===----------------------------------------------------------------------===//
 //
-// Copyright (c) 2012, 2013, 2014, 2015, 2016 The University of Utah
+// Copyright (c) 2012, 2013, 2014, 2015, 2016, 2017 The University of Utah
 // All rights reserved.
 //
 // This file is distributed under the University of Illinois Open Source
@@ -340,13 +340,7 @@
 
 const Type *Transformation::getArrayBaseElemType(const ArrayType *ArrayTy)
 {
-  const Type *ArrayElemTy = ArrayTy->getElementType().getTypePtr();
-  while (ArrayElemTy->isArrayType()) {
-    const ArrayType *AT = dyn_cast<ArrayType>(ArrayElemTy);
-    ArrayElemTy = AT->getElementType().getTypePtr();
-  }
-  TransAssert(ArrayElemTy && "Bad Array Element Type!");
-  return ArrayElemTy;
+  return ArrayTy->getBaseElementTypeUnsafe();
 }
 
 unsigned int Transformation::getConstArraySize(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/clex/Makefile.in 
new/creduce-creduce-2.7.0/clex/Makefile.in
--- old/creduce-creduce-2.6.0/clex/Makefile.in  2016-12-16 21:57:38.000000000 
+0100
+++ new/creduce-creduce-2.7.0/clex/Makefile.in  2017-05-18 18:42:08.000000000 
+0200
@@ -94,7 +94,8 @@
 libexec_PROGRAMS = clex$(EXEEXT) strlex$(EXEEXT)
 subdir = clex
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_clang.m4 \
+       $(top_srcdir)/m4/ax_compare_version.m4 \
        $(top_srcdir)/m4/ax_llvm.m4 \
        $(top_srcdir)/m4/ax_prog_perl_modules.m4 \
        $(top_srcdir)/m4/ax_prog_perl_version.m4 \
@@ -204,7 +205,9 @@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLANG_CPPFLAGS = @CLANG_CPPFLAGS@
 CLANG_FORMAT = @CLANG_FORMAT@
+CLANG_LDFLAGS = @CLANG_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/clex/driver.c 
new/creduce-creduce-2.7.0/clex/driver.c
--- old/creduce-creduce-2.6.0/clex/driver.c     2016-12-16 21:57:38.000000000 
+0100
+++ new/creduce-creduce-2.7.0/clex/driver.c     2017-05-18 18:42:08.000000000 
+0200
@@ -7,7 +7,7 @@
  */
 
 #if HAVE_CONFIG_H
-#include <config.h>
+#  include <config.h>
 #endif
 
 #include <assert.h>
@@ -308,7 +308,7 @@
       }
       which++;
     }
-    if (!started || (started && which > (idx + n_toks)))
+    if (!started || (which > (idx + n_toks)))
       printf("%s", tok_list[i].str);
   }
   if (matched) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/configure 
new/creduce-creduce-2.7.0/configure
--- old/creduce-creduce-2.6.0/configure 2016-12-16 21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/configure 2017-05-18 18:42:08.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for creduce 2.6.0.
+# Generated by GNU Autoconf 2.69 for creduce 2.7.0.
 #
 # Report bugs to <creduce-b...@flux.utah.edu>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='creduce'
 PACKAGE_TARNAME='creduce'
-PACKAGE_VERSION='2.6.0'
-PACKAGE_STRING='creduce 2.6.0'
+PACKAGE_VERSION='2.7.0'
+PACKAGE_STRING='creduce 2.7.0'
 PACKAGE_BUGREPORT='creduce-b...@flux.utah.edu'
 PACKAGE_URL='http://embed.cs.utah.edu/creduce/'
 
@@ -642,6 +642,8 @@
 LEXLIB
 LEX_OUTPUT_ROOT
 LEX
+CLANG_LDFLAGS
+CLANG_CPPFLAGS
 LLVM_BINDIR
 LLVM_CONFIG
 CXXCPP
@@ -786,6 +788,7 @@
 with_sysroot
 enable_libtool_lock
 with_llvm
+with_clang
 enable_trans_assert
 '
       ac_precious_vars='build_alias
@@ -1344,7 +1347,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures creduce 2.6.0 to adapt to many kinds of systems.
+\`configure' configures creduce 2.7.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1415,7 +1418,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of creduce 2.6.0:";;
+     short | recursive ) echo "Configuration of creduce 2.7.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1452,6 +1455,9 @@
   --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
                           compiler's sysroot if not specified).
   --with-llvm[=DIR]       use LLVM located in DIR
+  --with-clang[=DIR]      use Clang development tree located in DIR [advanced
+                          option; default is to find Clang libraries and
+                          headers in LLVM tree]
 
 Some influential environment variables:
   CC          C compiler command
@@ -1538,7 +1544,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-creduce configure 2.6.0
+creduce configure 2.7.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1937,7 +1943,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by creduce $as_me 2.6.0, which was
+It was created by creduce $as_me 2.7.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2918,7 +2924,7 @@
 
 # Define the identity of the package.
  PACKAGE='creduce'
- VERSION='2.6.0'
+ VERSION='2.7.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -15846,7 +15852,7 @@
     as_fn_error $? "LLVM is required but program \`llvm-config' cannot be 
found in $with_llvm_path" "$LINENO" 5
   fi
 
-  if test -n "3.9"; then
+  if test -n "4.0"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LLVM version" >&5
 $as_echo_n "checking for LLVM version... " >&6; }
     LLVM_VERSION=`$LLVM_CONFIG --version`
@@ -15871,7 +15877,7 @@
                      -e 's/[^0-9]//g'`
 
 
-  ax_compare_version_B=`echo "3.9" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+  ax_compare_version_B=`echo "4.0" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
                      -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
                      -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
                      -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
@@ -15886,7 +15892,7 @@
     if test "$ax_compare_version" = "true" ; then
     :
     else
-        as_fn_error $? "LLVM version 3.9 or later is required" "$LINENO" 5
+        as_fn_error $? "LLVM version 4.0 or later is required" "$LINENO" 5
 
   fi
 
@@ -16004,6 +16010,59 @@
 
 
 
+
+# Check whether --with-clang was given.
+if test "${with_clang+set}" = set; then :
+  withval=$with_clang; with_clang="$withval"
+else
+  with_clang=no
+fi
+
+
+  CLANG_CPPFLAGS=''
+  CLANG_LDFLAGS=''
+
+  if test "x$with_clang" = "xno"; then
+    true # Do nothing.
+  elif test "x$with_clang" = "xyes"; then
+    as_fn_error $? "--with-clang requires an argument (a Clang development 
tree)" "$LINENO" 5
+  else
+
+    clang_dir="$with_clang"
+    clang_cmake_file="$clang_dir/lib/cmake/clang/ClangConfig.cmake"
+    as_ac_File=`$as_echo "ac_cv_file_$clang_cmake_file" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $clang_cmake_file" >&5
+$as_echo_n "checking for $clang_cmake_file... " >&6; }
+if eval \${$as_ac_File+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" 
"$LINENO" 5
+if test -r "$clang_cmake_file"; then
+  eval "$as_ac_File=yes"
+else
+  eval "$as_ac_File=no"
+fi
+fi
+eval ac_res=\$$as_ac_File
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+
+else
+
+        as_fn_error $? "argument to --with-clang is not a Clang development 
tree" "$LINENO" 5
+
+fi
+
+
+    CLANG_CPPFLAGS=`      sed -n -E         -e 's/^set\(CLANG_INCLUDE_DIRS 
[^"]*"([^"]+)"\)$/\1/p'         "$clang_cmake_file" |       sed -E         -e 
's/([^;]+)/-I\1/g'         -e 's/;/ /g'`
+    CLANG_LDFLAGS="-L$clang_dir/lib"
+  fi
+
+
+
+
 # Handle configure-time choice of assertion-checking method.
 #
 # Check whether --enable-trans-assert was given.
@@ -17092,7 +17151,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by creduce $as_me 2.6.0, which was
+This file was extended by creduce $as_me 2.7.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17159,7 +17218,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-creduce config.status 2.6.0
+creduce config.status 2.7.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/configure.ac 
new/creduce-creduce-2.7.0/configure.ac
--- old/creduce-creduce-2.6.0/configure.ac      2016-12-16 21:57:38.000000000 
+0100
+++ new/creduce-creduce-2.7.0/configure.ac      2017-05-18 18:42:08.000000000 
+0200
@@ -1,6 +1,6 @@
 ## -*- mode: Autoconf -*-
 ##
-## Copyright (c) 2012, 2013, 2014, 2015, 2016 The University of Utah
+## Copyright (c) 2012, 2013, 2014, 2015, 2016, 2017 The University of Utah
 ## All rights reserved.
 ##
 ## This file is distributed under the University of Illinois Open Source
@@ -37,7 +37,8 @@
 AC_PROG_CXX
 AC_PROG_LIBTOOL
 
-AX_LLVM([3.9],[engine])
+AX_LLVM([4.0],[engine])
+AX_CLANG
 
 # Handle configure-time choice of assertion-checking method.
 #
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/creduce/Makefile.in 
new/creduce-creduce-2.7.0/creduce/Makefile.in
--- old/creduce-creduce-2.6.0/creduce/Makefile.in       2016-12-16 
21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/creduce/Makefile.in       2017-05-18 
18:42:08.000000000 +0200
@@ -94,7 +94,8 @@
 target_triplet = @target@
 subdir = creduce
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_clang.m4 \
+       $(top_srcdir)/m4/ax_compare_version.m4 \
        $(top_srcdir)/m4/ax_llvm.m4 \
        $(top_srcdir)/m4/ax_prog_perl_modules.m4 \
        $(top_srcdir)/m4/ax_prog_perl_version.m4 \
@@ -174,7 +175,9 @@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLANG_CPPFLAGS = @CLANG_CPPFLAGS@
 CLANG_FORMAT = @CLANG_FORMAT@
+CLANG_LDFLAGS = @CLANG_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/creduce/creduce.in 
new/creduce-creduce-2.7.0/creduce/creduce.in
--- old/creduce-creduce-2.6.0/creduce/creduce.in        2016-12-16 
21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/creduce/creduce.in        2017-05-18 
18:42:08.000000000 +0200
@@ -1,7 +1,7 @@
 #!@perl@
 ## -*- mode: Perl -*-
 ##
-## Copyright (c) 2012, 2013, 2014, 2015, 2016 The University of Utah
+## Copyright (c) 2012, 2013, 2014, 2015, 2016, 2017 The University of Utah
 ## All rights reserved.
 ##
 ## This file is distributed under the University of Illinois Open Source
@@ -446,6 +446,8 @@
         return $proc->GetProcessID();
     } else {
         my $pid = fork();
+        die "fork() failed! please try this reduction again with less 
parallelism."
+          unless defined $pid;
         die unless ($pid >= 0);
         if ($pid == 0) {
             # put this process (the child) into a process group named by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/delta/Makefile.in 
new/creduce-creduce-2.7.0/delta/Makefile.in
--- old/creduce-creduce-2.6.0/delta/Makefile.in 2016-12-16 21:57:38.000000000 
+0100
+++ new/creduce-creduce-2.7.0/delta/Makefile.in 2017-05-18 18:42:08.000000000 
+0200
@@ -94,7 +94,8 @@
 libexec_PROGRAMS = topformflat$(EXEEXT)
 subdir = delta
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_clang.m4 \
+       $(top_srcdir)/m4/ax_compare_version.m4 \
        $(top_srcdir)/m4/ax_llvm.m4 \
        $(top_srcdir)/m4/ax_prog_perl_modules.m4 \
        $(top_srcdir)/m4/ax_prog_perl_version.m4 \
@@ -201,7 +202,9 @@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLANG_CPPFLAGS = @CLANG_CPPFLAGS@
 CLANG_FORMAT = @CLANG_FORMAT@
+CLANG_LDFLAGS = @CLANG_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/git-hash.sh 
new/creduce-creduce-2.7.0/git-hash.sh
--- old/creduce-creduce-2.6.0/git-hash.sh       2016-12-16 21:57:38.000000000 
+0100
+++ new/creduce-creduce-2.7.0/git-hash.sh       2017-05-18 18:42:08.000000000 
+0200
@@ -24,7 +24,7 @@
 
 # `git archive' inserts the abbreviated hash of the archive's commit into this
 # script.  (See the `.gitattributes' file.)
-git_hash='b02c375'
+git_hash='c0c7f0be'
 
 if test "${git_hash}" != '$''Format:%h$'; then
   echo "${git_hash}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/m4/ax_clang.m4 
new/creduce-creduce-2.7.0/m4/ax_clang.m4
--- old/creduce-creduce-2.6.0/m4/ax_clang.m4    1970-01-01 01:00:00.000000000 
+0100
+++ new/creduce-creduce-2.7.0/m4/ax_clang.m4    2017-05-18 18:42:08.000000000 
+0200
@@ -0,0 +1,89 @@
+# -*- mode: m4 -*-
+#
+# Copyright (c) 2017 The University of Utah
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved.  This file is offered as-is, without any
+# warranty.
+
+###############################################################################
+
+# SYNOPSIS
+#
+#   AX_CLANG()
+#
+# DESCRIPTION
+#
+#   Test for a Clang build or installation tree, and set the output variables
+#   `CLANG_CPPFLAGS' and `CLANG_LDFLAGS' as needed for compiling and linking
+#   programs against that tree.
+#
+#   Clang is usually built and/or installed alongside LLVM.  When that is the
+#   case, the information we get from macro AX_LLVM is enough for compiling and
+#   linking programs against Clang.  This AX_CLANG macro is needed only when
+#   the LLVM and Clang trees are separate, for whatever reason.
+#
+#   `CLANG_CPPFLAGS' is set to the command-line "-I" directives that are
+#   needed to compile programs against the specified Clang tree.  This macro
+#   digs the include directories out of the file "ClangConfig.cmake".
+#
+#   `CLANG_LDFLAGS' is set to the command-line "-L" directive that is needed.
+#   This is easy to determine: the libraries are in the tree's "lib" directory.
+
+AC_DEFUN([AX_CLANG],
+[
+  AC_ARG_WITH([clang],
+    AS_HELP_STRING([--with-clang@<:@=DIR@:>@],
+      [use separate Clang tree located in DIR
+       [advanced option;
+       default is to find Clang libraries and headers in LLVM tree]]),
+    [with_clang="$withval"],
+    [with_clang=no])
+
+  CLANG_CPPFLAGS=''
+  CLANG_LDFLAGS=''
+
+  if test "x$with_clang" = "xno"; then
+    true # Do nothing.
+  elif test "x$with_clang" = "xyes"; then
+    AC_MSG_ERROR(
+      [--with-clang requires an argument (a Clang build/install tree)])
+  else
+
+    clang_dir="$with_clang"
+    clang_cmake_file="$clang_dir/lib/cmake/clang/ClangConfig.cmake"
+    AC_CHECK_FILE([$clang_cmake_file],
+      [],
+      [
+        AC_MSG_ERROR(
+          [argument to --with-clang is not a Clang build/install tree])
+      ])
+
+    # Dig the list of include directories out of the $clang_cmake_file, which
+    # is a CMake file.  The sed expressions below:
+    #
+    # + Find the line: set(CLANG_INCLUDE_DIRS "<dirlist>")
+    #   and output:    <dirlist>
+    # + From the list: <dir1>;<dir2>;...
+    #   output:        -I<dir1>;-I<dir2>;...
+    # + Erase semis:   -I<dir1> -I<dir2> ...
+    #
+changequote(<<, >>)dnl
+    CLANG_CPPFLAGS=`dnl
+      sed -n -E dnl
+        -e 's/^set\(CLANG_INCLUDE_DIRS [^"]*"([^"]+)"\)$/\1/p' dnl
+        "$clang_cmake_file" | dnl
+      sed -E dnl
+        -e 's/([^;]+)/-I\1/g' dnl
+        -e 's/;/ /g'`
+changequote([, ])dnl
+    #
+    # Find the list of library directories.  This is easy: everything is in
+    # the "lib" subdirectory.
+    #
+    CLANG_LDFLAGS="-L$clang_dir/lib"
+  fi
+  AC_SUBST(CLANG_CPPFLAGS)
+  AC_SUBST(CLANG_LDFLAGS)
+])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/scripts/Makefile.in 
new/creduce-creduce-2.7.0/scripts/Makefile.in
--- old/creduce-creduce-2.6.0/scripts/Makefile.in       2016-12-16 
21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/scripts/Makefile.in       2017-05-18 
18:42:08.000000000 +0200
@@ -93,7 +93,8 @@
 target_triplet = @target@
 subdir = scripts
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_clang.m4 \
+       $(top_srcdir)/m4/ax_compare_version.m4 \
        $(top_srcdir)/m4/ax_llvm.m4 \
        $(top_srcdir)/m4/ax_prog_perl_modules.m4 \
        $(top_srcdir)/m4/ax_prog_perl_version.m4 \
@@ -143,7 +144,9 @@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLANG_CPPFLAGS = @CLANG_CPPFLAGS@
 CLANG_FORMAT = @CLANG_FORMAT@
+CLANG_LDFLAGS = @CLANG_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/scripts/travis_deps.sh 
new/creduce-creduce-2.7.0/scripts/travis_deps.sh
--- old/creduce-creduce-2.6.0/scripts/travis_deps.sh    2016-12-16 
21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/scripts/travis_deps.sh    2017-05-18 
18:42:08.000000000 +0200
@@ -1,6 +1,6 @@
 #!/usr/bin/env sh
 ##
-## Copyright (c) 2015, 2016 The University of Utah
+## Copyright (c) 2015, 2016, 2017 The University of Utah
 ## Copyright (c) 2015 Tamir Duberstein
 ## All rights reserved.
 ##
@@ -28,23 +28,23 @@
     software-properties-common \
     wget
 
-# Set up for installing LLVM 3.9.
+# Set up for installing LLVM 4.0.
 # See <https://wiki.ubuntu.com/ToolChain>.
 # See <http://llvm.org/apt/>.
 add-apt-repository -y \
     ppa:ubuntu-toolchain-r/test
 add-apt-repository -y \
-    'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.9 main'
+    'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main'
 wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
 apt-get update -qq
 
-# Install LLVM 3.9.  See file "INSTALL".
+# Install LLVM 4.0.  See file "INSTALL".
 apt-get install -y -qq \
-    llvm-3.9 \
-    llvm-3.9-dev \
-    clang-3.9 \
-    libclang-3.9-dev \
-    clang-format-3.9 \
+    llvm-4.0 \
+    llvm-4.0-dev \
+    clang-4.0 \
+    libclang-4.0-dev \
+    clang-format-4.0 \
     libedit-dev
 
 # Install other C-Reduce dependencies.  See file "INSTALL".
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/tests/Makefile.in 
new/creduce-creduce-2.7.0/tests/Makefile.in
--- old/creduce-creduce-2.6.0/tests/Makefile.in 2016-12-16 21:57:38.000000000 
+0100
+++ new/creduce-creduce-2.7.0/tests/Makefile.in 2017-05-18 18:42:08.000000000 
+0200
@@ -94,7 +94,8 @@
 target_triplet = @target@
 subdir = tests
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_clang.m4 \
+       $(top_srcdir)/m4/ax_compare_version.m4 \
        $(top_srcdir)/m4/ax_llvm.m4 \
        $(top_srcdir)/m4/ax_prog_perl_modules.m4 \
        $(top_srcdir)/m4/ax_prog_perl_version.m4 \
@@ -145,7 +146,9 @@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLANG_CPPFLAGS = @CLANG_CPPFLAGS@
 CLANG_FORMAT = @CLANG_FORMAT@
+CLANG_LDFLAGS = @CLANG_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/unifdef/Makefile.in 
new/creduce-creduce-2.7.0/unifdef/Makefile.in
--- old/creduce-creduce-2.6.0/unifdef/Makefile.in       2016-12-16 
21:57:38.000000000 +0100
+++ new/creduce-creduce-2.7.0/unifdef/Makefile.in       2017-05-18 
18:42:08.000000000 +0200
@@ -94,7 +94,8 @@
 libexec_PROGRAMS = unifdef$(EXEEXT)
 subdir = unifdef
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_clang.m4 \
+       $(top_srcdir)/m4/ax_compare_version.m4 \
        $(top_srcdir)/m4/ax_llvm.m4 \
        $(top_srcdir)/m4/ax_prog_perl_modules.m4 \
        $(top_srcdir)/m4/ax_prog_perl_version.m4 \
@@ -191,7 +192,9 @@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLANG_CPPFLAGS = @CLANG_CPPFLAGS@
 CLANG_FORMAT = @CLANG_FORMAT@
+CLANG_LDFLAGS = @CLANG_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/creduce-creduce-2.6.0/version.m4 
new/creduce-creduce-2.7.0/version.m4
--- old/creduce-creduce-2.6.0/version.m4        2016-12-16 21:57:38.000000000 
+0100
+++ new/creduce-creduce-2.7.0/version.m4        2017-05-18 18:42:08.000000000 
+0200
@@ -8,7 +8,7 @@
 
 ###############################################################################
 
-m4_define([CREDUCE_VERSION],   [2.6.0])
+m4_define([CREDUCE_VERSION],   [2.7.0])
 m4_define([CREDUCE_BUGREPORT], [creduce-b...@flux.utah.edu])
 m4_define([CREDUCE_URL],       [http://embed.cs.utah.edu/creduce/])
 


Reply via email to