[Polly][Isl] Update isl to isl-0.24-47-g8853f375

This is needed for the new functions exposed in the C++ interface as used in https://reviews.llvm.org/D104994

Reviewed By: Meinersbur

Differential Revision: https://reviews.llvm.org/D105132
This commit is contained in:
patacca 2021-07-04 19:49:41 +02:00
parent 14078ae8ca
commit 3f9bf9f42a
112 changed files with 81963 additions and 10158 deletions

View File

@ -38,6 +38,7 @@ Albert Cohen
Ray Donnelly
Johannes Doerfert
Andi Drebes
Ron Estrin
Clement Foyer
Armin Groesslinger
Tobias Grosser
@ -47,11 +48,13 @@ Andreas Kloeckner
Michael Kruse
Manjunath Kudlur
Alexander Matz
Chielo Newctle
Sebastian Pop
Louis-Noel Pouchet
Benoit Pradelle
Uday Bondhugula
Andreas Simbuerger
Tianjiao Sun
Malhar Thakkar
Sergei Trofimovich
Miheer Vaidya

View File

@ -1,3 +1,10 @@
version: 0.24
date: Sun 25 Apr 2021 03:56:37 PM CEST
changes:
- improved (C++) bindings (inherit methods, renamed exports)
- initial templated C++ bindings
- detect bounds on constant polynomials as tight
---
version: 0.23
date: Sun 01 Nov 2020 02:41:20 PM CET
changes:

View File

@ -1 +1 @@
isl-0.23-61-g24e8cd12
isl-0.24-47-g8853f375

View File

@ -15,16 +15,17 @@ AUTOMAKE_OPTIONS = nostdinc subdir-objects
lib_LTLIBRARIES = libisl.la
noinst_PROGRAMS = isl_test isl_polyhedron_sample isl_pip \
isl_polyhedron_minimize isl_polytope_scan \
isl_polyhedron_detect_equalities isl_cat \
isl_polyhedron_detect_equalities \
isl_polyhedron_remove_redundant_equalities isl_cat \
isl_closure isl_bound isl_schedule isl_codegen isl_test_int \
isl_flow isl_flow_cmp isl_schedule_cmp
TESTS = isl_test codegen_test.sh pip_test.sh bound_test.sh isl_test_int \
flow_test.sh schedule_test.sh
if HAVE_CPP_ISL_H
CPP_H = include/isl/cpp.h
CPP_H = include/isl/cpp.h include/isl/typed_cpp.h
if HAVE_CXX11
noinst_PROGRAMS += isl_test_cpp
TESTS += isl_test_cpp
noinst_PROGRAMS += isl_test2 isl_test_cpp
TESTS += isl_test2 isl_test_cpp isl_test_cpp_failed.sh
endif
endif
if HAVE_CLANG
@ -229,6 +230,12 @@ libisl_la_LDFLAGS = -version-info @versioninfo@ \
isl_test_LDFLAGS = @MP_LDFLAGS@
isl_test_LDADD = libisl.la @MP_LIBS@
isl_test2_SOURCES = \
isl_test2.cc \
include/isl/cpp.h
isl_test2_LDFLAGS = @MP_LDFLAGS@
isl_test2_LDADD = libisl.la @MP_LIBS@
isl_test_int_LDFLAGS = @MP_LDFLAGS@
isl_test_int_LDADD = libisl.la @MP_LIBS@
@ -289,6 +296,10 @@ isl_polyhedron_detect_equalities_LDADD = libisl.la
isl_polyhedron_detect_equalities_SOURCES = \
polyhedron_detect_equalities.c
isl_polyhedron_remove_redundant_equalities_LDADD = libisl.la
isl_polyhedron_remove_redundant_equalities_SOURCES = \
polyhedron_remove_redundant_equalities.c
isl_cat_LDADD = libisl.la
isl_cat_SOURCES = \
cat.c
@ -297,12 +308,25 @@ isl_closure_LDADD = libisl.la
isl_closure_SOURCES = \
closure.c
isl_test_cpp_CPPFLAGS = $(AM_CPPFLAGS) -UCOMPILE_ERROR
isl_test_cpp_SOURCES = \
isl_test_cpp.cc \
include/isl/cpp.h
isl_test_cpp_LDFLAGS = @MP_LDFLAGS@
isl_test_cpp_LDADD = libisl.la @MP_LIBS@
# This program is not meant to be compiled by default.
# In fact it is meant not to be compilable.
# It is identical to isl_test_cpp, except that it gets compiled
# with the COMPILE_ERROR flag set.
EXTRA_PROGRAMS = isl_test_cpp_failed
isl_test_cpp_failed_CPPFLAGS = $(AM_CPPFLAGS) -DCOMPILE_ERROR
isl_test_cpp_failed_SOURCES = \
isl_test_cpp.cc \
include/isl/cpp.h
isl_test_cpp_failed_LDFLAGS = @MP_LDFLAGS@
isl_test_cpp_failed_LDADD = libisl.la @MP_LIBS@
isl_test_cpp_checked_SOURCES = \
isl_test_cpp-checked.cc \
include/isl/cpp-checked.h
@ -332,20 +356,18 @@ interface/isl.py: interface/extract_interface$(BUILD_EXEEXT) libdep.a \
> $@ || (rm $@ && false)
include/isl/cpp.h: interface/extract_interface$(BUILD_EXEEXT) libdep.a \
cpp/cpp.h.top cpp/cpp.h.pre cpp/cpp.h.bot
$(MKDIR_P) "include/isl/cpp" && \
(cat $(srcdir)/cpp/cpp.h.top $(srcdir)/all.h \
$(srcdir)/cpp/cpp.h.pre && \
cpp/cpp.h.top cpp/cpp.h.bot
$(MKDIR_P) "include/isl" && \
(cat $(srcdir)/cpp/cpp.h.top $(srcdir)/all.h && \
interface/extract_interface$(BUILD_EXEEXT) --language=cpp \
$(includes) $(srcdir)/all.h && \
cat $(srcdir)/cpp/cpp.h.bot) \
> $@ || (rm $@ && false)
include/isl/cpp-checked.h: interface/extract_interface$(BUILD_EXEEXT) libdep.a \
cpp/cpp-checked.h.top \
cpp/cpp-checked.h.pre cpp/cpp-checked.h.bot
(cat $(srcdir)/cpp/cpp-checked.h.top $(srcdir)/all.h \
$(srcdir)/cpp/cpp-checked.h.pre && \
cpp/cpp-checked.h.top cpp/cpp-checked.h.bot
$(MKDIR_P) "include/isl" && \
(cat $(srcdir)/cpp/cpp-checked.h.top $(srcdir)/all.h && \
interface/extract_interface$(BUILD_EXEEXT) \
--language=cpp-checked \
$(includes) $(srcdir)/all.h && \
@ -357,12 +379,23 @@ include/isl/cpp-checked-conversion.h: \
libdep.a \
cpp/cpp-checked-conversion.h.top \
cpp/cpp-checked-conversion.h.bot
$(MKDIR_P) "include/isl" && \
(cat $(srcdir)/cpp/cpp-checked-conversion.h.top && \
interface/extract_interface$(BUILD_EXEEXT) \
--language=cpp-checked-conversion \
$(includes) $(srcdir)/all.h && \
cat $(srcdir)/cpp/cpp-checked-conversion.h.bot) \
> $@ || (rm $@ && false)
include/isl/typed_cpp.h: interface/extract_interface$(BUILD_EXEEXT) \
libdep.a cpp/typed_cpp.h.top cpp/typed_cpp.h.bot
$(MKDIR_P) "include/isl" && \
(cat $(srcdir)/cpp/typed_cpp.h.top && \
interface/extract_interface$(BUILD_EXEEXT) \
--language=template-cpp \
$(includes) $(srcdir)/all.h && \
cat $(srcdir)/cpp/typed_cpp.h.bot) \
> $@ || (rm $@ && false)
endif
endif
@ -435,7 +468,8 @@ if HAVE_CXX11
CPP_INTERFACES = \
include/isl/cpp.h \
include/isl/cpp-checked.h \
include/isl/cpp-checked-conversion.h
include/isl/cpp-checked-conversion.h \
include/isl/typed_cpp.h
endif
endif
BUILT_SOURCES = gitversion.h $(CPP_INTERFACES)
@ -478,6 +512,7 @@ EXTRA_DIST = \
isl_list_macro.h \
isl_list_templ.c \
isl_list_templ.h \
isl_list_read_templ.c \
isl_map_bound_templ.c \
isl_map_lexopt_templ.c \
isl_maybe_ast_graft_list.h \
@ -524,6 +559,7 @@ EXTRA_DIST = \
isl_multi_unbind_params_templ.c \
isl_multi_union_add_templ.c \
isl_multi_zero_templ.c \
isl_multi_zero_space_templ.c \
isl_opt_mpa_templ.c \
opt_type.h \
print_templ.c \
@ -549,6 +585,7 @@ EXTRA_DIST = \
isl_pw_neg_templ.c \
isl_pw_opt_templ.c \
isl_pw_pullback_templ.c \
isl_pw_range_tuple_id_templ.c \
isl_pw_sub_templ.c \
isl_pw_union_opt.c \
read_in_string_templ.c \
@ -593,6 +630,7 @@ EXTRA_DIST = \
cpp \
python \
isl_test_cpp-generic.cc \
isl_test_cpp_failed.sh \
isl_test_python.py \
test_inputs

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.16.1 from Makefile.am.
# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -95,17 +95,19 @@ host_triplet = @host@
noinst_PROGRAMS = isl_test$(EXEEXT) isl_polyhedron_sample$(EXEEXT) \
isl_pip$(EXEEXT) isl_polyhedron_minimize$(EXEEXT) \
isl_polytope_scan$(EXEEXT) \
isl_polyhedron_detect_equalities$(EXEEXT) isl_cat$(EXEEXT) \
isl_closure$(EXEEXT) isl_bound$(EXEEXT) isl_schedule$(EXEEXT) \
isl_codegen$(EXEEXT) isl_test_int$(EXEEXT) isl_flow$(EXEEXT) \
isl_flow_cmp$(EXEEXT) isl_schedule_cmp$(EXEEXT) \
$(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
isl_polyhedron_detect_equalities$(EXEEXT) \
isl_polyhedron_remove_redundant_equalities$(EXEEXT) \
isl_cat$(EXEEXT) isl_closure$(EXEEXT) isl_bound$(EXEEXT) \
isl_schedule$(EXEEXT) isl_codegen$(EXEEXT) \
isl_test_int$(EXEEXT) isl_flow$(EXEEXT) isl_flow_cmp$(EXEEXT) \
isl_schedule_cmp$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \
$(am__EXEEXT_3)
TESTS = isl_test$(EXEEXT) codegen_test.sh pip_test.sh bound_test.sh \
isl_test_int$(EXEEXT) flow_test.sh schedule_test.sh \
$(am__EXEEXT_1) $(am__EXEEXT_2) $(am__append_5) \
$(am__EXEEXT_4) $(am__EXEEXT_2) $(am__append_5) \
$(am__EXEEXT_3)
@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@am__append_1 = isl_test_cpp
@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@am__append_2 = isl_test_cpp
@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@am__append_1 = isl_test2 isl_test_cpp
@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@am__append_2 = isl_test2 isl_test_cpp isl_test_cpp_failed.sh
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@am__append_3 = isl_test_cpp-checked isl_test_cpp-checked-conversion
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@am__append_4 = isl_test_cpp-checked isl_test_cpp-checked-conversion
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@@HAVE_PYTHON_TRUE@am__append_5 = isl_test_python.py
@ -116,6 +118,7 @@ TESTS = isl_test$(EXEEXT) codegen_test.sh pip_test.sh bound_test.sh \
@IMATH_FOR_MP_TRUE@@SMALL_INT_OPT_TRUE@ isl_val_sioimath.c
@IMATH_FOR_MP_TRUE@@SMALL_INT_OPT_FALSE@am__append_9 = isl_val_imath.c
EXTRA_PROGRAMS = isl_test_cpp_failed$(EXEEXT)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_c___attribute__.m4 \
@ -152,6 +155,7 @@ CONFIG_CLEAN_FILES = isl_srcdir.c bound_test.sh codegen_test.sh \
pip_test.sh flow_test.sh schedule_test.sh
CONFIG_CLEAN_VPATH_FILES =
@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@am__EXEEXT_1 = \
@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@ isl_test2$(EXEEXT) \
@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@ isl_test_cpp$(EXEEXT)
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@am__EXEEXT_2 = isl_test_cpp-checked$(EXEEXT) \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ isl_test_cpp-checked-conversion$(EXEEXT)
@ -337,6 +341,11 @@ isl_polyhedron_minimize_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(AM_CFLAGS) $(CFLAGS) $(isl_polyhedron_minimize_LDFLAGS) \
$(LDFLAGS) -o $@
am_isl_polyhedron_remove_redundant_equalities_OBJECTS = \
polyhedron_remove_redundant_equalities.$(OBJEXT)
isl_polyhedron_remove_redundant_equalities_OBJECTS = \
$(am_isl_polyhedron_remove_redundant_equalities_OBJECTS)
isl_polyhedron_remove_redundant_equalities_DEPENDENCIES = libisl.la
am_isl_polyhedron_sample_OBJECTS = polyhedron_sample.$(OBJEXT)
isl_polyhedron_sample_OBJECTS = $(am_isl_polyhedron_sample_OBJECTS)
isl_polyhedron_sample_DEPENDENCIES = libisl.la
@ -362,7 +371,13 @@ isl_test_DEPENDENCIES = libisl.la
isl_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(isl_test_LDFLAGS) $(LDFLAGS) -o $@
am_isl_test_cpp_OBJECTS = isl_test_cpp.$(OBJEXT)
am_isl_test2_OBJECTS = isl_test2.$(OBJEXT)
isl_test2_OBJECTS = $(am_isl_test2_OBJECTS)
isl_test2_DEPENDENCIES = libisl.la
isl_test2_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
$(CXXFLAGS) $(isl_test2_LDFLAGS) $(LDFLAGS) -o $@
am_isl_test_cpp_OBJECTS = isl_test_cpp-isl_test_cpp.$(OBJEXT)
isl_test_cpp_OBJECTS = $(am_isl_test_cpp_OBJECTS)
isl_test_cpp_DEPENDENCIES = libisl.la
isl_test_cpp_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
@ -384,6 +399,14 @@ isl_test_cpp_checked_conversion_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
$(AM_CXXFLAGS) $(CXXFLAGS) \
$(isl_test_cpp_checked_conversion_LDFLAGS) $(LDFLAGS) -o $@
am_isl_test_cpp_failed_OBJECTS = \
isl_test_cpp_failed-isl_test_cpp.$(OBJEXT)
isl_test_cpp_failed_OBJECTS = $(am_isl_test_cpp_failed_OBJECTS)
isl_test_cpp_failed_DEPENDENCIES = libisl.la
isl_test_cpp_failed_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
$(AM_CXXFLAGS) $(CXXFLAGS) $(isl_test_cpp_failed_LDFLAGS) \
$(LDFLAGS) -o $@
isl_test_imath_SOURCES = isl_test_imath.c
isl_test_imath_OBJECTS = isl_test_imath.$(OBJEXT)
@IMATH_FOR_MP_TRUE@isl_test_imath_DEPENDENCIES = libisl.la
@ -458,10 +481,12 @@ am__depfiles_remade = ./$(DEPDIR)/basis_reduction_tab.Plo \
./$(DEPDIR)/isl_stream.Plo ./$(DEPDIR)/isl_stride.Plo \
./$(DEPDIR)/isl_tab.Plo ./$(DEPDIR)/isl_tab_pip.Plo \
./$(DEPDIR)/isl_tarjan.Plo ./$(DEPDIR)/isl_test.Po \
./$(DEPDIR)/isl_test2.Po \
./$(DEPDIR)/isl_test_cpp-checked-conversion.Po \
./$(DEPDIR)/isl_test_cpp-checked.Po \
./$(DEPDIR)/isl_test_cpp.Po ./$(DEPDIR)/isl_test_imath.Po \
./$(DEPDIR)/isl_test_int.Po \
./$(DEPDIR)/isl_test_cpp-isl_test_cpp.Po \
./$(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Po \
./$(DEPDIR)/isl_test_imath.Po ./$(DEPDIR)/isl_test_int.Po \
./$(DEPDIR)/isl_transitive_closure.Plo \
./$(DEPDIR)/isl_union_map.Plo ./$(DEPDIR)/isl_val.Plo \
./$(DEPDIR)/isl_val_gmp.Plo ./$(DEPDIR)/isl_val_imath.Plo \
@ -470,6 +495,7 @@ am__depfiles_remade = ./$(DEPDIR)/basis_reduction_tab.Plo \
./$(DEPDIR)/mp_get_memory_functions.Plo ./$(DEPDIR)/pip.Po \
./$(DEPDIR)/polyhedron_detect_equalities.Po \
./$(DEPDIR)/polyhedron_minimize.Po \
./$(DEPDIR)/polyhedron_remove_redundant_equalities.Po \
./$(DEPDIR)/polyhedron_sample.Po ./$(DEPDIR)/polytope_scan.Po \
./$(DEPDIR)/print.Plo ./$(DEPDIR)/schedule.Po \
./$(DEPDIR)/schedule_cmp.Po \
@ -518,22 +544,26 @@ SOURCES = $(libdep_a_SOURCES) $(libisl_la_SOURCES) \
$(isl_flow_cmp_SOURCES) $(isl_pip_SOURCES) \
$(isl_polyhedron_detect_equalities_SOURCES) \
$(isl_polyhedron_minimize_SOURCES) \
$(isl_polyhedron_remove_redundant_equalities_SOURCES) \
$(isl_polyhedron_sample_SOURCES) $(isl_polytope_scan_SOURCES) \
$(isl_schedule_SOURCES) $(isl_schedule_cmp_SOURCES) isl_test.c \
$(isl_test_cpp_SOURCES) $(isl_test_cpp_checked_SOURCES) \
$(isl_test_cpp_checked_conversion_SOURCES) isl_test_imath.c \
isl_test_int.c
$(isl_test2_SOURCES) $(isl_test_cpp_SOURCES) \
$(isl_test_cpp_checked_SOURCES) \
$(isl_test_cpp_checked_conversion_SOURCES) \
$(isl_test_cpp_failed_SOURCES) isl_test_imath.c isl_test_int.c
DIST_SOURCES = $(libdep_a_SOURCES) $(am__libisl_la_SOURCES_DIST) \
$(isl_bound_SOURCES) $(isl_cat_SOURCES) $(isl_closure_SOURCES) \
$(isl_codegen_SOURCES) $(isl_flow_SOURCES) \
$(isl_flow_cmp_SOURCES) $(isl_pip_SOURCES) \
$(isl_polyhedron_detect_equalities_SOURCES) \
$(isl_polyhedron_minimize_SOURCES) \
$(isl_polyhedron_remove_redundant_equalities_SOURCES) \
$(isl_polyhedron_sample_SOURCES) $(isl_polytope_scan_SOURCES) \
$(isl_schedule_SOURCES) $(isl_schedule_cmp_SOURCES) isl_test.c \
$(isl_test_cpp_SOURCES) $(isl_test_cpp_checked_SOURCES) \
$(isl_test_cpp_checked_conversion_SOURCES) isl_test_imath.c \
isl_test_int.c
$(isl_test2_SOURCES) $(isl_test_cpp_SOURCES) \
$(isl_test_cpp_checked_SOURCES) \
$(isl_test_cpp_checked_conversion_SOURCES) \
$(isl_test_cpp_failed_SOURCES) isl_test_imath.c isl_test_int.c
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
@ -551,7 +581,8 @@ am__noinst_PYTHON_DIST = interface/isl.py
am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
py_compile = $(top_srcdir)/py-compile
DATA = $(pkgconfig_DATA)
am__pkginclude_HEADERS_DIST = include/isl/cpp.h include/isl/val_gmp.h \
am__pkginclude_HEADERS_DIST = include/isl/cpp.h \
include/isl/typed_cpp.h include/isl/val_gmp.h \
include/isl/aff.h include/isl/aff_type.h include/isl/arg.h \
include/isl/ast.h include/isl/ast_type.h \
include/isl/ast_build.h include/isl/constraint.h \
@ -588,8 +619,8 @@ am__recursive_targets = \
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
cscope check recheck distdir distdir-am dist dist-all \
distcheck
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
$(LISP)isl_config.h.in
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
isl_config.h.in
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
@ -764,7 +795,12 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@am__EXEEXT_4 = \
@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@ isl_test2$(EXEEXT) \
@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@ isl_test_cpp$(EXEEXT) \
@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@ isl_test_cpp_failed.sh
TEST_SUITE_LOG = test-suite.log
LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
@ -827,6 +863,8 @@ am__relativize = \
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
DIST_TARGETS = dist-gzip
# Exists only to be overridden by the user if desired.
AM_DISTCHECK_DVI_TARGET = dvi
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@ -977,7 +1015,6 @@ program_transform_name = @program_transform_name@
psdir = @psdir@
pyexecdir = @pyexecdir@
pythondir = @pythondir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@ -994,7 +1031,7 @@ DIST_SUBDIRS = $(MAYBE_INTERFACE) doc
ACLOCAL_AMFLAGS = -I m4
AUTOMAKE_OPTIONS = nostdinc subdir-objects
lib_LTLIBRARIES = libisl.la
@HAVE_CPP_ISL_H_TRUE@CPP_H = include/isl/cpp.h
@HAVE_CPP_ISL_H_TRUE@CPP_H = include/isl/cpp.h include/isl/typed_cpp.h
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@@HAVE_PYTHON_TRUE@noinst_PYTHON = interface/isl.py
TEST_EXTENSIONS = .py
AM_TESTS_ENVIRONMENT = \
@ -1159,6 +1196,12 @@ libisl_la_LDFLAGS = -version-info @versioninfo@ \
isl_test_LDFLAGS = @MP_LDFLAGS@
isl_test_LDADD = libisl.la @MP_LIBS@
isl_test2_SOURCES = \
isl_test2.cc \
include/isl/cpp.h
isl_test2_LDFLAGS = @MP_LDFLAGS@
isl_test2_LDADD = libisl.la @MP_LIBS@
isl_test_int_LDFLAGS = @MP_LDFLAGS@
isl_test_int_LDADD = libisl.la @MP_LIBS@
@IMATH_FOR_MP_TRUE@isl_test_imath_LDFLAGS = @MP_LDFLAGS@
@ -1215,6 +1258,10 @@ isl_polyhedron_detect_equalities_LDADD = libisl.la
isl_polyhedron_detect_equalities_SOURCES = \
polyhedron_detect_equalities.c
isl_polyhedron_remove_redundant_equalities_LDADD = libisl.la
isl_polyhedron_remove_redundant_equalities_SOURCES = \
polyhedron_remove_redundant_equalities.c
isl_cat_LDADD = libisl.la
isl_cat_SOURCES = \
cat.c
@ -1223,12 +1270,20 @@ isl_closure_LDADD = libisl.la
isl_closure_SOURCES = \
closure.c
isl_test_cpp_CPPFLAGS = $(AM_CPPFLAGS) -UCOMPILE_ERROR
isl_test_cpp_SOURCES = \
isl_test_cpp.cc \
include/isl/cpp.h
isl_test_cpp_LDFLAGS = @MP_LDFLAGS@
isl_test_cpp_LDADD = libisl.la @MP_LIBS@
isl_test_cpp_failed_CPPFLAGS = $(AM_CPPFLAGS) -DCOMPILE_ERROR
isl_test_cpp_failed_SOURCES = \
isl_test_cpp.cc \
include/isl/cpp.h
isl_test_cpp_failed_LDFLAGS = @MP_LDFLAGS@
isl_test_cpp_failed_LDADD = libisl.la @MP_LIBS@
isl_test_cpp_checked_SOURCES = \
isl_test_cpp-checked.cc \
include/isl/cpp-checked.h
@ -1314,7 +1369,8 @@ pkginclude_HEADERS = \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@CPP_INTERFACES = \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ include/isl/cpp.h \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ include/isl/cpp-checked.h \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ include/isl/cpp-checked-conversion.h
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ include/isl/cpp-checked-conversion.h \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ include/isl/typed_cpp.h
BUILT_SOURCES = gitversion.h $(CPP_INTERFACES)
CLEANFILES = \
@ -1356,6 +1412,7 @@ EXTRA_DIST = \
isl_list_macro.h \
isl_list_templ.c \
isl_list_templ.h \
isl_list_read_templ.c \
isl_map_bound_templ.c \
isl_map_lexopt_templ.c \
isl_maybe_ast_graft_list.h \
@ -1402,6 +1459,7 @@ EXTRA_DIST = \
isl_multi_unbind_params_templ.c \
isl_multi_union_add_templ.c \
isl_multi_zero_templ.c \
isl_multi_zero_space_templ.c \
isl_opt_mpa_templ.c \
opt_type.h \
print_templ.c \
@ -1427,6 +1485,7 @@ EXTRA_DIST = \
isl_pw_neg_templ.c \
isl_pw_opt_templ.c \
isl_pw_pullback_templ.c \
isl_pw_range_tuple_id_templ.c \
isl_pw_sub_templ.c \
isl_pw_union_opt.c \
read_in_string_templ.c \
@ -1471,6 +1530,7 @@ EXTRA_DIST = \
cpp \
python \
isl_test_cpp-generic.cc \
isl_test_cpp_failed.sh \
isl_test_python.py \
test_inputs
@ -1645,6 +1705,10 @@ isl_polyhedron_minimize$(EXEEXT): $(isl_polyhedron_minimize_OBJECTS) $(isl_polyh
@rm -f isl_polyhedron_minimize$(EXEEXT)
$(AM_V_CCLD)$(isl_polyhedron_minimize_LINK) $(isl_polyhedron_minimize_OBJECTS) $(isl_polyhedron_minimize_LDADD) $(LIBS)
isl_polyhedron_remove_redundant_equalities$(EXEEXT): $(isl_polyhedron_remove_redundant_equalities_OBJECTS) $(isl_polyhedron_remove_redundant_equalities_DEPENDENCIES) $(EXTRA_isl_polyhedron_remove_redundant_equalities_DEPENDENCIES)
@rm -f isl_polyhedron_remove_redundant_equalities$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(isl_polyhedron_remove_redundant_equalities_OBJECTS) $(isl_polyhedron_remove_redundant_equalities_LDADD) $(LIBS)
isl_polyhedron_sample$(EXEEXT): $(isl_polyhedron_sample_OBJECTS) $(isl_polyhedron_sample_DEPENDENCIES) $(EXTRA_isl_polyhedron_sample_DEPENDENCIES)
@rm -f isl_polyhedron_sample$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(isl_polyhedron_sample_OBJECTS) $(isl_polyhedron_sample_LDADD) $(LIBS)
@ -1665,6 +1729,10 @@ isl_test$(EXEEXT): $(isl_test_OBJECTS) $(isl_test_DEPENDENCIES) $(EXTRA_isl_test
@rm -f isl_test$(EXEEXT)
$(AM_V_CCLD)$(isl_test_LINK) $(isl_test_OBJECTS) $(isl_test_LDADD) $(LIBS)
isl_test2$(EXEEXT): $(isl_test2_OBJECTS) $(isl_test2_DEPENDENCIES) $(EXTRA_isl_test2_DEPENDENCIES)
@rm -f isl_test2$(EXEEXT)
$(AM_V_CXXLD)$(isl_test2_LINK) $(isl_test2_OBJECTS) $(isl_test2_LDADD) $(LIBS)
isl_test_cpp$(EXEEXT): $(isl_test_cpp_OBJECTS) $(isl_test_cpp_DEPENDENCIES) $(EXTRA_isl_test_cpp_DEPENDENCIES)
@rm -f isl_test_cpp$(EXEEXT)
$(AM_V_CXXLD)$(isl_test_cpp_LINK) $(isl_test_cpp_OBJECTS) $(isl_test_cpp_LDADD) $(LIBS)
@ -1677,6 +1745,10 @@ isl_test_cpp-checked-conversion$(EXEEXT): $(isl_test_cpp_checked_conversion_OBJE
@rm -f isl_test_cpp-checked-conversion$(EXEEXT)
$(AM_V_CXXLD)$(isl_test_cpp_checked_conversion_LINK) $(isl_test_cpp_checked_conversion_OBJECTS) $(isl_test_cpp_checked_conversion_LDADD) $(LIBS)
isl_test_cpp_failed$(EXEEXT): $(isl_test_cpp_failed_OBJECTS) $(isl_test_cpp_failed_DEPENDENCIES) $(EXTRA_isl_test_cpp_failed_DEPENDENCIES)
@rm -f isl_test_cpp_failed$(EXEEXT)
$(AM_V_CXXLD)$(isl_test_cpp_failed_LINK) $(isl_test_cpp_failed_OBJECTS) $(isl_test_cpp_failed_LDADD) $(LIBS)
isl_test_imath$(EXEEXT): $(isl_test_imath_OBJECTS) $(isl_test_imath_DEPENDENCIES) $(EXTRA_isl_test_imath_DEPENDENCIES)
@rm -f isl_test_imath$(EXEEXT)
$(AM_V_CCLD)$(isl_test_imath_LINK) $(isl_test_imath_OBJECTS) $(isl_test_imath_LDADD) $(LIBS)
@ -1774,9 +1846,11 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_tab_pip.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_tarjan.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test2.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_cpp-checked-conversion.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_cpp-checked.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_cpp.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_cpp-isl_test_cpp.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_imath.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_int.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_transitive_closure.Plo@am__quote@ # am--include-marker
@ -1792,6 +1866,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pip.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polyhedron_detect_equalities.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polyhedron_minimize.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polyhedron_remove_redundant_equalities.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polyhedron_sample.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polytope_scan.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Plo@am__quote@ # am--include-marker
@ -1855,6 +1930,34 @@ am--depfiles: $(am__depfiles_remade)
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
isl_test_cpp-isl_test_cpp.o: isl_test_cpp.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isl_test_cpp-isl_test_cpp.o -MD -MP -MF $(DEPDIR)/isl_test_cpp-isl_test_cpp.Tpo -c -o isl_test_cpp-isl_test_cpp.o `test -f 'isl_test_cpp.cc' || echo '$(srcdir)/'`isl_test_cpp.cc
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/isl_test_cpp-isl_test_cpp.Tpo $(DEPDIR)/isl_test_cpp-isl_test_cpp.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='isl_test_cpp.cc' object='isl_test_cpp-isl_test_cpp.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isl_test_cpp-isl_test_cpp.o `test -f 'isl_test_cpp.cc' || echo '$(srcdir)/'`isl_test_cpp.cc
isl_test_cpp-isl_test_cpp.obj: isl_test_cpp.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isl_test_cpp-isl_test_cpp.obj -MD -MP -MF $(DEPDIR)/isl_test_cpp-isl_test_cpp.Tpo -c -o isl_test_cpp-isl_test_cpp.obj `if test -f 'isl_test_cpp.cc'; then $(CYGPATH_W) 'isl_test_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/isl_test_cpp.cc'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/isl_test_cpp-isl_test_cpp.Tpo $(DEPDIR)/isl_test_cpp-isl_test_cpp.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='isl_test_cpp.cc' object='isl_test_cpp-isl_test_cpp.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isl_test_cpp-isl_test_cpp.obj `if test -f 'isl_test_cpp.cc'; then $(CYGPATH_W) 'isl_test_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/isl_test_cpp.cc'; fi`
isl_test_cpp_failed-isl_test_cpp.o: isl_test_cpp.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_failed_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isl_test_cpp_failed-isl_test_cpp.o -MD -MP -MF $(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Tpo -c -o isl_test_cpp_failed-isl_test_cpp.o `test -f 'isl_test_cpp.cc' || echo '$(srcdir)/'`isl_test_cpp.cc
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Tpo $(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='isl_test_cpp.cc' object='isl_test_cpp_failed-isl_test_cpp.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_failed_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isl_test_cpp_failed-isl_test_cpp.o `test -f 'isl_test_cpp.cc' || echo '$(srcdir)/'`isl_test_cpp.cc
isl_test_cpp_failed-isl_test_cpp.obj: isl_test_cpp.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_failed_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isl_test_cpp_failed-isl_test_cpp.obj -MD -MP -MF $(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Tpo -c -o isl_test_cpp_failed-isl_test_cpp.obj `if test -f 'isl_test_cpp.cc'; then $(CYGPATH_W) 'isl_test_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/isl_test_cpp.cc'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Tpo $(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='isl_test_cpp.cc' object='isl_test_cpp_failed-isl_test_cpp.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_failed_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isl_test_cpp_failed-isl_test_cpp.obj `if test -f 'isl_test_cpp.cc'; then $(CYGPATH_W) 'isl_test_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/isl_test_cpp.cc'; fi`
mostlyclean-libtool:
-rm -f *.lo
@ -2141,7 +2244,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
@ -2224,6 +2327,13 @@ schedule_test.sh.log: schedule_test.sh
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
isl_test2.log: isl_test2$(EXEEXT)
@p='isl_test2$(EXEEXT)'; \
b='isl_test2'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
isl_test_cpp.log: isl_test_cpp$(EXEEXT)
@p='isl_test_cpp$(EXEEXT)'; \
b='isl_test_cpp'; \
@ -2231,6 +2341,13 @@ isl_test_cpp.log: isl_test_cpp$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
isl_test_cpp_failed.sh.log: isl_test_cpp_failed.sh
@p='isl_test_cpp_failed.sh'; \
b='isl_test_cpp_failed.sh'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
isl_test_cpp-checked.log: isl_test_cpp-checked$(EXEEXT)
@p='isl_test_cpp-checked$(EXEEXT)'; \
b='isl_test_cpp-checked'; \
@ -2353,6 +2470,10 @@ dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
dist-zstd: distdir
tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
$(am__post_remove_distdir)
dist-tarZ: distdir
@echo WARNING: "Support for distribution archives compressed with" \
"legacy program 'compress' is deprecated." >&2
@ -2395,6 +2516,8 @@ distcheck: dist
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
*.tar.zst*) \
zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
@ -2410,7 +2533,7 @@ distcheck: dist
$(DISTCHECK_CONFIGURE_FLAGS) \
--srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
@ -2474,7 +2597,8 @@ installdirs-am:
done
install: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) install-recursive
install-exec: install-exec-recursive
install-exec: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
@ -2599,9 +2723,11 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/isl_tab_pip.Plo
-rm -f ./$(DEPDIR)/isl_tarjan.Plo
-rm -f ./$(DEPDIR)/isl_test.Po
-rm -f ./$(DEPDIR)/isl_test2.Po
-rm -f ./$(DEPDIR)/isl_test_cpp-checked-conversion.Po
-rm -f ./$(DEPDIR)/isl_test_cpp-checked.Po
-rm -f ./$(DEPDIR)/isl_test_cpp.Po
-rm -f ./$(DEPDIR)/isl_test_cpp-isl_test_cpp.Po
-rm -f ./$(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Po
-rm -f ./$(DEPDIR)/isl_test_imath.Po
-rm -f ./$(DEPDIR)/isl_test_int.Po
-rm -f ./$(DEPDIR)/isl_transitive_closure.Plo
@ -2617,6 +2743,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/pip.Po
-rm -f ./$(DEPDIR)/polyhedron_detect_equalities.Po
-rm -f ./$(DEPDIR)/polyhedron_minimize.Po
-rm -f ./$(DEPDIR)/polyhedron_remove_redundant_equalities.Po
-rm -f ./$(DEPDIR)/polyhedron_sample.Po
-rm -f ./$(DEPDIR)/polytope_scan.Po
-rm -f ./$(DEPDIR)/print.Plo
@ -2754,9 +2881,11 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/isl_tab_pip.Plo
-rm -f ./$(DEPDIR)/isl_tarjan.Plo
-rm -f ./$(DEPDIR)/isl_test.Po
-rm -f ./$(DEPDIR)/isl_test2.Po
-rm -f ./$(DEPDIR)/isl_test_cpp-checked-conversion.Po
-rm -f ./$(DEPDIR)/isl_test_cpp-checked.Po
-rm -f ./$(DEPDIR)/isl_test_cpp.Po
-rm -f ./$(DEPDIR)/isl_test_cpp-isl_test_cpp.Po
-rm -f ./$(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Po
-rm -f ./$(DEPDIR)/isl_test_imath.Po
-rm -f ./$(DEPDIR)/isl_test_int.Po
-rm -f ./$(DEPDIR)/isl_transitive_closure.Plo
@ -2772,6 +2901,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/pip.Po
-rm -f ./$(DEPDIR)/polyhedron_detect_equalities.Po
-rm -f ./$(DEPDIR)/polyhedron_minimize.Po
-rm -f ./$(DEPDIR)/polyhedron_remove_redundant_equalities.Po
-rm -f ./$(DEPDIR)/polyhedron_sample.Po
-rm -f ./$(DEPDIR)/polytope_scan.Po
-rm -f ./$(DEPDIR)/print.Plo
@ -2801,7 +2931,7 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-local \
uninstall-pkgincludeHEADERS
.MAKE: $(am__recursive_targets) all check check-am install install-am \
install-strip
install-exec install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
am--depfiles am--refresh check check-TESTS check-am clean \
@ -2809,7 +2939,7 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-local \
clean-noinstLIBRARIES clean-noinstPROGRAMS cscope \
cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
dist-zip distcheck distclean distclean-compile \
dist-zip dist-zstd distcheck distclean distclean-compile \
distclean-generic distclean-hdr distclean-libtool \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
@ -2845,20 +2975,18 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-local \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ > $@ || (rm $@ && false)
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@include/isl/cpp.h: interface/extract_interface$(BUILD_EXEEXT) libdep.a \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ cpp/cpp.h.top cpp/cpp.h.pre cpp/cpp.h.bot
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ $(MKDIR_P) "include/isl/cpp" && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ (cat $(srcdir)/cpp/cpp.h.top $(srcdir)/all.h \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ $(srcdir)/cpp/cpp.h.pre && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ cpp/cpp.h.top cpp/cpp.h.bot
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ $(MKDIR_P) "include/isl" && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ (cat $(srcdir)/cpp/cpp.h.top $(srcdir)/all.h && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ interface/extract_interface$(BUILD_EXEEXT) --language=cpp \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ $(includes) $(srcdir)/all.h && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ cat $(srcdir)/cpp/cpp.h.bot) \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ > $@ || (rm $@ && false)
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@include/isl/cpp-checked.h: interface/extract_interface$(BUILD_EXEEXT) libdep.a \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ cpp/cpp-checked.h.top \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ cpp/cpp-checked.h.pre cpp/cpp-checked.h.bot
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ (cat $(srcdir)/cpp/cpp-checked.h.top $(srcdir)/all.h \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ $(srcdir)/cpp/cpp-checked.h.pre && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ cpp/cpp-checked.h.top cpp/cpp-checked.h.bot
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ $(MKDIR_P) "include/isl" && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ (cat $(srcdir)/cpp/cpp-checked.h.top $(srcdir)/all.h && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ interface/extract_interface$(BUILD_EXEEXT) \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ --language=cpp-checked \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ $(includes) $(srcdir)/all.h && \
@ -2870,6 +2998,7 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-local \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ libdep.a \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ cpp/cpp-checked-conversion.h.top \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ cpp/cpp-checked-conversion.h.bot
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ $(MKDIR_P) "include/isl" && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ (cat $(srcdir)/cpp/cpp-checked-conversion.h.top && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ interface/extract_interface$(BUILD_EXEEXT) \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ --language=cpp-checked-conversion \
@ -2877,6 +3006,16 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-local \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ cat $(srcdir)/cpp/cpp-checked-conversion.h.bot) \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ > $@ || (rm $@ && false)
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@include/isl/typed_cpp.h: interface/extract_interface$(BUILD_EXEEXT) \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ libdep.a cpp/typed_cpp.h.top cpp/typed_cpp.h.bot
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ $(MKDIR_P) "include/isl" && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ (cat $(srcdir)/cpp/typed_cpp.h.top && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ interface/extract_interface$(BUILD_EXEEXT) \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ --language=template-cpp \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ $(includes) $(srcdir)/all.h && \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ cat $(srcdir)/cpp/typed_cpp.h.bot) \
@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@ > $@ || (rm $@ && false)
dist-hook:
echo @GIT_HEAD_VERSION@ > $(distdir)/GIT_HEAD_ID
(cd doc; make manual.pdf)

View File

@ -1,6 +1,6 @@
# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
# generated automatically by aclocal 1.16.3 -*- Autoconf -*-
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Copyright (C) 1996-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -20,7 +20,45 @@ You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
# Copyright (C) 2002-2018 Free Software Foundation, Inc.
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_REQUIRE_DEFINED(MACRO)
#
# DESCRIPTION
#
# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
# been defined and thus are available for use. This avoids random issues
# where a macro isn't expanded. Instead the configure script emits a
# non-fatal:
#
# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
#
# It's like AC_REQUIRE except it doesn't expand the required macro.
#
# Here's an example:
#
# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
#
# LICENSE
#
# Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
#
# 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.
#serial 2
AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
])dnl AX_REQUIRE_DEFINED
# Copyright (C) 2002-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -35,7 +73,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.16'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
m4_if([$1], [1.16.1], [],
m4_if([$1], [1.16.3], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@ -51,14 +89,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.16.1])dnl
[AM_AUTOMAKE_VERSION([1.16.3])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -110,7 +148,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
# AM_CONDITIONAL -*- Autoconf -*-
# Copyright (C) 1997-2018 Free Software Foundation, Inc.
# Copyright (C) 1997-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -141,7 +179,7 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -332,7 +370,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*-
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -371,7 +409,9 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
done
if test $am_rc -ne 0; then
AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
for automatic dependency tracking. Try re-running configure with the
for automatic dependency tracking. If GNU make was not used, consider
re-running the configure script with MAKE="gmake" (or whatever is
necessary). You can also try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).])
fi
@ -398,7 +438,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -595,7 +635,7 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -616,7 +656,7 @@ if test x"${install_sh+set}" != xset; then
fi
AC_SUBST([install_sh])])
# Copyright (C) 2003-2018 Free Software Foundation, Inc.
# Copyright (C) 2003-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -637,7 +677,7 @@ AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -680,7 +720,7 @@ AC_SUBST([am__quote])])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
# Copyright (C) 1997-2018 Free Software Foundation, Inc.
# Copyright (C) 1997-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -701,12 +741,7 @@ AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
if test x"${MISSING+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
*)
MISSING="\${SHELL} $am_aux_dir/missing" ;;
esac
MISSING="\${SHELL} '$am_aux_dir/missing'"
fi
# Use eval to expand $SHELL
if eval "$MISSING --is-lightweight"; then
@ -719,7 +754,7 @@ fi
# Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -748,7 +783,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -795,7 +830,7 @@ AC_LANG_POP([C])])
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -878,12 +913,14 @@ AC_DEFUN([AM_PATH_PYTHON],
m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
else
dnl Query Python for its version number. Getting [:3] seems to be
dnl the best way to do this; it's what "site.py" does in the standard
dnl library.
dnl Query Python for its version number. Although site.py simply uses
dnl sys.version[:3], printing that failed with Python 3.10, since the
dnl trailing zero was eliminated. So now we output just the major
dnl and minor version numbers, as numbers. Apparently the tertiary
dnl version is not of interest.
AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
[am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
[am_cv_python_version=`$PYTHON -c "import sys; print('%u.%u' % sys.version_info[[:2]])"`])
AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
dnl Use the values of $prefix and $exec_prefix for the corresponding
@ -1033,7 +1070,7 @@ for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
sys.exit(sys.hexversion < minverhex)"
AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -1052,7 +1089,7 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -1133,7 +1170,7 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file
])
# Copyright (C) 2009-2018 Free Software Foundation, Inc.
# Copyright (C) 2009-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -1193,7 +1230,7 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -1221,7 +1258,7 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Copyright (C) 2006-2018 Free Software Foundation, Inc.
# Copyright (C) 2006-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -1240,7 +1277,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004-2018 Free Software Foundation, Inc.
# Copyright (C) 2004-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,

View File

@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
@ -53,7 +53,7 @@ func_file_conv ()
MINGW*)
file_conv=mingw
;;
CYGWIN*)
CYGWIN* | MSYS*)
file_conv=cygwin
;;
*)
@ -67,7 +67,7 @@ func_file_conv ()
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/*)
cygwin/* | msys/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for isl 0.23.
# Generated by GNU Autoconf 2.69 for isl 0.24.
#
# Report bugs to <isl-development@googlegroups.com>.
#
@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='isl'
PACKAGE_TARNAME='isl'
PACKAGE_VERSION='0.23'
PACKAGE_STRING='isl 0.23'
PACKAGE_VERSION='0.24'
PACKAGE_STRING='isl 0.24'
PACKAGE_BUGREPORT='isl-development@googlegroups.com'
PACKAGE_URL=''
@ -790,7 +790,6 @@ infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
@ -888,7 +887,6 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@ -1141,15 +1139,6 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@ -1287,7 +1276,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir runstatedir
libdir localedir mandir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@ -1400,7 +1389,7 @@ if test "$ac_init_help" = "long"; then
# 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 isl 0.23 to adapt to many kinds of systems.
\`configure' configures isl 0.24 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1440,7 +1429,6 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@ -1471,7 +1459,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of isl 0.23:";;
short | recursive ) echo "Configuration of isl 0.24:";;
esac
cat <<\_ACEOF
@ -1602,7 +1590,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
isl configure 0.23
isl configure 0.24
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -2375,7 +2363,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by isl $as_me 0.23, which was
It was created by isl $as_me 0.24, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2929,12 +2917,7 @@ program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
am_aux_dir=`cd "$ac_aux_dir" && pwd`
if test x"${MISSING+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
*)
MISSING="\${SHELL} $am_aux_dir/missing" ;;
esac
MISSING="\${SHELL} '$am_aux_dir/missing'"
fi
# Use eval to expand $SHELL
if eval "$MISSING --is-lightweight"; then
@ -3239,7 +3222,7 @@ fi
# Define the identity of the package.
PACKAGE='isl'
VERSION='0.23'
VERSION='0.24'
cat >>confdefs.h <<_ACEOF
@ -3372,7 +3355,7 @@ fi
AM_BACKSLASH='\'
versioninfo=23:0:0
versioninfo=24:0:1
if test "x$prefix" != "xNONE"; then
prefix_wd=`cd $prefix && pwd`
@ -8238,8 +8221,8 @@ esac
macro_version='2.4.6'
macro_revision='2.4.6'
macro_version='2.4.6.42-b88ce-dirty'
macro_revision='2.4.6.42'
@ -9405,7 +9388,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
lt_cv_deplibs_check_method=pass_all
;;
netbsd* | netbsdelf*-gnu)
netbsd*)
if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
else
@ -9767,13 +9750,29 @@ esac
fi
: ${AR=ar}
: ${AR_FLAGS=cr}
# Use ARFLAGS variable as AR's operation code to sync the variable naming with
# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have
# higher priority because thats what people were doing historically (setting
# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS
# variable obsoleted/removed.
test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr}
lt_ar_flags=$AR_FLAGS
# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override
# by AR_FLAGS because that was never working and AR_FLAGS is about to die.
@ -10222,7 +10221,7 @@ for ac_symprfx in "" "_"; do
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
# Fake it for dumpbin and say T for any non-static function,
# D for any global variable and I for any imported variable.
# Also find C++ and __fastcall symbols from MSVC++,
# Also find C++ and __fastcall symbols from MSVC++ or ICC,
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK '"\
" {last_section=section; section=\$ 3};"\
@ -10268,8 +10267,11 @@ _LT_EOF
test $ac_status = 0; }; then
# Now try to grab the symbols.
nlist=conftest.nm
$ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5
if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
(eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && test -s "$nlist"; then
# Try sorting and uniquifying the output.
if sort "$nlist" | uniq > "$nlist"T; then
mv -f "$nlist"T "$nlist"
@ -11488,8 +11490,8 @@ int forced_loaded() { return 2;}
_LT_EOF
echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
echo "$AR cr libconftest.a conftest.o" >&5
$AR cr libconftest.a conftest.o 2>&5
echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5
$AR $AR_FLAGS libconftest.a conftest.o 2>&5
echo "$RANLIB libconftest.a" >&5
$RANLIB libconftest.a 2>&5
cat > conftest.c << _LT_EOF
@ -12025,8 +12027,8 @@ esac
ofile=libtool
can_build_shared=yes
# All known linkers require a '.a' archive for static linking (except MSVC,
# which needs '.lib').
# All known linkers require a '.a' archive for static linking (except MSVC and
# ICC, which need '.lib').
libext=a
with_gnu_ld=$lt_cv_prog_gnu_ld
@ -12491,12 +12493,6 @@ lt_prog_compiler_static=
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-static'
;;
# flang / f18. f95 an alias for gfortran or flang on Debian
flang* | f18* | f95*)
lt_prog_compiler_wl='-Wl,'
lt_prog_compiler_pic='-fPIC'
lt_prog_compiler_static='-static'
;;
# icc used to be incompatible with GCC.
# ICC 10 doesn't accept -KPIC any more.
icc* | ifort*)
@ -12959,23 +12955,20 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
# FIXME: the MSVC++ port hasn't been tested in a loooong time
# FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
# Microsoft Visual C++ or Intel C++ Compiler.
if test yes != "$GCC"; then
with_gnu_ld=no
fi
;;
interix*)
# we just hope/assume this is gcc and not c89 (= MSVC++)
# we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
with_gnu_ld=yes
;;
openbsd* | bitrig*)
with_gnu_ld=no
;;
linux* | k*bsd*-gnu | gnu*)
link_all_deplibs=no
;;
esac
ld_shlibs=yes
@ -13134,6 +13127,7 @@ _LT_EOF
emximp -o $lib $output_objdir/$libname.def'
old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
enable_shared_with_static_runtimes=yes
file_list_spec='@'
;;
interix[3-9]*)
@ -13230,7 +13224,7 @@ _LT_EOF
fi
;;
netbsd* | netbsdelf*-gnu)
netbsd*)
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
@ -13351,7 +13345,7 @@ _LT_EOF
if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
else
export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
fi
aix_use_runtimelinking=no
@ -13618,12 +13612,12 @@ fi
cygwin* | mingw* | pw32* | cegcc*)
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
# Microsoft Visual C++ or Intel C++ Compiler.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
case $cc_basename in
cl*)
# Native MSVC
cl* | icl*)
# Native MSVC or ICC
hardcode_libdir_flag_spec=' '
allow_undefined_flag=unsupported
always_export_symbols=yes
@ -13664,7 +13658,7 @@ fi
fi'
;;
*)
# Assume MSVC wrapper
# Assume MSVC and ICC wrapper
hardcode_libdir_flag_spec=' '
allow_undefined_flag=unsupported
# Tell ltmain to make .lib files, not .a files.
@ -13900,7 +13894,6 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
if test yes = "$lt_cv_irix_exported_symbol"; then
archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
fi
link_all_deplibs=no
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
@ -13922,7 +13915,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
esac
;;
netbsd* | netbsdelf*-gnu)
netbsd*)
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
else
@ -13989,6 +13982,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
emximp -o $lib $output_objdir/$libname.def'
old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
enable_shared_with_static_runtimes=yes
file_list_spec='@'
;;
osf3*)
@ -14696,8 +14690,8 @@ cygwin* | mingw* | pw32* | cegcc*)
dynamic_linker='Win32 ld.exe'
;;
*,cl*)
# Native MSVC
*,cl* | *,icl*)
# Native MSVC or ICC
libname_spec='$name'
soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
library_names_spec='$libname.dll.lib'
@ -14753,7 +14747,7 @@ cygwin* | mingw* | pw32* | cegcc*)
;;
*)
# Assume MSVC wrapper
# Assume MSVC and ICC wrapper
library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
dynamic_linker='Win32 ld.exe'
;;
@ -15037,18 +15031,6 @@ fi
dynamic_linker='GNU/Linux ld.so'
;;
netbsdelf*-gnu)
version_type=linux
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
dynamic_linker='NetBSD ld.elf_so'
;;
netbsd*)
version_type=sunos
need_lib_prefix=no
@ -15944,30 +15926,41 @@ striplib=
old_striplib=
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
$as_echo_n "checking whether stripping libraries is possible... " >&6; }
if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
test -z "$striplib" && striplib="$STRIP --strip-unneeded"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
if test -z "$STRIP"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
else
# FIXME - insert some real tests, host_os isn't really good enough
case $host_os in
darwin*)
if test -n "$STRIP"; then
if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
old_striplib="$STRIP --strip-debug"
striplib="$STRIP --strip-unneeded"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
case $host_os in
darwin*)
# FIXME - insert some real tests, host_os isn't really good enough
striplib="$STRIP -x"
old_striplib="$STRIP -S"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
;;
freebsd*)
if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then
old_striplib="$STRIP --strip-debug"
striplib="$STRIP --strip-unneeded"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
;;
*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
;;
*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
;;
esac
;;
esac
fi
fi
@ -16439,7 +16432,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"'
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
else
GXX=no
@ -16735,8 +16728,8 @@ fi
cygwin* | mingw* | pw32* | cegcc*)
case $GXX,$cc_basename in
,cl* | no,cl*)
# Native MSVC
,cl* | no,cl* | ,icl* | no,icl*)
# Native MSVC or ICC
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
hardcode_libdir_flag_spec_CXX=' '
@ -16866,6 +16859,7 @@ fi
emximp -o $lib $output_objdir/$libname.def'
old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
enable_shared_with_static_runtimes_CXX=yes
file_list_spec_CXX='@'
;;
dgux*)
@ -16931,7 +16925,7 @@ fi
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
if test yes = "$GXX"; then
@ -16996,7 +16990,7 @@ fi
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
if test yes = "$GXX"; then
@ -17335,7 +17329,7 @@ fi
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"'
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
else
# FIXME: insert proper C++ library support
@ -17419,7 +17413,7 @@ fi
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"'
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
else
# g++ 2.7 appears to require '-G' NOT '-shared' on this
# platform.
@ -17430,7 +17424,7 @@ fi
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"'
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
fi
hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
@ -17943,7 +17937,7 @@ lt_prog_compiler_static_CXX=
;;
esac
;;
netbsd* | netbsdelf*-gnu)
netbsd*)
;;
*qnx* | *nto*)
# QNX uses GNU C++, but need to define -shared option too, otherwise
@ -18301,7 +18295,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
else
export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
fi
;;
pw32*)
@ -18309,7 +18303,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
;;
cygwin* | mingw* | cegcc*)
case $cc_basename in
cl*)
cl* | icl*)
exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
;;
*)
@ -18318,9 +18312,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
;;
esac
;;
linux* | k*bsd*-gnu | gnu*)
link_all_deplibs_CXX=no
;;
*)
export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
;;
@ -18674,8 +18665,8 @@ cygwin* | mingw* | pw32* | cegcc*)
dynamic_linker='Win32 ld.exe'
;;
*,cl*)
# Native MSVC
*,cl* | *,icl*)
# Native MSVC or ICC
libname_spec='$name'
soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
library_names_spec='$libname.dll.lib'
@ -18731,7 +18722,7 @@ cygwin* | mingw* | pw32* | cegcc*)
;;
*)
# Assume MSVC wrapper
# Assume MSVC and ICC wrapper
library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
dynamic_linker='Win32 ld.exe'
;;
@ -19014,18 +19005,6 @@ fi
dynamic_linker='GNU/Linux ld.so'
;;
netbsdelf*-gnu)
version_type=linux
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
dynamic_linker='NetBSD ld.elf_so'
;;
netbsd*)
version_type=sunos
need_lib_prefix=no
@ -19566,7 +19545,7 @@ $as_echo_n "checking for $am_display_PYTHON version... " >&6; }
if ${am_cv_python_version+:} false; then :
$as_echo_n "(cached) " >&6
else
am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
am_cv_python_version=`$PYTHON -c "import sys; print('%u.%u' % sys.version_info[:2])"`
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
$as_echo "$am_cv_python_version" >&6; }
@ -20657,7 +20636,7 @@ else
HAVE_CXX11_FALSE=
fi
if test "x$with_int" == "ximath-32"; then
if test "x$with_int" = "ximath-32"; then
SMALL_INT_OPT_TRUE=
SMALL_INT_OPT_FALSE='#'
else
@ -20665,7 +20644,7 @@ else
SMALL_INT_OPT_FALSE=
fi
if test "x$with_int" == "ximath-32"; then :
if test "x$with_int" = "ximath-32"; then :
$as_echo "#define USE_SMALL_INT_OPT /**/" >>confdefs.h
@ -21765,7 +21744,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by isl $as_me 0.23, which was
This file was extended by isl $as_me 0.24, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -21831,7 +21810,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
isl config.status 0.23
isl config.status 0.24
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@ -22002,6 +21981,7 @@ want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`'
AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
@ -22184,7 +22164,6 @@ want_nocaseglob \
DLLTOOL \
sharedlib_from_linklib_cmd \
AR \
AR_FLAGS \
archiver_list_spec \
STRIP \
RANLIB \
@ -23071,7 +23050,9 @@ $as_echo X/"$am_mf" |
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Something went wrong bootstrapping makefile fragments
for automatic dependency tracking. Try re-running configure with the
for automatic dependency tracking. If GNU make was not used, consider
re-running the configure script with MAKE=\"gmake\" (or whatever is
necessary). You can also try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).
See \`config.log' for more details" "$LINENO" 5; }
@ -23241,8 +23222,11 @@ sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
# The archiver.
AR=$lt_AR
# Flags to create an archive (by configure).
lt_ar_flags=$lt_ar_flags
# Flags to create an archive.
AR_FLAGS=$lt_AR_FLAGS
AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"}
# How to feed a file listing to the archiver.
archiver_list_spec=$lt_archiver_list_spec

View File

@ -1,10 +1,10 @@
AC_INIT([isl], [0.23], [isl-development@googlegroups.com])
AC_INIT([isl], [0.24], [isl-development@googlegroups.com])
AC_CONFIG_AUX_DIR([.])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([foreign])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
AC_SUBST(versioninfo)
versioninfo=23:0:0
versioninfo=24:0:1
if test "x$prefix" != "xNONE"; then
prefix_wd=`cd $prefix && pwd`
@ -83,8 +83,8 @@ AM_CONDITIONAL(IMATH_FOR_MP, test x$with_int = ximath -o x$with_int = ximath-32)
AM_CONDITIONAL(GMP_FOR_MP, test x$with_int = xgmp)
AM_CONDITIONAL(HAVE_CXX11, test "x$HAVE_CXX11" = "x1")
AM_CONDITIONAL(SMALL_INT_OPT, test "x$with_int" == "ximath-32")
AS_IF([test "x$with_int" == "ximath-32"], [
AM_CONDITIONAL(SMALL_INT_OPT, test "x$with_int" = "ximath-32")
AS_IF([test "x$with_int" = "ximath-32"], [
AC_DEFINE([USE_SMALL_INT_OPT], [], [Use small integer optimization])
])

View File

@ -1,180 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include <functional>
#include <memory>
#include <ostream>
#include <string>
#include <type_traits>
namespace isl {
namespace checked {
#define ISLPP_STRINGIZE_(X) #X
#define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
#define ISLPP_ASSERT(test, message) \
do { \
if (test) \
break; \
fputs("Assertion \"" #test "\" failed at " __FILE__ \
":" ISLPP_STRINGIZE(__LINE__) "\n " message "\n", \
stderr); \
abort(); \
} while (0)
/* Class used to check that isl::checked::boolean,
* isl::checked::stat and isl::checked::size values are checked for errors.
*/
struct checker {
bool checked = false;
~checker() {
ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
}
};
class boolean {
private:
mutable std::shared_ptr<checker> check = std::make_shared<checker>();
isl_bool val;
friend boolean manage(isl_bool val);
boolean(isl_bool val): val(val) {}
public:
static boolean error() {
return boolean(isl_bool_error);
}
boolean()
: val(isl_bool_error) {}
/* implicit */ boolean(bool val)
: val(val ? isl_bool_true : isl_bool_false) {}
isl_bool release() {
auto tmp = val;
val = isl_bool_error;
check->checked = true;
return tmp;
}
bool is_error() const { check->checked = true; return val == isl_bool_error; }
bool is_false() const { check->checked = true; return val == isl_bool_false; }
bool is_true() const { check->checked = true; return val == isl_bool_true; }
explicit operator bool() const {
ISLPP_ASSERT(check->checked, "IMPLEMENTATION ERROR: Unchecked error state");
ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
return is_true();
}
boolean negate() {
if (val == isl_bool_true)
val = isl_bool_false;
else if (val == isl_bool_false)
val = isl_bool_true;
return *this;
}
boolean operator!() const {
return boolean(*this).negate();
}
};
inline boolean manage(isl_bool val) {
return boolean(val);
}
class ctx {
isl_ctx *ptr;
public:
/* implicit */ ctx(isl_ctx *ctx)
: ptr(ctx) {}
isl_ctx *release() {
auto tmp = ptr;
ptr = nullptr;
return tmp;
}
isl_ctx *get() {
return ptr;
}
};
/* Class encapsulating an isl_stat value.
*/
class stat {
private:
mutable std::shared_ptr<checker> check = std::make_shared<checker>();
isl_stat val;
friend stat manage(isl_stat val);
stat(isl_stat val) : val(val) {}
public:
static stat ok() {
return stat(isl_stat_ok);
}
static stat error() {
return stat(isl_stat_error);
}
stat() : val(isl_stat_error) {}
isl_stat release() {
check->checked = true;
return val;
}
bool is_error() const {
check->checked = true;
return val == isl_stat_error;
}
bool is_ok() const {
check->checked = true;
return val == isl_stat_ok;
}
};
inline stat manage(isl_stat val)
{
return stat(val);
}
/* Class encapsulating an isl_size value.
*/
class size {
private:
mutable std::shared_ptr<checker> check = std::make_shared<checker>();
isl_size val;
friend size manage(isl_size val);
size(isl_size val) : val(val) {}
public:
size() : val(isl_size_error) {}
isl_size release() {
auto tmp = val;
val = isl_size_error;
check->checked = true;
return tmp;
}
bool is_error() const {
check->checked = true;
return val == isl_size_error;
}
explicit operator unsigned() const {
ISLPP_ASSERT(check->checked,
"IMPLEMENTATION ERROR: Unchecked error state");
ISLPP_ASSERT(!is_error(),
"IMPLEMENTATION ERROR: Unhandled error state");
return val;
}
};
inline size manage(isl_size val)
{
return size(val);
}
}
} // namespace isl

View File

@ -8,3 +8,183 @@
#ifndef ISL_CPP_CHECKED
#define ISL_CPP_CHECKED
#include <stdio.h>
#include <stdlib.h>
#include <functional>
#include <memory>
#include <ostream>
#include <string>
#include <type_traits>
namespace isl {
namespace checked {
#define ISLPP_STRINGIZE_(X) #X
#define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
#define ISLPP_ASSERT(test, message) \
do { \
if (test) \
break; \
fputs("Assertion \"" #test "\" failed at " __FILE__ \
":" ISLPP_STRINGIZE(__LINE__) "\n " message "\n", \
stderr); \
abort(); \
} while (0)
/* Class used to check that isl::checked::boolean,
* isl::checked::stat and isl::checked::size values are checked for errors.
*/
struct checker {
bool checked = false;
~checker() {
ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
}
};
class boolean {
private:
mutable std::shared_ptr<checker> check = std::make_shared<checker>();
isl_bool val;
friend boolean manage(isl_bool val);
boolean(isl_bool val): val(val) {}
public:
static boolean error() {
return boolean(isl_bool_error);
}
boolean()
: val(isl_bool_error) {}
/* implicit */ boolean(bool val)
: val(val ? isl_bool_true : isl_bool_false) {}
isl_bool release() {
auto tmp = val;
val = isl_bool_error;
check->checked = true;
return tmp;
}
bool is_error() const { check->checked = true; return val == isl_bool_error; }
bool is_false() const { check->checked = true; return val == isl_bool_false; }
bool is_true() const { check->checked = true; return val == isl_bool_true; }
explicit operator bool() const {
ISLPP_ASSERT(check->checked, "IMPLEMENTATION ERROR: Unchecked error state");
ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
return is_true();
}
boolean negate() {
if (val == isl_bool_true)
val = isl_bool_false;
else if (val == isl_bool_false)
val = isl_bool_true;
return *this;
}
boolean operator!() const {
return boolean(*this).negate();
}
};
inline boolean manage(isl_bool val) {
return boolean(val);
}
class ctx {
isl_ctx *ptr;
public:
/* implicit */ ctx(isl_ctx *ctx)
: ptr(ctx) {}
isl_ctx *release() {
auto tmp = ptr;
ptr = nullptr;
return tmp;
}
isl_ctx *get() {
return ptr;
}
};
/* Class encapsulating an isl_stat value.
*/
class stat {
private:
mutable std::shared_ptr<checker> check = std::make_shared<checker>();
isl_stat val;
friend stat manage(isl_stat val);
stat(isl_stat val) : val(val) {}
public:
static stat ok() {
return stat(isl_stat_ok);
}
static stat error() {
return stat(isl_stat_error);
}
stat() : val(isl_stat_error) {}
isl_stat release() {
check->checked = true;
return val;
}
bool is_error() const {
check->checked = true;
return val == isl_stat_error;
}
bool is_ok() const {
check->checked = true;
return val == isl_stat_ok;
}
};
inline stat manage(isl_stat val)
{
return stat(val);
}
/* Class encapsulating an isl_size value.
*/
class size {
private:
mutable std::shared_ptr<checker> check = std::make_shared<checker>();
isl_size val;
friend size manage(isl_size val);
size(isl_size val) : val(val) {}
public:
size() : val(isl_size_error) {}
isl_size release() {
auto tmp = val;
val = isl_size_error;
check->checked = true;
return tmp;
}
bool is_error() const {
check->checked = true;
return val == isl_size_error;
}
explicit operator unsigned() const {
ISLPP_ASSERT(check->checked,
"IMPLEMENTATION ERROR: Unchecked error state");
ISLPP_ASSERT(!is_error(),
"IMPLEMENTATION ERROR: Unhandled error state");
return val;
}
};
inline size manage(isl_size val)
{
return size(val);
}
}
} // namespace isl

View File

@ -1,246 +0,0 @@
#include <isl/ctx.h>
#include <isl/options.h>
#include <functional>
#include <memory>
#include <ostream>
#include <stdexcept>
#include <string>
#include <type_traits>
/* ISL_USE_EXCEPTIONS should be defined to 1 if exceptions are available.
* gcc and clang define __cpp_exceptions; MSVC and xlC define _CPPUNWIND.
* Older versions of gcc (e.g., 4.9) only define __EXCEPTIONS.
* If exceptions are not available, any error condition will result
* in an abort.
*/
#ifndef ISL_USE_EXCEPTIONS
#if defined(__cpp_exceptions) || defined(_CPPUNWIND) || defined(__EXCEPTIONS)
#define ISL_USE_EXCEPTIONS 1
#else
#define ISL_USE_EXCEPTIONS 0
#endif
#endif
namespace isl {
class ctx {
isl_ctx *ptr;
public:
/* implicit */ ctx(isl_ctx *ctx) : ptr(ctx) {}
isl_ctx *release() {
auto tmp = ptr;
ptr = nullptr;
return tmp;
}
isl_ctx *get() {
return ptr;
}
};
/* Macros hiding try/catch.
* If exceptions are not available, then no exceptions will be thrown and
* there is nothing to catch.
*/
#if ISL_USE_EXCEPTIONS
#define ISL_CPP_TRY try
#define ISL_CPP_CATCH_ALL catch (...)
#else
#define ISL_CPP_TRY if (1)
#define ISL_CPP_CATCH_ALL if (0)
#endif
#if ISL_USE_EXCEPTIONS
/* Class capturing isl errors.
*
* The what() return value is stored in a reference counted string
* to ensure that the copy constructor and the assignment operator
* do not throw any exceptions.
*/
class exception : public std::exception {
std::shared_ptr<std::string> what_str;
protected:
inline exception(const char *what_arg, const char *msg,
const char *file, int line);
public:
exception() {}
exception(const char *what_arg) {
what_str = std::make_shared<std::string>(what_arg);
}
static inline void throw_error(enum isl_error error, const char *msg,
const char *file, int line);
virtual const char *what() const noexcept {
return what_str->c_str();
}
/* Default behavior on error conditions that occur inside isl calls
* performed from inside the bindings.
* In the case exceptions are available, isl should continue
* without printing a warning since the warning message
* will be included in the exception thrown from inside the bindings.
*/
static constexpr auto on_error = ISL_ON_ERROR_CONTINUE;
/* Wrapper for throwing an exception with the given message.
*/
static void throw_invalid(const char *msg, const char *file, int line) {
throw_error(isl_error_invalid, msg, file, line);
}
static inline void throw_last_error(ctx ctx);
};
/* Create an exception of a type described by "what_arg", with
* error message "msg" in line "line" of file "file".
*
* Create a string holding the what() return value that
* corresponds to what isl would have printed.
* If no error message or no error file was set, then use "what_arg" instead.
*/
exception::exception(const char *what_arg, const char *msg, const char *file,
int line)
{
if (!msg || !file)
what_str = std::make_shared<std::string>(what_arg);
else
what_str = std::make_shared<std::string>(std::string(file) +
":" + std::to_string(line) + ": " + msg);
}
class exception_abort : public exception {
friend exception;
exception_abort(const char *msg, const char *file, int line) :
exception("execution aborted", msg, file, line) {}
};
class exception_alloc : public exception {
friend exception;
exception_alloc(const char *msg, const char *file, int line) :
exception("memory allocation failure", msg, file, line) {}
};
class exception_unknown : public exception {
friend exception;
exception_unknown(const char *msg, const char *file, int line) :
exception("unknown failure", msg, file, line) {}
};
class exception_internal : public exception {
friend exception;
exception_internal(const char *msg, const char *file, int line) :
exception("internal error", msg, file, line) {}
};
class exception_invalid : public exception {
friend exception;
exception_invalid(const char *msg, const char *file, int line) :
exception("invalid argument", msg, file, line) {}
};
class exception_quota : public exception {
friend exception;
exception_quota(const char *msg, const char *file, int line) :
exception("quota exceeded", msg, file, line) {}
};
class exception_unsupported : public exception {
friend exception;
exception_unsupported(const char *msg, const char *file, int line) :
exception("unsupported operation", msg, file, line) {}
};
/* Throw an exception of the class that corresponds to "error", with
* error message "msg" in line "line" of file "file".
*
* isl_error_none is treated as an invalid error type.
*/
void exception::throw_error(enum isl_error error, const char *msg,
const char *file, int line)
{
switch (error) {
case isl_error_none:
break;
case isl_error_abort: throw exception_abort(msg, file, line);
case isl_error_alloc: throw exception_alloc(msg, file, line);
case isl_error_unknown: throw exception_unknown(msg, file, line);
case isl_error_internal: throw exception_internal(msg, file, line);
case isl_error_invalid: throw exception_invalid(msg, file, line);
case isl_error_quota: throw exception_quota(msg, file, line);
case isl_error_unsupported:
throw exception_unsupported(msg, file, line);
}
throw exception_invalid("invalid error type", file, line);
}
/* Throw an exception corresponding to the last error on "ctx" and
* reset the error.
*
* If "ctx" is NULL or if it is not in an error state at the start,
* then an invalid argument exception is thrown.
*/
void exception::throw_last_error(ctx ctx)
{
enum isl_error error;
const char *msg, *file;
int line;
error = isl_ctx_last_error(ctx.get());
msg = isl_ctx_last_error_msg(ctx.get());
file = isl_ctx_last_error_file(ctx.get());
line = isl_ctx_last_error_line(ctx.get());
isl_ctx_reset_error(ctx.get());
throw_error(error, msg, file, line);
}
#else
#include <stdio.h>
#include <stdlib.h>
class exception {
public:
/* Default behavior on error conditions that occur inside isl calls
* performed from inside the bindings.
* In the case exceptions are not available, isl should abort.
*/
static constexpr auto on_error = ISL_ON_ERROR_ABORT;
/* Wrapper for throwing an exception with the given message.
* In the case exceptions are not available, print an error and abort.
*/
static void throw_invalid(const char *msg, const char *file, int line) {
fprintf(stderr, "%s:%d: %s\n", file, line, msg);
abort();
}
/* Throw an exception corresponding to the last
* error on "ctx".
* isl should already abort when an error condition occurs,
* so this function should never be called.
*/
static void throw_last_error(ctx ctx) {
abort();
}
};
#endif
/* Helper class for setting the on_error and resetting the option
* to the original value when leaving the scope.
*/
class options_scoped_set_on_error {
isl_ctx *ctx;
int saved_on_error;
public:
options_scoped_set_on_error(class ctx ctx, int on_error) {
this->ctx = ctx.get();
saved_on_error = isl_options_get_on_error(this->ctx);
isl_options_set_on_error(this->ctx, on_error);
}
~options_scoped_set_on_error() {
isl_options_set_on_error(ctx, saved_on_error);
}
};
} // namespace isl

View File

@ -8,3 +8,249 @@
#ifndef ISL_CPP
#define ISL_CPP
#include <isl/ctx.h>
#include <isl/options.h>
#include <functional>
#include <memory>
#include <ostream>
#include <stdexcept>
#include <string>
#include <type_traits>
/* ISL_USE_EXCEPTIONS should be defined to 1 if exceptions are available.
* gcc and clang define __cpp_exceptions; MSVC and xlC define _CPPUNWIND.
* Older versions of gcc (e.g., 4.9) only define __EXCEPTIONS.
* If exceptions are not available, any error condition will result
* in an abort.
*/
#ifndef ISL_USE_EXCEPTIONS
#if defined(__cpp_exceptions) || defined(_CPPUNWIND) || defined(__EXCEPTIONS)
#define ISL_USE_EXCEPTIONS 1
#else
#define ISL_USE_EXCEPTIONS 0
#endif
#endif
namespace isl {
class ctx {
isl_ctx *ptr;
public:
/* implicit */ ctx(isl_ctx *ctx) : ptr(ctx) {}
isl_ctx *release() {
auto tmp = ptr;
ptr = nullptr;
return tmp;
}
isl_ctx *get() {
return ptr;
}
};
/* Macros hiding try/catch.
* If exceptions are not available, then no exceptions will be thrown and
* there is nothing to catch.
*/
#if ISL_USE_EXCEPTIONS
#define ISL_CPP_TRY try
#define ISL_CPP_CATCH_ALL catch (...)
#else
#define ISL_CPP_TRY if (1)
#define ISL_CPP_CATCH_ALL if (0)
#endif
#if ISL_USE_EXCEPTIONS
/* Class capturing isl errors.
*
* The what() return value is stored in a reference counted string
* to ensure that the copy constructor and the assignment operator
* do not throw any exceptions.
*/
class exception : public std::exception {
std::shared_ptr<std::string> what_str;
protected:
inline exception(const char *what_arg, const char *msg,
const char *file, int line);
public:
exception() {}
exception(const char *what_arg) {
what_str = std::make_shared<std::string>(what_arg);
}
static inline void throw_error(enum isl_error error, const char *msg,
const char *file, int line);
virtual const char *what() const noexcept {
return what_str->c_str();
}
/* Default behavior on error conditions that occur inside isl calls
* performed from inside the bindings.
* In the case exceptions are available, isl should continue
* without printing a warning since the warning message
* will be included in the exception thrown from inside the bindings.
*/
static constexpr auto on_error = ISL_ON_ERROR_CONTINUE;
/* Wrapper for throwing an exception with the given message.
*/
static void throw_invalid(const char *msg, const char *file, int line) {
throw_error(isl_error_invalid, msg, file, line);
}
static inline void throw_last_error(ctx ctx);
};
/* Create an exception of a type described by "what_arg", with
* error message "msg" in line "line" of file "file".
*
* Create a string holding the what() return value that
* corresponds to what isl would have printed.
* If no error message or no error file was set, then use "what_arg" instead.
*/
exception::exception(const char *what_arg, const char *msg, const char *file,
int line)
{
if (!msg || !file)
what_str = std::make_shared<std::string>(what_arg);
else
what_str = std::make_shared<std::string>(std::string(file) +
":" + std::to_string(line) + ": " + msg);
}
class exception_abort : public exception {
friend exception;
exception_abort(const char *msg, const char *file, int line) :
exception("execution aborted", msg, file, line) {}
};
class exception_alloc : public exception {
friend exception;
exception_alloc(const char *msg, const char *file, int line) :
exception("memory allocation failure", msg, file, line) {}
};
class exception_unknown : public exception {
friend exception;
exception_unknown(const char *msg, const char *file, int line) :
exception("unknown failure", msg, file, line) {}
};
class exception_internal : public exception {
friend exception;
exception_internal(const char *msg, const char *file, int line) :
exception("internal error", msg, file, line) {}
};
class exception_invalid : public exception {
friend exception;
exception_invalid(const char *msg, const char *file, int line) :
exception("invalid argument", msg, file, line) {}
};
class exception_quota : public exception {
friend exception;
exception_quota(const char *msg, const char *file, int line) :
exception("quota exceeded", msg, file, line) {}
};
class exception_unsupported : public exception {
friend exception;
exception_unsupported(const char *msg, const char *file, int line) :
exception("unsupported operation", msg, file, line) {}
};
/* Throw an exception of the class that corresponds to "error", with
* error message "msg" in line "line" of file "file".
*
* isl_error_none is treated as an invalid error type.
*/
void exception::throw_error(enum isl_error error, const char *msg,
const char *file, int line)
{
switch (error) {
case isl_error_none:
break;
case isl_error_abort: throw exception_abort(msg, file, line);
case isl_error_alloc: throw exception_alloc(msg, file, line);
case isl_error_unknown: throw exception_unknown(msg, file, line);
case isl_error_internal: throw exception_internal(msg, file, line);
case isl_error_invalid: throw exception_invalid(msg, file, line);
case isl_error_quota: throw exception_quota(msg, file, line);
case isl_error_unsupported:
throw exception_unsupported(msg, file, line);
}
throw exception_invalid("invalid error type", file, line);
}
/* Throw an exception corresponding to the last error on "ctx" and
* reset the error.
*
* If "ctx" is NULL or if it is not in an error state at the start,
* then an invalid argument exception is thrown.
*/
void exception::throw_last_error(ctx ctx)
{
enum isl_error error;
const char *msg, *file;
int line;
error = isl_ctx_last_error(ctx.get());
msg = isl_ctx_last_error_msg(ctx.get());
file = isl_ctx_last_error_file(ctx.get());
line = isl_ctx_last_error_line(ctx.get());
isl_ctx_reset_error(ctx.get());
throw_error(error, msg, file, line);
}
#else
#include <stdio.h>
#include <stdlib.h>
class exception {
public:
/* Default behavior on error conditions that occur inside isl calls
* performed from inside the bindings.
* In the case exceptions are not available, isl should abort.
*/
static constexpr auto on_error = ISL_ON_ERROR_ABORT;
/* Wrapper for throwing an exception with the given message.
* In the case exceptions are not available, print an error and abort.
*/
static void throw_invalid(const char *msg, const char *file, int line) {
fprintf(stderr, "%s:%d: %s\n", file, line, msg);
abort();
}
/* Throw an exception corresponding to the last
* error on "ctx".
* isl should already abort when an error condition occurs,
* so this function should never be called.
*/
static void throw_last_error(ctx ctx) {
abort();
}
};
#endif
/* Helper class for setting the on_error and resetting the option
* to the original value when leaving the scope.
*/
class options_scoped_set_on_error {
isl_ctx *ctx;
int saved_on_error;
public:
options_scoped_set_on_error(class ctx ctx, int on_error) {
this->ctx = ctx.get();
saved_on_error = isl_options_get_on_error(this->ctx);
isl_options_set_on_error(this->ctx, on_error);
}
~options_scoped_set_on_error() {
isl_options_set_on_error(ctx, saved_on_error);
}
};
} // namespace isl

View File

@ -0,0 +1,5 @@
} // namespace typed
} // namespace isl
#endif /* ISL_TYPED_CPP */

View File

@ -0,0 +1,21 @@
/// These are automatically generated templated C++ bindings for isl.
///
/// isl is a library for computing with integer sets and maps described by
/// Presburger formulas. On top of this, isl provides various tools for
/// polyhedral compilation, ranging from dependence analysis over scheduling
/// to AST generation.
#ifndef ISL_TYPED_CPP
#define ISL_TYPED_CPP
#include <type_traits>
#include <isl/cpp.h>
namespace isl {
namespace typed {
template <typename Domain, typename Range>
struct pair {};
struct Anonymous;

View File

@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.16.1 from Makefile.am.
# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -285,7 +285,6 @@ program_transform_name = @program_transform_name@
psdir = @psdir@
pyexecdir = @pyexecdir@
pythondir = @pythondir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@

View File

@ -1,4 +1,4 @@
#!/usr/bin/env perl
#!/usr/bin/perl
use strict;
use Pod::LaTeX;

View File

@ -1197,6 +1197,7 @@ C<isl_dim_out> (only for relations), C<isl_dim_set>
#include <isl/set.h>
isl_size isl_basic_set_dim(__isl_keep isl_basic_set *bset,
enum isl_dim_type type);
isl_size isl_set_tuple_dim(__isl_keep isl_set *set);
isl_size isl_set_dim(__isl_keep isl_set *set,
enum isl_dim_type type);
@ -1207,6 +1208,10 @@ C<isl_dim_out> (only for relations), C<isl_dim_set>
#include <isl/map.h>
isl_size isl_basic_map_dim(__isl_keep isl_basic_map *bmap,
enum isl_dim_type type);
isl_size isl_map_domain_tuple_dim(
__isl_keep isl_map *map);
isl_size isl_map_range_tuple_dim(
__isl_keep isl_map *map);
isl_size isl_map_dim(__isl_keep isl_map *map,
enum isl_dim_type type);
@ -1588,14 +1593,28 @@ The identifiers or names of entire spaces may be set or read off
using the following functions.
#include <isl/space.h>
__isl_give isl_space *isl_space_set_domain_tuple_id(
__isl_take isl_space *space,
__isl_take isl_id *id);
__isl_give isl_space *isl_space_set_range_tuple_id(
__isl_take isl_space *space,
__isl_take isl_id *id);
__isl_give isl_space *isl_space_set_tuple_id(
__isl_take isl_space *space,
enum isl_dim_type type, __isl_take isl_id *id);
__isl_give isl_space *isl_space_reset_tuple_id(
__isl_take isl_space *space, enum isl_dim_type type);
isl_bool isl_space_has_domain_tuple_id(
__isl_keep isl_space *space);
isl_bool isl_space_has_range_tuple_id(
__isl_keep isl_space *space);
isl_bool isl_space_has_tuple_id(
__isl_keep isl_space *space,
enum isl_dim_type type);
__isl_give isl_id *isl_space_get_domain_tuple_id(
__isl_keep isl_space *space);
__isl_give isl_id *isl_space_get_range_tuple_id(
__isl_keep isl_space *space);
__isl_give isl_id *isl_space_get_tuple_id(
__isl_keep isl_space *space, enum isl_dim_type type);
__isl_give isl_space *isl_space_set_tuple_name(
@ -1638,13 +1657,25 @@ using the following functions.
__isl_give isl_basic_map *isl_basic_map_set_tuple_id(
__isl_take isl_basic_map *bmap,
enum isl_dim_type type, __isl_take isl_id *id);
__isl_give isl_map *isl_map_set_domain_tuple_id(
__isl_take isl_map *map, __isl_take isl_id *id);
__isl_give isl_map *isl_map_set_range_tuple_id(
__isl_take isl_map *map, __isl_take isl_id *id);
__isl_give isl_map *isl_map_set_tuple_id(
__isl_take isl_map *map, enum isl_dim_type type,
__isl_take isl_id *id);
__isl_give isl_map *isl_map_reset_tuple_id(
__isl_take isl_map *map, enum isl_dim_type type);
isl_bool isl_map_has_domain_tuple_id(
__isl_keep isl_map *map);
isl_bool isl_map_has_range_tuple_id(
__isl_keep isl_map *map);
isl_bool isl_map_has_tuple_id(__isl_keep isl_map *map,
enum isl_dim_type type);
__isl_give isl_id *isl_map_get_domain_tuple_id(
__isl_keep isl_map *map);
__isl_give isl_id *isl_map_get_range_tuple_id(
__isl_keep isl_map *map);
__isl_give isl_id *isl_map_get_tuple_id(
__isl_keep isl_map *map, enum isl_dim_type type);
__isl_give isl_map *isl_map_set_tuple_name(
@ -1663,12 +1694,22 @@ using the following functions.
enum isl_dim_type type);
#include <isl/val.h>
__isl_give isl_multi_val *isl_multi_val_set_range_tuple_id(
__isl_take isl_multi_val *mv,
__isl_take isl_id *id);
__isl_give isl_multi_val *isl_multi_val_set_tuple_id(
__isl_take isl_multi_val *mv,
enum isl_dim_type type, __isl_take isl_id *id);
__isl_give isl_multi_val *
isl_multi_val_reset_range_tuple_id(
__isl_take isl_multi_val *mv);
__isl_give isl_multi_val *isl_multi_val_reset_tuple_id(
__isl_take isl_multi_val *mv,
enum isl_dim_type type);
isl_bool isl_multi_val_has_range_tuple_id(
__isl_keep isl_multi_val *mv);
__isl_give isl_id *isl_multi_val_get_range_tuple_id(
__isl_keep isl_multi_val *mv);
isl_bool isl_multi_val_has_tuple_id(
__isl_keep isl_multi_val *mv,
enum isl_dim_type type);
@ -1686,19 +1727,43 @@ using the following functions.
__isl_give isl_aff *isl_aff_set_tuple_id(
__isl_take isl_aff *aff,
enum isl_dim_type type, __isl_take isl_id *id);
__isl_give isl_multi_aff *isl_multi_aff_set_range_tuple_id(
__isl_take isl_multi_aff *ma,
__isl_take isl_id *id);
__isl_give isl_multi_aff *isl_multi_aff_set_tuple_id(
__isl_take isl_multi_aff *maff,
enum isl_dim_type type, __isl_take isl_id *id);
__isl_give isl_pw_aff *isl_pw_aff_set_tuple_id(
__isl_take isl_pw_aff *pwaff,
enum isl_dim_type type, __isl_take isl_id *id);
__isl_give isl_pw_multi_aff *
isl_pw_multi_aff_set_range_tuple_id(
__isl_take isl_pw_multi_aff *pma,
__isl_take isl_id *id);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_tuple_id(
__isl_take isl_pw_multi_aff *pma,
enum isl_dim_type type, __isl_take isl_id *id);
__isl_give isl_multi_pw_aff *
isl_multi_pw_aff_set_range_tuple_id(
__isl_take isl_multi_pw_aff *mpa,
__isl_take isl_id *id);
__isl_give isl_multi_union_pw_aff *
isl_multi_union_pw_aff_set_range_tuple_id(
__isl_take isl_multi_union_pw_aff *mupa,
__isl_take isl_id *id);
__isl_give isl_multi_union_pw_aff *
isl_multi_union_pw_aff_set_tuple_id(
__isl_take isl_multi_union_pw_aff *mupa,
enum isl_dim_type type, __isl_take isl_id *id);
__isl_give isl_multi_aff *
isl_multi_aff_reset_range_tuple_id(
__isl_take isl_multi_aff *ma);
__isl_give isl_multi_pw_aff *
isl_multi_pw_aff_reset_range_tuple_id(
__isl_take isl_multi_pw_aff *mpa);
__isl_give isl_multi_union_pw_aff *
isl_multi_union_pw_aff_reset_range_tuple_id(
__isl_take isl_multi_union_pw_aff *mupa);
__isl_give isl_multi_aff *isl_multi_aff_reset_tuple_id(
__isl_take isl_multi_aff *ma,
enum isl_dim_type type);
@ -1717,6 +1782,10 @@ using the following functions.
isl_multi_union_pw_aff_reset_tuple_id(
__isl_take isl_multi_union_pw_aff *mupa,
enum isl_dim_type type);
isl_bool isl_multi_aff_has_range_tuple_id(
__isl_keep isl_multi_aff *ma);
__isl_give isl_id *isl_multi_aff_get_range_tuple_id(
__isl_keep isl_multi_aff *ma);
isl_bool isl_multi_aff_has_tuple_id(
__isl_keep isl_multi_aff *ma,
enum isl_dim_type type);
@ -1728,18 +1797,31 @@ using the following functions.
__isl_give isl_id *isl_pw_aff_get_tuple_id(
__isl_keep isl_pw_aff *pa,
enum isl_dim_type type);
isl_bool isl_pw_multi_aff_has_range_tuple_id(
__isl_keep isl_pw_multi_aff *pma);
isl_bool isl_pw_multi_aff_has_tuple_id(
__isl_keep isl_pw_multi_aff *pma,
enum isl_dim_type type);
__isl_give isl_id *isl_pw_multi_aff_get_range_tuple_id(
__isl_keep isl_pw_multi_aff *pma);
__isl_give isl_id *isl_pw_multi_aff_get_tuple_id(
__isl_keep isl_pw_multi_aff *pma,
enum isl_dim_type type);
isl_bool isl_multi_pw_aff_has_range_tuple_id(
__isl_keep isl_multi_pw_aff *mpa);
__isl_give isl_id *isl_multi_pw_aff_get_range_tuple_id(
__isl_keep isl_multi_pw_aff *mpa);
isl_bool isl_multi_pw_aff_has_tuple_id(
__isl_keep isl_multi_pw_aff *mpa,
enum isl_dim_type type);
__isl_give isl_id *isl_multi_pw_aff_get_tuple_id(
__isl_keep isl_multi_pw_aff *mpa,
enum isl_dim_type type);
isl_bool isl_multi_union_pw_aff_has_range_tuple_id(
__isl_keep isl_multi_union_pw_aff *mupa);
__isl_give isl_id *
isl_multi_union_pw_aff_get_range_tuple_id(
__isl_keep isl_multi_union_pw_aff *mupa);
isl_bool isl_multi_union_pw_aff_has_tuple_id(
__isl_keep isl_multi_union_pw_aff *mupa,
enum isl_dim_type type);
@ -1950,19 +2032,35 @@ Similarly for the other pair of functions.
=item * Universe sets and relations
#include <isl/set.h>
__isl_give isl_basic_set *isl_basic_set_universe(
__isl_take isl_space *space);
__isl_give isl_basic_map *isl_basic_map_universe(
__isl_take isl_space *space);
__isl_give isl_set *isl_set_universe(
__isl_take isl_space *space);
__isl_give isl_set *isl_space_universe_set(
__isl_take isl_space *space);
#include <isl/map.h>
__isl_give isl_basic_map *isl_basic_map_universe(
__isl_take isl_space *space);
__isl_give isl_map *isl_map_universe(
__isl_take isl_space *space);
__isl_give isl_map *isl_space_universe_map(
__isl_take isl_space *space);
#include <isl/union_set.h>
__isl_give isl_union_set *isl_union_set_universe(
__isl_take isl_union_set *uset);
#include <isl/union_map.h>
__isl_give isl_union_map *isl_union_map_universe(
__isl_take isl_union_map *umap);
C<isl_set_universe> and C<isl_space_universe_set>
perform the same operation.
Similarly
for the pair C<isl_map_universe> and C<isl_space_universe_map>.
The sets and relations constructed by the functions above
contain all integer values, while those constructed by the
functions below only contain non-negative values.
@ -2023,11 +2121,16 @@ than the first C<n> dimensions in the range.
A basic set or relation can be converted to a set or relation
using the following functions.
__isl_give isl_set *isl_basic_set_to_set(
__isl_take isl_basic_set *bset);
__isl_give isl_set *isl_set_from_basic_set(
__isl_take isl_basic_set *bset);
__isl_give isl_map *isl_map_from_basic_map(
__isl_take isl_basic_map *bmap);
C<isl_basic_set_to_set> and C<isl_set_from_basic_set> perform
the same operation.
Sets and relations can be converted to union sets and relations
using the following functions.
@ -2035,11 +2138,19 @@ using the following functions.
__isl_take isl_basic_set *bset);
__isl_give isl_union_map *isl_union_map_from_basic_map(
__isl_take isl_basic_map *bmap);
__isl_give isl_union_set *isl_set_to_union_set(
__isl_take isl_set *set);
__isl_give isl_union_set *isl_union_set_from_set(
__isl_take isl_set *set);
__isl_give isl_union_map *isl_map_to_union_map(
__isl_take isl_map *map);
__isl_give isl_union_map *isl_union_map_from_map(
__isl_take isl_map *map);
C<isl_map_to_union_map> and C<isl_union_map_from_map> perform
the same operation.
Similarly for C<isl_set_to_union_set> and C<isl_union_set_from_set>.
The inverse conversions below can only be used if the input
union set or relation is known to contain elements in exactly one
space.
@ -2047,15 +2158,23 @@ space.
#include <isl/union_set.h>
isl_bool isl_union_set_isa_set(
__isl_keep isl_union_set *uset);
__isl_give isl_set *isl_union_set_as_set(
__isl_take isl_union_set *uset);
__isl_give isl_set *isl_set_from_union_set(
__isl_take isl_union_set *uset);
#include <isl/union_map.h>
isl_bool isl_union_map_isa_map(
__isl_keep isl_union_map *umap);
__isl_give isl_map *isl_union_map_as_map(
__isl_take isl_union_map *umap);
__isl_give isl_map *isl_map_from_union_map(
__isl_take isl_union_map *umap);
C<isl_union_map_as_map> and C<isl_map_from_union_map> perform
the same operation.
Similarly for C<isl_union_set_as_set> and C<isl_set_from_union_set>.
Sets and relations can be copied and freed again using the following
functions.
@ -2219,6 +2338,8 @@ involve any NaN.
#include <isl/set.h>
__isl_give isl_basic_set *isl_basic_set_from_multi_aff(
__isl_take isl_multi_aff *ma);
__isl_give isl_set *isl_multi_aff_as_set(
__isl_take isl_multi_aff *ma);
__isl_give isl_set *isl_set_from_multi_aff(
__isl_take isl_multi_aff *ma);
@ -2232,25 +2353,40 @@ involve any NaN.
__isl_take isl_aff_list *list);
__isl_give isl_basic_map *isl_basic_map_from_multi_aff(
__isl_take isl_multi_aff *maff)
__isl_give isl_map *isl_multi_aff_as_map(
__isl_take isl_multi_aff *ma);
__isl_give isl_map *isl_map_from_multi_aff(
__isl_take isl_multi_aff *maff)
#include <isl/aff.h>
__isl_give isl_set *isl_set_from_pw_aff(
__isl_take isl_pw_aff *pwaff);
__isl_give isl_map *isl_pw_aff_as_map(
__isl_take isl_pw_aff *pa);
__isl_give isl_map *isl_map_from_pw_aff(
__isl_take isl_pw_aff *pwaff);
__isl_give isl_set *isl_pw_multi_aff_as_set(
__isl_take isl_pw_multi_aff *pma);
__isl_give isl_set *isl_set_from_pw_multi_aff(
__isl_take isl_pw_multi_aff *pma);
__isl_give isl_map *isl_pw_multi_aff_as_map(
__isl_take isl_pw_multi_aff *pma);
__isl_give isl_map *isl_map_from_pw_multi_aff(
__isl_take isl_pw_multi_aff *pma);
__isl_give isl_set *isl_multi_pw_aff_as_set(
__isl_take isl_multi_pw_aff *mpa);
__isl_give isl_set *isl_set_from_multi_pw_aff(
__isl_take isl_multi_pw_aff *mpa);
__isl_give isl_map *isl_multi_pw_aff_as_map(
__isl_take isl_multi_pw_aff *mpa);
__isl_give isl_map *isl_map_from_multi_pw_aff(
__isl_take isl_multi_pw_aff *mpa);
__isl_give isl_union_map *isl_union_map_from_union_pw_aff(
__isl_take isl_union_pw_aff *upa);
__isl_give isl_union_map *
isl_union_pw_multi_aff_as_union_map(
__isl_take isl_union_pw_multi_aff *upma);
__isl_give isl_union_map *
isl_union_map_from_union_pw_multi_aff(
__isl_take isl_union_pw_multi_aff *upma);
__isl_give isl_union_map *
@ -2263,6 +2399,17 @@ of zero affine expressions.
The C<mupa> passed to C<isl_union_map_from_multi_union_pw_aff>
is not allowed to be zero-dimensional. The domain of the result
is the shared domain of the union piecewise affine elements.
C<isl_multi_aff_as_set> and C<isl_set_from_multi_aff> perform
the same operation.
Similarly for the pair C<isl_multi_aff_as_map> and C<isl_map_from_multi_aff>,
for the pair C<isl_pw_aff_as_map> and C<isl_map_from_pw_aff>,
for the pair C<isl_pw_multi_aff_as_set> and C<isl_set_from_pw_multi_aff>,
for the pair C<isl_pw_multi_aff_as_map> and C<isl_map_from_pw_multi_aff>,
the pair C<isl_multi_pw_aff_as_set> and C<isl_set_from_multi_pw_aff>,
the pair C<isl_multi_pw_aff_as_map> and C<isl_map_from_multi_pw_aff>,
and
C<isl_union_pw_multi_aff_as_union_map> and
C<isl_union_map_from_union_pw_multi_aff>.
=head2 Inspecting Sets and Relations
@ -2592,16 +2739,21 @@ Points can be copied or freed using
__isl_null isl_point *isl_point_free(
__isl_take isl_point *pnt);
A singleton set can be created from a point using
A singleton set can be created from a point using the following functions.
__isl_give isl_basic_set *isl_basic_set_from_point(
__isl_take isl_point *pnt);
__isl_give isl_set *isl_point_to_set(
__isl_take isl_point *pnt);
__isl_give isl_set *isl_set_from_point(
__isl_take isl_point *pnt);
__isl_give isl_union_set *isl_union_set_from_point(
__isl_take isl_point *pnt);
and a box can be created from two opposite extremal points using
C<isl_point_to_set> and C<isl_set_from_point> perform
the same operation.
A box can be created from two opposite extremal points using
__isl_give isl_basic_set *isl_basic_set_box_from_points(
__isl_take isl_point *pnt1,
@ -2711,6 +2863,8 @@ a specified dimension on a given domain can be created using
#include <isl/aff.h>
__isl_give isl_aff *isl_aff_zero_on_domain_space(
__isl_take isl_space *space);
__isl_give isl_aff *isl_space_zero_aff_on_domain(
__isl_take isl_space *space);
__isl_give isl_aff *isl_aff_zero_on_domain(
__isl_take isl_local_space *ls);
__isl_give isl_aff *isl_aff_val_on_domain_space(
@ -2722,6 +2876,9 @@ a specified dimension on a given domain can be created using
__isl_give isl_aff *isl_aff_param_on_domain_space_id(
__isl_take isl_space *space,
__isl_take isl_id *id);
__isl_give isl_aff *isl_space_param_aff_on_domain_id(
__isl_take isl_space *space,
__isl_take isl_id *id);
__isl_give isl_aff *isl_aff_var_on_domain(
__isl_take isl_local_space *ls,
enum isl_dim_type type, unsigned pos);
@ -2732,6 +2889,11 @@ a specified dimension on a given domain can be created using
The space passed to C<isl_aff_param_on_domain_space_id>
is required to have a parameter with the given identifier.
C<isl_aff_param_on_domain_space_id> and
C<isl_space_param_aff_on_domain_id> perform the same operation.
C<isl_aff_zero_on_domain_space> and C<isl_space_zero_aff_on_domain>
perform the same operation.
Quasi affine expressions can be copied and freed using
@ -2966,19 +3128,36 @@ using the following functions.
#include <isl/val.h>
__isl_give isl_multi_val *isl_multi_val_zero(
__isl_take isl_space *space);
__isl_give isl_multi_val *isl_space_zero_multi_val(
__isl_take isl_space *space);
#include <isl/aff.h>
__isl_give isl_multi_aff *isl_multi_aff_zero(
__isl_take isl_space *space);
__isl_give isl_multi_aff *isl_space_zero_multi_aff(
__isl_take isl_space *space);
__isl_give isl_multi_pw_aff *isl_multi_pw_aff_zero(
__isl_take isl_space *space);
__isl_give isl_multi_pw_aff *isl_space_zero_multi_pw_aff(
__isl_take isl_space *space);
__isl_give isl_multi_union_pw_aff *
isl_multi_union_pw_aff_zero(
__isl_take isl_space *space);
__isl_give isl_multi_union_pw_aff *
isl_space_zero_multi_union_pw_aff(
__isl_take isl_space *space);
Since there is no canonical way of representing a zero
value of type C<isl_union_pw_aff>, the space passed
to C<isl_multi_union_pw_aff_zero> needs to be zero-dimensional.
C<isl_multi_val_zero> and C<isl_space_zero_multi_val>
perform the same operation.
Similarly
for the pair C<isl_multi_aff_zero> and C<isl_space_zero_multi_aff>,
for the pair C<isl_multi_pw_aff_zero> and C<isl_space_zero_multi_pw_aff> and
for the pair C<isl_multi_union_pw_aff_zero> and
C<isl_space_zero_multi_union_pw_aff>.
An identity function can be created using the following
functions.
@ -2994,9 +3173,15 @@ the identity function is created in that space.
__isl_give isl_multi_aff *
isl_multi_aff_identity_on_domain_space(
__isl_take isl_space *space);
__isl_give isl_multi_aff *
isl_space_identity_multi_aff_on_domain(
__isl_take isl_space *space);
__isl_give isl_multi_pw_aff *
isl_multi_pw_aff_identity_on_domain_space(
__isl_take isl_space *space);
__isl_give isl_multi_pw_aff *
isl_space_identity_multi_pw_aff_on_domain(
__isl_take isl_space *space);
__isl_give isl_multi_aff *isl_multi_aff_identity(
__isl_take isl_space *space);
__isl_give isl_multi_pw_aff *isl_multi_pw_aff_identity(
@ -3008,6 +3193,13 @@ the identity function is created in that space.
isl_multi_pw_aff_identity_multi_pw_aff(
__isl_take isl_multi_pw_aff *mpa);
C<isl_multi_aff_identity_on_domain_space> and
C<isl_space_identity_multi_aff_on_domain>
perform the same operation.
Similarly
for the pair C<isl_multi_pw_aff_identity_on_domain_space> and
C<isl_space_identity_multi_pw_aff_on_domain>.
A function that performs a projection on a universe
relation or set can be created using the following functions.
See also the corresponding
@ -3016,13 +3208,22 @@ projection operations in L</"Unary Operations">.
#include <isl/aff.h>
__isl_give isl_multi_aff *isl_multi_aff_domain_map(
__isl_take isl_space *space);
__isl_give isl_multi_aff *isl_space_domain_map_multi_aff(
__isl_take isl_space *space);
__isl_give isl_multi_aff *isl_multi_aff_range_map(
__isl_take isl_space *space);
__isl_give isl_multi_aff *isl_space_range_map_multi_aff(
__isl_take isl_space *space);
__isl_give isl_multi_aff *isl_multi_aff_project_out_map(
__isl_take isl_space *space,
enum isl_dim_type type,
unsigned first, unsigned n);
C<isl_multi_aff_domain_map> and C<isl_space_domain_map_multi_aff> perform
the same operation.
Similarly
for the pair C<isl_multi_aff_range_map> and C<isl_space_range_map_multi_aff>.
A multiple expression can be created from a single
base expression using the following functions.
The space of the created multiple expression is the same
@ -3051,24 +3252,52 @@ then this space also needs to be a set space.
__isl_give isl_multi_id *isl_multi_id_from_id_list(
__isl_take isl_space *space,
__isl_take isl_id_list *list);
__isl_give isl_multi_id *isl_space_multi_id(
__isl_take isl_space *space,
__isl_take isl_id_list *list);
#include <isl/val.h>
__isl_give isl_multi_val *isl_multi_val_from_val_list(
__isl_take isl_space *space,
__isl_take isl_val_list *list);
__isl_give isl_multi_val *isl_space_multi_val(
__isl_take isl_space *space,
__isl_take isl_val_list *list);
#include <isl/aff.h>
__isl_give isl_multi_aff *isl_multi_aff_from_aff_list(
__isl_take isl_space *space,
__isl_take isl_aff_list *list);
__isl_give isl_multi_aff *isl_space_multi_aff(
__isl_take isl_space *space,
__isl_take isl_aff_list *list);
__isl_give isl_multi_pw_aff *
isl_multi_pw_aff_from_pw_aff_list(
__isl_take isl_space *space,
__isl_take isl_pw_aff_list *list);
__isl_give isl_multi_pw_aff *
isl_space_multi_pw_aff(
__isl_take isl_space *space,
__isl_take isl_pw_aff_list *list);
__isl_give isl_multi_union_pw_aff *
isl_multi_union_pw_aff_from_union_pw_aff_list(
__isl_take isl_space *space,
__isl_take isl_union_pw_aff_list *list);
__isl_give isl_multi_union_pw_aff *
isl_space_multi_union_pw_aff(
__isl_take isl_space *space,
__isl_take isl_union_pw_aff_list *list);
C<isl_multi_id_from_id_list> and C<isl_space_multi_id> perform
the same operation.
Similarly for the pair C<isl_multi_val_from_val_list> and
C<isl_space_multi_val>,
for the pair C<isl_multi_aff_from_aff_list> and
C<isl_space_multi_aff>,
for the pair C<isl_multi_pw_aff_from_pw_aff_list> and
C<isl_space_multi_pw_aff> and
for the pair C<isl_multi_union_pw_aff_from_union_pw_aff_list> and
C<isl_space_multi_union_pw_aff>.
As a convenience, a multiple piecewise expression can
also be created from a multiple expression,
@ -3080,9 +3309,15 @@ universe cell.
__isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_aff(
__isl_take isl_aff *aff);
__isl_give isl_multi_pw_aff *
isl_multi_aff_to_multi_pw_aff(
__isl_take isl_multi_aff *ma);
__isl_give isl_multi_pw_aff *
isl_multi_pw_aff_from_multi_aff(
__isl_take isl_multi_aff *ma);
C<isl_multi_aff_to_multi_pw_aff> and
C<isl_multi_pw_aff_from_multi_aff> perform the same operation.
Similarly, a multiple union expression can be
created from a multiple expression.
@ -3091,19 +3326,37 @@ created from a multiple expression.
isl_multi_union_pw_aff_from_multi_aff(
__isl_take isl_multi_aff *ma);
__isl_give isl_multi_union_pw_aff *
isl_multi_aff_to_multi_union_pw_aff(
__isl_take isl_multi_aff *ma);
__isl_give isl_multi_union_pw_aff *
isl_multi_union_pw_aff_from_multi_pw_aff(
__isl_take isl_multi_pw_aff *mpa);
C<isl_multi_aff_to_multi_union_pw_aff> and
C<isl_multi_union_pw_aff_from_multi_aff> perform the same operation.
A multiple quasi-affine expression can be created from
a multiple value with a given domain space using the following
function.
#include <isl/aff.h>
__isl_give isl_multi_aff *
isl_multi_aff_multi_val_on_domain_space(
__isl_take isl_space *space,
__isl_take isl_multi_val *mv);
__isl_give isl_multi_aff *
isl_space_multi_aff_on_domain_multi_val(
__isl_take isl_space *space,
__isl_take isl_multi_val *mv);
__isl_give isl_multi_aff *
isl_multi_aff_multi_val_on_space(
__isl_take isl_space *space,
__isl_take isl_multi_val *mv);
C<isl_space_multi_aff_on_domain_multi_val> and
C<isl_multi_aff_multi_val_on_space> are alternative names
for C<isl_multi_aff_multi_val_on_domain_space>.
Similarly,
a multiple union piecewise affine expression can be created from
a multiple value with a given domain or
@ -3306,12 +3559,19 @@ be used to perform these conversions when they are possible.
#include <isl/aff.h>
__isl_give isl_multi_union_pw_aff *
isl_union_pw_multi_aff_as_multi_union_pw_aff(
__isl_take isl_union_pw_multi_aff *upma);
__isl_give isl_multi_union_pw_aff *
isl_multi_union_pw_aff_from_union_pw_multi_aff(
__isl_take isl_union_pw_multi_aff *upma);
__isl_give isl_union_pw_multi_aff *
isl_union_pw_multi_aff_from_multi_union_pw_aff(
__isl_take isl_multi_union_pw_aff *mupa);
C<isl_union_pw_multi_aff_as_multi_union_pw_aff> and
C<isl_multi_union_pw_aff_from_union_pw_multi_aff>
perform the same operation.
=head3 Piecewise Expressions
A piecewise expression is an expression that is described
@ -3360,6 +3620,9 @@ created using the following functions.
__isl_give isl_pw_aff *isl_pw_aff_from_aff(
__isl_take isl_aff *aff);
__isl_give isl_pw_multi_aff *
isl_multi_aff_to_pw_multi_aff(
__isl_take isl_multi_aff *ma);
__isl_give isl_pw_multi_aff *
isl_pw_multi_aff_from_multi_aff(
__isl_take isl_multi_aff *ma);
@ -3371,6 +3634,9 @@ created using the following functions.
isl_pw_qpolynomial_fold_from_qpolynomial_fold(
__isl_take isl_qpolynomial_fold *fold);
C<isl_multi_aff_to_pw_multi_aff> and C<isl_pw_multi_aff_from_multi_aff> perform
the same operation.
The inverse conversions below can only be used if the input
expression is known to be defined over a single universe domain.
@ -3378,6 +3644,10 @@ expression is known to be defined over a single universe domain.
isl_bool isl_pw_aff_isa_aff(__isl_keep isl_pw_aff *pa);
__isl_give isl_aff *isl_pw_aff_as_aff(
__isl_take isl_pw_aff *pa);
isl_bool isl_multi_pw_aff_isa_multi_aff(
__isl_keep isl_multi_pw_aff *mpa);
__isl_give isl_multi_aff *isl_multi_pw_aff_as_multi_aff(
__isl_take isl_multi_pw_aff *mpa);
isl_bool isl_pw_multi_aff_isa_multi_aff(
__isl_keep isl_pw_multi_aff *pma);
__isl_give isl_multi_aff *isl_pw_multi_aff_as_multi_aff(
@ -3428,13 +3698,22 @@ then create a piecewise expression over a universe domain.
__isl_give isl_pw_multi_aff *
isl_pw_multi_aff_identity_on_domain_space(
__isl_take isl_space *space)
__isl_give isl_pw_multi_aff *
isl_space_identity_pw_multi_aff_on_domain(
__isl_take isl_space *space)
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_identity(
__isl_take isl_space *space);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_domain_map(
__isl_take isl_space *space);
__isl_give isl_pw_multi_aff *
isl_space_domain_map_pw_multi_aff(
__isl_take isl_space *space);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_map(
__isl_take isl_space *space);
__isl_give isl_pw_multi_aff *
isl_space_range_map_pw_multi_aff(
__isl_take isl_space *space);
__isl_give isl_pw_multi_aff *
isl_pw_multi_aff_project_out_map(
__isl_take isl_space *space,
enum isl_dim_type type,
@ -3444,6 +3723,15 @@ then create a piecewise expression over a universe domain.
__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_zero(
__isl_take isl_space *space);
C<isl_pw_multi_aff_identity_on_domain_space> and
C<isl_space_identity_pw_multi_aff_on_domain>
perform the same operation.
Similarly
for the pair C<isl_pw_multi_aff_domain_map> and
C<isl_space_domain_map_pw_multi_aff> and
for the pair C<isl_pw_multi_aff_range_map> and
C<isl_space_range_map_pw_multi_aff>.
The following convenience functions first create a base expression and
then create a piecewise expression over a given domain.
@ -3455,10 +3743,17 @@ then create a piecewise expression over a given domain.
isl_pw_multi_aff_multi_val_on_domain(
__isl_take isl_set *domain,
__isl_take isl_multi_val *mv);
__isl_give isl_pw_multi_aff *
isl_set_pw_multi_aff_on_domain_multi_val(
__isl_take isl_set *domain,
__isl_take isl_multi_val *mv);
__isl_give isl_pw_aff *isl_pw_aff_param_on_domain_id(
__isl_take isl_set *domain,
__isl_take isl_id *id);
C<isl_set_pw_multi_aff_on_domain_multi_val> is an alternative name
for C<isl_pw_multi_aff_multi_val_on_domain>.
As a convenience, a piecewise multiple expression can
also be created from a piecewise expression.
Each multiple expression in the result is derived
@ -3588,9 +3883,14 @@ position of a piecewise multiple expression can be extracted
using the following function.
#include <isl/aff.h>
__isl_give isl_pw_aff *isl_pw_multi_aff_get_at(
__isl_keep isl_pw_multi_aff *pma, int pos);
__isl_give isl_pw_aff *isl_pw_multi_aff_get_pw_aff(
__isl_keep isl_pw_multi_aff *pma, int pos);
C<isl_pw_multi_aff_get_pw_aff> is an alternative name for
C<isl_pw_multi_aff_get_at>.
These expressions can be replaced using the following function.
#include <isl/aff.h>
@ -3615,9 +3915,15 @@ The reverse conversion is exact.
isl_pw_multi_aff_from_multi_pw_aff(
__isl_take isl_multi_pw_aff *mpa);
__isl_give isl_multi_pw_aff *
isl_pw_multi_aff_to_multi_pw_aff(
__isl_take isl_pw_multi_aff *pma);
__isl_give isl_multi_pw_aff *
isl_multi_pw_aff_from_pw_multi_aff(
__isl_take isl_pw_multi_aff *pma);
C<isl_pw_multi_aff_to_multi_pw_aff> and
C<isl_multi_pw_aff_from_pw_multi_aff> perform the same operation.
=head3 Union Expressions
A union expression collects base expressions defined
@ -3677,19 +3983,45 @@ can be created using the following functions.
#include <isl/aff.h>
__isl_give isl_union_pw_aff *
isl_pw_aff_to_union_pw_aff(
__isl_take isl_pw_aff *pa);
__isl_give isl_union_pw_aff *
isl_union_pw_aff_from_pw_aff(
__isl_take isl_pw_aff *pa);
__isl_give isl_union_pw_multi_aff *
isl_union_pw_multi_aff_from_aff(
__isl_take isl_aff *aff);
__isl_give isl_union_pw_multi_aff *
isl_pw_multi_aff_to_union_pw_multi_aff(
__isl_take isl_pw_multi_aff *pma);
__isl_give isl_union_pw_multi_aff *
isl_union_pw_multi_aff_from_pw_multi_aff(
__isl_take isl_pw_multi_aff *pma);
#include <isl/polynomial.h>
__isl_give isl_union_pw_qpolynomial *
isl_pw_qpolynomial_to_union_pw_qpolynomial(
__isl_take isl_pw_qpolynomial *pwqp);
__isl_give isl_union_pw_qpolynomial *
isl_union_pw_qpolynomial_from_pw_qpolynomial(
__isl_take isl_pw_qpolynomial *pwqp);
__isl_give isl_union_pw_qpolynomial_fold *
isl_pw_qpolynomial_fold_to_union_pw_qpolynomial_fold(
__isl_take isl_pw_qpolynomial_fold *pwf);
__isl_give isl_union_pw_qpolynomial_fold *
isl_union_pw_qpolynomial_fold_from_pw_qpolynomial_fold(
__isl_take isl_pw_qpolynomial_fold *pwf);
C<isl_pw_aff_to_union_pw_aff> and C<isl_union_pw_aff_from_pw_aff> perform
the same operation.
Similarly for C<isl_pw_multi_aff_to_union_pw_multi_aff> and
C<isl_union_pw_multi_aff_from_pw_multi_aff>,
for
C<isl_pw_qpolynomial_to_union_pw_qpolynomial> and
C<isl_union_pw_qpolynomial_from_pw_qpolynomial>, and
for
C<isl_pw_qpolynomial_fold_to_union_pw_qpolynomial_fold> and
C<isl_union_pw_qpolynomial_fold_from_pw_qpolynomial_fold>.
The inverse conversions below can only be used if the input
expression is known to live in exactly one space.
@ -4447,6 +4779,10 @@ all set dimensions.
=item * Stride
Stride detection is based on heuristics.
The strides returned by the functions below are always valid,
but there may be larger valid strides that are not detected.
isl_stat isl_set_dim_residue_class_val(
__isl_keep isl_set *set,
int pos, __isl_give isl_val **modulo,
@ -4470,6 +4806,9 @@ can be found then assign C<1> to C<*modulo> and C<1> to C<*residue>.
__isl_give isl_stride_info *
isl_map_get_range_stride_info(
__isl_keep isl_map *map, int pos);
__isl_give isl_fixed_box *
isl_map_get_range_lattice_tile(
__isl_keep isl_map *map);
Check if the values of the given set dimension are equal to
some affine expression of the other dimensions (the offset)
@ -4481,6 +4820,17 @@ If no more specific information can be found, then the stride
is taken to be one and the offset is taken to be the zero expression.
The function C<isl_set_get_stride> performs the same
computation as C<isl_set_get_stride_info> but only returns the stride.
The function C<isl_map_get_range_lattice_tile> collects the stride
information over all output dimensions.
In particular, it returns a tile of a rectangular lattice
(possibly of size 1 in all directions)
containing the output in terms of the parameters and the input dimensions.
The size and the offset of this tile correspond to
the strides and the offsets of the stride information and
can be extracted from the returned
C<isl_fixed_box> using the functions described under "Box hull" in
L</"Unary Operations">. Note that the C<isl_fixed_box> object returned by
C<isl_map_get_range_lattice_tile> is always valid.
For the other functions,
the stride and offset can be extracted from the returned object
using the following functions.
@ -5746,8 +6096,12 @@ requires that the input is non-empty and involves only a single
range space.
#include <isl/aff.h>
__isl_give isl_pw_multi_aff *isl_set_as_pw_multi_aff(
__isl_take isl_set *set);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_set(
__isl_take isl_set *set);
__isl_give isl_pw_multi_aff *isl_map_as_pw_multi_aff(
__isl_take isl_map *map);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_map(
__isl_take isl_map *map);
@ -5755,13 +6109,28 @@ range space.
isl_union_pw_multi_aff_from_union_set(
__isl_take isl_union_set *uset);
__isl_give isl_union_pw_multi_aff *
isl_union_map_as_union_pw_multi_aff(
__isl_take isl_union_map *umap);
__isl_give isl_union_pw_multi_aff *
isl_union_pw_multi_aff_from_union_map(
__isl_take isl_union_map *umap);
__isl_give isl_multi_union_pw_aff *
isl_union_map_as_multi_union_pw_aff(
__isl_take isl_union_map *umap);
__isl_give isl_multi_union_pw_aff *
isl_multi_union_pw_aff_from_union_map(
__isl_take isl_union_map *umap);
C<isl_map_as_pw_multi_aff> and C<isl_pw_multi_aff_from_map> perform
the same operation.
Similarly for C<isl_set_as_pw_multi_aff> and
C<isl_pw_multi_aff_from_set>,
for C<isl_union_map_as_union_pw_multi_aff> and
C<isl_union_pw_multi_aff_from_union_map> and
for C<isl_union_map_as_multi_union_pw_aff> and
C<isl_multi_union_pw_aff_from_union_map>.
=item * Deltas
__isl_give isl_basic_set *isl_basic_map_deltas(
@ -8938,6 +9307,8 @@ Here we take lists of C<isl_set>s as an example.
Lists can be created, copied, modified and freed using the following functions.
#include <isl/set.h>
__isl_give isl_set_list *isl_set_to_list(
__isl_take isl_set *el);
__isl_give isl_set_list *isl_set_list_from_set(
__isl_take isl_set *el);
__isl_give isl_set_list *isl_set_list_alloc(
@ -8982,7 +9353,8 @@ Lists can be created, copied, modified and freed using the following functions.
C<isl_set_list_alloc> creates an empty list with an initial capacity
for C<n> elements. C<isl_set_list_insert> and C<isl_set_list_add>
add elements to a list, increasing its capacity as needed.
C<isl_set_list_from_set> creates a list with a single element.
C<isl_set_to_list> creates a list with a single element.
C<isl_set_list_from_set> performs the same operation.
C<isl_set_list_clear> removes all elements from a list.
C<isl_set_list_swap> swaps the elements at the specified locations.
C<isl_set_list_reverse> reverses the elements in the list.
@ -9008,7 +9380,8 @@ Lists can be inspected using the following functions.
isl_bool (*follows)(__isl_keep isl_set *a,
__isl_keep isl_set *b, void *user),
void *follows_user,
isl_stat (*fn)(__isl_take isl_set *el, void *user),
isl_stat (*fn)(__isl_take isl_set_list *scc,
void *user),
void *fn_user);
C<isl_set_list_n_set> is an alternative name for C<isl_set_list_size>.
@ -9035,6 +9408,43 @@ in isl format.
__isl_give char *isl_set_list_to_str(
__isl_keep isl_set_list *list);
An C<isl_val_list>, C<isl_id_list>,
C<isl_aff_list>, C<isl_pw_aff_list>, C<isl_pw_multi_aff_list>,
C<isl_union_pw_aff_list>,
C<isl_map_list> or C<isl_union_set_list> object
can also be read from input using the following functions.
#include <isl/val.h>
__isl_give isl_val_list *isl_val_list_read_from_str(
isl_ctx *ctx, const char *str);
#include <isl/id.h>
__isl_give isl_id_list *isl_id_list_read_from_str(
isl_ctx *ctx, const char *str);
#include <isl/aff.h>
__isl_give isl_aff_list *
isl_aff_list_read_from_str(isl_ctx *ctx,
const char *str);
__isl_give isl_pw_aff_list *
isl_pw_aff_list_read_from_str(isl_ctx *ctx,
const char *str);
__isl_give isl_pw_multi_aff_list *
isl_pw_multi_aff_list_read_from_str(isl_ctx *ctx,
const char *str);
__isl_give isl_union_pw_aff_list *
isl_union_pw_aff_list_read_from_str(isl_ctx *ctx,
const char *str);
#include <isl/map.h>
__isl_give isl_map_list *isl_map_list_read_from_str(
isl_ctx *ctx, const char *str);
#include <isl/union_set.h>
__isl_give isl_union_set_list *
isl_union_set_list_read_from_str(isl_ctx *ctx,
const char *str);
=head2 Associative arrays
Associative arrays map isl objects of a specific type to isl objects

View File

@ -19,6 +19,8 @@ extern "C" {
__isl_overload
__isl_give isl_aff *isl_aff_zero_on_domain_space(__isl_take isl_space *space);
__isl_export
__isl_give isl_aff *isl_space_zero_aff_on_domain(__isl_take isl_space *space);
__isl_give isl_aff *isl_aff_zero_on_domain(__isl_take isl_local_space *ls);
__isl_give isl_aff *isl_aff_val_on_domain_space(__isl_take isl_space *space,
__isl_take isl_val *val);
@ -30,6 +32,9 @@ __isl_give isl_aff *isl_aff_nan_on_domain_space(__isl_take isl_space *space);
__isl_give isl_aff *isl_aff_nan_on_domain(__isl_take isl_local_space *ls);
__isl_give isl_aff *isl_aff_param_on_domain_space_id(
__isl_take isl_space *space, __isl_take isl_id *id);
__isl_overload
__isl_give isl_aff *isl_space_param_aff_on_domain_id(
__isl_take isl_space *space, __isl_take isl_id *id);
__isl_give isl_aff *isl_aff_copy(__isl_keep isl_aff *aff);
__isl_null isl_aff *isl_aff_free(__isl_take isl_aff *aff);
@ -402,6 +407,8 @@ isl_bool isl_pw_aff_isa_aff(__isl_keep isl_pw_aff *pa);
__isl_export
__isl_give isl_aff *isl_pw_aff_as_aff(__isl_take isl_pw_aff *pa);
__isl_export
__isl_give isl_map *isl_pw_aff_as_map(__isl_take isl_pw_aff *pa);
__isl_give isl_set *isl_set_from_pw_aff(__isl_take isl_pw_aff *pwaff);
__isl_give isl_map *isl_map_from_pw_aff(__isl_take isl_pw_aff *pwaff);
@ -494,11 +501,23 @@ __isl_give isl_multi_aff *isl_multi_aff_from_aff(__isl_take isl_aff *aff);
__isl_export
__isl_give isl_multi_aff *isl_multi_aff_domain_map(__isl_take isl_space *space);
__isl_export
__isl_give isl_multi_aff *isl_space_domain_map_multi_aff(
__isl_take isl_space *space);
__isl_export
__isl_give isl_multi_aff *isl_multi_aff_range_map(__isl_take isl_space *space);
__isl_export
__isl_give isl_multi_aff *isl_space_range_map_multi_aff(
__isl_take isl_space *space);
__isl_give isl_multi_aff *isl_multi_aff_project_out_map(
__isl_take isl_space *space, enum isl_dim_type type,
unsigned first, unsigned n);
__isl_overload
__isl_give isl_multi_aff *isl_multi_aff_multi_val_on_domain_space(
__isl_take isl_space *space, __isl_take isl_multi_val *mv);
__isl_overload
__isl_give isl_multi_aff *isl_space_multi_aff_on_domain_multi_val(
__isl_take isl_space *space, __isl_take isl_multi_val *mv);
__isl_give isl_multi_aff *isl_multi_aff_multi_val_on_space(
__isl_take isl_space *space, __isl_take isl_multi_val *mv);
@ -569,17 +588,29 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_zero(__isl_take isl_space *space);
__isl_overload
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_identity_on_domain_space(
__isl_take isl_space *space);
__isl_export
__isl_give isl_pw_multi_aff *isl_space_identity_pw_multi_aff_on_domain(
__isl_take isl_space *space);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_identity(
__isl_take isl_space *space);
__isl_export
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_domain_map(
__isl_take isl_space *space);
__isl_export
__isl_give isl_pw_multi_aff *isl_space_domain_map_pw_multi_aff(
__isl_take isl_space *space);
__isl_export
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_map(
__isl_take isl_space *space);
__isl_export
__isl_give isl_pw_multi_aff *isl_space_range_map_pw_multi_aff(
__isl_take isl_space *space);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_project_out_map(
__isl_take isl_space *space, enum isl_dim_type type,
unsigned first, unsigned n);
__isl_export
__isl_give isl_pw_multi_aff *isl_multi_aff_to_pw_multi_aff(
__isl_take isl_multi_aff *ma);
__isl_constructor
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_multi_aff(
__isl_take isl_multi_aff *ma);
@ -601,6 +632,9 @@ isl_bool isl_pw_multi_aff_involves_param_id(__isl_keep isl_pw_multi_aff *pma,
__isl_keep isl_id *id);
isl_bool isl_pw_multi_aff_involves_dims(__isl_keep isl_pw_multi_aff *pma,
enum isl_dim_type type, unsigned first, unsigned n);
__isl_export
__isl_give isl_pw_aff *isl_pw_multi_aff_get_at(
__isl_keep isl_pw_multi_aff *pma, int pos);
__isl_give isl_pw_aff *isl_pw_multi_aff_get_pw_aff(
__isl_keep isl_pw_multi_aff *pma, int pos);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_pw_aff(
@ -617,13 +651,21 @@ isl_bool isl_pw_multi_aff_has_tuple_name(__isl_keep isl_pw_multi_aff *pma,
enum isl_dim_type type);
const char *isl_pw_multi_aff_get_tuple_name(__isl_keep isl_pw_multi_aff *pma,
enum isl_dim_type type);
__isl_export
__isl_give isl_id *isl_pw_multi_aff_get_range_tuple_id(
__isl_keep isl_pw_multi_aff *pma);
__isl_give isl_id *isl_pw_multi_aff_get_tuple_id(
__isl_keep isl_pw_multi_aff *pma, enum isl_dim_type type);
__isl_export
isl_bool isl_pw_multi_aff_has_range_tuple_id(__isl_keep isl_pw_multi_aff *pma);
isl_bool isl_pw_multi_aff_has_tuple_id(__isl_keep isl_pw_multi_aff *pma,
enum isl_dim_type type);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_tuple_id(
__isl_take isl_pw_multi_aff *pma,
enum isl_dim_type type, __isl_take isl_id *id);
__isl_overload
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_range_tuple_id(
__isl_take isl_pw_multi_aff *pma, __isl_take isl_id *id);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_reset_tuple_id(
__isl_take isl_pw_multi_aff *pma, enum isl_dim_type type);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_reset_user(
@ -643,8 +685,12 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_empty(__isl_take isl_space *space)
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_domain(
__isl_take isl_set *set);
__isl_export
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_multi_val_on_domain(
__isl_take isl_set *domain, __isl_take isl_multi_val *mv);
__isl_overload
__isl_give isl_pw_multi_aff *isl_set_pw_multi_aff_on_domain_multi_val(
__isl_take isl_set *domain, __isl_take isl_multi_val *mv);
const char *isl_pw_multi_aff_get_dim_name(__isl_keep isl_pw_multi_aff *pma,
enum isl_dim_type type, unsigned pos);
@ -780,14 +826,22 @@ __isl_export
__isl_give isl_multi_aff *isl_pw_multi_aff_as_multi_aff(
__isl_take isl_pw_multi_aff *pma);
__isl_export
__isl_give isl_map *isl_pw_multi_aff_as_map(__isl_take isl_pw_multi_aff *pma);
__isl_give isl_map *isl_map_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma);
__isl_export
__isl_give isl_set *isl_pw_multi_aff_as_set(__isl_take isl_pw_multi_aff *pma);
__isl_give isl_set *isl_set_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma);
__isl_give char *isl_pw_multi_aff_to_str(__isl_keep isl_pw_multi_aff *pma);
__isl_give isl_printer *isl_printer_print_pw_multi_aff(__isl_take isl_printer *p,
__isl_keep isl_pw_multi_aff *pma);
__isl_export
__isl_give isl_pw_multi_aff *isl_set_as_pw_multi_aff(__isl_take isl_set *set);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_set(__isl_take isl_set *set);
__isl_export
__isl_give isl_pw_multi_aff *isl_map_as_pw_multi_aff(__isl_take isl_map *map);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_map(__isl_take isl_map *map);
__isl_export
@ -815,6 +869,9 @@ __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_aff(
__isl_constructor
__isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_multi_aff(
__isl_take isl_multi_aff *ma);
__isl_export
__isl_give isl_union_pw_multi_aff *isl_pw_multi_aff_to_union_pw_multi_aff(
__isl_take isl_pw_multi_aff *pma);
__isl_constructor
__isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_pw_multi_aff(
__isl_take isl_pw_multi_aff *pma);
@ -844,6 +901,7 @@ isl_ctx *isl_union_pw_multi_aff_get_ctx(
__isl_export
__isl_give isl_space *isl_union_pw_multi_aff_get_space(
__isl_keep isl_union_pw_multi_aff *upma);
__isl_export
__isl_give isl_pw_multi_aff_list *isl_union_pw_multi_aff_get_pw_multi_aff_list(
__isl_keep isl_union_pw_multi_aff *upma);
@ -1004,6 +1062,9 @@ __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_subtract_domain(
__isl_take isl_union_pw_multi_aff *upma,
__isl_take isl_union_set *uset);
__isl_export
__isl_give isl_union_map *isl_union_pw_multi_aff_as_union_map(
__isl_take isl_union_pw_multi_aff *upma);
__isl_overload
__isl_give isl_union_map *isl_union_map_from_union_pw_multi_aff(
__isl_take isl_union_pw_multi_aff *upma);
@ -1013,6 +1074,9 @@ __isl_give isl_printer *isl_printer_print_union_pw_multi_aff(
__isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_union_set(
__isl_take isl_union_set *uset);
__isl_export
__isl_give isl_union_pw_multi_aff *isl_union_map_as_union_pw_multi_aff(
__isl_take isl_union_map *umap);
__isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_union_map(
__isl_take isl_union_map *umap);
@ -1027,6 +1091,9 @@ uint32_t isl_multi_pw_aff_get_hash(__isl_keep isl_multi_pw_aff *mpa);
__isl_constructor
__isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_aff(__isl_take isl_aff *aff);
__isl_export
__isl_give isl_multi_pw_aff *isl_multi_aff_to_multi_pw_aff(
__isl_take isl_multi_aff *ma);
__isl_constructor
__isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_multi_aff(
__isl_take isl_multi_aff *ma);
@ -1074,10 +1141,23 @@ __isl_give isl_multi_pw_aff *isl_multi_pw_aff_move_dims(
enum isl_dim_type dst_type, unsigned dst_pos,
enum isl_dim_type src_type, unsigned src_pos, unsigned n);
__isl_export
isl_bool isl_multi_pw_aff_isa_multi_aff(__isl_keep isl_multi_pw_aff *mpa);
__isl_export
__isl_give isl_multi_aff *isl_multi_pw_aff_as_multi_aff(
__isl_take isl_multi_pw_aff *mpa);
__isl_export
__isl_give isl_set *isl_multi_pw_aff_as_set(__isl_take isl_multi_pw_aff *mpa);
__isl_give isl_set *isl_set_from_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa);
__isl_export
__isl_give isl_map *isl_multi_pw_aff_as_map(__isl_take isl_multi_pw_aff *mpa);
__isl_give isl_map *isl_map_from_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_multi_pw_aff(
__isl_take isl_multi_pw_aff *mpa);
__isl_export
__isl_give isl_multi_pw_aff *isl_pw_multi_aff_to_multi_pw_aff(
__isl_take isl_pw_multi_aff *pma);
__isl_constructor
__isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_pw_multi_aff(
__isl_take isl_pw_multi_aff *pma);
@ -1139,6 +1219,9 @@ __isl_give isl_union_pw_aff *isl_union_pw_aff_empty(
__isl_take isl_space *space);
__isl_constructor
__isl_give isl_union_pw_aff *isl_union_pw_aff_from_aff(__isl_take isl_aff *aff);
__isl_export
__isl_give isl_union_pw_aff *isl_pw_aff_to_union_pw_aff(
__isl_take isl_pw_aff *pa);
__isl_constructor
__isl_give isl_union_pw_aff *isl_union_pw_aff_from_pw_aff(
__isl_take isl_pw_aff *pa);
@ -1268,6 +1351,9 @@ ISL_DECLARE_MULTI_DROP_DIMS(union_pw_aff)
ISL_DECLARE_MULTI_DIM_ID(union_pw_aff)
ISL_DECLARE_MULTI_TUPLE_ID(union_pw_aff)
__isl_export
__isl_give isl_multi_union_pw_aff *isl_multi_aff_to_multi_union_pw_aff(
__isl_take isl_multi_aff *ma);
__isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_multi_aff(
__isl_take isl_multi_aff *ma);
__isl_constructor
@ -1336,10 +1422,17 @@ __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_union_add(
__isl_take isl_multi_union_pw_aff *mupa1,
__isl_take isl_multi_union_pw_aff *mupa2);
__isl_export
__isl_give isl_multi_union_pw_aff *
isl_union_pw_multi_aff_as_multi_union_pw_aff(
__isl_take isl_union_pw_multi_aff *upma);
__isl_give isl_multi_union_pw_aff *
isl_multi_union_pw_aff_from_union_pw_multi_aff(
__isl_take isl_union_pw_multi_aff *upma);
__isl_export
__isl_give isl_multi_union_pw_aff *isl_union_map_as_multi_union_pw_aff(
__isl_take isl_union_map *umap);
__isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_union_map(
__isl_take isl_union_map *umap);
__isl_overload
@ -1366,9 +1459,13 @@ __isl_give isl_printer *isl_printer_print_multi_union_pw_aff(
void isl_multi_union_pw_aff_dump(__isl_keep isl_multi_union_pw_aff *mupa);
ISL_DECLARE_EXPORTED_LIST_FN(aff)
ISL_DECLARE_EXPORTED_LIST_FN_READ(aff)
ISL_DECLARE_EXPORTED_LIST_FN(pw_aff)
ISL_DECLARE_EXPORTED_LIST_FN_READ(pw_aff)
ISL_DECLARE_EXPORTED_LIST_FN(pw_multi_aff)
ISL_DECLARE_EXPORTED_LIST_FN_READ(pw_multi_aff)
ISL_DECLARE_EXPORTED_LIST_FN(union_pw_aff)
ISL_DECLARE_EXPORTED_LIST_FN_READ(union_pw_aff)
ISL_DECLARE_LIST_FN(union_pw_multi_aff)
#if defined(__cplusplus)

View File

@ -382,6 +382,14 @@ map uncheck(checked::map obj) {
return manage(obj.copy());
}
checked::map_list check(map_list obj) {
return checked::manage(obj.copy());
}
map_list uncheck(checked::map_list obj) {
return manage(obj.copy());
}
checked::multi_aff check(multi_aff obj) {
return checked::manage(obj.copy());
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -13,6 +13,7 @@ extern "C" {
#endif
ISL_DECLARE_EXPORTED_LIST_FN(id)
ISL_DECLARE_EXPORTED_LIST_FN_READ(id)
ISL_DECLARE_MULTI(id)

View File

@ -27,6 +27,8 @@ typedef struct isl_##EL##_list isl_##EL##_list;
ISL_DECLARE_LIST_TYPE2(EL,__isl_export)
#define ISL_DECLARE_LIST_FN3(EL,CONSTRUCTOR,EXPORT) \
isl_ctx *isl_##EL##_list_get_ctx(__isl_keep isl_##EL##_list *list); \
EXPORT \
__isl_give isl_##EL##_list *isl_##EL##_to_list(__isl_take isl_##EL *el);\
CONSTRUCTOR \
__isl_give isl_##EL##_list *isl_##EL##_list_from_##EL( \
__isl_take isl_##EL *el); \
@ -102,6 +104,14 @@ void isl_##EL##_list_dump(__isl_keep isl_##EL##_list *list);
ISL_DECLARE_LIST_FN3(EL,,)
#define ISL_DECLARE_EXPORTED_LIST_FN(EL) \
ISL_DECLARE_LIST_FN3(EL,__isl_constructor,__isl_export)
#define ISL_DECLARE_LIST_FN_READ2(EL,CONSTRUCTOR) \
CONSTRUCTOR \
__isl_give isl_##EL##_list *isl_##EL##_list_read_from_str( \
isl_ctx *ctx, const char *str);
#define ISL_DECLARE_LIST_FN_READ(EL) \
ISL_DECLARE_LIST_FN_READ2(EL,)
#define ISL_DECLARE_EXPORTED_LIST_FN_READ(EL) \
ISL_DECLARE_LIST_FN_READ2(EL,__isl_constructor)
#define ISL_DECLARE_LIST(EL) \
ISL_DECLARE_LIST_TYPE(EL) \

View File

@ -34,6 +34,10 @@ isl_size isl_basic_map_total_dim(__isl_keep const isl_basic_map *bmap);
isl_size isl_basic_map_dim(__isl_keep isl_basic_map *bmap,
enum isl_dim_type type);
__isl_export
isl_size isl_map_domain_tuple_dim(__isl_keep isl_map *map);
__isl_export
isl_size isl_map_range_tuple_dim(__isl_keep isl_map *map);
isl_size isl_map_dim(__isl_keep isl_map *map, enum isl_dim_type type);
isl_ctx *isl_basic_map_get_ctx(__isl_keep isl_basic_map *bmap);
@ -81,11 +85,25 @@ isl_bool isl_map_has_dim_id(__isl_keep isl_map *map,
enum isl_dim_type type, unsigned pos);
__isl_give isl_id *isl_map_get_dim_id(__isl_keep isl_map *map,
enum isl_dim_type type, unsigned pos);
__isl_overload
__isl_give isl_map *isl_map_set_domain_tuple_id(__isl_take isl_map *map,
__isl_take isl_id *id);
__isl_overload
__isl_give isl_map *isl_map_set_range_tuple_id(__isl_take isl_map *map,
__isl_take isl_id *id);
__isl_give isl_map *isl_map_set_tuple_id(__isl_take isl_map *map,
enum isl_dim_type type, __isl_take isl_id *id);
__isl_give isl_map *isl_map_reset_tuple_id(__isl_take isl_map *map,
enum isl_dim_type type);
__isl_export
isl_bool isl_map_has_domain_tuple_id(__isl_keep isl_map *map);
__isl_export
isl_bool isl_map_has_range_tuple_id(__isl_keep isl_map *map);
isl_bool isl_map_has_tuple_id(__isl_keep isl_map *map, enum isl_dim_type type);
__isl_export
__isl_give isl_id *isl_map_get_domain_tuple_id(__isl_keep isl_map *map);
__isl_export
__isl_give isl_id *isl_map_get_range_tuple_id(__isl_keep isl_map *map);
__isl_give isl_id *isl_map_get_tuple_id(__isl_keep isl_map *map,
enum isl_dim_type type);
__isl_give isl_map *isl_map_reset_user(__isl_take isl_map *map);
@ -285,6 +303,8 @@ isl_bool isl_basic_map_is_strict_subset(__isl_keep isl_basic_map *bmap1,
__isl_export
__isl_give isl_map *isl_map_universe(__isl_take isl_space *space);
__isl_export
__isl_give isl_map *isl_space_universe_map(__isl_take isl_space *space);
__isl_give isl_map *isl_map_nat_universe(__isl_take isl_space *space);
__isl_export
__isl_give isl_map *isl_map_empty(__isl_take isl_space *space);
@ -664,6 +684,9 @@ __isl_give isl_map *isl_map_gist_basic_map(__isl_take isl_map *map,
__isl_give isl_stride_info *isl_map_get_range_stride_info(
__isl_keep isl_map *map, int pos);
__isl_export
__isl_give isl_fixed_box *isl_map_get_range_lattice_tile(
__isl_keep isl_map *map);
__isl_export
__isl_give isl_fixed_box *isl_map_get_range_simple_fixed_box_hull(
__isl_keep isl_map *map);
@ -744,13 +767,16 @@ __isl_give isl_basic_map *isl_basic_map_from_aff_list(
__isl_take isl_space *domain_space, __isl_take isl_aff_list *list);
__isl_give isl_map *isl_map_from_aff(__isl_take isl_aff *aff);
__isl_export
__isl_give isl_map *isl_multi_aff_as_map(__isl_take isl_multi_aff *ma);
__isl_give isl_map *isl_map_from_multi_aff(__isl_take isl_multi_aff *maff);
__isl_give isl_pw_aff *isl_map_dim_min(__isl_take isl_map *map, int pos);
__isl_give isl_pw_aff *isl_map_dim_max(__isl_take isl_map *map, int pos);
ISL_DECLARE_LIST_FN(basic_map)
ISL_DECLARE_LIST_FN(map)
ISL_DECLARE_EXPORTED_LIST_FN(map)
ISL_DECLARE_EXPORTED_LIST_FN_READ(map)
#if defined(__cplusplus)
}

View File

@ -13,7 +13,7 @@ typedef struct isl_basic_map isl_basic_map;
ISL_DECLARE_LIST_TYPE(basic_map)
struct __isl_subclass(isl_union_map) isl_map;
typedef struct isl_map isl_map;
ISL_DECLARE_LIST_TYPE(map)
ISL_DECLARE_EXPORTED_LIST_TYPE(map)
#ifndef isl_basic_set
struct __isl_subclass(isl_set) isl_basic_set;

View File

@ -24,6 +24,9 @@ __isl_give isl_##BASE##_list *isl_multi_##BASE##_get_list( \
__isl_constructor \
__isl_give isl_multi_##BASE *isl_multi_##BASE##_from_##BASE##_list( \
__isl_take isl_space *space, __isl_take isl_##BASE##_list *list); \
__isl_export \
__isl_give isl_multi_##BASE *isl_space_multi_##BASE( \
__isl_take isl_space *space, __isl_take isl_##BASE##_list *list); \
__isl_give isl_multi_##BASE *isl_multi_##BASE##_copy( \
__isl_keep isl_multi_##BASE *multi); \
__isl_null isl_multi_##BASE *isl_multi_##BASE##_free( \
@ -84,6 +87,10 @@ __isl_give isl_multi_##BASE *isl_multi_##BASE##_identity( \
__isl_overload \
__isl_give isl_multi_##BASE * \
isl_multi_##BASE##_identity_on_domain_space( \
__isl_take isl_space *space); \
__isl_export \
__isl_give isl_multi_##BASE * \
isl_space_identity_multi_##BASE##_on_domain( \
__isl_take isl_space *space);
#define ISL_DECLARE_MULTI_CMP(BASE) \
@ -141,6 +148,9 @@ __isl_give isl_multi_##BASE *isl_multi_##BASE##_add_constant_multi_val( \
#define ISL_DECLARE_MULTI_ZERO(BASE) \
__isl_export \
__isl_give isl_multi_##BASE *isl_multi_##BASE##_zero( \
__isl_take isl_space *space); \
__isl_export \
__isl_give isl_multi_##BASE *isl_space_zero_multi_##BASE( \
__isl_take isl_space *space);
#define ISL_DECLARE_MULTI_NAN(BASE) \
@ -200,16 +210,28 @@ __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_dim_id( \
#define ISL_DECLARE_MULTI_TUPLE_ID(BASE) \
const char *isl_multi_##BASE##_get_tuple_name( \
__isl_keep isl_multi_##BASE *multi, enum isl_dim_type type); \
__isl_export \
isl_bool isl_multi_##BASE##_has_range_tuple_id( \
__isl_keep isl_multi_##BASE *multi); \
isl_bool isl_multi_##BASE##_has_tuple_id( \
__isl_keep isl_multi_##BASE *multi, enum isl_dim_type type); \
__isl_export \
__isl_give isl_id *isl_multi_##BASE##_get_range_tuple_id( \
__isl_keep isl_multi_##BASE *multi); \
__isl_give isl_id *isl_multi_##BASE##_get_tuple_id( \
__isl_keep isl_multi_##BASE *multi, enum isl_dim_type type); \
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_tuple_name( \
__isl_take isl_multi_##BASE *multi, \
enum isl_dim_type type, const char *s); \
__isl_overload \
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_range_tuple_id( \
__isl_take isl_multi_##BASE *multi, __isl_take isl_id *id); \
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_tuple_id( \
__isl_take isl_multi_##BASE *multi, \
enum isl_dim_type type, __isl_take isl_id *id); \
__isl_export \
__isl_give isl_multi_##BASE *isl_multi_##BASE##_reset_range_tuple_id( \
__isl_take isl_multi_##BASE *multi); \
__isl_give isl_multi_##BASE *isl_multi_##BASE##_reset_tuple_id( \
__isl_take isl_multi_##BASE *multi, enum isl_dim_type type);

View File

@ -535,6 +535,8 @@ isl_bool isl_union_pw_qpolynomial_plain_is_equal(
__isl_keep isl_union_pw_qpolynomial *upwqp1,
__isl_keep isl_union_pw_qpolynomial *upwqp2);
__isl_give isl_union_pw_qpolynomial *isl_pw_qpolynomial_to_union_pw_qpolynomial(
__isl_take isl_pw_qpolynomial *pwqp);
__isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_from_pw_qpolynomial(__isl_take isl_pw_qpolynomial *pwqp);
__isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_zero_ctx(
isl_ctx *ctx);
@ -676,6 +678,9 @@ isl_bool isl_union_pw_qpolynomial_fold_plain_is_equal(
__isl_keep isl_union_pw_qpolynomial_fold *upwf1,
__isl_keep isl_union_pw_qpolynomial_fold *upwf2);
__isl_give isl_union_pw_qpolynomial_fold *
isl_pw_qpolynomial_fold_to_union_pw_qpolynomial_fold(
__isl_take isl_pw_qpolynomial_fold *pwf);
__isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_from_pw_qpolynomial_fold(__isl_take isl_pw_qpolynomial_fold *pwf);
__isl_give isl_union_pw_qpolynomial_fold *
isl_union_pw_qpolynomial_fold_zero_ctx(isl_ctx *ctx, enum isl_fold type);

View File

@ -34,6 +34,8 @@ isl_size isl_basic_set_dim(__isl_keep isl_basic_set *bset,
isl_size isl_set_n_dim(__isl_keep isl_set *set);
isl_size isl_set_n_param(__isl_keep isl_set *set);
__isl_export
isl_size isl_set_tuple_dim(__isl_keep isl_set *set);
isl_size isl_set_dim(__isl_keep isl_set *set, enum isl_dim_type type);
isl_ctx *isl_basic_set_get_ctx(__isl_keep isl_basic_set *bset);
@ -275,9 +277,13 @@ __isl_export
__isl_give isl_set *isl_set_empty(__isl_take isl_space *space);
__isl_export
__isl_give isl_set *isl_set_universe(__isl_take isl_space *space);
__isl_export
__isl_give isl_set *isl_space_universe_set(__isl_take isl_space *space);
__isl_give isl_set *isl_set_nat_universe(__isl_take isl_space *space);
__isl_give isl_set *isl_set_copy(__isl_keep isl_set *set);
__isl_null isl_set *isl_set_free(__isl_take isl_set *set);
__isl_export
__isl_give isl_set *isl_basic_set_to_set(__isl_take isl_basic_set *bset);
__isl_constructor
__isl_give isl_set *isl_set_from_basic_set(__isl_take isl_basic_set *bset);
__isl_export
@ -520,6 +526,8 @@ __isl_give isl_val *isl_set_count_val(__isl_keep isl_set *set);
__isl_constructor
__isl_give isl_basic_set *isl_basic_set_from_point(__isl_take isl_point *pnt);
__isl_export
__isl_give isl_set *isl_point_to_set(__isl_take isl_point *pnt);
__isl_constructor
__isl_give isl_set *isl_set_from_point(__isl_take isl_point *pnt);
__isl_give isl_basic_set *isl_basic_set_box_from_points(
@ -563,6 +571,8 @@ __isl_give isl_basic_set *isl_basic_set_from_constraint_matrices(
__isl_give isl_basic_set *isl_basic_set_from_multi_aff(
__isl_take isl_multi_aff *ma);
__isl_export
__isl_give isl_set *isl_multi_aff_as_set(__isl_take isl_multi_aff *ma);
__isl_give isl_set *isl_set_from_multi_aff(__isl_take isl_multi_aff *ma);
__isl_give isl_mat *isl_basic_set_reduced_basis(__isl_keep isl_basic_set *bset);

View File

@ -34,6 +34,7 @@ isl_bool isl_space_is_params(__isl_keep isl_space *space);
isl_bool isl_space_is_set(__isl_keep isl_space *space);
isl_bool isl_space_is_map(__isl_keep isl_space *space);
__isl_overload
__isl_give isl_space *isl_space_add_param_id(__isl_take isl_space *space,
__isl_take isl_id *id);
@ -43,12 +44,28 @@ isl_bool isl_space_has_tuple_name(__isl_keep isl_space *space,
enum isl_dim_type type);
__isl_keep const char *isl_space_get_tuple_name(__isl_keep isl_space *space,
enum isl_dim_type type);
__isl_overload
__isl_give isl_space *isl_space_set_domain_tuple_id(
__isl_take isl_space *space, __isl_take isl_id *id);
__isl_overload
__isl_give isl_space *isl_space_set_range_tuple_id(
__isl_take isl_space *space, __isl_take isl_id *id);
__isl_give isl_space *isl_space_set_tuple_id(__isl_take isl_space *space,
enum isl_dim_type type, __isl_take isl_id *id);
__isl_give isl_space *isl_space_reset_tuple_id(__isl_take isl_space *space,
enum isl_dim_type type);
__isl_export
isl_bool isl_space_has_domain_tuple_id(__isl_keep isl_space *space);
__isl_export
isl_bool isl_space_has_range_tuple_id(__isl_keep isl_space *space);
isl_bool isl_space_has_tuple_id(__isl_keep isl_space *space,
enum isl_dim_type type);
__isl_export
__isl_give isl_id *isl_space_get_domain_tuple_id(
__isl_keep isl_space *space);
__isl_export
__isl_give isl_id *isl_space_get_range_tuple_id(
__isl_keep isl_space *space);
__isl_give isl_id *isl_space_get_tuple_id(__isl_keep isl_space *space,
enum isl_dim_type type);
__isl_give isl_space *isl_space_reset_user(__isl_take isl_space *space);

File diff suppressed because it is too large Load Diff

View File

@ -23,6 +23,8 @@ __isl_give isl_id *isl_union_map_get_dim_id(__isl_keep isl_union_map *umap,
__isl_constructor
__isl_give isl_union_map *isl_union_map_from_basic_map(
__isl_take isl_basic_map *bmap);
__isl_export
__isl_give isl_union_map *isl_map_to_union_map(__isl_take isl_map *map);
__isl_constructor
__isl_give isl_union_map *isl_union_map_from_map(__isl_take isl_map *map);
__isl_overload
@ -276,6 +278,7 @@ isl_size isl_union_map_n_map(__isl_keep isl_union_map *umap);
__isl_export
isl_stat isl_union_map_foreach_map(__isl_keep isl_union_map *umap,
isl_stat (*fn)(__isl_take isl_map *map, void *user), void *user);
__isl_export
__isl_give isl_map_list *isl_union_map_get_map_list(
__isl_keep isl_union_map *umap);
__isl_export
@ -291,6 +294,8 @@ __isl_give isl_map *isl_union_map_extract_map(__isl_keep isl_union_map *umap,
__isl_take isl_space *space);
__isl_export
isl_bool isl_union_map_isa_map(__isl_keep isl_union_map *umap);
__isl_export
__isl_give isl_map *isl_union_map_as_map(__isl_take isl_union_map *umap);
__isl_give isl_map *isl_map_from_union_map(__isl_take isl_union_map *umap);
__isl_give isl_basic_map *isl_union_map_sample(__isl_take isl_union_map *umap);

View File

@ -14,6 +14,8 @@ isl_size isl_union_set_dim(__isl_keep isl_union_set *uset,
__isl_constructor
__isl_give isl_union_set *isl_union_set_from_basic_set(
__isl_take isl_basic_set *bset);
__isl_export
__isl_give isl_union_set *isl_set_to_union_set(__isl_take isl_set *set);
__isl_constructor
__isl_give isl_union_set *isl_union_set_from_set(__isl_take isl_set *set);
__isl_overload
@ -142,6 +144,8 @@ __isl_give isl_set *isl_union_set_extract_set(__isl_keep isl_union_set *uset,
__isl_take isl_space *space);
__isl_export
isl_bool isl_union_set_isa_set(__isl_keep isl_union_set *uset);
__isl_export
__isl_give isl_set *isl_union_set_as_set(__isl_take isl_union_set *uset);
__isl_give isl_set *isl_set_from_union_set(__isl_take isl_union_set *uset);
__isl_export
isl_stat isl_union_set_foreach_point(__isl_keep isl_union_set *uset,
@ -182,6 +186,7 @@ __isl_give isl_printer *isl_printer_print_union_set(__isl_take isl_printer *p,
void isl_union_set_dump(__isl_keep isl_union_set *uset);
ISL_DECLARE_EXPORTED_LIST_FN(union_set)
ISL_DECLARE_EXPORTED_LIST_FN_READ(union_set)
__isl_give isl_union_set *isl_union_set_list_union(
__isl_take isl_union_set_list *list);

View File

@ -170,6 +170,7 @@ void isl_multi_val_dump(__isl_keep isl_multi_val *mv);
__isl_give char *isl_multi_val_to_str(__isl_keep isl_multi_val *mv);
ISL_DECLARE_EXPORTED_LIST_FN(val)
ISL_DECLARE_EXPORTED_LIST_FN_READ(val)
#if defined(__cplusplus)
}

View File

@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2018-03-11.20; # UTC
scriptversion=2020-11-14.01; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@ -69,6 +69,11 @@ posix_mkdir=
# Desired mode of installed file.
mode=0755
# Create dirs (including intermediate dirs) using mode 755.
# This is like GNU 'install' as of coreutils 8.32 (2020).
mkdir_umask=22
backupsuffix=
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
@ -99,18 +104,28 @@ Options:
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-C install only if different (preserve data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-p pass -p to $cpprog.
-s $stripprog installed files.
-S SUFFIX attempt to back up existing files, with suffix SUFFIX.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
By default, rm is invoked with -f; when overridden with RMPROG,
it's up to you to specify -f if you want it.
If -S is not specified, no backups are attempted.
Email bug reports to bug-automake@gnu.org.
Automake home page: https://www.gnu.org/software/automake/
"
while test $# -ne 0; do
@ -137,8 +152,13 @@ while test $# -ne 0; do
-o) chowncmd="$chownprog $2"
shift;;
-p) cpprog="$cpprog -p";;
-s) stripcmd=$stripprog;;
-S) backupsuffix="$2"
shift;;
-t)
is_target_a_directory=always
dst_arg=$2
@ -255,6 +275,10 @@ do
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
# Don't chown directories that already exist.
if test $dstdir_status = 0; then
chowncmd=""
fi
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
@ -301,22 +325,6 @@ do
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
@ -326,52 +334,49 @@ do
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
# Note that $RANDOM variable is not portable (e.g. dash); Use it
# here however when possible just to lower collision chance.
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
# The $RANDOM variable is not portable (e.g., dash). Use it
# here however when possible just to lower collision chance.
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
trap '
ret=$?
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
exit $ret
' 0
# Because "mkdir -p" follows existing symlinks and we likely work
# directly in world-writeable /tmp, make sure that the '$tmpdir'
# directory is successfully created first before we actually test
# 'mkdir -p' feature.
if (umask $mkdir_umask &&
$mkdirprog $mkdir_mode "$tmpdir" &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
test_tmpdir="$tmpdir/a"
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
fi
trap '' 0;;
esac;;
# Because "mkdir -p" follows existing symlinks and we likely work
# directly in world-writeable /tmp, make sure that the '$tmpdir'
# directory is successfully created first before we actually test
# 'mkdir -p'.
if (umask $mkdir_umask &&
$mkdirprog $mkdir_mode "$tmpdir" &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
test_tmpdir="$tmpdir/a"
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
fi
trap '' 0;;
esac
if
@ -382,7 +387,7 @@ do
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
@ -411,7 +416,7 @@ do
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
(umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
@ -451,7 +456,18 @@ do
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
(umask $cp_umask &&
{ test -z "$stripcmd" || {
# Create $dsttmp read-write so that cp doesn't create it read-only,
# which would cause strip to fail.
if test -z "$doit"; then
: >"$dsttmp" # No need to fork-exec 'touch'.
else
$doit touch "$dsttmp"
fi
}
} &&
$doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
@ -477,6 +493,13 @@ do
then
rm -f "$dsttmp"
else
# If $backupsuffix is set, and the file being installed
# already exists, attempt a backup. Don't worry if it fails,
# e.g., if mv doesn't support -f.
if test -n "$backupsuffix" && test -f "$dst"; then
$doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
fi
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
@ -491,9 +514,9 @@ do
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
$doit $rmcmd "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
{ $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1

View File

@ -17,6 +17,11 @@ extract_interface_SOURCES = \
cpp.cc \
cpp_conversion.h \
cpp_conversion.cc \
plain_cpp.h \
plain_cpp.cc \
set_lang_defaults_arg4.h \
template_cpp.h \
template_cpp.cc \
extract_interface.h \
extract_interface.cc
extract_interface_LDFLAGS = $(CLANG_LDFLAGS) $(CLANG_RFLAG)

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.16.1 from Makefile.am.
# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -91,7 +91,10 @@ host_triplet = @host@
noinst_PROGRAMS = extract_interface$(EXEEXT)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../m4/ax_detect_clang.m4 \
am__aclocal_m4_deps = $(top_srcdir)/../m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/../m4/ax_cxx_compile_stdcxx_11.m4 \
$(top_srcdir)/../m4/ax_cxx_compile_stdcxx_11_no_override.m4 \
$(top_srcdir)/../m4/ax_detect_clang.m4 \
$(top_srcdir)/../m4/ax_prog_cc_for_build.m4 \
$(top_srcdir)/../m4/ax_prog_cxx_for_build.m4 \
$(top_srcdir)/../m4/libtool.m4 \
@ -114,6 +117,8 @@ am_extract_interface_OBJECTS = extract_interface-generator.$(OBJEXT) \
extract_interface-python.$(OBJEXT) \
extract_interface-cpp.$(OBJEXT) \
extract_interface-cpp_conversion.$(OBJEXT) \
extract_interface-plain_cpp.$(OBJEXT) \
extract_interface-template_cpp.$(OBJEXT) \
extract_interface-extract_interface.$(OBJEXT)
extract_interface_OBJECTS = $(am_extract_interface_OBJECTS)
am__DEPENDENCIES_1 =
@ -146,7 +151,9 @@ am__depfiles_remade = ./$(DEPDIR)/extract_interface-cpp.Po \
./$(DEPDIR)/extract_interface-cpp_conversion.Po \
./$(DEPDIR)/extract_interface-extract_interface.Po \
./$(DEPDIR)/extract_interface-generator.Po \
./$(DEPDIR)/extract_interface-python.Po
./$(DEPDIR)/extract_interface-plain_cpp.Po \
./$(DEPDIR)/extract_interface-python.Po \
./$(DEPDIR)/extract_interface-template_cpp.Po
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@ -191,8 +198,8 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
$(LISP)isl_config.h.in
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
isl_config.h.in
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
@ -229,6 +236,8 @@ am__post_remove_distdir = $(am__remove_distdir)
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
DIST_TARGETS = dist-gzip
# Exists only to be overridden by the user if desired.
AM_DISTCHECK_DVI_TARGET = dvi
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@ -278,6 +287,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@ -365,7 +375,6 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@ -390,6 +399,11 @@ extract_interface_SOURCES = \
cpp.cc \
cpp_conversion.h \
cpp_conversion.cc \
plain_cpp.h \
plain_cpp.cc \
set_lang_defaults_arg4.h \
template_cpp.h \
template_cpp.cc \
extract_interface.h \
extract_interface.cc
@ -472,7 +486,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-cpp_conversion.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-extract_interface.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-generator.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-plain_cpp.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-python.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-template_cpp.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@ -557,6 +573,34 @@ extract_interface-cpp_conversion.obj: cpp_conversion.cc
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-cpp_conversion.obj `if test -f 'cpp_conversion.cc'; then $(CYGPATH_W) 'cpp_conversion.cc'; else $(CYGPATH_W) '$(srcdir)/cpp_conversion.cc'; fi`
extract_interface-plain_cpp.o: plain_cpp.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-plain_cpp.o -MD -MP -MF $(DEPDIR)/extract_interface-plain_cpp.Tpo -c -o extract_interface-plain_cpp.o `test -f 'plain_cpp.cc' || echo '$(srcdir)/'`plain_cpp.cc
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-plain_cpp.Tpo $(DEPDIR)/extract_interface-plain_cpp.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='plain_cpp.cc' object='extract_interface-plain_cpp.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-plain_cpp.o `test -f 'plain_cpp.cc' || echo '$(srcdir)/'`plain_cpp.cc
extract_interface-plain_cpp.obj: plain_cpp.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-plain_cpp.obj -MD -MP -MF $(DEPDIR)/extract_interface-plain_cpp.Tpo -c -o extract_interface-plain_cpp.obj `if test -f 'plain_cpp.cc'; then $(CYGPATH_W) 'plain_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/plain_cpp.cc'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-plain_cpp.Tpo $(DEPDIR)/extract_interface-plain_cpp.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='plain_cpp.cc' object='extract_interface-plain_cpp.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-plain_cpp.obj `if test -f 'plain_cpp.cc'; then $(CYGPATH_W) 'plain_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/plain_cpp.cc'; fi`
extract_interface-template_cpp.o: template_cpp.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-template_cpp.o -MD -MP -MF $(DEPDIR)/extract_interface-template_cpp.Tpo -c -o extract_interface-template_cpp.o `test -f 'template_cpp.cc' || echo '$(srcdir)/'`template_cpp.cc
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-template_cpp.Tpo $(DEPDIR)/extract_interface-template_cpp.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='template_cpp.cc' object='extract_interface-template_cpp.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-template_cpp.o `test -f 'template_cpp.cc' || echo '$(srcdir)/'`template_cpp.cc
extract_interface-template_cpp.obj: template_cpp.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-template_cpp.obj -MD -MP -MF $(DEPDIR)/extract_interface-template_cpp.Tpo -c -o extract_interface-template_cpp.obj `if test -f 'template_cpp.cc'; then $(CYGPATH_W) 'template_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/template_cpp.cc'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-template_cpp.Tpo $(DEPDIR)/extract_interface-template_cpp.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='template_cpp.cc' object='extract_interface-template_cpp.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-template_cpp.obj `if test -f 'template_cpp.cc'; then $(CYGPATH_W) 'template_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/template_cpp.cc'; fi`
extract_interface-extract_interface.o: extract_interface.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-extract_interface.o -MD -MP -MF $(DEPDIR)/extract_interface-extract_interface.Tpo -c -o extract_interface-extract_interface.o `test -f 'extract_interface.cc' || echo '$(srcdir)/'`extract_interface.cc
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-extract_interface.Tpo $(DEPDIR)/extract_interface-extract_interface.Po
@ -697,6 +741,10 @@ dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
dist-zstd: distdir
tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
$(am__post_remove_distdir)
dist-tarZ: distdir
@echo WARNING: "Support for distribution archives compressed with" \
"legacy program 'compress' is deprecated." >&2
@ -739,6 +787,8 @@ distcheck: dist
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
*.tar.zst*) \
zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
@ -754,7 +804,7 @@ distcheck: dist
$(DISTCHECK_CONFIGURE_FLAGS) \
--srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
@ -850,7 +900,9 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/extract_interface-cpp_conversion.Po
-rm -f ./$(DEPDIR)/extract_interface-extract_interface.Po
-rm -f ./$(DEPDIR)/extract_interface-generator.Po
-rm -f ./$(DEPDIR)/extract_interface-plain_cpp.Po
-rm -f ./$(DEPDIR)/extract_interface-python.Po
-rm -f ./$(DEPDIR)/extract_interface-template_cpp.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-libtool distclean-tags
@ -902,7 +954,9 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/extract_interface-cpp_conversion.Po
-rm -f ./$(DEPDIR)/extract_interface-extract_interface.Po
-rm -f ./$(DEPDIR)/extract_interface-generator.Po
-rm -f ./$(DEPDIR)/extract_interface-plain_cpp.Po
-rm -f ./$(DEPDIR)/extract_interface-python.Po
-rm -f ./$(DEPDIR)/extract_interface-template_cpp.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@ -927,18 +981,18 @@ uninstall-am:
check-am clean clean-cscope clean-generic clean-libtool \
clean-noinstPROGRAMS cscope cscopelist-am ctags ctags-am dist \
dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
dist-xz dist-zip distcheck distclean distclean-compile \
distclean-generic distclean-hdr distclean-libtool \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am
dist-xz dist-zip dist-zstd distcheck distclean \
distclean-compile distclean-generic distclean-hdr \
distclean-libtool distclean-tags distcleancheck distdir \
distuninstallcheck dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am
.PRECIOUS: Makefile

View File

@ -1,6 +1,6 @@
# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
# generated automatically by aclocal 1.16.3 -*- Autoconf -*-
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Copyright (C) 1996-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -20,7 +20,45 @@ You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
# Copyright (C) 2002-2018 Free Software Foundation, Inc.
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_REQUIRE_DEFINED(MACRO)
#
# DESCRIPTION
#
# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
# been defined and thus are available for use. This avoids random issues
# where a macro isn't expanded. Instead the configure script emits a
# non-fatal:
#
# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
#
# It's like AC_REQUIRE except it doesn't expand the required macro.
#
# Here's an example:
#
# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
#
# LICENSE
#
# Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
#
# 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.
#serial 2
AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
])dnl AX_REQUIRE_DEFINED
# Copyright (C) 2002-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -35,7 +73,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.16'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
m4_if([$1], [1.16.1], [],
m4_if([$1], [1.16.3], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@ -51,14 +89,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.16.1])dnl
[AM_AUTOMAKE_VERSION([1.16.3])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -110,7 +148,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
# AM_CONDITIONAL -*- Autoconf -*-
# Copyright (C) 1997-2018 Free Software Foundation, Inc.
# Copyright (C) 1997-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -141,7 +179,7 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -332,7 +370,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*-
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -371,7 +409,9 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
done
if test $am_rc -ne 0; then
AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
for automatic dependency tracking. Try re-running configure with the
for automatic dependency tracking. If GNU make was not used, consider
re-running the configure script with MAKE="gmake" (or whatever is
necessary). You can also try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).])
fi
@ -398,7 +438,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -595,7 +635,7 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -616,7 +656,7 @@ if test x"${install_sh+set}" != xset; then
fi
AC_SUBST([install_sh])])
# Copyright (C) 2003-2018 Free Software Foundation, Inc.
# Copyright (C) 2003-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -637,7 +677,7 @@ AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -680,7 +720,7 @@ AC_SUBST([am__quote])])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
# Copyright (C) 1997-2018 Free Software Foundation, Inc.
# Copyright (C) 1997-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -701,12 +741,7 @@ AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
if test x"${MISSING+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
*)
MISSING="\${SHELL} $am_aux_dir/missing" ;;
esac
MISSING="\${SHELL} '$am_aux_dir/missing'"
fi
# Use eval to expand $SHELL
if eval "$MISSING --is-lightweight"; then
@ -719,7 +754,7 @@ fi
# Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -748,7 +783,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -795,7 +830,7 @@ AC_LANG_POP([C])])
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -814,7 +849,7 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -895,7 +930,7 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file
])
# Copyright (C) 2009-2018 Free Software Foundation, Inc.
# Copyright (C) 2009-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -955,7 +990,7 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -983,7 +1018,7 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Copyright (C) 2006-2018 Free Software Foundation, Inc.
# Copyright (C) 2006-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -1002,7 +1037,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004-2018 Free Software Foundation, Inc.
# Copyright (C) 2004-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -1133,6 +1168,9 @@ AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
m4_include([../m4/ax_cxx_compile_stdcxx.m4])
m4_include([../m4/ax_cxx_compile_stdcxx_11.m4])
m4_include([../m4/ax_cxx_compile_stdcxx_11_no_override.m4])
m4_include([../m4/ax_detect_clang.m4])
m4_include([../m4/ax_prog_cc_for_build.m4])
m4_include([../m4/ax_prog_cxx_for_build.m4])

6
polly/lib/External/isl/interface/compile vendored Normal file → Executable file
View File

@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
@ -53,7 +53,7 @@ func_file_conv ()
MINGW*)
file_conv=mingw
;;
CYGWIN*)
CYGWIN* | MSYS*)
file_conv=cygwin
;;
*)
@ -67,7 +67,7 @@ func_file_conv ()
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/*)
cygwin/* | msys/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)

582
polly/lib/External/isl/interface/config.guess vendored Normal file → Executable file

File diff suppressed because it is too large Load Diff

2816
polly/lib/External/isl/interface/config.sub vendored Normal file → Executable file

File diff suppressed because it is too large Load Diff

1353
polly/lib/External/isl/interface/configure vendored Normal file → Executable file

File diff suppressed because it is too large Load Diff

View File

@ -17,6 +17,8 @@ CXXCPP="$CXXCPP_FOR_BUILD"
EXEEXT="$BUILD_EXEEXT"
OBJEXT="$BUILD_OBJEXT"
AX_CXX_COMPILE_STDCXX_11_NO_OVERRIDE
AC_DISABLE_SHARED
AC_PROG_LIBTOOL

File diff suppressed because it is too large Load Diff

View File

@ -1,169 +1,183 @@
#ifndef ISL_INTERFACE_CPP_H
#define ISL_INTERFACE_CPP_H
#include <iostream>
#include <string>
#include <vector>
#include "generator.h"
using namespace std;
using namespace clang;
/* A generated C++ method derived from an isl function.
*
* "clazz" is the class to which the method belongs.
* "fd" is the original isl function.
* "name" is the name of the method, which may be different
* from the default name derived from "fd".
* "kind" is the type of the method.
* "callback" stores the callback argument, if any, or NULL.
*/
struct Method {
enum Kind {
static_method,
member_method,
constructor,
};
Method(const isl_class &clazz, FunctionDecl *fd,
const std::string &name);
Method(const isl_class &clazz, FunctionDecl *fd);
int c_num_params() const;
virtual int num_params() const;
virtual bool param_needs_copy(int pos) const;
virtual clang::ParmVarDecl *get_param(int pos) const;
virtual void print_param_use(ostream &os, int pos) const;
bool is_subclass_mutator() const;
static void print_arg_list(std::ostream &os, int start, int end,
const std::function<void(int i)> &print_arg);
void print_cpp_arg_list(std::ostream &os,
const std::function<void(int i)> &print_arg) const;
const isl_class &clazz;
FunctionDecl *const fd;
const std::string name;
const enum Kind kind;
ParmVarDecl *const callback;
};
/* A method that does not require its isl type parameters to be a copy.
*/
struct NoCopyMethod : Method {
NoCopyMethod(const Method &method) : Method(method) {}
virtual bool param_needs_copy(int pos) const override;
};
/* A generated method that performs one or more argument conversions and
* then calls the original method.
*
* A ConversionMethod inherits from a NoCopyMethod, because
* unlike methods that call an isl C function,
* a conversion method never calls release() on an isl type argument,
* so they can all be passed as const references.
*
* "this_type" is the name of the type to which "this" should be converted
* (if different from clazz.name).
* "get_param_fn" returns the method argument at position "pos".
*/
struct ConversionMethod : NoCopyMethod {
ConversionMethod(const Method &method, const std::string &this_type,
const std::function<clang::ParmVarDecl *(int pos)> &get_param);
ConversionMethod(const Method &method, const std::string &this_type);
ConversionMethod(const Method &method,
const std::function<clang::ParmVarDecl *(int pos)> &get_param);
virtual clang::ParmVarDecl *get_param(int pos) const override;
void print_call(std::ostream &os, const std::string &ns) const;
const std::string this_type;
const std::function<clang::ParmVarDecl *(int pos)> get_param_fn;
};
/* A specialized generated C++ method for setting an enum.
*
* "enum_name" is a string representation of the enum value
* set by this method.
*/
struct EnumMethod : public Method {
EnumMethod(const isl_class &clazz, FunctionDecl *fd,
const std::string &method_name, const std::string &enum_name);
virtual int num_params() const override;
virtual void print_param_use(ostream &os, int pos) const override;
std::string enum_name;
};
/* A type printer for converting argument and return types,
* as well as the class type,
* to string representations of the corresponding types
* in the C++ interface.
*/
struct cpp_type_printer {
cpp_type_printer() {}
virtual std::string isl_bool() const;
virtual std::string isl_stat() const;
virtual std::string isl_size() const;
virtual std::string isl_namespace() const;
virtual std::string class_type(const std::string &cpp_name) const;
virtual std::string qualified(int arg, const std::string &cpp_type)
const;
std::string isl_type(int arg, QualType type) const;
std::string generate_callback_args(int arg, QualType type, bool cpp)
const;
std::string generate_callback_type(int arg, QualType type) const;
std::string param(int arg, QualType type) const;
std::string return_type(const Method &method) const;
};
/* Generator for C++ bindings.
*
* "checked" is set if C++ bindings should be generated
* that rely on the user to check for error conditions.
*/
class cpp_generator : public generator {
protected:
bool checked;
struct class_printer;
public:
cpp_generator(SourceManager &SM, set<RecordDecl *> &exported_types,
set<FunctionDecl *> exported_functions,
set<FunctionDecl *> functions,
bool checked = false) :
generator(SM, exported_types, exported_functions, functions),
checked(checked) {}
enum function_kind {
function_kind_static_method,
function_kind_member_method,
function_kind_constructor,
};
enum method_part {
decl,
impl,
};
virtual void generate();
set<FunctionDecl *> functions);
private:
void print_forward_declarations(ostream &os);
void print_declarations(ostream &os);
void print_class(ostream &os, const isl_class &clazz);
void print_subclass_type(ostream &os, const isl_class &clazz);
void print_class_forward_decl(ostream &os, const isl_class &clazz);
void print_class_factory_decl(ostream &os, const isl_class &clazz,
const std::string &prefix = std::string());
void print_protected_constructors_decl(ostream &os,
const isl_class &clazz);
void print_copy_assignment_decl(ostream &os, const isl_class &clazz);
void print_public_constructors_decl(ostream &os,
const isl_class &clazz);
void print_constructors_decl(ostream &os, const isl_class &clazz);
void print_destructor_decl(ostream &os, const isl_class &clazz);
void print_ptr_decl(ostream &os, const isl_class &clazz);
void print_isa_type_template(ostream &os, int indent,
const isl_class &super);
void print_downcast_decl(ostream &os, const isl_class &clazz);
void print_ctx_decl(ostream &os);
void print_persistent_callback_prototype(ostream &os,
const isl_class &clazz, FunctionDecl *method,
bool is_declaration);
void print_persistent_callback_setter_prototype(ostream &os,
const isl_class &clazz, FunctionDecl *method,
bool is_declaration);
void print_persistent_callback_data(ostream &os, const isl_class &clazz,
FunctionDecl *method);
void print_persistent_callbacks_decl(ostream &os,
const isl_class &clazz);
void print_methods_decl(ostream &os, const isl_class &clazz);
bool next_variant(FunctionDecl *fd, std::vector<bool> &convert);
template <enum method_part>
void print_method_variants(ostream &os, const isl_class &clazz,
FunctionDecl *fd);
void print_method_group_decl(ostream &os, const isl_class &clazz,
const function_set &methods);
void print_named_method_decl(ostream &os, const isl_class &clazz,
FunctionDecl *fd, const string &name, function_kind kind,
const std::vector<bool> &convert = {});
template <enum method_part>
void print_method(ostream &os, const isl_class &clazz,
FunctionDecl *method, function_kind kind);
template <enum method_part>
void print_method(ostream &os, const isl_class &clazz,
FunctionDecl *method, function_kind kind,
const std::vector<bool> &convert);
void print_set_enum_decl(ostream &os, const isl_class &clazz,
FunctionDecl *fd, const string &name);
void print_set_enums_decl(ostream &os, const isl_class &clazz,
FunctionDecl *fd);
void print_set_enums_decl(ostream &os, const isl_class &clazz);
void print_implementations(ostream &os);
void print_class_impl(ostream &os, const isl_class &clazz);
void print_check_ptr(ostream &os, const char *ptr);
void print_check_ptr_start(ostream &os, const isl_class &clazz,
const char *ptr);
void print_check_ptr_end(ostream &os, const char *ptr);
void print_class_factory_impl(ostream &os, const isl_class &clazz);
void print_protected_constructors_impl(ostream &os,
const isl_class &clazz);
void print_public_constructors_impl(ostream &os,
const isl_class &clazz);
void print_constructors_impl(ostream &os, const isl_class &clazz);
void print_copy_assignment_impl(ostream &os, const isl_class &clazz);
void print_destructor_impl(ostream &os, const isl_class &clazz);
void print_check_no_persistent_callback(ostream &os,
const isl_class &clazz, FunctionDecl *fd);
void print_ptr_impl(ostream &os, const isl_class &clazz);
void print_downcast_impl(ostream &os, const isl_class &clazz);
void print_ctx_impl(ostream &os, const isl_class &clazz);
void print_persistent_callbacks_impl(ostream &os,
const isl_class &clazz);
void print_methods_impl(ostream &os, const isl_class &clazz);
void print_method_group_impl(ostream &os, const isl_class &clazz,
const function_set &methods);
void print_argument_validity_check(ostream &os, FunctionDecl *method,
function_kind kind);
void print_save_ctx(ostream &os, FunctionDecl *method,
function_kind kind);
void print_on_error_continue(ostream &os);
void print_exceptional_execution_check(ostream &os,
const isl_class &clazz, FunctionDecl *method,
function_kind kind);
void print_set_persistent_callback(ostream &os, const isl_class &clazz,
FunctionDecl *method, function_kind kind);
void print_method_return(ostream &os, const isl_class &clazz,
FunctionDecl *method);
void print_set_enum_impl(ostream &os, const isl_class &clazz,
FunctionDecl *fd, const string &enum_name,
const string &method_name);
void print_set_enums_impl(ostream &os, const isl_class &clazz,
FunctionDecl *fd);
void print_set_enums_impl(ostream &os, const isl_class &clazz);
template <enum method_part>
void print_get_method(ostream &os, const isl_class &clazz,
FunctionDecl *fd);
void print_invalid(ostream &os, int indent, const char *msg,
const char *checked_code);
void print_stream_insertion(ostream &os, const isl_class &clazz);
void print_method_param_use(ostream &os, ParmVarDecl *param,
bool load_from_this_ptr);
std::string get_return_type(const isl_class &clazz, FunctionDecl *fd);
ParmVarDecl *get_param(FunctionDecl *fd, int pos,
const std::vector<bool> &convert);
void print_method_header(ostream &os, const isl_class &clazz,
FunctionDecl *method, const string &cname, int num_params,
bool is_declaration, function_kind kind,
const std::vector<bool> &convert = {});
void print_named_method_header(ostream &os, const isl_class &clazz,
FunctionDecl *method, string name, bool is_declaration,
function_kind kind, const std::vector<bool> &convert = {});
void print_method_header(ostream &os, const isl_class &clazz,
FunctionDecl *method, bool is_declaration, function_kind kind);
string generate_callback_args(QualType type, bool cpp);
string generate_callback_type(QualType type);
void print_wrapped_call_checked(std::ostream &os, int indent,
const std::string &call);
void print_wrapped_call(std::ostream &os, int indent,
const std::string &call, QualType rtype);
void print_callback_data_decl(ostream &os, ParmVarDecl *param,
const string &name);
void print_callback_body(ostream &os, int indent, ParmVarDecl *param,
const string &name);
void print_callback_local(ostream &os, ParmVarDecl *param);
std::string rename_method(std::string name);
string isl_bool2cpp();
string isl_namespace();
string type2cpp(QualType type);
bool is_implicit_conversion(const isl_class &clazz, FunctionDecl *cons);
void set_class_construction_types(isl_class &clazz);
void set_construction_types();
void copy_methods(isl_class &clazz, const std::string &name,
const isl_class &super, const function_set &methods);
void copy_super_methods(isl_class &clazz, const isl_class &super);
void copy_super_methods(isl_class &clazz, set<string> &done);
void copy_super_methods();
bool is_implicit_conversion(const Method &cons);
bool is_subclass(QualType subclass_type, const isl_class &class_type);
function_kind get_method_kind(const isl_class &clazz,
FunctionDecl *method);
public:
static string type2cpp(const isl_class &clazz);
static string type2cpp(string type_string);
};
/* A helper class for printing method declarations and definitions
* of a class.
*
* "os" is the stream onto which the methods are printed.
* "clazz" describes the methods of the class.
* "cppstring" is the C++ name of the class.
* "generator" is the C++ interface generator printing the classes.
* "declarations" is set if this object is used to print declarations.
*/
struct cpp_generator::class_printer {
std::ostream &os;
const isl_class &clazz;
const std::string cppstring;
cpp_generator &generator;
const bool declarations;
class_printer(std::ostream &os, const isl_class &clazz,
cpp_generator &generator, bool declarations);
void print_constructors();
void print_methods();
bool next_variant(FunctionDecl *fd, std::vector<bool> &convert);
void print_method_variants(FunctionDecl *fd, const std::string &name);
virtual bool want_descendent_overloads(const function_set &methods) = 0;
void print_descendent_overloads(FunctionDecl *fd,
const std::string &name);
void print_method_group(const function_set &methods,
const std::string &name);
virtual void print_method(const Method &method) = 0;
virtual void print_method(const ConversionMethod &method) = 0;
virtual void print_get_method(FunctionDecl *fd) = 0;
void print_set_enums(FunctionDecl *fd);
void print_set_enums();
ParmVarDecl *get_param(FunctionDecl *fd, int pos,
const std::vector<bool> &convert);
void print_method_header(const Method &method,
const cpp_type_printer &type_printer);
};
#endif

2
polly/lib/External/isl/interface/depcomp vendored Normal file → Executable file
View File

@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by

View File

@ -82,8 +82,9 @@
#include "extract_interface.h"
#include "generator.h"
#include "python.h"
#include "cpp.h"
#include "plain_cpp.h"
#include "cpp_conversion.h"
#include "template_cpp.h"
using namespace std;
using namespace clang;
@ -420,12 +421,15 @@ static void create_main_file_id(SourceManager &SM, const FileEntry *file)
#ifdef SETLANGDEFAULTS_TAKES_5_ARGUMENTS
#include "set_lang_defaults_arg4.h"
static void set_lang_defaults(CompilerInstance *Clang)
{
PreprocessorOptions &PO = Clang->getPreprocessorOpts();
TargetOptions &TO = Clang->getTargetOpts();
llvm::Triple T(TO.Triple);
CompilerInvocation::setLangDefaults(Clang->getLangOpts(), IK_C, T, PO,
CompilerInvocation::setLangDefaults(Clang->getLangOpts(), IK_C, T,
setLangDefaultsArg4(PO),
LangStandard::lang_unspecified);
}
@ -506,14 +510,17 @@ static void generate(MyASTConsumer &consumer, SourceManager &SM)
gen = new python_generator(SM, consumer.exported_types,
consumer.exported_functions, consumer.functions);
} else if (OutputLanguage.compare("cpp") == 0) {
gen = new cpp_generator(SM, consumer.exported_types,
gen = new plain_cpp_generator(SM, consumer.exported_types,
consumer.exported_functions, consumer.functions);
} else if (OutputLanguage.compare("cpp-checked") == 0) {
gen = new cpp_generator(SM, consumer.exported_types,
gen = new plain_cpp_generator(SM, consumer.exported_types,
consumer.exported_functions, consumer.functions, true);
} else if (OutputLanguage.compare("cpp-checked-conversion") == 0) {
gen = new cpp_conversion_generator(SM, consumer.exported_types,
consumer.exported_functions, consumer.functions);
} else if (OutputLanguage.compare("template-cpp") == 0) {
gen = new template_cpp_generator(SM, consumer.exported_types,
consumer.exported_functions, consumer.functions);
} else {
cerr << "Language '" << OutputLanguage
<< "' not recognized." << endl

View File

@ -46,23 +46,35 @@
const char *isl_class::get_prefix = "get_";
const char *isl_class::set_callback_prefix = "set_";
/* Should "method" be considered to be a static method?
* That is, is the first argument something other than
* an instance of the class?
/* Is the first argument an instance of the class?
*/
bool isl_class::is_static(FunctionDecl *method) const
bool isl_class::first_arg_matches_class(FunctionDecl *method) const
{
ParmVarDecl *param;
QualType type;
if (method->getNumParams() < 1)
return true;
return false;
param = method->getParamDecl(0);
type = param->getOriginalType();
if (!generator::is_isl_type(type))
return true;
return generator::extract_type(type) != name;
return false;
return generator::extract_type(type) == name;
}
/* Should "method" be considered to be a static method?
* That is, is the first argument something other than
* an instance of the class?
*
* If this method was copied from a superclass, then check
* whether the method is static with respect to this superclass.
*/
bool isl_class::is_static(FunctionDecl *method) const
{
if (copied_from.count(method) != 0)
return copied_from.at(method).is_static(method);
return !first_arg_matches_class(method);
}
/* Should "method" be considered to be a static method?
@ -417,8 +429,8 @@ generator::generator(SourceManager &SM, set<RecordDecl *> &exported_types,
std::string name = method->getName().str();
die(name + " has unhandled enum argument");
} else {
string fullname = c->name_without_type_suffixes(method);
c->methods[fullname].insert(method);
string name = c->method_name(method);
c->methods[name].insert(method);
}
}
@ -791,7 +803,8 @@ static std::string type_suffix(ParmVarDecl *param)
/* If "suffix" is a suffix of "s", then return "s" with the suffix removed.
* Otherwise, simply return "s".
*/
static std::string drop_suffix(const std::string &s, const std::string &suffix)
std::string generator::drop_suffix(const std::string &s,
const std::string &suffix)
{
size_t len, suffix_len;
@ -828,7 +841,7 @@ string isl_class::name_without_type_suffixes(FunctionDecl *method)
param = method->getParamDecl(i);
type = type_suffix(param);
name = drop_suffix(name, type);
name = generator::drop_suffix(name, type);
}
return name;

View File

@ -64,6 +64,18 @@ typedef std::set<FunctionDecl *, function_name_less> function_set;
* "fn_type" is a reference to a function that described subclasses, if any.
* If "fn_type" is set, then "type_subclasses" maps the values returned
* by that function to the names of the corresponding subclasses.
*
* The following fields are only used for the C++ bindings.
* For methods that are not derived from a function that applies
* directly to this class, but are rather copied from some ancestor,
* "copied_from" records the direct superclass from which the method
* was copied (where it may have been copied from a further ancestor) and
* "copy_depth" records the distance to the ancestor to which
* the function applies.
* "construction_types" contains the set of isl classes that can be
* implicitly converted to this class through a unary constructor,
* mapped to the single argument
* of this unary constructor.
*/
struct isl_class {
string name;
@ -80,6 +92,12 @@ struct isl_class {
FunctionDecl *fn_copy;
FunctionDecl *fn_free;
std::map<clang::FunctionDecl *, const isl_class &> copied_from;
std::map<clang::FunctionDecl *, int> copy_depth;
std::map<std::string, clang::ParmVarDecl *> construction_types;
/* Is the first argument an instance of the class? */
bool first_arg_matches_class(FunctionDecl *method) const;
/* Does "method" correspond to a static method? */
bool is_static(FunctionDecl *method) const;
/* Is this class a subclass based on a type function? */
@ -152,6 +170,8 @@ private:
void extract_class_automatic_conversions(const isl_class &clazz);
void extract_automatic_conversions();
public:
static std::string drop_suffix(const std::string &s,
const std::string &suffix);
static void die(const char *msg) __attribute__((noreturn));
static void die(string msg) __attribute__((noreturn));
static vector<string> find_superclasses(Decl *decl);

157
polly/lib/External/isl/interface/install-sh vendored Normal file → Executable file
View File

@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2018-03-11.20; # UTC
scriptversion=2020-11-14.01; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@ -69,6 +69,11 @@ posix_mkdir=
# Desired mode of installed file.
mode=0755
# Create dirs (including intermediate dirs) using mode 755.
# This is like GNU 'install' as of coreutils 8.32 (2020).
mkdir_umask=22
backupsuffix=
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
@ -99,18 +104,28 @@ Options:
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-C install only if different (preserve data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-p pass -p to $cpprog.
-s $stripprog installed files.
-S SUFFIX attempt to back up existing files, with suffix SUFFIX.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
By default, rm is invoked with -f; when overridden with RMPROG,
it's up to you to specify -f if you want it.
If -S is not specified, no backups are attempted.
Email bug reports to bug-automake@gnu.org.
Automake home page: https://www.gnu.org/software/automake/
"
while test $# -ne 0; do
@ -137,8 +152,13 @@ while test $# -ne 0; do
-o) chowncmd="$chownprog $2"
shift;;
-p) cpprog="$cpprog -p";;
-s) stripcmd=$stripprog;;
-S) backupsuffix="$2"
shift;;
-t)
is_target_a_directory=always
dst_arg=$2
@ -255,6 +275,10 @@ do
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
# Don't chown directories that already exist.
if test $dstdir_status = 0; then
chowncmd=""
fi
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
@ -301,22 +325,6 @@ do
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
@ -326,52 +334,49 @@ do
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
# Note that $RANDOM variable is not portable (e.g. dash); Use it
# here however when possible just to lower collision chance.
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
# The $RANDOM variable is not portable (e.g., dash). Use it
# here however when possible just to lower collision chance.
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
trap '
ret=$?
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
exit $ret
' 0
# Because "mkdir -p" follows existing symlinks and we likely work
# directly in world-writeable /tmp, make sure that the '$tmpdir'
# directory is successfully created first before we actually test
# 'mkdir -p' feature.
if (umask $mkdir_umask &&
$mkdirprog $mkdir_mode "$tmpdir" &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
test_tmpdir="$tmpdir/a"
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
fi
trap '' 0;;
esac;;
# Because "mkdir -p" follows existing symlinks and we likely work
# directly in world-writeable /tmp, make sure that the '$tmpdir'
# directory is successfully created first before we actually test
# 'mkdir -p'.
if (umask $mkdir_umask &&
$mkdirprog $mkdir_mode "$tmpdir" &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
test_tmpdir="$tmpdir/a"
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
fi
trap '' 0;;
esac
if
@ -382,7 +387,7 @@ do
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
@ -411,7 +416,7 @@ do
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
(umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
@ -451,7 +456,18 @@ do
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
(umask $cp_umask &&
{ test -z "$stripcmd" || {
# Create $dsttmp read-write so that cp doesn't create it read-only,
# which would cause strip to fail.
if test -z "$doit"; then
: >"$dsttmp" # No need to fork-exec 'touch'.
else
$doit touch "$dsttmp"
fi
}
} &&
$doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
@ -477,6 +493,13 @@ do
then
rm -f "$dsttmp"
else
# If $backupsuffix is set, and the file being installed
# already exists, attempt a backup. Don't worry if it fails,
# e.g., if mv doesn't support -f.
if test -n "$backupsuffix" && test -f "$dst"; then
$doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
fi
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
@ -491,9 +514,9 @@ do
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
$doit $rmcmd "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
{ $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1

File diff suppressed because it is too large Load Diff

View File

@ -36,6 +36,9 @@
/* Define if clang/Basic/DiagnosticOptions.h exists */
#undef HAVE_BASIC_DIAGNOSTICOPTIONS_H
/* define if the compiler supports basic C++11 syntax */
#undef HAVE_CXX11
/* Define if Driver constructor takes CXXIsProduction argument */
#undef HAVE_CXXISPRODUCTION

File diff suppressed because it is too large Load Diff

2
polly/lib/External/isl/interface/missing vendored Normal file → Executable file
View File

@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Copyright (C) 1996-2020 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,152 @@
#ifndef ISL_INTERFACE_PLAIN_CPP_H
#define ISL_INTERFACE_PLAIN_CPP_H
#include <functional>
#include <memory>
#include "cpp.h"
#include "generator.h"
using namespace std;
using namespace clang;
/* A type printer for converting argument and return types
* to string representations of the corresponding types
* in the checked C++ interface.
*/
struct checked_cpp_type_printer : public cpp_type_printer {
virtual std::string isl_bool() const override;
virtual std::string isl_stat() const override;
virtual std::string isl_size() const override;
virtual std::string isl_namespace() const override;
};
/* Generator for plain C++ bindings.
*
* "checked" is set if C++ bindings should be generated
* that rely on the user to check for error conditions.
*/
class plain_cpp_generator : public cpp_generator {
struct plain_printer;
struct decl_printer;
struct impl_printer;
protected:
bool checked;
public:
plain_cpp_generator(SourceManager &SM,
set<RecordDecl *> &exported_types,
set<FunctionDecl *> exported_functions,
set<FunctionDecl *> functions,
bool checked = false);
virtual void generate();
private:
void print_forward_declarations(ostream &os);
void print_declarations(ostream &os);
void print_class(ostream &os, const isl_class &clazz);
void print_class_forward_decl(ostream &os, const isl_class &clazz);
void print_implementations(ostream &os);
void print_class_impl(ostream &os, const isl_class &clazz);
void print_check_no_persistent_callback(ostream &os,
const isl_class &clazz, FunctionDecl *fd);
void print_invalid(ostream &os, int indent, const char *msg,
const char *checked_code);
void print_method_param_use(ostream &os, ParmVarDecl *param,
bool load_from_this_ptr);
std::unique_ptr<cpp_type_printer> type_printer();
std::string get_return_type(const Method &method);
string generate_callback_args(QualType type, bool cpp);
string generate_callback_type(QualType type);
string isl_bool2cpp();
string isl_namespace();
string param2cpp(QualType type);
};
/* A helper class for printing method declarations and definitions
* of a class for the plain C++ interface.
*
* "generator" is the C++ interface generator printing the classes.
*/
struct plain_cpp_generator::plain_printer : public cpp_generator::class_printer {
plain_cpp_generator &generator;
plain_printer(std::ostream &os, const isl_class &clazz,
plain_cpp_generator &generator, bool is_declaration) :
class_printer(os, clazz, generator, is_declaration),
generator(generator) {}
void print_persistent_callback_prototype(FunctionDecl *method);
void print_persistent_callback_setter_prototype(FunctionDecl *method);
void print_full_method_header(const Method &method);
void print_callback_data_decl(ParmVarDecl *param, const string &name);
virtual bool want_descendent_overloads(const function_set &methods)
override;
};
/* A helper class for printing method declarations of a class.
*/
struct plain_cpp_generator::decl_printer :
public plain_cpp_generator::plain_printer
{
decl_printer(std::ostream &os, const isl_class &clazz,
plain_cpp_generator &generator) :
plain_printer(os, clazz, generator, true) {}
void print_subclass_type();
void print_class_factory(const std::string &prefix = std::string());
void print_protected_constructors();
void print_copy_assignment();
void print_public_constructors();
void print_destructor();
void print_ptr();
void print_isa_type_template(int indent, const isl_class &super);
void print_downcast();
void print_ctx();
void print_persistent_callback_data(FunctionDecl *method);
void print_persistent_callbacks();
virtual void print_method(const Method &method) override;
virtual void print_method(const ConversionMethod &method) override;
virtual void print_get_method(FunctionDecl *fd) override;
};
/* A helper class for printing method definitions of a class.
*/
struct plain_cpp_generator::impl_printer :
public plain_cpp_generator::plain_printer
{
impl_printer(std::ostream &os, const isl_class &clazz,
plain_cpp_generator &generator) :
plain_printer(os, clazz, generator, false) {}
void print_arg_conversion(ParmVarDecl *dst, ParmVarDecl *src);
virtual void print_method(const Method &method) override;
virtual void print_method(const ConversionMethod &method) override;
virtual void print_get_method(FunctionDecl *fd) override;
void print_check_ptr(const char *ptr);
void print_check_ptr_start(const char *ptr);
void print_check_ptr_end(const char *ptr);
void print_class_factory();
void print_protected_constructors();
void print_public_constructors();
void print_copy_assignment();
void print_destructor();
void print_ptr();
void print_downcast();
void print_ctx();
void print_set_persistent_callback(const Method &method);
void print_persistent_callbacks();
void print_argument_validity_check(const Method &method);
void print_save_ctx(const Method &method);
void print_on_error_continue();
void print_exceptional_execution_check(const Method &method);
void print_method_return(const Method &method);
void print_stream_insertion();
void print_wrapped_call_checked(int indent, const std::string &call);
void print_wrapped_call(int indent, const std::string &call,
QualType rtype);
void print_callback_body(int indent, ParmVarDecl *param,
const string &name);
void print_callback_local(ParmVarDecl *param);
};
#endif

View File

@ -257,9 +257,8 @@ void python_generator::print_callback(ParmVarDecl *param, int arg)
printf("cb_arg%d", i);
}
printf(")\n");
printf(" except:\n");
printf(" import sys\n");
printf(" exc_info[0] = sys.exc_info()\n");
printf(" except BaseException as e:\n");
printf(" exc_info[0] = e\n");
if (is_isl_stat(return_type) || is_isl_bool(return_type))
printf(" return -1\n");
else
@ -325,9 +324,8 @@ void python_generator::print_arg_in_call(FunctionDecl *fd, const char *fmt,
*/
static void print_rethrow(int indent, const char *exc_info)
{
print_indent(indent, "if %s != None:\n", exc_info);
print_indent(indent, " raise (%s[0], %s[1], %s[2])\n",
exc_info, exc_info, exc_info);
print_indent(indent, "if %s is not None:\n", exc_info);
print_indent(indent, " raise %s\n", exc_info);
}
/* Print code with the given indentation that checks

View File

@ -0,0 +1,16 @@
#include <string>
#include <vector>
#include <clang/Lex/PreprocessorOptions.h>
/* Convert a clang::PreprocessorOptions to the fourth argument
* of CompilerInvocation::setLangDefaults, which may be either
* a clang::PreprocessorOptions itself or its Includes.
*/
struct setLangDefaultsArg4 {
setLangDefaultsArg4(clang::PreprocessorOptions &PO) : PO(PO) {}
operator clang::PreprocessorOptions &() { return PO; }
operator std::vector<std::string> &() { return PO.Includes; }
clang::PreprocessorOptions &PO;
};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,118 @@
#ifndef ISL_INTERFACE_TEMPLATE_CPP_H
#define ISL_INTERFACE_TEMPLATE_CPP_H
#include <initializer_list>
#include <iostream>
#include <map>
#include <memory>
#include <set>
#include <string>
#include <unordered_map>
#include "cpp.h"
struct Fixed;
struct TupleKind;
/* A shared pointer to a TupleKind.
*/
struct TupleKindPtr : public std::shared_ptr<const TupleKind> {
using Base = std::shared_ptr<const TupleKind>;
TupleKindPtr() = default;
TupleKindPtr(Fixed);
TupleKindPtr(Base base) : Base(base) {}
TupleKindPtr(const std::string &name);
TupleKindPtr(const TupleKindPtr &left, const TupleKindPtr &right);
};
/* A substitution mapping leaf tuple kind names to tuple kinds.
*/
using Substitution = std::unordered_map<std::string, TupleKindPtr>;
/* A representation of a (possibly improper) tuple kind.
* That is, this also includes tuple kinds for types
* that do not have any tuples.
*
* The kind could be a name (the base case) or
* a (currently) unnamed nested pair of tuple kinds.
*/
struct TupleKind {
TupleKind(const std::string &name) : name(name) {}
virtual std::string to_string() const;
virtual std::vector<std::string> params() const;
virtual TupleKindPtr apply(const Substitution &subs,
const TupleKindPtr &self) const;
virtual TupleKindPtr left() const;
virtual TupleKindPtr right() const;
const std::string name;
};
/* A sequence of tuple kinds, representing a kind of objects.
*/
struct Kind : public std::vector<TupleKindPtr> {
Kind() {}
Kind(std::initializer_list<TupleKindPtr> list) : vector(list) {}
bool is_anon() const;
bool is_set() const;
bool is_anon_set() const;
std::vector<std::string> params() const;
Kind apply(const Substitution &subs) const;
};
/* A representation of a template class.
*
* "class_name" is the name of the template class.
* "super_name" is the (fully qualified) name of the corresponding
* plain C++ interface class, from which this template class derives.
* "clazz" describes the plain class.
*
* "class_tuples" contains the specializations.
* It is initialized with a predefined set of specializations,
* but may be extended during the generations of the specializations.
*/
struct template_class {
const std::string class_name;
const std::string super_name;
const isl_class &clazz;
std::vector<Kind> class_tuples;
bool is_anon() const;
bool is_anon_set() const;
void add_specialization(const Kind &kind);
};
/* A generator for templated C++ bindings.
*
* "template_classes" contains all generated template classes,
* keyed on their names.
*/
class template_cpp_generator : public cpp_generator {
struct class_printer;
struct method_decl_printer;
struct method_impl_printer;
struct class_decl_printer;
struct class_impl_printer;
void add_template_class(const isl_class &clazz, const std::string &name,
const std::vector<Kind> &base_kinds);
public:
template_cpp_generator(clang::SourceManager &SM,
std::set<clang::RecordDecl *> &exported_types,
std::set<clang::FunctionDecl *> exported_functions,
std::set<clang::FunctionDecl *> functions);
virtual void generate() override;
void foreach_template_class(
const std::function<void(const template_class &)> &fn) const;
void print_forward_declarations(std::ostream &os);
void print_friends(std::ostream &os);
std::map<std::string, template_class> template_classes;
};
#endif

View File

@ -5,6 +5,7 @@
* Copyright 2014 INRIA Rocquencourt
* Copyright 2016 Sven Verdoolaege
* Copyright 2018,2020 Cerebras Systems
* Copyright 2021 Sven Verdoolaege
*
* Use of this software is governed by the MIT license
*
@ -37,21 +38,25 @@
#define EL_BASE aff
#include <isl_list_templ.c>
#include <isl_list_read_templ.c>
#undef EL_BASE
#define EL_BASE pw_aff
#include <isl_list_templ.c>
#include <isl_list_read_templ.c>
#undef EL_BASE
#define EL_BASE pw_multi_aff
#include <isl_list_templ.c>
#include <isl_list_read_templ.c>
#undef EL_BASE
#define EL_BASE union_pw_aff
#include <isl_list_templ.c>
#include <isl_list_read_templ.c>
#undef EL_BASE
#define EL_BASE union_pw_multi_aff
@ -159,6 +164,14 @@ __isl_give isl_aff *isl_aff_zero_on_domain_space(__isl_take isl_space *space)
return isl_aff_zero_on_domain(isl_local_space_from_space(space));
}
/* This function performs the same operation as isl_aff_zero_on_domain_space,
* but is considered as a function on an isl_space when exported.
*/
__isl_give isl_aff *isl_space_zero_aff_on_domain(__isl_take isl_space *space)
{
return isl_aff_zero_on_domain_space(space);
}
/* Return a piecewise affine expression defined on the specified domain
* that is equal to zero.
*/
@ -332,6 +345,16 @@ error:
return NULL;
}
/* This function performs the same operation as
* isl_aff_param_on_domain_space_id,
* but is considered as a function on an isl_space when exported.
*/
__isl_give isl_aff *isl_space_param_aff_on_domain_id(
__isl_take isl_space *space, __isl_take isl_id *id)
{
return isl_aff_param_on_domain_space_id(space, id);
}
__isl_null isl_aff *isl_aff_free(__isl_take isl_aff *aff)
{
if (!aff)
@ -4063,6 +4086,15 @@ error:
return NULL;
}
/* This function performs the same operation as isl_multi_aff_domain_map,
* but is considered as a function on an isl_space when exported.
*/
__isl_give isl_multi_aff *isl_space_domain_map_multi_aff(
__isl_take isl_space *space)
{
return isl_multi_aff_domain_map(space);
}
/* Given a map space, return an isl_multi_aff that maps a wrapped copy
* of the space to its range.
*/
@ -4107,6 +4139,15 @@ error:
return NULL;
}
/* This function performs the same operation as isl_multi_aff_range_map,
* but is considered as a function on an isl_space when exported.
*/
__isl_give isl_multi_aff *isl_space_range_map_multi_aff(
__isl_take isl_space *space)
{
return isl_multi_aff_range_map(space);
}
/* Given a map space, return an isl_pw_multi_aff that maps a wrapped copy
* of the space to its domain.
*/
@ -4116,6 +4157,15 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_domain_map(
return isl_pw_multi_aff_from_multi_aff(isl_multi_aff_domain_map(space));
}
/* This function performs the same operation as isl_pw_multi_aff_domain_map,
* but is considered as a function on an isl_space when exported.
*/
__isl_give isl_pw_multi_aff *isl_space_domain_map_pw_multi_aff(
__isl_take isl_space *space)
{
return isl_pw_multi_aff_domain_map(space);
}
/* Given a map space, return an isl_pw_multi_aff that maps a wrapped copy
* of the space to its range.
*/
@ -4125,6 +4175,15 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_map(
return isl_pw_multi_aff_from_multi_aff(isl_multi_aff_range_map(space));
}
/* This function performs the same operation as isl_pw_multi_aff_range_map,
* but is considered as a function on an isl_space when exported.
*/
__isl_give isl_pw_multi_aff *isl_space_range_map_pw_multi_aff(
__isl_take isl_space *space)
{
return isl_pw_multi_aff_range_map(space);
}
/* Given the space of a set and a range of set dimensions,
* construct an isl_multi_aff that projects out those dimensions.
*/
@ -4198,6 +4257,15 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_project_out_map(
return isl_pw_multi_aff_from_multi_aff(ma);
}
/* This function performs the same operation as isl_pw_multi_aff_from_multi_aff,
* but is considered as a function on an isl_multi_aff when exported.
*/
__isl_give isl_pw_multi_aff *isl_multi_aff_to_pw_multi_aff(
__isl_take isl_multi_aff *ma)
{
return isl_pw_multi_aff_from_multi_aff(ma);
}
/* Create a piecewise multi-affine expression in the given space that maps each
* input dimension to the corresponding output dimension.
*/
@ -4219,6 +4287,16 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_identity_on_domain_space(
return isl_pw_multi_aff_from_multi_aff(ma);
}
/* This function performs the same operation as
* isl_pw_multi_aff_identity_on_domain_space,
* but is considered as a function on an isl_space when exported.
*/
__isl_give isl_pw_multi_aff *isl_space_identity_pw_multi_aff_on_domain(
__isl_take isl_space *space)
{
return isl_pw_multi_aff_identity_on_domain_space(space);
}
/* Exploit the equalities in "eq" to simplify the affine expressions.
*/
static __isl_give isl_multi_aff *isl_multi_aff_substitute_equalities(
@ -4444,6 +4522,7 @@ __isl_give isl_set *isl_multi_aff_lex_gt_set(__isl_take isl_multi_aff *ma1,
#include <isl_pw_move_dims_templ.c>
#include <isl_pw_neg_templ.c>
#include <isl_pw_pullback_templ.c>
#include <isl_pw_range_tuple_id_templ.c>
#include <isl_pw_union_opt.c>
#undef BASE
@ -5057,7 +5136,7 @@ error:
*
* -e(...) + c2 + m x >= 0
*
* where m > 1 and e only depends on parameters and input dimemnsions?
* where m > 1 and e only depends on parameters and input dimensions?
*
* "offset" is the offset of the output dimensions
* "pos" is the position of output dimension x.
@ -5092,7 +5171,7 @@ static int is_potential_div_constraint(isl_int *c, int offset, int d, int total)
*
* -e(...) + c2 + m x >= 0 i.e., m x >= e(...) - c2
*
* where m > 1 and e only depends on parameters and input dimemnsions,
* where m > 1 and e only depends on parameters and input dimensions,
* and such that
*
* c1 + c2 < m i.e., -c2 >= c1 - (m - 1)
@ -5459,11 +5538,27 @@ error:
return NULL;
}
/* This function performs the same operation as isl_pw_multi_aff_from_map,
* but is considered as a function on an isl_map when exported.
*/
__isl_give isl_pw_multi_aff *isl_map_as_pw_multi_aff(__isl_take isl_map *map)
{
return isl_pw_multi_aff_from_map(map);
}
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_set(__isl_take isl_set *set)
{
return isl_pw_multi_aff_from_map(set);
}
/* This function performs the same operation as isl_pw_multi_aff_from_set,
* but is considered as a function on an isl_set when exported.
*/
__isl_give isl_pw_multi_aff *isl_set_as_pw_multi_aff(__isl_take isl_set *set)
{
return isl_pw_multi_aff_from_set(set);
}
/* Convert "map" into an isl_pw_multi_aff (if possible) and
* add it to *user.
*/
@ -5512,6 +5607,16 @@ __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_union_map(
return upma;
}
/* This function performs the same operation as
* isl_union_pw_multi_aff_from_union_map,
* but is considered as a function on an isl_union_map when exported.
*/
__isl_give isl_union_pw_multi_aff *isl_union_map_as_union_pw_multi_aff(
__isl_take isl_union_map *umap)
{
return isl_union_pw_multi_aff_from_union_map(umap);
}
/* Try and create an isl_union_pw_multi_aff that is equivalent
* to the given isl_union_set.
* The isl_union_set is required to be a singleton in each space.
@ -5624,7 +5729,7 @@ __isl_give isl_multi_aff *isl_multi_aff_substitute(
return maff;
}
/* Plug in "subs" for dimension "type", "pos" of "pma".
/* Plug in "subs" for input dimension "pos" of "pma".
*
* pma is of the form
*
@ -5643,7 +5748,7 @@ __isl_give isl_multi_aff *isl_multi_aff_substitute(
* and this contribution should simply be discarded.
*/
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_substitute(
__isl_take isl_pw_multi_aff *pma, enum isl_dim_type type, unsigned pos,
__isl_take isl_pw_multi_aff *pma, unsigned pos,
__isl_keep isl_pw_aff *subs)
{
int i, j, n;
@ -5665,7 +5770,7 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_substitute(
isl_set_copy(pma->p[i].set),
isl_set_copy(subs->p[j].set));
common = isl_set_substitute(common,
type, pos, subs->p[j].aff);
pos, subs->p[j].aff);
empty = isl_set_plain_is_empty(common);
if (empty < 0 || empty) {
isl_set_free(common);
@ -5676,7 +5781,7 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_substitute(
res_ij = isl_multi_aff_substitute(
isl_multi_aff_copy(pma->p[i].maff),
type, pos, subs->p[j].aff);
isl_dim_in, pos, subs->p[j].aff);
res = isl_pw_multi_aff_add_piece(res, common, res_ij);
}
@ -6076,7 +6181,7 @@ static
/* Extract an isl_pw_aff corresponding to output dimension "pos" of "pma".
*/
__isl_give isl_pw_aff *isl_pw_multi_aff_get_pw_aff(
__isl_give isl_pw_aff *isl_pw_multi_aff_get_at(
__isl_keep isl_pw_multi_aff *pma, int pos)
{
int i;
@ -6106,6 +6211,14 @@ __isl_give isl_pw_aff *isl_pw_multi_aff_get_pw_aff(
return pa;
}
/* This is an alternative name for the function above.
*/
__isl_give isl_pw_aff *isl_pw_multi_aff_get_pw_aff(
__isl_keep isl_pw_multi_aff *pma, int pos)
{
return isl_pw_multi_aff_get_at(pma, pos);
}
/* Return an isl_pw_multi_aff with the given "set" as domain and
* an unnamed zero-dimensional range.
*/
@ -6500,6 +6613,37 @@ error:
#include <isl_multi_zero_templ.c>
#include <isl_multi_unbind_params_templ.c>
/* Is every element of "mpa" defined over a single universe domain?
*/
isl_bool isl_multi_pw_aff_isa_multi_aff(__isl_keep isl_multi_pw_aff *mpa)
{
return isl_multi_pw_aff_every(mpa, &isl_pw_aff_isa_aff);
}
/* Given that every element of "mpa" is defined over a single universe domain,
* return the corresponding base expressions.
*/
__isl_give isl_multi_aff *isl_multi_pw_aff_as_multi_aff(
__isl_take isl_multi_pw_aff *mpa)
{
int i;
isl_size n;
isl_multi_aff *ma;
n = isl_multi_pw_aff_size(mpa);
if (n < 0)
mpa = isl_multi_pw_aff_free(mpa);
ma = isl_multi_aff_alloc(isl_multi_pw_aff_get_space(mpa));
for (i = 0; i < n; ++i) {
isl_aff *aff;
aff = isl_pw_aff_as_aff(isl_multi_pw_aff_get_at(mpa, i));
ma = isl_multi_aff_set_aff(ma, i, aff);
}
isl_multi_pw_aff_free(mpa);
return ma;
}
/* If "mpa" has an explicit domain, then intersect the domain of "map"
* with this explicit domain.
*/
@ -6809,6 +6953,15 @@ __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_multi_aff(
return mpa;
}
/* This function performs the same operation as isl_multi_pw_aff_from_multi_aff,
* but is considered as a function on an isl_multi_aff when exported.
*/
__isl_give isl_multi_pw_aff *isl_multi_aff_to_multi_pw_aff(
__isl_take isl_multi_aff *ma)
{
return isl_multi_pw_aff_from_multi_aff(ma);
}
/* Construct and return a multi piecewise affine expression
* that is equal to the given piecewise multi affine expression.
*
@ -6847,6 +7000,16 @@ __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_pw_multi_aff(
return mpa;
}
/* This function performs the same operation as
* isl_multi_pw_aff_from_pw_multi_aff,
* but is considered as a function on an isl_pw_multi_aff when exported.
*/
__isl_give isl_multi_pw_aff *isl_pw_multi_aff_to_multi_pw_aff(
__isl_take isl_pw_multi_aff *pma)
{
return isl_multi_pw_aff_from_pw_multi_aff(pma);
}
/* Do "pa1" and "pa2" represent the same function?
*
* We first check if they are obviously equal.
@ -7649,7 +7812,7 @@ __isl_give isl_pw_aff *isl_pw_aff_param_on_domain_id(
/* Return a multi affine expression that is equal to "mv" on domain
* space "space".
*/
__isl_give isl_multi_aff *isl_multi_aff_multi_val_on_space(
__isl_give isl_multi_aff *isl_multi_aff_multi_val_on_domain_space(
__isl_take isl_space *space, __isl_take isl_multi_val *mv)
{
int i;
@ -7686,6 +7849,24 @@ error:
return NULL;
}
/* This is an alternative name for the function above.
*/
__isl_give isl_multi_aff *isl_multi_aff_multi_val_on_space(
__isl_take isl_space *space, __isl_take isl_multi_val *mv)
{
return isl_multi_aff_multi_val_on_domain_space(space, mv);
}
/* This function performs the same operation as
* isl_multi_aff_multi_val_on_domain_space,
* but is considered as a function on an isl_space when exported.
*/
__isl_give isl_multi_aff *isl_space_multi_aff_on_domain_multi_val(
__isl_take isl_space *space, __isl_take isl_multi_val *mv)
{
return isl_multi_aff_multi_val_on_domain_space(space, mv);
}
/* Return a piecewise multi-affine expression
* that is equal to "mv" on "domain".
*/
@ -7701,6 +7882,16 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_multi_val_on_domain(
return isl_pw_multi_aff_alloc(domain, ma);
}
/* This function performs the same operation as
* isl_pw_multi_aff_multi_val_on_domain,
* but is considered as a function on an isl_set when exported.
*/
__isl_give isl_pw_multi_aff *isl_set_pw_multi_aff_on_domain_multi_val(
__isl_take isl_set *domain, __isl_take isl_multi_val *mv)
{
return isl_pw_multi_aff_multi_val_on_domain(domain, mv);
}
/* Internal data structure for isl_union_pw_multi_aff_multi_val_on_domain.
* mv is the value that should be attained on each domain set
* res collects the results
@ -8510,6 +8701,7 @@ error:
#include <isl_multi_nan_templ.c>
#include <isl_multi_tuple_id_templ.c>
#include <isl_multi_union_add_templ.c>
#include <isl_multi_zero_space_templ.c>
/* Does "mupa" have a non-trivial explicit domain?
*
@ -8585,6 +8777,16 @@ __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_multi_aff(
return isl_multi_union_pw_aff_from_multi_pw_aff(mpa);
}
/* This function performs the same operation as
* isl_multi_union_pw_aff_from_multi_aff, but is considered as a function on an
* isl_multi_aff when exported.
*/
__isl_give isl_multi_union_pw_aff *isl_multi_aff_to_multi_union_pw_aff(
__isl_take isl_multi_aff *ma)
{
return isl_multi_union_pw_aff_from_multi_aff(ma);
}
/* Construct and return a multi union piecewise affine expression
* that is equal to the given multi piecewise affine expression.
*/
@ -8712,6 +8914,17 @@ error:
return NULL;
}
/* This function performs the same operation as
* isl_multi_union_pw_aff_from_union_pw_multi_aff,
* but is considered as a function on an isl_union_pw_multi_aff when exported.
*/
__isl_give isl_multi_union_pw_aff *
isl_union_pw_multi_aff_as_multi_union_pw_aff(
__isl_take isl_union_pw_multi_aff *upma)
{
return isl_multi_union_pw_aff_from_union_pw_multi_aff(upma);
}
/* Try and create an isl_multi_union_pw_aff that is equivalent
* to the given isl_union_map.
* The isl_union_map is required to be single-valued in each space.
@ -8727,6 +8940,16 @@ __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_union_map(
return isl_multi_union_pw_aff_from_union_pw_multi_aff(upma);
}
/* This function performs the same operation as
* isl_multi_union_pw_aff_from_union_map,
* but is considered as a function on an isl_union_map when exported.
*/
__isl_give isl_multi_union_pw_aff *isl_union_map_as_multi_union_pw_aff(
__isl_take isl_union_map *umap)
{
return isl_multi_union_pw_aff_from_union_map(umap);
}
/* Return a multiple union piecewise affine expression
* that is equal to "mv" on "domain", assuming "domain" and "mv"
* have been aligned.

View File

@ -228,6 +228,14 @@ __isl_give isl_map *isl_map_from_multi_aff(__isl_take isl_multi_aff *ma)
return isl_map_from_multi_aff_internal(ma);
}
/* This function performs the same operation as isl_map_from_multi_aff,
* but is considered as a function on an isl_multi_aff when exported.
*/
__isl_give isl_map *isl_multi_aff_as_map(__isl_take isl_multi_aff *ma)
{
return isl_map_from_multi_aff(ma);
}
/* Construct a set mapping the parameter domain the multi-affine expression
* to its space, with each dimension in the space equated to the
* corresponding affine expression.
@ -239,6 +247,14 @@ __isl_give isl_set *isl_set_from_multi_aff(__isl_take isl_multi_aff *ma)
return isl_map_from_multi_aff_internal(ma);
}
/* This function performs the same operation as isl_set_from_multi_aff,
* but is considered as a function on an isl_multi_aff when exported.
*/
__isl_give isl_set *isl_multi_aff_as_set(__isl_take isl_multi_aff *ma)
{
return isl_set_from_multi_aff(ma);
}
/* Construct a basic map mapping a domain in the given space to
* to an n-dimensional range, with n the number of elements in the list,
* where each coordinate in the range is prescribed by the
@ -315,6 +331,14 @@ __isl_give isl_map *isl_map_from_pw_aff(__isl_take isl_pw_aff *pwaff)
return isl_map_from_pw_aff_internal(pwaff);
}
/* This function performs the same operation as isl_map_from_pw_aff,
* but is considered as a function on an isl_pw_aff when exported.
*/
__isl_give isl_map *isl_pw_aff_as_map(__isl_take isl_pw_aff *pa)
{
return isl_map_from_pw_aff(pa);
}
/* Construct a one-dimensional set with as parameter domain
* the domain of pwaff and the single set dimension
* corresponding to the affine expressions.
@ -376,6 +400,14 @@ __isl_give isl_map *isl_map_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma)
return isl_map_from_pw_multi_aff_internal(pma);
}
/* This function performs the same operation as isl_map_from_pw_multi_aff,
* but is considered as a function on an isl_pw_multi_aff when exported.
*/
__isl_give isl_map *isl_pw_multi_aff_as_map(__isl_take isl_pw_multi_aff *pma)
{
return isl_map_from_pw_multi_aff(pma);
}
__isl_give isl_set *isl_set_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma)
{
if (check_input_is_set(isl_pw_multi_aff_peek_space(pma)) < 0)
@ -383,6 +415,14 @@ __isl_give isl_set *isl_set_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma)
return set_from_map(isl_map_from_pw_multi_aff_internal(pma));
}
/* This function performs the same operation as isl_set_from_pw_multi_aff,
* but is considered as a function on an isl_pw_multi_aff when exported.
*/
__isl_give isl_set *isl_pw_multi_aff_as_set(__isl_take isl_pw_multi_aff *pma)
{
return isl_set_from_pw_multi_aff(pma);
}
/* Construct a set or map mapping the shared (parameter) domain
* of the piecewise affine expressions to the range of "mpa"
* with each dimension in the range equated to the
@ -438,6 +478,14 @@ __isl_give isl_map *isl_map_from_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa)
return map_from_multi_pw_aff(mpa);
}
/* This function performs the same operation as isl_map_from_multi_pw_aff,
* but is considered as a function on an isl_multi_pw_aff when exported.
*/
__isl_give isl_map *isl_multi_pw_aff_as_map(__isl_take isl_multi_pw_aff *mpa)
{
return isl_map_from_multi_pw_aff(mpa);
}
/* Construct a set mapping the shared parameter domain
* of the piecewise affine expressions to the space of "mpa"
* with each dimension in the range equated to the
@ -450,6 +498,14 @@ __isl_give isl_set *isl_set_from_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa)
return set_from_map(map_from_multi_pw_aff(mpa));
}
/* This function performs the same operation as isl_set_from_multi_pw_aff,
* but is considered as a function on an isl_multi_pw_aff when exported.
*/
__isl_give isl_set *isl_multi_pw_aff_as_set(__isl_take isl_multi_pw_aff *mpa)
{
return isl_set_from_multi_pw_aff(mpa);
}
/* Convert "pa" to an isl_map and add it to *umap.
*/
static isl_stat map_from_pw_aff_entry(__isl_take isl_pw_aff *pa, void *user)
@ -528,3 +584,13 @@ error:
isl_union_map_free(umap);
return NULL;
}
/* This function performs the same operation as
* isl_union_map_from_union_pw_multi_aff,
* but is considered as a function on an isl_union_pw_multi_aff when exported.
*/
__isl_give isl_union_map *isl_union_pw_multi_aff_as_union_map(
__isl_take isl_union_pw_multi_aff *upma)
{
return isl_union_map_from_union_pw_multi_aff(upma);
}

View File

@ -7,6 +7,7 @@
#include <isl/local_space.h>
#include <isl_int.h>
#include <isl_reordering.h>
#include <isl/stream.h>
/* ls represents the domain space.
*
@ -101,6 +102,8 @@ __isl_give isl_aff *isl_aff_normalize(__isl_take isl_aff *aff);
__isl_give isl_aff *isl_aff_expand_divs( __isl_take isl_aff *aff,
__isl_take isl_mat *div, int *exp);
__isl_give isl_aff *isl_stream_read_aff(__isl_keep isl_stream *s);
__isl_give isl_pw_aff *isl_pw_aff_alloc_size(__isl_take isl_space *space,
int n);
__isl_give isl_pw_aff *isl_pw_aff_reset_space(__isl_take isl_pw_aff *pwaff,
@ -126,6 +129,8 @@ __isl_give isl_pw_aff *isl_pw_aff_scale(__isl_take isl_pw_aff *pwaff,
__isl_give isl_pw_aff *isl_pw_aff_scale_down(__isl_take isl_pw_aff *pwaff,
isl_int f);
__isl_give isl_pw_aff *isl_stream_read_pw_aff(__isl_keep isl_stream *s);
isl_bool isl_aff_matching_params(__isl_keep isl_aff *aff,
__isl_keep isl_space *space);
isl_stat isl_aff_check_match_domain_space(__isl_keep isl_aff *aff,
@ -176,9 +181,15 @@ isl_stat isl_seq_preimage(isl_int *dst, isl_int *src,
__isl_give isl_aff *isl_aff_substitute_equalities(__isl_take isl_aff *aff,
__isl_take isl_basic_set *eq);
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_substitute(
__isl_take isl_pw_multi_aff *pma, enum isl_dim_type type, unsigned pos,
__isl_take isl_pw_multi_aff *pma, unsigned pos,
__isl_keep isl_pw_aff *subs);
__isl_give isl_pw_multi_aff *isl_stream_read_pw_multi_aff(
__isl_keep isl_stream *s);
__isl_give isl_union_pw_aff *isl_stream_read_union_pw_aff(
__isl_keep isl_stream *s);
isl_stat isl_pw_aff_check_named_params(__isl_keep isl_pw_aff *pa);
isl_stat isl_multi_aff_check_named_params(__isl_keep isl_multi_aff *ma);
isl_stat isl_pw_multi_aff_check_named_params(__isl_keep isl_pw_multi_aff *pma);

View File

@ -648,9 +648,9 @@ __isl_give isl_map *isl_ast_build_get_schedule_map(
/* Return the position of the dimension in build->domain for which
* an AST node is currently being generated.
*/
int isl_ast_build_get_depth(__isl_keep isl_ast_build *build)
isl_size isl_ast_build_get_depth(__isl_keep isl_ast_build *build)
{
return build ? build->depth : -1;
return build ? build->depth : isl_size_error;
}
/* Prepare for generating code for the next level.
@ -1373,14 +1373,14 @@ __isl_give isl_multi_aff *isl_ast_build_get_stride_expansion(
{
isl_space *space;
isl_multi_aff *ma;
int pos;
isl_size pos;
isl_aff *aff, *offset;
isl_val *stride;
if (!build)
pos = isl_ast_build_get_depth(build);
if (pos < 0)
return NULL;
pos = isl_ast_build_get_depth(build);
space = isl_ast_build_get_space(build, 1);
space = isl_space_map_from_set(space);
ma = isl_multi_aff_identity(space);
@ -1438,16 +1438,16 @@ __isl_give isl_ast_build *isl_ast_build_include_stride(
__isl_give isl_ast_build *isl_ast_build_detect_strides(
__isl_take isl_ast_build *build, __isl_take isl_set *set)
{
int pos;
isl_size pos;
isl_bool no_stride;
isl_val *stride;
isl_aff *offset;
isl_stride_info *si;
if (!build)
pos = isl_ast_build_get_depth(build);
if (pos < 0)
goto error;
pos = isl_ast_build_get_depth(build);
si = isl_set_get_stride_info(set, pos);
stride = isl_stride_info_get_stride(si);
offset = isl_stride_info_get_offset(si);
@ -1949,7 +1949,7 @@ isl_bool isl_ast_build_has_stride(__isl_keep isl_ast_build *build, int pos)
*
* f + s a
*
* with a an integer, return s through *stride.
* with a an integer, return s.
*/
__isl_give isl_val *isl_ast_build_get_stride(__isl_keep isl_ast_build *build,
int pos)

View File

@ -203,7 +203,7 @@ __isl_give isl_ast_build *isl_ast_build_clear_local_info(
__isl_take isl_ast_build *build);
__isl_give isl_ast_build *isl_ast_build_increase_depth(
__isl_take isl_ast_build *build);
int isl_ast_build_get_depth(__isl_keep isl_ast_build *build);
isl_size isl_ast_build_get_depth(__isl_keep isl_ast_build *build);
isl_size isl_ast_build_dim(__isl_keep isl_ast_build *build,
enum isl_dim_type type);
__isl_give isl_space *isl_ast_build_get_space(

View File

@ -743,12 +743,15 @@ static __isl_give isl_set *add_implied_guards(__isl_take isl_set *guard,
int degenerate, __isl_keep isl_basic_set *bounds,
__isl_keep isl_ast_build *build)
{
int depth, has_stride;
isl_size depth;
isl_bool has_stride;
isl_space *space;
isl_set *dom, *set;
depth = isl_ast_build_get_depth(build);
has_stride = isl_ast_build_has_stride(build, depth);
if (depth < 0 || has_stride < 0)
return isl_set_free(guard);
if (!has_stride && !degenerate)
return guard;
@ -783,7 +786,7 @@ static __isl_give isl_set *add_implied_guards(__isl_take isl_set *guard,
*
* We set the initialization part of the for loop to the single
* value attained by the current dimension.
* The increment and condition are not strictly needed as the are known
* The increment and condition are not strictly needed as they are known
* to be "1" and "iterator <= value" respectively.
*/
static __isl_give isl_ast_graft *refine_degenerate(
@ -1060,14 +1063,14 @@ static __isl_give isl_ast_graft *set_for_cond_from_set(
*/
static __isl_give isl_ast_expr *for_inc(__isl_keep isl_ast_build *build)
{
int depth;
isl_size depth;
isl_val *v;
isl_ctx *ctx;
if (!build)
depth = isl_ast_build_get_depth(build);
if (depth < 0)
return NULL;
ctx = isl_ast_build_get_ctx(build);
depth = isl_ast_build_get_depth(build);
if (!isl_ast_build_has_stride(build, depth))
return isl_ast_expr_alloc_int_si(ctx, 1);
@ -1178,7 +1181,7 @@ static __isl_give isl_ast_graft *refine_generic_bounds(
__isl_take isl_constraint_list *c_upper,
__isl_keep isl_set *domain, __isl_keep isl_ast_build *build)
{
int depth;
isl_size depth;
isl_ctx *ctx;
isl_pw_aff_list *lower;
int use_list;
@ -1186,10 +1189,10 @@ static __isl_give isl_ast_graft *refine_generic_bounds(
isl_pw_aff_list *upper_list = NULL;
isl_size n_lower, n_upper;
if (!graft || !c_lower || !c_upper || !build)
depth = isl_ast_build_get_depth(build);
if (!graft || !c_lower || !c_upper || depth < 0)
goto error;
depth = isl_ast_build_get_depth(build);
ctx = isl_ast_graft_get_ctx(graft);
n_lower = isl_constraint_list_n_constraint(c_lower);
@ -1284,13 +1287,17 @@ static __isl_give isl_ast_graft *refine_generic_split(
__isl_keep isl_set *domain, __isl_keep isl_ast_build *build)
{
struct isl_ast_count_constraints_data data;
isl_size depth;
isl_constraint_list *lower;
isl_constraint_list *upper;
depth = isl_ast_build_get_depth(build);
if (depth < 0)
list = isl_constraint_list_free(list);
if (!list)
return isl_ast_graft_free(graft);
data.pos = isl_ast_build_get_depth(build);
data.pos = depth;
list = isl_constraint_list_sort(list, &cmp_constraint, &data.pos);
if (!list)
@ -1345,14 +1352,14 @@ static __isl_give isl_ast_graft *refine_generic(
static __isl_give isl_ast_node *create_for(__isl_keep isl_ast_build *build,
int degenerate)
{
int depth;
isl_size depth;
isl_id *id;
isl_ast_node *node;
if (!build)
depth = isl_ast_build_get_depth(build);
if (depth < 0)
return NULL;
depth = isl_ast_build_get_depth(build);
id = isl_ast_build_get_iterator_id(build, depth);
node = isl_ast_node_alloc_for(id);
if (degenerate)
@ -1475,7 +1482,7 @@ static __isl_give isl_ast_graft *create_node_scaled(
__isl_take isl_basic_set *bounds, __isl_take isl_set *domain,
__isl_take isl_ast_build *build)
{
int depth;
isl_size depth;
int degenerate;
isl_bool eliminated;
isl_size n;
@ -1495,6 +1502,8 @@ static __isl_give isl_ast_graft *create_node_scaled(
build = isl_ast_build_set_executed(build, isl_union_map_copy(executed));
depth = isl_ast_build_get_depth(build);
if (depth < 0)
build = isl_ast_build_free(build);
sub_build = isl_ast_build_copy(build);
bounds = isl_basic_set_remove_redundancies(bounds);
bounds = isl_ast_build_specialize_basic_set(sub_build, bounds);
@ -1695,6 +1704,7 @@ static __isl_give isl_ast_graft *create_node(__isl_take isl_union_map *executed,
__isl_take isl_ast_build *build)
{
struct isl_check_scaled_data data;
isl_size depth;
isl_ctx *ctx;
isl_aff *offset;
isl_val *d;
@ -1703,7 +1713,10 @@ static __isl_give isl_ast_graft *create_node(__isl_take isl_union_map *executed,
if (!isl_options_get_ast_build_scale_strides(ctx))
return create_node_scaled(executed, bounds, domain, build);
data.depth = isl_ast_build_get_depth(build);
depth = isl_ast_build_get_depth(build);
if (depth < 0)
build = isl_ast_build_free(build);
data.depth = depth;
if (!isl_ast_build_has_stride(build, data.depth))
return create_node_scaled(executed, bounds, domain, build);
@ -1986,7 +1999,8 @@ struct isl_add_nodes_data {
static isl_stat add_nodes(__isl_take isl_basic_set_list *scc, void *user)
{
struct isl_add_nodes_data *data = user;
int i, depth;
int i;
isl_size depth;
isl_size n;
isl_basic_set *bset, *first;
isl_basic_set_list *list;
@ -2006,6 +2020,8 @@ static isl_stat add_nodes(__isl_take isl_basic_set_list *scc, void *user)
}
depth = isl_ast_build_get_depth(data->build);
if (depth < 0)
bset = isl_basic_set_free(bset);
space = isl_basic_set_get_space(bset);
space = isl_space_map_from_set(space);
gt = isl_basic_map_universe(space);
@ -2064,7 +2080,7 @@ static __isl_give isl_ast_graft_list *generate_sorted_domains(
{
isl_ctx *ctx;
struct isl_add_nodes_data data;
int depth;
isl_size depth;
isl_size n;
n = isl_basic_set_list_n_basic_set(domain_list);
@ -2083,7 +2099,7 @@ static __isl_give isl_ast_graft_list *generate_sorted_domains(
depth = isl_ast_build_get_depth(build);
data.executed = executed;
data.build = build;
if (isl_basic_set_list_foreach_scc(domain_list,
if (depth < 0 || isl_basic_set_list_foreach_scc(domain_list,
&domain_follows_at_depth, &depth,
&add_nodes, &data) < 0)
data.list = isl_ast_graft_list_free(data.list);
@ -2186,7 +2202,7 @@ static __isl_give isl_ast_graft_list *generate_parallel_domains(
__isl_keep isl_basic_set_list *domain_list,
__isl_keep isl_union_map *executed, __isl_keep isl_ast_build *build)
{
int depth;
isl_size depth;
struct isl_ast_generate_parallel_domains_data data;
data.n = isl_basic_set_list_n_basic_set(domain_list);
@ -2197,6 +2213,8 @@ static __isl_give isl_ast_graft_list *generate_parallel_domains(
return generate_sorted_domains(domain_list, executed, build);
depth = isl_ast_build_get_depth(build);
if (depth < 0)
return NULL;
data.list = NULL;
data.executed = executed;
data.build = build;
@ -2252,16 +2270,16 @@ static __isl_give isl_set *explicit_bounds(__isl_take isl_map *map,
__isl_keep isl_ast_build *build)
{
isl_set *domain;
int depth;
isl_size depth;
isl_size dim;
depth = isl_ast_build_get_depth(build);
dim = isl_map_dim(map, isl_dim_out);
if (dim < 0)
if (depth < 0 || dim < 0)
return isl_map_domain(isl_map_free(map));
map = isl_map_drop_constraints_involving_dims(map, isl_dim_out, 0, dim);
domain = isl_map_domain(map);
depth = isl_ast_build_get_depth(build);
dim = isl_set_dim(domain, isl_dim_set);
domain = isl_set_detect_equalities(domain);
domain = isl_set_drop_constraints_involving_dims(domain,
@ -2628,14 +2646,16 @@ static int foreach_iteration(__isl_take isl_set *domain,
int (*fn)(__isl_take isl_basic_set *bset, void *user), void *user)
{
int i, n;
int empty;
int depth;
isl_bool empty;
isl_size depth;
isl_multi_aff *expansion;
isl_basic_map *bmap;
isl_aff *lower = NULL;
isl_ast_build *stride_build;
depth = isl_ast_build_get_depth(build);
if (depth < 0)
domain = isl_set_free(domain);
domain = isl_ast_build_eliminate_inner(build, domain);
domain = isl_set_intersect(domain, isl_ast_build_get_domain(build));
@ -3286,7 +3306,7 @@ static isl_bool has_pure_outer_disjunction(__isl_keep isl_set *domain,
isl_basic_set *hull;
isl_set *shared, *inner;
isl_bool equal;
int depth;
isl_size depth;
isl_size n;
isl_size dim;
@ -3296,11 +3316,11 @@ static isl_bool has_pure_outer_disjunction(__isl_keep isl_set *domain,
if (n <= 1)
return isl_bool_false;
dim = isl_set_dim(domain, isl_dim_set);
if (dim < 0)
depth = isl_ast_build_get_depth(build);
if (dim < 0 || depth < 0)
return isl_bool_error;
inner = isl_set_copy(domain);
depth = isl_ast_build_get_depth(build);
inner = isl_set_drop_constraints_not_involving_dims(inner,
isl_dim_set, depth, dim - depth);
hull = isl_set_plain_unshifted_simple_hull(isl_set_copy(inner));
@ -3410,13 +3430,13 @@ static __isl_give isl_set *extract_disjunction(__isl_take isl_set *domain,
__isl_keep isl_ast_build *build)
{
isl_set *hull;
int depth;
isl_size depth;
isl_size dim;
domain = isl_ast_build_specialize(build, domain);
depth = isl_ast_build_get_depth(build);
dim = isl_set_dim(domain, isl_dim_set);
if (dim < 0)
if (depth < 0 || dim < 0)
return isl_set_free(domain);
domain = isl_set_eliminate(domain, isl_dim_set, depth, dim - depth);
domain = isl_set_remove_unknown_divs(domain);
@ -3606,7 +3626,8 @@ static __isl_give isl_ast_graft_list *generate_shifted_component_only_after(
static __isl_give isl_ast_graft_list *generate_shifted_component_tree(
__isl_take isl_union_map *executed, __isl_take isl_ast_build *build)
{
int i, depth;
int i;
isl_size depth;
int empty, has_isolate;
isl_space *space;
isl_union_set *schedule_domain;
@ -3638,11 +3659,14 @@ static __isl_give isl_ast_graft_list *generate_shifted_component_tree(
isl_set_free(domain);
return generate_shifted_component_tree_base(executed, build, 0);
}
depth = isl_ast_build_get_depth(build);
if (depth < 0)
goto error;
isolated = isl_ast_build_eliminate(build, isolated);
hull = isl_set_unshifted_simple_hull(isolated);
isolated = isl_set_from_basic_set(hull);
depth = isl_ast_build_get_depth(build);
space = isl_space_map_from_set(isl_set_get_space(isolated));
gt = isl_map_universe(space);
for (i = 0; i < depth; ++i)
@ -3946,16 +3970,18 @@ static int first_offset(struct isl_set_map_pair *domain, int *order, int n,
static __isl_give isl_union_map *construct_shifted_executed(
struct isl_set_map_pair *domain, int *order, int n,
__isl_keep isl_val *stride, __isl_keep isl_multi_val *offset,
__isl_take isl_ast_build *build)
__isl_keep isl_ast_build *build)
{
int i;
isl_union_map *executed;
isl_space *space;
isl_map *map;
int depth;
isl_size depth;
isl_constraint *c;
depth = isl_ast_build_get_depth(build);
if (depth < 0)
return NULL;
space = isl_ast_build_get_space(build, 1);
executed = isl_union_map_empty(isl_space_copy(space));
space = isl_space_map_from_set(space);
@ -4029,7 +4055,7 @@ static __isl_give isl_ast_graft_list *generate_shift_component(
{
isl_ast_graft_list *list;
int first;
int depth;
isl_size depth;
isl_val *val;
isl_multi_val *mv;
isl_space *space;
@ -4039,7 +4065,7 @@ static __isl_give isl_ast_graft_list *generate_shift_component(
depth = isl_ast_build_get_depth(build);
first = first_offset(domain, order, n, build);
if (first < 0)
if (depth < 0 || first < 0)
goto error;
mv = isl_multi_val_copy(offset);
@ -4160,7 +4186,7 @@ static __isl_give isl_ast_graft_list *generate_component(
__isl_take isl_ast_build *build)
{
int i, d;
int depth;
isl_size depth;
isl_ctx *ctx;
isl_map *map;
isl_set *deltas;
@ -4172,6 +4198,8 @@ static __isl_give isl_ast_graft_list *generate_component(
int res = 0;
depth = isl_ast_build_get_depth(build);
if (depth < 0)
goto error;
skip = n == 1;
if (skip >= 0 && !skip)
@ -4752,6 +4780,7 @@ static __isl_give isl_ast_graft_list *generate_components(
int i;
isl_ctx *ctx = isl_ast_build_get_ctx(build);
isl_size n = isl_union_map_n_map(executed);
isl_size depth;
struct isl_any_scheduled_after_data data;
struct isl_set_map_pair *next;
struct isl_tarjan_graph *g = NULL;
@ -4770,10 +4799,11 @@ static __isl_give isl_ast_graft_list *generate_components(
if (isl_union_map_foreach_map(executed, &extract_domain, &next) < 0)
goto error;
if (!build)
depth = isl_ast_build_get_depth(build);
if (depth < 0)
goto error;
data.build = build;
data.depth = isl_ast_build_get_depth(build);
data.depth = depth;
data.group_coscheduled = isl_options_get_ast_build_group_coscheduled(ctx);
g = isl_tarjan_graph_init(ctx, n, &any_scheduled_after, &data);
if (!g)
@ -4833,7 +4863,7 @@ error: list = isl_ast_graft_list_free(list);
static __isl_give isl_ast_graft_list *generate_next_level(
__isl_take isl_union_map *executed, __isl_take isl_ast_build *build)
{
int depth;
isl_size depth;
isl_size dim;
isl_size n;
@ -4849,7 +4879,7 @@ static __isl_give isl_ast_graft_list *generate_next_level(
depth = isl_ast_build_get_depth(build);
dim = isl_ast_build_dim(build, isl_dim_set);
if (dim < 0)
if (depth < 0 || dim < 0)
goto error;
if (depth >= dim)
return generate_inner_level(executed, build);

View File

@ -110,24 +110,24 @@ static isl_bool equal_independent_guards(__isl_keep isl_ast_graft_list *list,
{
int i;
isl_size n;
int depth;
isl_size depth;
isl_size dim;
isl_ast_graft *graft_0;
isl_bool equal = isl_bool_true;
isl_bool skip;
n = isl_ast_graft_list_n_ast_graft(list);
if (n < 0)
depth = isl_ast_build_get_depth(build);
if (n < 0 || depth < 0)
return isl_bool_error;
graft_0 = isl_ast_graft_list_get_ast_graft(list, 0);
if (!graft_0)
return isl_bool_error;
depth = isl_ast_build_get_depth(build);
dim = isl_set_dim(graft_0->guard, isl_dim_set);
if (dim < 0)
return isl_bool_error;
if (dim <= depth)
skip = isl_bool_error;
else if (dim <= depth)
skip = isl_bool_false;
else
skip = isl_set_involves_dims(graft_0->guard,
@ -161,12 +161,12 @@ static isl_bool equal_independent_guards(__isl_keep isl_ast_graft_list *list,
static __isl_give isl_set *hoist_guard(__isl_take isl_set *guard,
__isl_keep isl_ast_build *build)
{
int depth;
isl_size depth;
isl_size dim;
depth = isl_ast_build_get_depth(build);
dim = isl_set_dim(guard, isl_dim_set);
if (dim < 0)
if (depth < 0 || dim < 0)
return isl_set_free(guard);
if (depth < dim) {
guard = isl_set_remove_divs_involving_dims(guard,
@ -473,13 +473,14 @@ static __isl_give isl_ast_graft_list *graft_extend_body(
__isl_keep isl_ast_build *build)
{
isl_size n;
int depth;
isl_size depth;
isl_ast_graft *last;
isl_space *space;
isl_basic_set *enforced;
n = isl_ast_graft_list_n_ast_graft(list);
if (n < 0 || !graft)
depth = isl_ast_build_get_depth(build);
if (n < 0 || depth < 0 || !graft)
goto error;
extend_body(body, isl_ast_node_copy(graft->node));
if (!*body)
@ -487,7 +488,6 @@ static __isl_give isl_ast_graft_list *graft_extend_body(
last = isl_ast_graft_list_get_ast_graft(list, n - 1);
depth = isl_ast_build_get_depth(build);
space = isl_ast_build_get_space(build, 1);
enforced = isl_basic_set_empty(space);
enforced = update_enforced(enforced, last, depth);
@ -760,18 +760,18 @@ __isl_give isl_basic_set *isl_ast_graft_list_extract_shared_enforced(
{
int i;
isl_size n;
int depth;
isl_size depth;
isl_space *space;
isl_basic_set *enforced;
n = isl_ast_graft_list_n_ast_graft(list);
if (n < 0)
depth = isl_ast_build_get_depth(build);
if (n < 0 || depth < 0)
return NULL;
space = isl_ast_build_get_space(build, 1);
enforced = isl_basic_set_empty(space);
depth = isl_ast_build_get_depth(build);
for (i = 0; i < n; ++i) {
isl_ast_graft *graft;

View File

@ -432,6 +432,48 @@ __isl_give isl_fixed_box *isl_set_get_simple_fixed_box_hull(
return box;
}
/* Check whether the output elements lie on a rectangular lattice,
* possibly depending on the parameters and the input dimensions.
* Return a tile in this lattice.
* If no stride information can be found, then return a tile of size 1
* (and offset 0).
*
* Obtain stride information in each output dimension separately and
* combine the results.
*/
__isl_give isl_fixed_box *isl_map_get_range_lattice_tile(
__isl_keep isl_map *map)
{
int i;
isl_size n;
isl_space *space;
isl_fixed_box *box;
n = isl_map_dim(map, isl_dim_out);
if (n < 0)
return NULL;
space = isl_map_get_space(map);
box = isl_fixed_box_init(space);
for (i = 0; i < n; ++i) {
isl_val *stride;
isl_aff *offset;
isl_stride_info *si;
si = isl_map_get_range_stride_info(map, i);
stride = isl_stride_info_get_stride(si);
offset = isl_stride_info_get_offset(si);
isl_stride_info_free(si);
box = isl_fixed_box_set_valid_extent(box, i, offset, stride);
isl_aff_free(offset);
isl_val_free(stride);
}
return box;
}
#undef BASE
#define BASE multi_val
#include "print_yaml_field_templ.c"

View File

@ -498,7 +498,7 @@ static int number_of_constraints_increases(int i, int j,
* replaced if the total number of constraints does not increase.
* While the number of integer divisions in the two basic maps
* is assumed to be the same, the actual definitions may be different.
* We only copy the definition from one of the basic map if it is
* We only copy the definition from one of the basic maps if it is
* the same as that of the other basic map. Otherwise, we mark
* the integer division as unknown and simplify the basic map
* in an attempt to recover the integer division definition.
@ -3533,7 +3533,7 @@ static enum isl_change coalesce_subset_with_equalities(int i, int j,
return change;
}
/* Check if the union of and the basic maps represented by info[i] and info[j]
/* Check if the union of the basic maps represented by info[i] and info[j]
* can be represented by a single basic map, by aligning or equating
* their integer divisions.
* If so, replace the pair by the single basic map and return
@ -3606,6 +3606,8 @@ static isl_bool has_nested_div(__isl_keep isl_basic_map *bmap)
* If no such list can be constructed, then the number of elements
* in the returned list is smaller than the number of integer divisions
* in "bmap_i".
* The integer division of "bmap_i" and "bmap_j" are assumed to be known and
* not contain any nested divs.
*/
static __isl_give isl_aff_list *set_up_substitutions(
__isl_keep isl_basic_map *bmap_i, __isl_keep isl_basic_map *bmap_j,

View File

@ -574,24 +574,6 @@ __isl_give isl_constraint *isl_constraint_set_constant_si(
return constraint;
}
__isl_give isl_constraint *isl_constraint_set_coefficient(
__isl_take isl_constraint *constraint,
enum isl_dim_type type, int pos, isl_int v)
{
constraint = isl_constraint_cow(constraint);
if (isl_constraint_check_range(constraint, type, pos, 1) < 0)
return isl_constraint_free(constraint);
constraint->v = isl_vec_cow(constraint->v);
if (!constraint->v)
return isl_constraint_free(constraint);
pos += isl_local_space_offset(constraint->ls, type);
isl_int_set(constraint->v->el[pos], v);
return constraint;
}
/* Replace the coefficient of the variable of type "type" at position "pos"
* of "constraint" by "v".
*/

View File

@ -15,6 +15,7 @@
#define EL_BASE id
#include <isl_list_templ.c>
#include <isl_list_read_templ.c>
/* A special, static isl_id to use as domains (and ranges)
* of sets and parameters domains.

View File

@ -0,0 +1,63 @@
/*
* Copyright 2017 Sven Verdoolaege
*
* Use of this software is governed by the MIT license
*
* Written by Sven Verdoolaege.
*/
#include <isl/stream.h>
#include <isl_list_macro.h>
/* Read a list of elements of type EL from "s".
* The input format corresponds to the way lists are printed
* by isl_printer_print_list_*.
* In particular, the elements are separated by a comma and
* the entire list is surrounded by parentheses.
*/
static __isl_give LIST(EL) *FN(isl_stream_read,LIST(EL_BASE))(isl_stream *s)
{
isl_ctx *ctx;
LIST(EL) *list;
if (!s)
return NULL;
ctx = isl_stream_get_ctx(s);
list = FN(LIST(EL),alloc)(ctx, 0);
if (!list)
return NULL;
if (isl_stream_eat(s, '(') < 0)
return FN(LIST(EL),free)(list);
do {
EL *el;
el = FN(isl_stream_read,EL_BASE)(s);
list = FN(LIST(EL),add)(list, el);
if (!list)
return NULL;
} while (isl_stream_eat_if_available(s, ','));
if (isl_stream_eat(s, ')') < 0)
return FN(LIST(EL),free)(list);
return list;
}
/* Read a list of elements of type EL from the string "str".
* The input format corresponds to the way lists are printed
* by isl_printer_print_list_*.
* In particular, the elements are separated by a comma and
* the entire list is surrounded by parentheses.
*/
__isl_give LIST(EL) *FN(LIST(EL),read_from_str)(isl_ctx *ctx,
const char *str)
{
LIST(EL) *list;
isl_stream *s;
s = isl_stream_new_str(ctx, str);
if (!s)
return NULL;
list = FN(isl_stream_read,LIST(EL_BASE))(s);
isl_stream_free(s);
return list;
}

View File

@ -606,6 +606,14 @@ error:
return NULL;
}
/* This function performs the same operation as isl_*_list_from_*,
* but is considered as a function on the element when exported.
*/
__isl_give LIST(EL) *FN(EL,to_list)(__isl_take EL *el)
{
return FN(FN(LIST(EL),from),EL_BASE)(el);
}
/* Append the elements of "list2" to "list1", where "list1" is known
* to have only a single reference and enough room to hold
* the extra elements.

View File

@ -112,11 +112,32 @@ isl_size isl_map_dim(__isl_keep isl_map *map, enum isl_dim_type type)
return isl_space_dim(isl_map_peek_space(map), type);
}
/* Return the dimensionality of the domain (tuple) of the map.
*/
isl_size isl_map_domain_tuple_dim(__isl_keep isl_map *map)
{
return isl_map_dim(map, isl_dim_in);
}
/* Return the dimensionality of the range (tuple) of the map.
*/
isl_size isl_map_range_tuple_dim(__isl_keep isl_map *map)
{
return isl_map_dim(map, isl_dim_out);
}
isl_size isl_set_dim(__isl_keep isl_set *set, enum isl_dim_type type)
{
return isl_map_dim(set_to_map(set), type);
}
/* Return the dimensionality of the (tuple of the) set.
*/
isl_size isl_set_tuple_dim(__isl_keep isl_set *set)
{
return isl_set_dim(set, isl_dim_set);
}
/* Return the position of the variables of the given type
* within the sequence of variables of "bmap".
*/
@ -742,6 +763,22 @@ __isl_give isl_map *isl_map_set_tuple_id(__isl_take isl_map *map,
return isl_map_reset_space(map, isl_map_get_space(map));
}
/* Replace the identifier of the domain tuple of "map" by "id".
*/
__isl_give isl_map *isl_map_set_domain_tuple_id(__isl_take isl_map *map,
__isl_take isl_id *id)
{
return isl_map_set_tuple_id(map, isl_dim_in, id);
}
/* Replace the identifier of the range tuple of "map" by "id".
*/
__isl_give isl_map *isl_map_set_range_tuple_id(__isl_take isl_map *map,
__isl_take isl_id *id)
{
return isl_map_set_tuple_id(map, isl_dim_out, id);
}
__isl_give isl_set *isl_set_set_tuple_id(__isl_take isl_set *set,
__isl_take isl_id *id)
{
@ -770,12 +807,40 @@ isl_bool isl_map_has_tuple_id(__isl_keep isl_map *map, enum isl_dim_type type)
return map ? isl_space_has_tuple_id(map->dim, type) : isl_bool_error;
}
/* Does the domain tuple of "map" have an identifier?
*/
isl_bool isl_map_has_domain_tuple_id(__isl_keep isl_map *map)
{
return isl_map_has_tuple_id(map, isl_dim_in);
}
/* Does the range tuple of "map" have an identifier?
*/
isl_bool isl_map_has_range_tuple_id(__isl_keep isl_map *map)
{
return isl_map_has_tuple_id(map, isl_dim_out);
}
__isl_give isl_id *isl_map_get_tuple_id(__isl_keep isl_map *map,
enum isl_dim_type type)
{
return map ? isl_space_get_tuple_id(map->dim, type) : NULL;
}
/* Return the identifier of the domain tuple of "map", assuming it has one.
*/
__isl_give isl_id *isl_map_get_domain_tuple_id(__isl_keep isl_map *map)
{
return isl_map_get_tuple_id(map, isl_dim_in);
}
/* Return the identifier of the range tuple of "map", assuming it has one.
*/
__isl_give isl_id *isl_map_get_range_tuple_id(__isl_keep isl_map *map)
{
return isl_map_get_tuple_id(map, isl_dim_out);
}
isl_bool isl_set_has_tuple_id(__isl_keep isl_set *set)
{
return isl_map_has_tuple_id(set, isl_dim_set);
@ -2103,19 +2168,22 @@ error:
* Since the basic map has conflicting constraints,
* it must have at least one constraint, except perhaps
* if it was already explicitly marked as being empty.
* Do nothing in the latter case.
* Do nothing in the latter case, i.e., if it has been marked empty and
* has no constraints.
*/
__isl_give isl_basic_map *isl_basic_map_set_to_empty(
__isl_take isl_basic_map *bmap)
{
int i = 0;
isl_bool empty;
isl_size n;
isl_size total;
n = isl_basic_map_n_constraint(bmap);
empty = isl_basic_map_plain_is_empty(bmap);
if (empty < 0)
if (n < 0 || empty < 0)
return isl_basic_map_free(bmap);
if (empty)
if (n == 0 && empty)
return bmap;
total = isl_basic_map_dim(bmap, isl_dim_all);
if (total < 0)
@ -3423,6 +3491,14 @@ __isl_give isl_set *isl_set_from_basic_set(__isl_take isl_basic_set *bset)
return isl_map_from_basic_map(bset);
}
/* This function performs the same operation as isl_set_from_basic_set,
* but is considered as a function on an isl_basic_set when exported.
*/
__isl_give isl_set *isl_basic_set_to_set(__isl_take isl_basic_set *bset)
{
return isl_set_from_basic_set(bset);
}
__isl_give isl_map *isl_map_from_basic_map(__isl_take isl_basic_map *bmap)
{
struct isl_map *map;
@ -3711,6 +3787,41 @@ __isl_give isl_basic_set *isl_basic_set_intersect_params(
return isl_basic_set_intersect(bset1, bset2);
}
/* Does "map" consist of a single disjunct, without any local variables?
*/
static isl_bool is_convex_no_locals(__isl_keep isl_map *map)
{
isl_size n_div;
if (!map)
return isl_bool_error;
if (map->n != 1)
return isl_bool_false;
n_div = isl_basic_map_dim(map->p[0], isl_dim_div);
if (n_div < 0)
return isl_bool_error;
if (n_div != 0)
return isl_bool_false;
return isl_bool_true;
}
/* Check that "map" consists of a single disjunct, without any local variables.
*/
static isl_stat check_convex_no_locals(__isl_keep isl_map *map)
{
isl_bool ok;
ok = is_convex_no_locals(map);
if (ok < 0)
return isl_stat_error;
if (ok)
return isl_stat_ok;
isl_die(isl_map_get_ctx(map), isl_error_internal,
"unexpectedly not convex or involving local variables",
return isl_stat_error);
}
/* Special case of isl_map_intersect, where both map1 and map2
* are convex, without any divs and such that either map1 or map2
* contains a single constraint. This constraint is then simply
@ -3719,10 +3830,9 @@ __isl_give isl_basic_set *isl_basic_set_intersect_params(
static __isl_give isl_map *map_intersect_add_constraint(
__isl_take isl_map *map1, __isl_take isl_map *map2)
{
isl_assert(map1->ctx, map1->n == 1, goto error);
isl_assert(map2->ctx, map1->n == 1, goto error);
isl_assert(map1->ctx, map1->p[0]->n_div == 0, goto error);
isl_assert(map2->ctx, map1->p[0]->n_div == 0, goto error);
if (check_convex_no_locals(map1) < 0 ||
check_convex_no_locals(map2) < 0)
goto error;
if (map2->p[0]->n_eq + map2->p[0]->n_ineq != 1)
return isl_map_intersect(map2, map1);
@ -3788,8 +3898,8 @@ static __isl_give isl_map *map_intersect_internal(__isl_take isl_map *map1,
return map2;
}
if (map1->n == 1 && map2->n == 1 &&
map1->p[0]->n_div == 0 && map2->p[0]->n_div == 0 &&
if (is_convex_no_locals(map1) == isl_bool_true &&
is_convex_no_locals(map2) == isl_bool_true &&
isl_space_is_equal(map1->dim, map2->dim) &&
(map1->p[0]->n_eq + map1->p[0]->n_ineq == 1 ||
map2->p[0]->n_eq + map2->p[0]->n_ineq == 1))
@ -6277,6 +6387,14 @@ __isl_give isl_map *isl_map_universe(__isl_take isl_space *space)
return map;
}
/* This function performs the same operation as isl_map_universe,
* but is considered as a function on an isl_space when exported.
*/
__isl_give isl_map *isl_space_universe_map(__isl_take isl_space *space)
{
return isl_map_universe(space);
}
__isl_give isl_set *isl_set_universe(__isl_take isl_space *space)
{
struct isl_set *set;
@ -6287,6 +6405,14 @@ __isl_give isl_set *isl_set_universe(__isl_take isl_space *space)
return set;
}
/* This function performs the same operation as isl_set_universe,
* but is considered as a function on an isl_space when exported.
*/
__isl_give isl_set *isl_space_universe_set(__isl_take isl_space *space)
{
return isl_set_universe(space);
}
__isl_give isl_map *isl_map_dup(__isl_keep isl_map *map)
{
int i;
@ -13399,129 +13525,19 @@ __isl_give isl_aff *isl_basic_set_get_div(__isl_keep isl_basic_set *bset,
return isl_basic_map_get_div(bset, pos);
}
/* Plug in "subs" for dimension "type", "pos" of "bset".
*
* Let i be the dimension to replace and let "subs" be of the form
*
* f/d
*
* Any integer division with a non-zero coefficient for i,
*
* floor((a i + g)/m)
*
* is replaced by
*
* floor((a f + d g)/(m d))
*
* Constraints of the form
*
* a i + g
*
* are replaced by
*
* a f + d g
*
* We currently require that "subs" is an integral expression.
* Handling rational expressions may require us to add stride constraints
* as we do in isl_basic_set_preimage_multi_aff.
*/
__isl_give isl_basic_set *isl_basic_set_substitute(
__isl_take isl_basic_set *bset,
enum isl_dim_type type, unsigned pos, __isl_keep isl_aff *subs)
{
int i;
isl_int v;
isl_ctx *ctx;
isl_size n_div;
if (bset && isl_basic_set_plain_is_empty(bset))
return bset;
bset = isl_basic_set_cow(bset);
if (!bset || !subs)
goto error;
ctx = isl_basic_set_get_ctx(bset);
if (!isl_space_is_equal(bset->dim, subs->ls->dim))
isl_die(ctx, isl_error_invalid,
"spaces don't match", goto error);
n_div = isl_local_space_dim(subs->ls, isl_dim_div);
if (n_div < 0)
goto error;
if (n_div != 0)
isl_die(ctx, isl_error_unsupported,
"cannot handle divs yet", goto error);
if (!isl_int_is_one(subs->v->el[0]))
isl_die(ctx, isl_error_invalid,
"can only substitute integer expressions", goto error);
pos += isl_basic_set_offset(bset, type);
isl_int_init(v);
for (i = 0; i < bset->n_eq; ++i) {
if (isl_int_is_zero(bset->eq[i][pos]))
continue;
isl_int_set(v, bset->eq[i][pos]);
isl_int_set_si(bset->eq[i][pos], 0);
isl_seq_combine(bset->eq[i], subs->v->el[0], bset->eq[i],
v, subs->v->el + 1, subs->v->size - 1);
}
for (i = 0; i < bset->n_ineq; ++i) {
if (isl_int_is_zero(bset->ineq[i][pos]))
continue;
isl_int_set(v, bset->ineq[i][pos]);
isl_int_set_si(bset->ineq[i][pos], 0);
isl_seq_combine(bset->ineq[i], subs->v->el[0], bset->ineq[i],
v, subs->v->el + 1, subs->v->size - 1);
}
for (i = 0; i < bset->n_div; ++i) {
if (isl_int_is_zero(bset->div[i][1 + pos]))
continue;
isl_int_set(v, bset->div[i][1 + pos]);
isl_int_set_si(bset->div[i][1 + pos], 0);
isl_seq_combine(bset->div[i] + 1,
subs->v->el[0], bset->div[i] + 1,
v, subs->v->el + 1, subs->v->size - 1);
isl_int_mul(bset->div[i][0], bset->div[i][0], subs->v->el[0]);
}
isl_int_clear(v);
bset = isl_basic_set_simplify(bset);
return isl_basic_set_finalize(bset);
error:
isl_basic_set_free(bset);
return NULL;
}
/* Plug in "subs" for dimension "type", "pos" of "set".
/* Plug in "subs" for set dimension "pos" of "set".
*/
__isl_give isl_set *isl_set_substitute(__isl_take isl_set *set,
enum isl_dim_type type, unsigned pos, __isl_keep isl_aff *subs)
unsigned pos, __isl_keep isl_aff *subs)
{
int i;
isl_multi_aff *ma;
if (set && isl_set_plain_is_empty(set))
return set;
set = isl_set_cow(set);
if (!set || !subs)
goto error;
for (i = set->n - 1; i >= 0; --i) {
set->p[i] = isl_basic_set_substitute(set->p[i], type, pos, subs);
set = set_from_map(remove_if_empty(set_to_map(set), i));
if (!set)
return NULL;
}
return set;
error:
isl_set_free(set);
return NULL;
ma = isl_multi_aff_identity_on_domain_space(isl_set_get_space(set));
ma = isl_multi_aff_set_aff(ma, pos, isl_aff_copy(subs));
return isl_set_preimage_multi_aff(set, ma);
}
/* Check if the range of "ma" is compatible with the domain or range

View File

@ -20,6 +20,7 @@
#define EL_BASE map
#include <isl_list_templ.c>
#include <isl_list_read_templ.c>
#undef EL
#define EL isl_union_map

View File

@ -500,7 +500,7 @@ isl_bool isl_map_align_params_map_map_and_test(__isl_keep isl_map *map1,
isl_bool (*fn)(__isl_keep isl_map *map1, __isl_keep isl_map *map2));
__isl_give isl_set *isl_set_substitute(__isl_take isl_set *set,
enum isl_dim_type type, unsigned pos, __isl_keep isl_aff *subs);
unsigned pos, __isl_keep isl_aff *subs);
__isl_give isl_set *isl_set_gist_params_basic_set(__isl_take isl_set *set,
__isl_take isl_basic_set *context);

View File

@ -643,7 +643,7 @@ error:
}
/* A diff collector that aborts as soon as its add function is called,
* setting empty to 0.
* setting empty to isl_false.
*/
struct isl_is_empty_diff_collector {
struct isl_diff_collector dc;

View File

@ -72,6 +72,16 @@ __isl_give MULTI(BASE) *FN(MULTI(BASE),identity_on_domain_space)(
return FN(MULTI(BASE),identity)(isl_space_map_from_set(space));
}
/* This function performs the same operation as
* isl_multi_*_identity_on_domain_space,
* but is considered as a function on an isl_space when exported.
*/
__isl_give MULTI(BASE) *FN(FN(isl_space_identity_multi,BASE),on_domain)(
__isl_take isl_space *space)
{
return FN(MULTI(BASE),identity_on_domain_space)(space);
}
/* Create a multi expression in the same space as "multi" that maps each
* input dimension to the corresponding output dimension.
*/

View File

@ -479,6 +479,15 @@ error:
return NULL;
}
/* This function performs the same operation as isl_multi_*_from_*_list,
* but is considered as a function on an isl_space when exported.
*/
__isl_give MULTI(BASE) *FN(isl_space_multi,BASE)(__isl_take isl_space *space,
__isl_take LIST(EL) *list)
{
return FN(FN(MULTI(BASE),from),LIST(BASE))(space, list);
}
__isl_give MULTI(BASE) *FN(MULTI(BASE),drop_dims)(
__isl_take MULTI(BASE) *multi,
enum isl_dim_type type, unsigned first, unsigned n)

View File

@ -28,6 +28,18 @@ isl_bool FN(MULTI(BASE),has_tuple_id)(__isl_keep MULTI(BASE) *multi,
return isl_space_has_tuple_id(multi->space, type);
}
/* Does the (range) tuple of "multi" have an identifier?
*
* Technically, the implementation should use isl_dim_set if "multi"
* lives in a set space and isl_dim_out if it lives in a map space.
* Internally, however, it can be assumed that isl_dim_set is equal
* to isl_dim_out.
*/
isl_bool FN(MULTI(BASE),has_range_tuple_id)(__isl_keep MULTI(BASE) *multi)
{
return FN(MULTI(BASE),has_tuple_id)(multi, isl_dim_out);
}
/* Return the id of the specified tuple.
*/
__isl_give isl_id *FN(MULTI(BASE),get_tuple_id)(__isl_keep MULTI(BASE) *multi,
@ -36,6 +48,19 @@ __isl_give isl_id *FN(MULTI(BASE),get_tuple_id)(__isl_keep MULTI(BASE) *multi,
return multi ? isl_space_get_tuple_id(multi->space, type) : NULL;
}
/* Return the identifier of the (range) tuple of "multi", assuming it has one.
*
* Technically, the implementation should use isl_dim_set if "multi"
* lives in a set space and isl_dim_out if it lives in a map space.
* Internally, however, it can be assumed that isl_dim_set is equal
* to isl_dim_out.
*/
__isl_give isl_id *FN(MULTI(BASE),get_range_tuple_id)(
__isl_keep MULTI(BASE) *multi)
{
return FN(MULTI(BASE),get_tuple_id)(multi, isl_dim_out);
}
__isl_give MULTI(BASE) *FN(MULTI(BASE),set_tuple_name)(
__isl_keep MULTI(BASE) *multi, enum isl_dim_type type,
const char *s)
@ -71,6 +96,19 @@ error:
return NULL;
}
/* Replace the identifier of the (range) tuple of "multi" by "id".
*
* Technically, the implementation should use isl_dim_set if "multi"
* lives in a set space and isl_dim_out if it lives in a map space.
* Internally, however, it can be assumed that isl_dim_set is equal
* to isl_dim_out.
*/
__isl_give MULTI(BASE) *FN(MULTI(BASE),set_range_tuple_id)(
__isl_take MULTI(BASE) *multi, __isl_take isl_id *id)
{
return FN(MULTI(BASE),set_tuple_id)(multi, isl_dim_out, id);
}
/* Drop the id on the specified tuple.
*/
__isl_give MULTI(BASE) *FN(MULTI(BASE),reset_tuple_id)(
@ -92,3 +130,16 @@ __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_tuple_id)(
return FN(MULTI(BASE),reset_space)(multi, space);
}
/* Drop the identifier of the (range) tuple of "multi".
*
* Technically, the implementation should use isl_dim_set if "multi"
* lives in a set space and isl_dim_out if it lives in a map space.
* Internally, however, it can be assumed that isl_dim_set is equal
* to isl_dim_out.
*/
__isl_give MULTI(BASE) *FN(MULTI(BASE),reset_range_tuple_id)(
__isl_take MULTI(BASE) *multi)
{
return FN(MULTI(BASE),reset_tuple_id)(multi, isl_dim_out);
}

View File

@ -0,0 +1,21 @@
/*
* Copyright 2020 Cerebras Systems
*
* Use of this software is governed by the MIT license
*
* Written by Sven Verdoolaege,
* Cerebras Systems, 175 S San Antonio Rd, Los Altos, CA, USA
*/
#include <isl/space.h>
#include "isl_multi_macro.h"
/* This function performs the same operation as isl_multi_*_zero,
* but is considered as a function on an isl_space when exported.
*/
__isl_give MULTI(BASE) *FN(isl_space_zero_multi,BASE)(
__isl_take isl_space *space)
{
return FN(MULTI(BASE),zero)(space);
}

View File

@ -49,3 +49,5 @@ error:
isl_space_free(space);
return NULL;
}
#include "isl_multi_zero_space_templ.c"

View File

@ -634,6 +634,14 @@ __isl_give isl_set *isl_set_from_point(__isl_take isl_point *pnt)
return isl_set_from_basic_set(bset);
}
/* This function performs the same operation as isl_set_from_point,
* but is considered as a function on an isl_point when exported.
*/
__isl_give isl_set *isl_point_to_set(__isl_take isl_point *pnt)
{
return isl_set_from_point(pnt);
}
/* Construct a union set, containing the single element "pnt".
* If "pnt" is void, then return an empty union set.
*/

View File

@ -4773,6 +4773,33 @@ struct isl_multiplicative_call_data_pw_qpolynomial {
isl_pw_qpolynomial *pwqp;
};
/* Call "fn" on "bset" and return the result,
* but first check if "bset" has any redundant constraints or
* implicit equality constraints.
* If so, there may be further opportunities for detecting factors or
* removing equality constraints, so recursively call
* the top-level isl_basic_set_multiplicative_call.
*/
static __isl_give isl_pw_qpolynomial *multiplicative_call_base(
__isl_take isl_basic_set *bset,
__isl_give isl_pw_qpolynomial *(*fn)(__isl_take isl_basic_set *bset))
{
isl_size n1, n2, n_eq;
n1 = isl_basic_set_n_constraint(bset);
if (n1 < 0)
bset = isl_basic_set_free(bset);
bset = isl_basic_set_remove_redundancies(bset);
bset = isl_basic_set_detect_equalities(bset);
n2 = isl_basic_set_n_constraint(bset);
n_eq = isl_basic_set_n_equality(bset);
if (n2 < 0 || n_eq < 0)
bset = isl_basic_set_free(bset);
else if (n2 < n1 || n_eq > 0)
return isl_basic_set_multiplicative_call(bset, fn);
return fn(bset);
}
/* isl_factorizer_every_factor_basic_set callback that applies
* data->fn to the factor "bset" and multiplies in the result
* in data->pwqp.
@ -4781,9 +4808,11 @@ static isl_bool multiplicative_call_factor_pw_qpolynomial(
__isl_keep isl_basic_set *bset, void *user)
{
struct isl_multiplicative_call_data_pw_qpolynomial *data = user;
isl_pw_qpolynomial *res;
bset = isl_basic_set_copy(bset);
data->pwqp = isl_pw_qpolynomial_mul(data->pwqp, data->fn(bset));
res = multiplicative_call_base(bset, data->fn);
data->pwqp = isl_pw_qpolynomial_mul(data->pwqp, res);
if (!data->pwqp)
return isl_bool_error;
@ -4812,7 +4841,7 @@ static __isl_give isl_pw_qpolynomial *compressed_multiplicative_call(
goto error;
if (f->n_group == 0) {
isl_factorizer_free(f);
return fn(bset);
return multiplicative_call_base(bset, fn);
}
space = isl_basic_set_get_space(bset);

View File

@ -0,0 +1,46 @@
/*
* Copyright 2018 Sven Verdoolaege
* Copyright 2019 Cerebras Systems
*
* Use of this software is governed by the MIT license
*
* Written by Sven Verdoolaege,
* Cerebras Systems, 175 S San Antonio Rd, Los Altos, CA, USA
*/
/* Does the (range) tuple of "pw" have an identifier?
*
* Technically, the implementation should use isl_dim_set if "pw"
* lives in a set space and isl_dim_out if it lives in a map space.
* Internally, however, it can be assumed that isl_dim_set is equal
* to isl_dim_out.
*/
isl_bool FN(PW,has_range_tuple_id)(__isl_keep PW *pw)
{
return FN(PW,has_tuple_id)(pw, isl_dim_out);
}
/* Return the identifier of the (range) tuple of "pw", assuming it has one.
*
* Technically, the implementation should use isl_dim_set if "pw"
* lives in a set space and isl_dim_out if it lives in a map space.
* Internally, however, it can be assumed that isl_dim_set is equal
* to isl_dim_out.
*/
__isl_give isl_id *FN(PW,get_range_tuple_id)(__isl_keep PW *pw)
{
return FN(PW,get_tuple_id)(pw, isl_dim_out);
}
/* Replace the identifier of the (range) tuple of "pw" by "id".
*
* Technically, the implementation should use isl_dim_set if "pw"
* lives in a set space and isl_dim_out if it lives in a map space.
* Internally, however, it can be assumed that isl_dim_set is equal
* to isl_dim_out.
*/
__isl_give PW *FN(PW,set_range_tuple_id)(__isl_take PW *pw,
__isl_take isl_id *id)
{
return FN(PW,set_tuple_id)(pw, isl_dim_out, id);
}

View File

@ -176,11 +176,17 @@ error:
}
/* Replace the constraints of type "type" in "sc" by "c".
*
* First detect any equality constraints that may be implicit in "c"
* in order to try and improve the accuracy of the input (and therefore
* also the output) of the isl_set_coefficients calls
* that are eventually performed on (some of) these constraints.
*/
static __isl_give isl_schedule_constraints *isl_schedule_constraints_set(
__isl_take isl_schedule_constraints *sc, enum isl_edge_type type,
__isl_take isl_union_map *c)
{
c = isl_union_map_detect_equalities(c);
if (!sc || !c)
goto error;

View File

@ -30,3 +30,4 @@
#define EL_BASE union_set
#include <isl_list_templ.c>
#include <isl_list_read_templ.c>

View File

@ -578,6 +578,24 @@ isl_bool isl_space_has_tuple_id(__isl_keep isl_space *space,
return isl_bool_ok(space->tuple_id[type - isl_dim_in] != NULL);
}
/* Does the domain tuple of the map space "space" have an identifier?
*/
isl_bool isl_space_has_domain_tuple_id(__isl_keep isl_space *space)
{
if (isl_space_check_is_map(space) < 0)
return isl_bool_error;
return isl_space_has_tuple_id(space, isl_dim_in);
}
/* Does the range tuple of the map space "space" have an identifier?
*/
isl_bool isl_space_has_range_tuple_id(__isl_keep isl_space *space)
{
if (isl_space_check_is_map(space) < 0)
return isl_bool_error;
return isl_space_has_tuple_id(space, isl_dim_out);
}
__isl_give isl_id *isl_space_get_tuple_id(__isl_keep isl_space *space,
enum isl_dim_type type)
{
@ -594,6 +612,28 @@ __isl_give isl_id *isl_space_get_tuple_id(__isl_keep isl_space *space,
return isl_id_copy(space->tuple_id[type - isl_dim_in]);
}
/* Return the identifier of the domain tuple of the map space "space",
* assuming it has one.
*/
__isl_give isl_id *isl_space_get_domain_tuple_id(
__isl_keep isl_space *space)
{
if (isl_space_check_is_map(space) < 0)
return NULL;
return isl_space_get_tuple_id(space, isl_dim_in);
}
/* Return the identifier of the range tuple of the map space "space",
* assuming it has one.
*/
__isl_give isl_id *isl_space_get_range_tuple_id(
__isl_keep isl_space *space)
{
if (isl_space_check_is_map(space) < 0)
return NULL;
return isl_space_get_tuple_id(space, isl_dim_out);
}
__isl_give isl_space *isl_space_set_tuple_id(__isl_take isl_space *space,
enum isl_dim_type type, __isl_take isl_id *id)
{
@ -615,6 +655,28 @@ error:
return NULL;
}
/* Replace the identifier of the domain tuple of the map space "space"
* by "id".
*/
__isl_give isl_space *isl_space_set_domain_tuple_id(
__isl_take isl_space *space, __isl_take isl_id *id)
{
if (isl_space_check_is_map(space) < 0)
space = isl_space_free(space);
return isl_space_set_tuple_id(space, isl_dim_in, id);
}
/* Replace the identifier of the range tuple of the map space "space"
* by "id".
*/
__isl_give isl_space *isl_space_set_range_tuple_id(
__isl_take isl_space *space, __isl_take isl_id *id)
{
if (isl_space_check_is_map(space) < 0)
space = isl_space_free(space);
return isl_space_set_tuple_id(space, isl_dim_out, id);
}
__isl_give isl_space *isl_space_reset_tuple_id(__isl_take isl_space *space,
enum isl_dim_type type)
{

View File

@ -5934,7 +5934,7 @@ static __isl_give isl_pw_multi_aff *split_domain_pma(
pma = isl_pw_multi_aff_free(pma);
} else if (subs) {
pma = isl_pw_multi_aff_substitute(pma,
isl_dim_in, n_in - 1, min_expr_pa);
n_in - 1, min_expr_pa);
} else {
isl_bool split;
split = need_split_set(opt->p[i].set, cst);

View File

@ -7833,6 +7833,15 @@ struct isl_vertices_test_data {
"[n, m] -> { [1, 1, m] : 0 < m <= n }",
"[n, m] -> { [1, 1, 1] : 0 < m <= n }"
} },
/* An input with implicit equality constraints among the parameters. */
{ "[N, M] -> { [a, b] : M >= 3 and 9 + 3M <= a <= 29 + 2N + 11M and "
"2b >= M + a and 5 - 2N - M + a <= 2b <= 3 + a and "
"3b >= 15 + a }",
2, {
"[N, M] -> { [(21), (12)] : M = 3 and N >= 0 }",
"[N, M] -> { [(61 + 2N), (32 + N)] : M = 3 and N >= 0 }",
}
},
};
/* Check that "vertex" corresponds to one of the vertices in data->vertex.
@ -8693,6 +8702,34 @@ int test_sample(isl_ctx *ctx)
return 0;
}
/* Perform a projection on a basic set that is known to be empty
* but that has not been assigned a canonical representation.
* Earlier versions of isl would run into a stack overflow
* on this example.
*/
static int test_empty_projection(isl_ctx *ctx)
{
const char *str;
isl_bool empty;
isl_basic_set *bset;
str = "{ [a, b, c, d, e, f, g, h] : 5f = 1 + 4a - b + 5c - d - 2e and "
"3h = 2 + b + c and 14c >= 9 - 3a + 25b and "
"4c <= 50 - 3a + 23b and 6b <= -39 + a and "
"9g >= -6 + 3a + b + c and e < a + b - 2d and "
"7d >= -5 + 2a + 2b and 5g >= -14 + a - 4b + d + 2e and "
"9g <= -28 - 5b - 2c + 3d + 6e }";
bset = isl_basic_set_read_from_str(ctx, str);
empty = isl_basic_set_is_empty(bset);
bset = isl_basic_set_params(bset);
isl_basic_set_free(bset);
if (empty < 0)
return -1;
return 0;
}
int test_fixed_power(isl_ctx *ctx)
{
const char *str;
@ -9240,133 +9277,6 @@ static int test_curry(isl_ctx *ctx)
return 0;
}
struct {
const char *set;
const char *ma;
const char *res;
} preimage_tests[] = {
{ "{ B[i,j] : 0 <= i < 10 and 0 <= j < 100 }",
"{ A[j,i] -> B[i,j] }",
"{ A[j,i] : 0 <= i < 10 and 0 <= j < 100 }" },
{ "{ rat: B[i,j] : 0 <= i, j and 3 i + 5 j <= 100 }",
"{ A[a,b] -> B[a/2,b/6] }",
"{ rat: A[a,b] : 0 <= a, b and 9 a + 5 b <= 600 }" },
{ "{ B[i,j] : 0 <= i, j and 3 i + 5 j <= 100 }",
"{ A[a,b] -> B[a/2,b/6] }",
"{ A[a,b] : 0 <= a, b and 9 a + 5 b <= 600 and "
"exists i,j : a = 2 i and b = 6 j }" },
{ "[n] -> { S[i] : 0 <= i <= 100 }", "[n] -> { S[n] }",
"[n] -> { : 0 <= n <= 100 }" },
{ "{ B[i] : 0 <= i < 100 and exists a : i = 4 a }",
"{ A[a] -> B[2a] }",
"{ A[a] : 0 <= a < 50 and exists b : a = 2 b }" },
{ "{ B[i] : 0 <= i < 100 and exists a : i = 4 a }",
"{ A[a] -> B[([a/2])] }",
"{ A[a] : 0 <= a < 200 and exists b : [a/2] = 4 b }" },
{ "{ B[i,j,k] : 0 <= i,j,k <= 100 }",
"{ A[a] -> B[a,a,a/3] }",
"{ A[a] : 0 <= a <= 100 and exists b : a = 3 b }" },
{ "{ B[i,j] : j = [(i)/2] } ", "{ A[i,j] -> B[i/3,j] }",
"{ A[i,j] : j = [(i)/6] and exists a : i = 3 a }" },
};
static int test_preimage_basic_set(isl_ctx *ctx)
{
int i;
isl_basic_set *bset1, *bset2;
isl_multi_aff *ma;
int equal;
for (i = 0; i < ARRAY_SIZE(preimage_tests); ++i) {
bset1 = isl_basic_set_read_from_str(ctx, preimage_tests[i].set);
ma = isl_multi_aff_read_from_str(ctx, preimage_tests[i].ma);
bset2 = isl_basic_set_read_from_str(ctx, preimage_tests[i].res);
bset1 = isl_basic_set_preimage_multi_aff(bset1, ma);
equal = isl_basic_set_is_equal(bset1, bset2);
isl_basic_set_free(bset1);
isl_basic_set_free(bset2);
if (equal < 0)
return -1;
if (!equal)
isl_die(ctx, isl_error_unknown, "bad preimage",
return -1);
}
return 0;
}
struct {
const char *map;
const char *ma;
const char *res;
} preimage_domain_tests[] = {
{ "{ B[i,j] -> C[2i + 3j] : 0 <= i < 10 and 0 <= j < 100 }",
"{ A[j,i] -> B[i,j] }",
"{ A[j,i] -> C[2i + 3j] : 0 <= i < 10 and 0 <= j < 100 }" },
{ "{ B[i] -> C[i]; D[i] -> E[i] }",
"{ A[i] -> B[i + 1] }",
"{ A[i] -> C[i + 1] }" },
{ "{ B[i] -> C[i]; B[i] -> E[i] }",
"{ A[i] -> B[i + 1] }",
"{ A[i] -> C[i + 1]; A[i] -> E[i + 1] }" },
{ "{ B[i] -> C[([i/2])] }",
"{ A[i] -> B[2i] }",
"{ A[i] -> C[i] }" },
{ "{ B[i,j] -> C[([i/2]), ([(i+j)/3])] }",
"{ A[i] -> B[([i/5]), ([i/7])] }",
"{ A[i] -> C[([([i/5])/2]), ([(([i/5])+([i/7]))/3])] }" },
{ "[N] -> { B[i] -> C[([N/2]), i, ([N/3])] }",
"[N] -> { A[] -> B[([N/5])] }",
"[N] -> { A[] -> C[([N/2]), ([N/5]), ([N/3])] }" },
{ "{ B[i] -> C[i] : exists a : i = 5 a }",
"{ A[i] -> B[2i] }",
"{ A[i] -> C[2i] : exists a : 2i = 5 a }" },
{ "{ B[i] -> C[i] : exists a : i = 2 a; "
"B[i] -> D[i] : exists a : i = 2 a + 1 }",
"{ A[i] -> B[2i] }",
"{ A[i] -> C[2i] }" },
{ "{ A[i] -> B[i] }", "{ C[i] -> A[(i + floor(i/3))/2] }",
"{ C[i] -> B[j] : 2j = i + floor(i/3) }" },
};
static int test_preimage_union_map(isl_ctx *ctx)
{
int i;
isl_union_map *umap1, *umap2;
isl_multi_aff *ma;
int equal;
for (i = 0; i < ARRAY_SIZE(preimage_domain_tests); ++i) {
umap1 = isl_union_map_read_from_str(ctx,
preimage_domain_tests[i].map);
ma = isl_multi_aff_read_from_str(ctx,
preimage_domain_tests[i].ma);
umap2 = isl_union_map_read_from_str(ctx,
preimage_domain_tests[i].res);
umap1 = isl_union_map_preimage_domain_multi_aff(umap1, ma);
equal = isl_union_map_is_equal(umap1, umap2);
isl_union_map_free(umap1);
isl_union_map_free(umap2);
if (equal < 0)
return -1;
if (!equal)
isl_die(ctx, isl_error_unknown, "bad preimage",
return -1);
}
return 0;
}
static int test_preimage(isl_ctx *ctx)
{
if (test_preimage_basic_set(ctx) < 0)
return -1;
if (test_preimage_union_map(ctx) < 0)
return -1;
return 0;
}
struct {
const char *ma1;
const char *ma;
@ -10813,7 +10723,6 @@ struct {
{ "list", &test_list },
{ "align parameters", &test_align_parameters },
{ "drop unused parameters", &test_drop_unused_parameters },
{ "preimage", &test_preimage },
{ "pullback", &test_pullback },
{ "AST", &test_ast },
{ "AST build", &test_ast_build },
@ -10825,6 +10734,7 @@ struct {
{ "slice", &test_slice },
{ "fixed power", &test_fixed_power },
{ "sample", &test_sample },
{ "empty projection", &test_empty_projection },
{ "output", &test_output },
{ "vertices", &test_vertices },
{ "chambers", &test_chambers },

192
polly/lib/External/isl/isl_test2.cc vendored Normal file
View File

@ -0,0 +1,192 @@
#include <assert.h>
#include <stdlib.h>
#include <functional>
#include <iostream>
#include <sstream>
#include <string>
#include <type_traits>
#include <utility>
#include <vector>
#include <isl/cpp.h>
/* A binary isl function that appears in the C++ bindings
* as a unary method in a class T, taking an extra argument
* of type A1 and returning an object of type R.
*/
template <typename A1, typename R, typename T>
using binary_fn = R (T::*)(A1) const;
/* A function for selecting an overload of a pointer to a unary C++ method
* based on the single argument type.
* The object type and the return type are meant to be deduced.
*/
template <typename A1, typename R, typename T>
static binary_fn<A1, R, T> const arg(const binary_fn<A1, R, T> &fn)
{
return fn;
}
/* A description of the inputs and the output of a binary operation.
*/
struct binary {
const char *arg1;
const char *arg2;
const char *res;
};
/* A template function for checking whether two objects
* of the same (isl) type are (obviously) equal.
* The spelling depends on the isl type and
* in particular on whether an equality method is available or
* whether only obvious equality can be tested.
*/
template <typename T, typename std::decay<decltype(
std::declval<T>().is_equal(std::declval<T>()))>::type = true>
static bool is_equal(const T &a, const T &b)
{
return a.is_equal(b);
}
template <typename T, typename std::decay<decltype(
std::declval<T>().plain_is_equal(std::declval<T>()))>::type = true>
static bool is_equal(const T &a, const T &b)
{
return a.plain_is_equal(b);
}
/* A helper macro for throwing an isl::exception_invalid with message "msg".
*/
#define THROW_INVALID(msg) \
isl::exception::throw_error(isl_error_invalid, msg, __FILE__, __LINE__)
/* Run a sequence of tests of method "fn" with stringification "name" and
* with inputs and output described by "test",
* throwing an exception when an unexpected result is produced.
*/
template <typename R, typename T, typename A1>
static void test(isl::ctx ctx, R (T::*fn)(A1) const, const std::string &name,
const std::vector<binary> &tests)
{
for (const auto &test : tests) {
T obj(ctx, test.arg1);
A1 arg1(ctx, test.arg2);
R expected(ctx, test.res);
const auto &res = (obj.*fn)(arg1);
std::ostringstream ss;
if (is_equal(expected, res))
continue;
ss << name << "(" << test.arg1 << ", " << test.arg2 << ") =\n"
<< res << "\n"
<< "expecting:\n"
<< test.res;
THROW_INVALID(ss.str().c_str());
}
}
/* A helper macro that calls test with as implicit initial argument "ctx" and
* as extra argument a stringification of "FN".
*/
#define C(FN, ...) test(ctx, FN, #FN, __VA_ARGS__)
/* Perform some basic preimage tests.
*/
static void test_preimage(isl::ctx ctx)
{
C(arg<isl::multi_aff>(&isl::set::preimage), {
{ "{ B[i,j] : 0 <= i < 10 and 0 <= j < 100 }",
"{ A[j,i] -> B[i,j] }",
"{ A[j,i] : 0 <= i < 10 and 0 <= j < 100 }" },
{ "{ rat: B[i,j] : 0 <= i, j and 3 i + 5 j <= 100 }",
"{ A[a,b] -> B[a/2,b/6] }",
"{ rat: A[a,b] : 0 <= a, b and 9 a + 5 b <= 600 }" },
{ "{ B[i,j] : 0 <= i, j and 3 i + 5 j <= 100 }",
"{ A[a,b] -> B[a/2,b/6] }",
"{ A[a,b] : 0 <= a, b and 9 a + 5 b <= 600 and "
"exists i,j : a = 2 i and b = 6 j }" },
{ "[n] -> { S[i] : 0 <= i <= 100 }", "[n] -> { S[n] }",
"[n] -> { : 0 <= n <= 100 }" },
{ "{ B[i] : 0 <= i < 100 and exists a : i = 4 a }",
"{ A[a] -> B[2a] }",
"{ A[a] : 0 <= a < 50 and exists b : a = 2 b }" },
{ "{ B[i] : 0 <= i < 100 and exists a : i = 4 a }",
"{ A[a] -> B[([a/2])] }",
"{ A[a] : 0 <= a < 200 and exists b : [a/2] = 4 b }" },
{ "{ B[i,j,k] : 0 <= i,j,k <= 100 }",
"{ A[a] -> B[a,a,a/3] }",
"{ A[a] : 0 <= a <= 100 and exists b : a = 3 b }" },
{ "{ B[i,j] : j = [(i)/2] } ", "{ A[i,j] -> B[i/3,j] }",
"{ A[i,j] : j = [(i)/6] and exists a : i = 3 a }" },
});
C(arg<isl::multi_aff>(&isl::union_map::preimage_domain), {
{ "{ B[i,j] -> C[2i + 3j] : 0 <= i < 10 and 0 <= j < 100 }",
"{ A[j,i] -> B[i,j] }",
"{ A[j,i] -> C[2i + 3j] : 0 <= i < 10 and 0 <= j < 100 }" },
{ "{ B[i] -> C[i]; D[i] -> E[i] }",
"{ A[i] -> B[i + 1] }",
"{ A[i] -> C[i + 1] }" },
{ "{ B[i] -> C[i]; B[i] -> E[i] }",
"{ A[i] -> B[i + 1] }",
"{ A[i] -> C[i + 1]; A[i] -> E[i + 1] }" },
{ "{ B[i] -> C[([i/2])] }",
"{ A[i] -> B[2i] }",
"{ A[i] -> C[i] }" },
{ "{ B[i,j] -> C[([i/2]), ([(i+j)/3])] }",
"{ A[i] -> B[([i/5]), ([i/7])] }",
"{ A[i] -> C[([([i/5])/2]), ([(([i/5])+([i/7]))/3])] }" },
{ "[N] -> { B[i] -> C[([N/2]), i, ([N/3])] }",
"[N] -> { A[] -> B[([N/5])] }",
"[N] -> { A[] -> C[([N/2]), ([N/5]), ([N/3])] }" },
{ "{ B[i] -> C[i] : exists a : i = 5 a }",
"{ A[i] -> B[2i] }",
"{ A[i] -> C[2i] : exists a : 2i = 5 a }" },
{ "{ B[i] -> C[i] : exists a : i = 2 a; "
"B[i] -> D[i] : exists a : i = 2 a + 1 }",
"{ A[i] -> B[2i] }",
"{ A[i] -> C[2i] }" },
{ "{ A[i] -> B[i] }", "{ C[i] -> A[(i + floor(i/3))/2] }",
"{ C[i] -> B[j] : 2j = i + floor(i/3) }" },
});
C(arg<isl::multi_aff>(&isl::union_map::preimage_range), {
{ "[M] -> { A[a] -> B[a] }", "[M] -> { C[] -> B[floor(M/2)] }",
"[M] -> { A[floor(M/2)] -> C[] }" },
});
}
/* The list of tests to perform.
*/
static std::vector<std::pair<const char *, void (*)(isl::ctx)>> tests =
{
{ "preimage", &test_preimage },
};
/* Perform some basic checks by means of the C++ bindings.
*/
int main(int argc, char **argv)
{
int ret = EXIT_SUCCESS;
struct isl_ctx *ctx;
struct isl_options *options;
options = isl_options_new_with_defaults();
assert(options);
argc = isl_options_parse(options, argc, argv, ISL_ARG_ALL);
ctx = isl_ctx_alloc_with_options(&isl_options_args, options);
try {
for (const auto &f : tests) {
std::cout << f.first << "\n";
f.second(ctx);
}
} catch (const isl::exception &e) {
std::cerr << e.what() << "\n";
ret = EXIT_FAILURE;
}
isl_ctx_free(ctx);
return ret;
}

View File

@ -13,7 +13,7 @@
#include <string.h>
#include <isl/options.h>
#include <isl/cpp.h>
#include <isl/typed_cpp.h>
static void die_impl(const char *file, int line, const char *message)
{
@ -284,6 +284,27 @@ static void test_ast_build(isl::ctx ctx)
assert(count_ast_fail == 2);
}
/* Basic test of the templated interface.
*
* Intersecting the domain of an access relation
* with statement instances should be allowed,
* while intersecting the range with statement instances
* should result in a compile-time error.
*/
static void test_typed(isl::ctx ctx)
{
struct ST {};
struct AR {};
isl::typed::map<ST, AR> access(ctx, "{ S[i, j] -> A[i] }");
isl::typed::set<ST> instances(ctx, "{ S[i, j] : 0 <= i, j < 10 }");
#ifndef COMPILE_ERROR
access.intersect_domain(instances);
#else
access.intersect_range(instances);
#endif
}
/* Test the (unchecked) isl C++ interface
*
* This includes:
@ -297,6 +318,7 @@ static void test_ast_build(isl::ctx ctx)
* - Schedule trees
* - AST generation
* - AST expression generation
* - Templated interface
*/
int main()
{
@ -315,6 +337,7 @@ int main()
test_schedule_tree(ctx);
test_ast_build(ctx);
test_ast_build_expr(ctx);
test_typed(ctx);
isl_ctx_free(ctx);

View File

@ -0,0 +1,8 @@
#/bin/sh
# Check that isl_test_cpp_failed CANNOT be built.
# Note that the failed build may leave behind a temporary dependence
# tracking object, which should be removed.
make isl_test_cpp_failed
ret=$?
rm -f .deps/isl_test_cpp_failed-isl_test_cpp.Tpo
test $ret -ne 0

View File

@ -183,7 +183,7 @@ def test_foreach():
assert(not list[1].is_equal(list[2]))
def fail(bs):
raise "fail"
raise Exception("fail")
caught = False
try:
@ -217,7 +217,7 @@ def test_every():
assert(not us.every_set(not_in_A))
def fail(s):
raise "fail"
raise Exception("fail")
caught = False
try:
@ -289,7 +289,7 @@ def test_schedule_tree():
assert(count[0] == 8)
def fail_map(node):
raise "fail"
raise Exception("fail")
return node
caught = False
try:
@ -318,7 +318,7 @@ def test_schedule_tree():
assert(not root.every_descendant(is_not_domain))
def fail(node):
raise "fail"
raise Exception("fail")
caught = False
try:
root.every_descendant(fail)
@ -392,7 +392,7 @@ def test_ast_build():
def fail_inc_count_ast(node, build):
count_ast_fail[0] += 1
if do_fail:
raise "fail"
raise Exception("fail")
return node
build = isl.ast_build()
build = build.set_at_each_domain(fail_inc_count_ast)

View File

@ -523,11 +523,27 @@ __isl_give isl_union_map *isl_union_map_from_map(__isl_take isl_map *map)
return umap;
}
/* This function performs the same operation as isl_union_map_from_map,
* but is considered as a function on an isl_map when exported.
*/
__isl_give isl_union_map *isl_map_to_union_map(__isl_take isl_map *map)
{
return isl_union_map_from_map(map);
}
__isl_give isl_union_set *isl_union_set_from_set(__isl_take isl_set *set)
{
return isl_union_map_from_map(set_to_map(set));
}
/* This function performs the same operation as isl_union_set_from_set,
* but is considered as a function on an isl_set when exported.
*/
__isl_give isl_union_set *isl_set_to_union_set(__isl_take isl_set *set)
{
return isl_union_set_from_set(set);
}
__isl_give isl_union_map *isl_union_map_from_basic_map(
__isl_take isl_basic_map *bmap)
{
@ -731,11 +747,27 @@ error:
return NULL;
}
/* This function performs the same operation as isl_map_from_union_map,
* but is considered as a function on an isl_union_map when exported.
*/
__isl_give isl_map *isl_union_map_as_map(__isl_take isl_union_map *umap)
{
return isl_map_from_union_map(umap);
}
__isl_give isl_set *isl_set_from_union_set(__isl_take isl_union_set *uset)
{
return isl_map_from_union_map(uset);
}
/* This function performs the same operation as isl_set_from_union_set,
* but is considered as a function on an isl_union_set when exported.
*/
__isl_give isl_set *isl_union_set_as_set(__isl_take isl_union_set *uset)
{
return isl_set_from_union_set(uset);
}
/* Extract the map in "umap" that lives in the given space (ignoring
* parameters).
*/

View File

@ -543,6 +543,14 @@ __isl_give UNION *FN(FN(UNION,from),BASE)(__isl_take PART *part)
return u;
}
/* This function performs the same operation as isl_union_pw_*_from_pw_*,
* but is considered as a function on an isl_pw_* when exported.
*/
__isl_give UNION *FN(FN(PART,to_union),BASE)(__isl_take PART *part)
{
return FN(FN(UNION,from),BASE)(part);
}
S(UNION,match_bin_data) {
UNION *u2;
UNION *res;

View File

@ -15,6 +15,7 @@
#define EL_BASE val
#include <isl_list_templ.c>
#include <isl_list_read_templ.c>
/* Allocate an isl_val object with indeterminate value.
*/

Some files were not shown because too many files have changed in this diff Show More