forked from OSchip/llvm-project
[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:
parent
14078ae8ca
commit
3f9bf9f42a
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -1 +1 @@
|
|||
isl-0.23-61-g24e8cd12
|
||||
isl-0.24-47-g8853f375
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
@ -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
|
||||
|
|
|
@ -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])
|
||||
])
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
} // namespace typed
|
||||
} // namespace isl
|
||||
|
||||
#endif /* ISL_TYPED_CPP */
|
|
@ -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;
|
|
@ -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
|
||||
|
|
|
@ -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@
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env perl
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use Pod::LaTeX;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
@ -13,6 +13,7 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
ISL_DECLARE_EXPORTED_LIST_FN(id)
|
||||
ISL_DECLARE_EXPORTED_LIST_FN_READ(id)
|
||||
|
||||
ISL_DECLARE_MULTI(id)
|
||||
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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])
|
||||
|
|
|
@ -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
File diff suppressed because it is too large
Load Diff
|
@ -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
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
@ -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
|
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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".
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -49,3 +49,5 @@ error:
|
|||
isl_space_free(space);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#include "isl_multi_zero_space_templ.c"
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -30,3 +30,4 @@
|
|||
#define EL_BASE union_set
|
||||
|
||||
#include <isl_list_templ.c>
|
||||
#include <isl_list_read_templ.c>
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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)
|
||||
|
|
|
@ -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).
|
||||
*/
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue