From 395ac68f03a45a1e9e1567420391791e874164c6 Mon Sep 17 00:00:00 2001 From: Alexey Rivkin Date: Sun, 26 Feb 2023 11:33:54 +0200 Subject: [PATCH] AZP/RELEASE: rm cuda-compat & separate gdrcopy --- buildlib/az-distro-release.yml | 20 +- buildlib/azure-pipelines-release.yml | 4 +- buildlib/dockers/docker-compose.yml | 16 +- buildlib/dockers/push-release-images.sh | 4 +- buildlib/dockers/ubuntu-release.Dockerfile | 17 +- confdefs.h | 197 + configure~ | 35603 ++++++++++++++++ conftest-conftest.c.245r.expand | 354 + conftest-conftest.c.246r.vregs | 137 + conftest-conftest.c.247r.into_cfglayout | 139 + conftest-conftest.c.248r.jump | 273 + conftest-conftest.c.249r.subreg1 | 256 + conftest-conftest.c.250r.dfinit | 152 + conftest-conftest.c.251r.cse1 | 425 + conftest-conftest.c.252r.fwprop1 | 240 + conftest-conftest.c.253r.cprop1 | 402 + conftest-conftest.c.254r.pre | 204 + conftest-conftest.c.256r.cprop2 | 289 + conftest-conftest.c.258r.cse_local | 184 + conftest-conftest.c.259r.ce1 | 413 + conftest-conftest.c.260r.reginfo | 179 + conftest-conftest.c.261r.loop2 | 176 + conftest-conftest.c.262r.loop2_init | 388 + conftest-conftest.c.263r.loop2_invariant | 178 + conftest-conftest.c.266r.loop2_done | 383 + conftest-conftest.c.269r.cprop3 | 188 + conftest-conftest.c.270r.stv1 | 187 + conftest-conftest.c.271r.cse2 | 386 + conftest-conftest.c.272r.dse1 | 364 + conftest-conftest.c.273r.fwprop2 | 197 + conftest-conftest.c.275r.init-regs | 181 + conftest-conftest.c.276r.ud_dce | 342 + conftest-conftest.c.277r.combine | 276 + conftest-conftest.c.280r.stv2 | 200 + conftest-conftest.c.281r.ce2 | 201 + conftest-conftest.c.282r.jump_after_combine | 180 + conftest-conftest.c.283r.bbpart | 178 + conftest-conftest.c.284r.outof_cfglayout | 182 + conftest-conftest.c.285r.split1 | 178 + conftest-conftest.c.286r.subreg3 | 307 + conftest-conftest.c.288r.mode_sw | 180 + conftest-conftest.c.289r.asmcons | 178 + conftest-conftest.c.294r.ira | 311 + conftest-conftest.c.295r.reload | 285 + conftest-conftest.c.297r.postreload | 157 + conftest-conftest.c.298r.gcse2 | 159 + conftest-conftest.c.299r.split2 | 152 + conftest-conftest.c.300r.ree | 160 + conftest-conftest.c.301r.cmpelim | 156 + conftest-conftest.c.302r.pro_and_epilogue | 228 + conftest-conftest.c.303r.dse2 | 301 + conftest-conftest.c.304r.csa | 193 + conftest-conftest.c.305r.jump2 | 192 + conftest-conftest.c.306r.compgotos | 188 + conftest-conftest.c.308r.peephole2 | 298 + conftest-conftest.c.309r.ce3 | 314 + conftest-conftest.c.311r.cprop_hardreg | 202 + conftest-conftest.c.312r.rtl_dce | 292 + conftest-conftest.c.313r.bbro | 447 + conftest-conftest.c.314r.split3 | 192 + conftest-conftest.c.315r.sched2 | 343 + conftest-conftest.c.317r.stack | 194 + conftest-conftest.c.318r.zero_call_used_regs | 192 + conftest-conftest.c.319r.alignments | 398 + conftest-conftest.c.320r.vartrack | 1724 + conftest-conftest.c.321r.mach | 154 + conftest-conftest.c.322r.barriers | 154 + ...t-conftest.c.326r.endbr_and_patchable_area | 159 + conftest-conftest.c.327r.shorten | 158 + conftest-conftest.c.328r.nothrow | 158 + conftest-conftest.c.329r.dwarf2 | 186 + conftest-conftest.c.330r.final | 158 + conftest-conftest.c.331r.dfinish | 144 + conftest.c.245r.expand | 246 + conftest.c.246r.vregs | 48 + conftest.c.247r.into_cfglayout | 54 + conftest.c.248r.jump | 109 + conftest.c.249r.subreg1 | 294 + conftest.c.250r.dfinit | 72 + conftest.c.251r.cse1 | 270 + conftest.c.252r.fwprop1 | 130 + conftest.c.253r.cprop1 | 212 + conftest.c.254r.pre | 94 + conftest.c.256r.cprop2 | 94 + conftest.c.259r.ce1 | 260 + conftest.c.260r.reginfo | 84 + conftest.c.261r.loop2 | 84 + conftest.c.262r.loop2_init | 228 + conftest.c.263r.loop2_invariant | 88 + conftest.c.266r.loop2_done | 222 + conftest.c.269r.cprop3 | 94 + conftest.c.270r.stv1 | 106 + conftest.c.271r.cse2 | 222 + conftest.c.272r.dse1 | 110 + conftest.c.273r.fwprop2 | 120 + conftest.c.275r.init-regs | 92 + conftest.c.276r.ud_dce | 266 + conftest.c.277r.combine | 133 + conftest.c.280r.stv2 | 104 + conftest.c.281r.ce2 | 112 + conftest.c.282r.jump_after_combine | 90 + conftest.c.283r.bbpart | 82 + conftest.c.284r.outof_cfglayout | 88 + conftest.c.285r.split1 | 84 + conftest.c.286r.subreg3 | 342 + conftest.c.288r.mode_sw | 88 + conftest.c.289r.asmcons | 84 + conftest.c.294r.ira | 196 + conftest.c.295r.reload | 178 + conftest.c.297r.postreload | 90 + conftest.c.298r.gcse2 | 96 + conftest.c.299r.split2 | 86 + conftest.c.300r.ree | 100 + conftest.c.301r.cmpelim | 96 + conftest.c.302r.pro_and_epilogue | 134 + conftest.c.303r.dse2 | 136 + conftest.c.304r.csa | 108 + conftest.c.305r.jump2 | 106 + conftest.c.306r.compgotos | 98 + conftest.c.308r.peephole2 | 122 + conftest.c.309r.ce3 | 254 + conftest.c.311r.cprop_hardreg | 122 + conftest.c.312r.rtl_dce | 230 + conftest.c.313r.bbro | 126 + conftest.c.314r.split3 | 106 + conftest.c.315r.sched2 | 146 + conftest.c.317r.stack | 110 + conftest.c.318r.zero_call_used_regs | 106 + conftest.c.319r.alignments | 244 + conftest.c.320r.vartrack | 678 + conftest.c.321r.mach | 76 + conftest.c.322r.barriers | 76 + conftest.c.326r.endbr_and_patchable_area | 86 + conftest.c.327r.shorten | 84 + conftest.c.328r.nothrow | 84 + conftest.c.329r.dwarf2 | 104 + conftest.c.330r.final | 84 + conftest.c.331r.dfinish | 56 + debian/control.in | 2 +- ucx_1.14..dsc | 19 + ucx_1.14..tar.xz | Bin 0 -> 1905956 bytes ucx_1.14._amd64.buildinfo | 205 + ucx_1.14._amd64.changes | 42 + ucx_1.14._amd64.deb | Bin 0 -> 1561992 bytes 144 files changed, 62249 insertions(+), 30 deletions(-) create mode 100644 confdefs.h create mode 100755 configure~ create mode 100644 conftest-conftest.c.245r.expand create mode 100644 conftest-conftest.c.246r.vregs create mode 100644 conftest-conftest.c.247r.into_cfglayout create mode 100644 conftest-conftest.c.248r.jump create mode 100644 conftest-conftest.c.249r.subreg1 create mode 100644 conftest-conftest.c.250r.dfinit create mode 100644 conftest-conftest.c.251r.cse1 create mode 100644 conftest-conftest.c.252r.fwprop1 create mode 100644 conftest-conftest.c.253r.cprop1 create mode 100644 conftest-conftest.c.254r.pre create mode 100644 conftest-conftest.c.256r.cprop2 create mode 100644 conftest-conftest.c.258r.cse_local create mode 100644 conftest-conftest.c.259r.ce1 create mode 100644 conftest-conftest.c.260r.reginfo create mode 100644 conftest-conftest.c.261r.loop2 create mode 100644 conftest-conftest.c.262r.loop2_init create mode 100644 conftest-conftest.c.263r.loop2_invariant create mode 100644 conftest-conftest.c.266r.loop2_done create mode 100644 conftest-conftest.c.269r.cprop3 create mode 100644 conftest-conftest.c.270r.stv1 create mode 100644 conftest-conftest.c.271r.cse2 create mode 100644 conftest-conftest.c.272r.dse1 create mode 100644 conftest-conftest.c.273r.fwprop2 create mode 100644 conftest-conftest.c.275r.init-regs create mode 100644 conftest-conftest.c.276r.ud_dce create mode 100644 conftest-conftest.c.277r.combine create mode 100644 conftest-conftest.c.280r.stv2 create mode 100644 conftest-conftest.c.281r.ce2 create mode 100644 conftest-conftest.c.282r.jump_after_combine create mode 100644 conftest-conftest.c.283r.bbpart create mode 100644 conftest-conftest.c.284r.outof_cfglayout create mode 100644 conftest-conftest.c.285r.split1 create mode 100644 conftest-conftest.c.286r.subreg3 create mode 100644 conftest-conftest.c.288r.mode_sw create mode 100644 conftest-conftest.c.289r.asmcons create mode 100644 conftest-conftest.c.294r.ira create mode 100644 conftest-conftest.c.295r.reload create mode 100644 conftest-conftest.c.297r.postreload create mode 100644 conftest-conftest.c.298r.gcse2 create mode 100644 conftest-conftest.c.299r.split2 create mode 100644 conftest-conftest.c.300r.ree create mode 100644 conftest-conftest.c.301r.cmpelim create mode 100644 conftest-conftest.c.302r.pro_and_epilogue create mode 100644 conftest-conftest.c.303r.dse2 create mode 100644 conftest-conftest.c.304r.csa create mode 100644 conftest-conftest.c.305r.jump2 create mode 100644 conftest-conftest.c.306r.compgotos create mode 100644 conftest-conftest.c.308r.peephole2 create mode 100644 conftest-conftest.c.309r.ce3 create mode 100644 conftest-conftest.c.311r.cprop_hardreg create mode 100644 conftest-conftest.c.312r.rtl_dce create mode 100644 conftest-conftest.c.313r.bbro create mode 100644 conftest-conftest.c.314r.split3 create mode 100644 conftest-conftest.c.315r.sched2 create mode 100644 conftest-conftest.c.317r.stack create mode 100644 conftest-conftest.c.318r.zero_call_used_regs create mode 100644 conftest-conftest.c.319r.alignments create mode 100644 conftest-conftest.c.320r.vartrack create mode 100644 conftest-conftest.c.321r.mach create mode 100644 conftest-conftest.c.322r.barriers create mode 100644 conftest-conftest.c.326r.endbr_and_patchable_area create mode 100644 conftest-conftest.c.327r.shorten create mode 100644 conftest-conftest.c.328r.nothrow create mode 100644 conftest-conftest.c.329r.dwarf2 create mode 100644 conftest-conftest.c.330r.final create mode 100644 conftest-conftest.c.331r.dfinish create mode 100644 conftest.c.245r.expand create mode 100644 conftest.c.246r.vregs create mode 100644 conftest.c.247r.into_cfglayout create mode 100644 conftest.c.248r.jump create mode 100644 conftest.c.249r.subreg1 create mode 100644 conftest.c.250r.dfinit create mode 100644 conftest.c.251r.cse1 create mode 100644 conftest.c.252r.fwprop1 create mode 100644 conftest.c.253r.cprop1 create mode 100644 conftest.c.254r.pre create mode 100644 conftest.c.256r.cprop2 create mode 100644 conftest.c.259r.ce1 create mode 100644 conftest.c.260r.reginfo create mode 100644 conftest.c.261r.loop2 create mode 100644 conftest.c.262r.loop2_init create mode 100644 conftest.c.263r.loop2_invariant create mode 100644 conftest.c.266r.loop2_done create mode 100644 conftest.c.269r.cprop3 create mode 100644 conftest.c.270r.stv1 create mode 100644 conftest.c.271r.cse2 create mode 100644 conftest.c.272r.dse1 create mode 100644 conftest.c.273r.fwprop2 create mode 100644 conftest.c.275r.init-regs create mode 100644 conftest.c.276r.ud_dce create mode 100644 conftest.c.277r.combine create mode 100644 conftest.c.280r.stv2 create mode 100644 conftest.c.281r.ce2 create mode 100644 conftest.c.282r.jump_after_combine create mode 100644 conftest.c.283r.bbpart create mode 100644 conftest.c.284r.outof_cfglayout create mode 100644 conftest.c.285r.split1 create mode 100644 conftest.c.286r.subreg3 create mode 100644 conftest.c.288r.mode_sw create mode 100644 conftest.c.289r.asmcons create mode 100644 conftest.c.294r.ira create mode 100644 conftest.c.295r.reload create mode 100644 conftest.c.297r.postreload create mode 100644 conftest.c.298r.gcse2 create mode 100644 conftest.c.299r.split2 create mode 100644 conftest.c.300r.ree create mode 100644 conftest.c.301r.cmpelim create mode 100644 conftest.c.302r.pro_and_epilogue create mode 100644 conftest.c.303r.dse2 create mode 100644 conftest.c.304r.csa create mode 100644 conftest.c.305r.jump2 create mode 100644 conftest.c.306r.compgotos create mode 100644 conftest.c.308r.peephole2 create mode 100644 conftest.c.309r.ce3 create mode 100644 conftest.c.311r.cprop_hardreg create mode 100644 conftest.c.312r.rtl_dce create mode 100644 conftest.c.313r.bbro create mode 100644 conftest.c.314r.split3 create mode 100644 conftest.c.315r.sched2 create mode 100644 conftest.c.317r.stack create mode 100644 conftest.c.318r.zero_call_used_regs create mode 100644 conftest.c.319r.alignments create mode 100644 conftest.c.320r.vartrack create mode 100644 conftest.c.321r.mach create mode 100644 conftest.c.322r.barriers create mode 100644 conftest.c.326r.endbr_and_patchable_area create mode 100644 conftest.c.327r.shorten create mode 100644 conftest.c.328r.nothrow create mode 100644 conftest.c.329r.dwarf2 create mode 100644 conftest.c.330r.final create mode 100644 conftest.c.331r.dfinish create mode 100644 ucx_1.14..dsc create mode 100644 ucx_1.14..tar.xz create mode 100644 ucx_1.14._amd64.buildinfo create mode 100644 ucx_1.14._amd64.changes create mode 100644 ucx_1.14._amd64.deb diff --git a/buildlib/az-distro-release.yml b/buildlib/az-distro-release.yml index ebbe1a15e80a..5d47119e15ff 100644 --- a/buildlib/az-distro-release.yml +++ b/buildlib/az-distro-release.yml @@ -22,9 +22,6 @@ jobs: centos8_cuda11: build_container: centos8_cuda11 artifact_name: $(POSTFIX)-centos8-mofed5-cuda11.tar.bz2 - ubuntu16_cuda11: - build_container: ubuntu16_cuda11 - artifact_name: $(POSTFIX)-ubuntu16.04-mofed5-cuda11.tar.bz2 ubuntu18_cuda11: build_container: ubuntu18_cuda11 artifact_name: $(POSTFIX)-ubuntu18.04-mofed5-cuda11.tar.bz2 @@ -62,6 +59,8 @@ jobs: - bash: | set -eEx + + # Build ./autogen.sh ./contrib/configure-release --with-cuda --with-java=no make dist @@ -71,11 +70,20 @@ jobs: echo 10 > debian/compat # https://www.debian.org/doc/manuals/maint-guide/dother.en.htmdpl#compat dpkg-buildpackage -us -uc -Pcuda cd .. # Move back to the working directory - find . -name '*.deb' - VER="${POSTFIX#ucx-}" # Remove 'ucx' prefix from the POSTFIX string - # Rename DEB files + + # Rename DEB files + VER="${POSTFIX#ucx-}" # Remove 'ucx-' prefix from the POSTFIX string find . -name "ucx*.deb" -exec bash -c 'mv "$1" "${1%%_*}-'"${VER}"'.deb"' _ {} \; + find . -name '*.deb' # Show new names + + # Remove superfluous dependency + dpkg-deb -R "ucx-cuda-${VER}.deb" tmp # Extract + sed -i 's/libnvidia-compute-[0-9]* | libnvidia-ml1, //g' tmp/DEBIAN/control + dpkg-deb -b tmp "ucx-cuda-${VER}.deb" # Rebuild + dpkg-deb -I "ucx-cuda-${VER}.deb" dpkg-deb -I "ucx-${VER}.deb" + + # Package tar -cjf "${AZ_ARTIFACT_NAME}" *.deb # Package all DEBs tar -tjf "${AZ_ARTIFACT_NAME}" displayName: Build DEB package diff --git a/buildlib/azure-pipelines-release.yml b/buildlib/azure-pipelines-release.yml index 0e8b796ffd11..c13bf6e8a2c4 100644 --- a/buildlib/azure-pipelines-release.yml +++ b/buildlib/azure-pipelines-release.yml @@ -19,14 +19,12 @@ resources: options: $(DOCKER_OPT_VOLUMES) - container: centos8_cuda11 image: rdmz-harbor.rdmz.labs.mlnx/ucx/centos8-mofed5-cuda11:2 - - container: ubuntu16_cuda11 - image: rdmz-harbor.rdmz.labs.mlnx/ucx/ubuntu16.04-mofed5-cuda11:3 - container: ubuntu18_cuda11 image: rdmz-harbor.rdmz.labs.mlnx/ucx/ubuntu18.04-mofed5-cuda11:3 - container: ubuntu20_cuda11 image: rdmz-harbor.rdmz.labs.mlnx/ucx/ubuntu20.04-mofed5-cuda11:3 - container: ubuntu22_cuda11 - image: rdmz-harbor.rdmz.labs.mlnx/ucx/x86_64/ubuntu22.04-mofed5-cuda11:3 + image: rdmz-harbor.rdmz.labs.mlnx/ucx/ubuntu22.04-mofed5-cuda11:3 stages: - stage: Prepare diff --git a/buildlib/dockers/docker-compose.yml b/buildlib/dockers/docker-compose.yml index f91d973c8d93..1e6cebeb7882 100644 --- a/buildlib/dockers/docker-compose.yml +++ b/buildlib/dockers/docker-compose.yml @@ -1,5 +1,8 @@ version: "3.4" +# Find driver version based on CUDA version, OS and CPU arch (515 in this case): +# https://developer.nvidia.com/cuda-11-7-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=runfile_local + services: centos7-mofed5-cuda11: image: centos7-mofed5-cuda11:2 @@ -34,16 +37,6 @@ services: MOFED_OS: rhel8.2 CUDA_VERSION: 11.4.0 OS_VERSION: 8 - ubuntu16.04-mofed5-cuda11: - image: ubuntu16.04-mofed5-cuda11:3 - build: - context: . - network: host - dockerfile: ubuntu-release.Dockerfile - args: - MOFED_VERSION: 5.0-1.0.0.0 - UBUNTU_VERSION: 16.04 - CUDA_VERSION: 11.2.0 ubuntu18.04-mofed5-cuda11: image: ubuntu18.04-mofed5-cuda11:3 build: @@ -54,6 +47,7 @@ services: MOFED_VERSION: 5.0-1.0.0.0 UBUNTU_VERSION: 18.04 CUDA_VERSION: 11.4.0 + DRIVER_VERSION: 470 ubuntu20.04-mofed5-cuda11: image: ubuntu20.04-mofed5-cuda11:3 build: @@ -64,6 +58,7 @@ services: MOFED_VERSION: 5.0-1.0.0.0 UBUNTU_VERSION: 20.04 CUDA_VERSION: 11.4.0 + DRIVER_VERSION: 470 ubuntu22.04-mofed5-cuda11: image: ubuntu22.04-mofed5-cuda11:3 build: @@ -74,3 +69,4 @@ services: MOFED_VERSION: 5.4-3.6.8.1 UBUNTU_VERSION: 22.04 CUDA_VERSION: 11.7.0 + DRIVER_VERSION: 515 diff --git a/buildlib/dockers/push-release-images.sh b/buildlib/dockers/push-release-images.sh index 3db6de93984e..07ba20475989 100755 --- a/buildlib/dockers/push-release-images.sh +++ b/buildlib/dockers/push-release-images.sh @@ -1,11 +1,11 @@ -#!/bin/bash -eE +#!/bin/bash -eEx # shellcheck disable=SC2086 basedir=$(cd "$(dirname $0)" && pwd) registry=harbor.mellanox.com/ucx -images=$(awk '/image:/ {print $2}' "${basedir}/docker-compose.yml") +images=$(awk '!/#/ && /image:/ {print $2}' "${basedir}/docker-compose.yml") for img in $images; do target_name="${registry}/${img}" docker tag ${img} ${target_name} diff --git a/buildlib/dockers/ubuntu-release.Dockerfile b/buildlib/dockers/ubuntu-release.Dockerfile index 6f463961def3..b9b7f84c6756 100644 --- a/buildlib/dockers/ubuntu-release.Dockerfile +++ b/buildlib/dockers/ubuntu-release.Dockerfile @@ -1,10 +1,12 @@ -ARG CUDA_VERSION=10.1 -ARG UBUNTU_VERSION=16.04 +ARG CUDA_VERSION +ARG UBUNTU_VERSION FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} +ARG DRIVER_VERSION RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata && \ apt-get install -y \ + apt-file \ automake \ default-jdk \ dh-make \ @@ -14,13 +16,15 @@ RUN apt-get update && \ libcap2 \ libnuma-dev \ libtool \ + libnvidia-compute-${DRIVER_VERSION} \ make \ maven \ udev \ wget \ environment-modules \ pkg-config \ - && apt-get remove -y openjdk-11-* || apt-get autoremove -y \ + sudo \ + && apt-get remove -y openjdk-11-* cuda-compat* || apt-get autoremove -y \ && apt-get clean && rm -rf /var/lib/apt/lists/* # MOFED @@ -43,8 +47,5 @@ RUN ${MOFED_DIR}/mlnxofedinstall --all -q \ rm -rf ${MOFED_DIR} && rm -rf *.tgz ENV CPATH /usr/local/cuda/include:${CPATH} -ENV LD_LIBRARY_PATH /usr/local/cuda/lib64:/usr/local/cuda/compat:${LD_LIBRARY_PATH} -ENV LIBRARY_PATH /usr/local/cuda/lib64:/usr/local/cuda/compat:${LIBRARY_PATH} -ENV PATH /usr/local/cuda/compat:${PATH} - -RUN ml_stub=$(find /usr -name libnvidia-ml.so) && ln -s $ml_stub /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 +ENV LD_LIBRARY_PATH /usr/local/cuda/lib64:${LD_LIBRARY_PATH} +ENV LIBRARY_PATH /usr/local/cuda/lib64:${LIBRARY_PATH} diff --git a/confdefs.h b/confdefs.h new file mode 100644 index 000000000000..e118f14b52bf --- /dev/null +++ b/confdefs.h @@ -0,0 +1,197 @@ +/* confdefs.h */ +#define PACKAGE_NAME "ucx" +#define PACKAGE_TARNAME "ucx" +#define PACKAGE_VERSION "1.14" +#define PACKAGE_STRING "ucx 1.14" +#define PACKAGE_BUGREPORT "" +#define PACKAGE_URL "" +#define HAVE_STDIO_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_WCHAR_H 1 +#define STDC_HEADERS 1 +#define _ALL_SOURCE 1 +#define _DARWIN_C_SOURCE 1 +#define _GNU_SOURCE 1 +#define _HPUX_ALT_XOPEN_SOCKET_API 1 +#define _NETBSD_SOURCE 1 +#define _OPENBSD_SOURCE 1 +#define _POSIX_PTHREAD_SEMANTICS 1 +#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1 +#define __STDC_WANT_IEC_60559_BFP_EXT__ 1 +#define __STDC_WANT_IEC_60559_DFP_EXT__ 1 +#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1 +#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1 +#define __STDC_WANT_LIB_EXT2__ 1 +#define __STDC_WANT_MATH_SPEC_FUNCS__ 1 +#define _TANDEM_SOURCE 1 +#define __EXTENSIONS__ 1 +#define PACKAGE "ucx" +#define VERSION "1.14" +#define HAVE_DLFCN_H 1 +#define LT_OBJDIR ".libs/" +#define restrict __restrict__ +#define HAVE_DECL_STRERROR_R 1 +#define HAVE_STRERROR_R 1 +#define STRERROR_R_CHAR_P 1 +#define UCX_CONFIGURE_FLAGS "--disable-logging --disable-debug --disable-assertions --disable-params-check --with-cuda --with-java=no" +#define UCX_MODULE_SUBDIR "ucx" +#define HAVE_ATTRIBUTE_NOOPTIMIZE 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_ALLOCA 1 +#define HAVE_LIBRT 1 +#define HAVE_LIBRT 1 +#define HAVE_LIBGEN_H 1 +#define HAVE_DECL_ASPRINTF 1 +#define HAVE_DECL_BASENAME 1 +#define HAVE_DECL_FMEMOPEN 1 +#define HAVE_DECL_CPU_ZERO 1 +#define HAVE_DECL_CPU_ISSET 1 +#define HAVE_CPU_SET_T 1 +#define HAVE_SIGHANDLER_T 1 +#define HAVE___SIGHANDLER_T 1 +#define HAVE_CLEARENV 1 +#define HAVE_MALLOC_TRIM 1 +#define HAVE_MEMALIGN 1 +#define HAVE_POSIX_MEMALIGN 1 +#define HAVE_MREMAP 1 +#define HAVE_SCHED_SETAFFINITY 1 +#define HAVE_SCHED_GETAFFINITY 1 +#define HAVE_DECL_F_SETOWN_EX 1 +#define HAVE_DECL_ETHTOOL_CMD_SPEED 1 +#define HAVE_DECL_SPEED_UNKNOWN 1 +#define HAVE_DECL___PPC_GET_TIMEBASE_FREQ 0 +#define HAVE_DECL___PPC_GET_TIMEBASE 0 +#define NVALGRIND 1 +#define HAVE_NUMA_H 1 +#define HAVE_NUMAIF_H 1 +#define HAVE_STRUCT_BITMASK 1 +#define HAVE_NUMA 1 +#define HAVE_DECL_PR_SET_PTRACER 1 +#define HAVE_IN6_ADDR_S6_ADDR32 1 +#define HAVE_IP_IP_DST 1 +#define HAVE_SIGEVENT_SIGEV_UN_TID 1 +#define HAVE_SIGACTION_SA_RESTORER 1 +#define HAVE_SYS_EPOLL_H 1 +#define HAVE_SYS_EVENTFD_H 1 +#define HAVE_MALLOC_H 1 +#define HAVE_LINUX_MMAN_H 1 +#define HAVE_LINUX_IP_H 1 +#define HAVE_LINUX_FUTEX_H 1 +#define HAVE_NET_ETHERNET_H 1 +#define HAVE_NETINET_IP_H 1 +#define HAVE_UCM_PTMALLOC286 1 +#define HAVE_DECL_MADV_FREE 1 +#define HAVE_DECL_MADV_REMOVE 1 +#define HAVE_DECL_POSIX_MADV_DONTNEED 1 +#define HAVE_DECL_GETAUXVAL 1 +#define HAVE_DECL_SYS_MMAP 1 +#define HAVE_DECL_SYS_MUNMAP 1 +#define HAVE_DECL_SYS_MREMAP 1 +#define HAVE_DECL_SYS_BRK 1 +#define HAVE_DECL_SYS_MADVISE 1 +#define HAVE_DECL_SYS_SHMAT 1 +#define HAVE_DECL_SYS_SHMDT 1 +#define HAVE_DECL_SYS_IPC 0 +#define UCM_BISTRO_HOOKS 1 +#define HAVE___CURBRK 1 +#define HAVE_DECL_FUSE_OPEN_CHANNEL 0 +#define HAVE_DECL_FUSE_MOUNT 0 +#define HAVE_DECL_FUSE_UNMOUNT 0 +#define HAVE_CUDA_H 1 +#define HAVE_CUDA_RUNTIME_H 1 +#define HAVE_NVML_H 1 +#define HAVE_CUDA 1 +#define ucm_MODULES ":cuda" +#define HAVE_DECL_INOTIFY_INIT 1 +#define HAVE_INOTIFY 1 +#define HAVE_DECL_INOTIFY_ADD_WATCH 1 +#define HAVE_INOTIFY 1 +#define HAVE_DECL_IN_ATTRIB 1 +#define HAVE_INOTIFY 1 +#define ucs_MODULES "" +#define HAVE_STRUCT_DL_PHDR_INFO 1 +#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_DEBUG +#define HAVE_HW_TIMER 1 +#define ENABLE_BUILTIN_MEMCPY 1 +#define HAVE___CLEAR_CACHE 1 +#define uct_cuda_MODULES "" +#define HAVE_DECL_IBV_WC_STATUS_STR 1 +#define HAVE_DECL_IBV_EVENT_TYPE_STR 1 +#define HAVE_DECL_IBV_QUERY_GID 1 +#define HAVE_DECL_IBV_GET_DEVICE_NAME 1 +#define HAVE_DECL_IBV_CREATE_SRQ 1 +#define HAVE_DECL_IBV_GET_ASYNC_EVENT 1 +#define HAVE_DECL_IBV_CREATE_CQ_ATTR_IGNORE_OVERRUN 1 +#define HAVE_INFINIBAND_MLX5DV_H 1 +#define HAVE_DECL_MLX5DV_INIT_OBJ 1 +#define HAVE_DECL_MLX5DV_CREATE_QP 1 +#define HAVE_DECL_MLX5DV_IS_SUPPORTED 1 +#define HAVE_DECL_MLX5DV_DEVX_SUBSCRIBE_DEVX_EVENT 1 +#define HAVE_DECL_MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE 1 +#define HAVE_DECL_MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE 1 +#define HAVE_DECL_MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE 1 +#define HAVE_DECL_MLX5DV_UAR_ALLOC_TYPE_BF 1 +#define HAVE_DECL_MLX5DV_UAR_ALLOC_TYPE_NC 1 +#define HAVE_DECL_MLX5DV_DEVX_UMEM_REG_EX 1 +#define HAVE_STRUCT_MLX5DV_CQ_CQ_UAR 1 +#define HAVE_DECL_MLX5DV_OBJ_AH 1 +#define HAVE_DECL_MLX5DV_DCTYPE_DCT 1 +#define HAVE_DECL_IBV_ALLOC_TD 1 +#define HAVE_DEVX 1 +#define HAVE_MLX5_DV 1 +#define HAVE_MLX5_HW_UD 1 +#define HAVE_DECL_IBV_LINK_LAYER_INFINIBAND 1 +#define HAVE_DECL_IBV_LINK_LAYER_ETHERNET 1 +#define HAVE_DECL_IBV_EVENT_GID_CHANGE 1 +#define HAVE_DECL_IBV_TRANSPORT_USNIC 1 +#define HAVE_DECL_IBV_TRANSPORT_USNIC_UDP 1 +#define HAVE_DECL_IBV_TRANSPORT_UNSPECIFIED 1 +#define HAVE_DECL_IBV_CREATE_QP_EX 1 +#define HAVE_DECL_IBV_CREATE_CQ_EX 1 +#define HAVE_DECL_IBV_CREATE_SRQ_EX 1 +#define HAVE_DECL_IBV_REG_DMABUF_MR 1 +#define HAVE_DECL_IBV_SET_ECE 1 +#define HAVE_DECL_IBV_QUERY_DEVICE_EX 1 +#define HAVE_STRUCT_IBV_DEVICE_ATTR_EX_PCI_ATOMIC_CAPS 1 +#define HAVE_DECL_IBV_ACCESS_ON_DEMAND 1 +#define HAVE_ODP 1 +#define HAVE_DECL_IBV_ODP_SUPPORT_IMPLICIT 1 +#define HAVE_ODP_IMPLICIT 1 +#define HAVE_DECL_IBV_ACCESS_RELAXED_ORDERING 1 +#define HAVE_DECL_IBV_QPF_GRH_REQUIRED 1 +#define HAVE_DECL_IBV_ADVISE_MR 1 +#define HAVE_PREFETCH 1 +#define HAVE_IB 1 +#define HAVE_TL_DC 1 +#define HAVE_DC_DV 1 +#define HAVE_TL_RC 1 +#define HAVE_TL_UD 1 +#define IBV_HW_TM 1 +#define HAVE_STRUCT_IBV_TM_CAPS_FLAGS 1 +#define HAVE_DECL_IBV_ALLOC_DM 1 +#define HAVE_IBV_DM 1 +#define HAVE_DECL_IBV_CMD_MODIFY_QP 0 +#define uct_ib_MODULES "" +#define uct_rocm_MODULES "" +#define HAVE_SYS_UIO_H 1 +#define uct_MODULES ":cuda:ib:rdmacm:cma" +#define HAVE_DECL_IPPROTO_TCP 1 +#define HAVE_DECL_SOL_SOCKET 1 +#define HAVE_DECL_SO_KEEPALIVE 1 +#define HAVE_DECL_TCP_KEEPCNT 1 +#define HAVE_DECL_TCP_KEEPIDLE 1 +#define HAVE_DECL_TCP_KEEPINTVL 1 +#define UCT_TCP_EP_KEEPALIVE 1 +#define ucx_perftest_MODULES ":cuda" +#define test_MODULES ":module" +#define ENABLE_PARAMS_CHECK 0 +#define ENABLE_DEBUG_DATA 0 +#define UCT_UD_EP_DEBUG_HOOKS 0 +#define ENABLE_MT 0 diff --git a/configure~ b/configure~ new file mode 100755 index 000000000000..bf1c867b56cf --- /dev/null +++ b/configure~ @@ -0,0 +1,35603 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.71 for ucx 1.14. +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else \$as_nop + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else \$as_nop + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else $as_nop + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + +as_awk_strverscmp=' + # Use only awk features that work with 7th edition Unix awk (1978). + # My, what an old awk you have, Mr. Solaris! + END { + while (length(v1) && length(v2)) { + # Set d1 to be the next thing to compare from v1, and likewise for d2. + # Normally this is a single character, but if v1 and v2 contain digits, + # compare them as integers and fractions as strverscmp does. + if (v1 ~ /^[0-9]/ && v2 ~ /^[0-9]/) { + # Split v1 and v2 into their leading digit string components d1 and d2, + # and advance v1 and v2 past the leading digit strings. + for (len1 = 1; substr(v1, len1 + 1) ~ /^[0-9]/; len1++) continue + for (len2 = 1; substr(v2, len2 + 1) ~ /^[0-9]/; len2++) continue + d1 = substr(v1, 1, len1); v1 = substr(v1, len1 + 1) + d2 = substr(v2, 1, len2); v2 = substr(v2, len2 + 1) + if (d1 ~ /^0/) { + if (d2 ~ /^0/) { + # Compare two fractions. + while (d1 ~ /^0/ && d2 ~ /^0/) { + d1 = substr(d1, 2); len1-- + d2 = substr(d2, 2); len2-- + } + if (len1 != len2 && ! (len1 && len2 && substr(d1, 1, 1) == substr(d2, 1, 1))) { + # The two components differ in length, and the common prefix + # contains only leading zeros. Consider the longer to be less. + d1 = -len1 + d2 = -len2 + } else { + # Otherwise, compare as strings. + d1 = "x" d1 + d2 = "x" d2 + } + } else { + # A fraction is less than an integer. + exit 1 + } + } else { + if (d2 ~ /^0/) { + # An integer is greater than a fraction. + exit 2 + } else { + # Compare two integers. + d1 += 0 + d2 += 0 + } + } + } else { + # The normal case, without worrying about digits. + d1 = substr(v1, 1, 1); v1 = substr(v1, 2) + d2 = substr(v2, 1, 1); v2 = substr(v2, 2) + } + if (d1 < d2) exit 1 + if (d1 > d2) exit 2 + } + # Beware Solaris /usr/xgp4/bin/awk (at least through Solaris 10), + # which mishandles some comparisons of empty strings to integers. + if (length(v2)) exit 1 + if (length(v1)) exit 2 + } +' + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='ucx' +PACKAGE_TARNAME='ucx' +PACKAGE_VERSION='1.14' +PACKAGE_STRING='ucx 1.14' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +ac_default_prefix=/usr +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +build_bindings +build_modules +VALGRIND_LIBPATH +GTEST_CXXFLAGS +UCX_PERFTEST_CC +PERF_LIB_CXXFLAGS +CRAY_UGNI_LIBS +CRAY_UGNI_CFLAGS +XPMEM_LIBS +XPMEM_CFLAGS +KNEM_CPPFLAGS +RDMACM_LIBS +RDMACM_LDFLAGS +RDMACM_CPPFLAGS +LIB_MLX5 +IBVERBS_CFLAGS +IBVERBS_CPPFLAGS +IBVERBS_DIR +IBVERBS_LDFLAGS +GDR_COPY_LDFLAGS +GDR_COPY_CPPFLAGS +BFD_DEPS +BFD_LDFLAGS +BFD_LIBS +BFD_CPPFLAGS +BFD_CFLAGS +HIP_LIBS +HIP_LDFLAGS +HIP_CXXFLAGS +HIP_CPPFLAGS +ROCM_ROOT +ROCM_LIBS +ROCM_LDFLAGS +ROCM_CPPFLAGS +CUDA_STATIC_LIBS +CUDA_LIBS +CUDA_LDFLAGS +CUDA_CPPFLAGS +UCM_MODULE_LDFLAGS +MVN +JDK +READLINK +JAVABIN +MVNBIN +GO +GOBIN +FUSE3_LDFLAGS +FUSE3_LIBS +FUSE3_CPPFLAGS +RTE_LDFLAGS +RTE_CPPFLAGS +MPIRUN +SHMEMCC +MPICC +NUMA_LIBS +ALLOCA +BASE_CPPFLAGS +LDFLAGS_DYNAMIC_LIST_DATA +CFLAGS_PEDANTIC +BASE_CXXFLAGS +BASE_CFLAGS +CXX11FLAGS +CFLAGS_NO_DEPRECATED +IODEMO_CUDA_FALSE +IODEMO_CUDA_TRUE +HAVE_FUSE3_FALSE +HAVE_FUSE3_TRUE +HAVE_AARCH64_HI1620_FALSE +HAVE_AARCH64_HI1620_TRUE +HAVE_AARCH64_THUNDERX1_FALSE +HAVE_AARCH64_THUNDERX1_TRUE +HAVE_AARCH64_THUNDERX2_FALSE +HAVE_AARCH64_THUNDERX2_TRUE +HAVE_EXAMPLES_FALSE +HAVE_EXAMPLES_TRUE +INSTALL_DEVEL_HEADERS_FALSE +INSTALL_DEVEL_HEADERS_TRUE +ENABLE_EXPERIMENTAL_API_FALSE +ENABLE_EXPERIMENTAL_API_TRUE +HAVE_TCMALLOC_FALSE +HAVE_TCMALLOC_TRUE +HAVE_GLIBCXX_NOTHROW_FALSE +HAVE_GLIBCXX_NOTHROW_TRUE +HAVE_GNUXX11_FALSE +HAVE_GNUXX11_TRUE +HAVE_CXX11_FALSE +HAVE_CXX11_TRUE +HAVE_GO_FALSE +HAVE_GO_TRUE +HAVE_JAVA_FALSE +HAVE_JAVA_TRUE +HAVE_UCM_PTMALLOC286_FALSE +HAVE_UCM_PTMALLOC286_TRUE +HAVE_PROFILING_FALSE +HAVE_PROFILING_TRUE +HAVE_SHMEMCC_FALSE +HAVE_SHMEMCC_TRUE +HAVE_MPICC_FALSE +HAVE_MPICC_TRUE +HAVE_MPIRUN_FALSE +HAVE_MPIRUN_TRUE +HAVE_MPI_FALSE +HAVE_MPI_TRUE +HAVE_RDMACM_FALSE +HAVE_RDMACM_TRUE +HAVE_KNEM_FALSE +HAVE_KNEM_TRUE +HAVE_CMA_FALSE +HAVE_CMA_TRUE +HAVE_XPMEM_FALSE +HAVE_XPMEM_TRUE +HAVE_HIP_FALSE +HAVE_HIP_TRUE +HAVE_ROCM_FALSE +HAVE_ROCM_TRUE +HAVE_GDR_COPY_FALSE +HAVE_GDR_COPY_TRUE +HAVE_CUDA_STATIC_FALSE +HAVE_CUDA_STATIC_TRUE +HAVE_CUDA_FALSE +HAVE_CUDA_TRUE +HAVE_CRAY_UGNI_FALSE +HAVE_CRAY_UGNI_TRUE +HAVE_TL_UD_FALSE +HAVE_TL_UD_TRUE +HAVE_DC_DV_FALSE +HAVE_DC_DV_TRUE +HAVE_TL_DC_FALSE +HAVE_TL_DC_TRUE +HAVE_TL_RC_FALSE +HAVE_TL_RC_TRUE +HAVE_DEVX_FALSE +HAVE_DEVX_TRUE +HAVE_MLX5_DV_FALSE +HAVE_MLX5_DV_TRUE +HAVE_MLX5_HW_UD_FALSE +HAVE_MLX5_HW_UD_TRUE +HAVE_IB_FALSE +HAVE_IB_TRUE +HAVE_TUNING_FALSE +HAVE_TUNING_TRUE +HAVE_STATS_FALSE +HAVE_STATS_TRUE +HAVE_GTEST_FALSE +HAVE_GTEST_TRUE +DOCS_ONLY_FALSE +DOCS_ONLY_TRUE +DOXYGEN_PAPER_SIZE +DX_COND_latex_FALSE +DX_COND_latex_TRUE +DX_COND_pdf_FALSE +DX_COND_pdf_TRUE +DX_PDFLATEX +DX_FLAG_pdf +DX_COND_ps_FALSE +DX_COND_ps_TRUE +DX_EGREP +DX_DVIPS +DX_BIBTEX +DX_MAKEINDEX +DX_LATEX +DX_FLAG_ps +DX_COND_html_FALSE +DX_COND_html_TRUE +DX_FLAG_html +DX_COND_chi_FALSE +DX_COND_chi_TRUE +DX_FLAG_chi +DX_COND_chm_FALSE +DX_COND_chm_TRUE +DX_HHC +DX_FLAG_chm +DX_COND_xml_FALSE +DX_COND_xml_TRUE +DX_FLAG_xml +DX_COND_rtf_FALSE +DX_COND_rtf_TRUE +DX_FLAG_rtf +DX_COND_man_FALSE +DX_COND_man_TRUE +DX_FLAG_man +DX_COND_dot_FALSE +DX_COND_dot_TRUE +DX_DOT +DX_FLAG_dot +DX_COND_doc_FALSE +DX_COND_doc_TRUE +DX_PERL +DX_DOXYGEN +DX_FLAG_doc +DX_ENV +DX_DOCDIR +DX_CONFIG +DX_PROJECT +HAVE_UCG_FALSE +HAVE_UCG_TRUE +UCG_SUBDIR +HAVE_DOT_FALSE +HAVE_DOT_TRUE +GRAPHVIZ_DOT +shrext +objdir +localmoduledir +moduledir +modulesubdir +ucx_config_dir +LN_RS +PKG_CONFIG +LIBM +CXXCPP +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LIBTOOL +SED +LN_S +am__fastdepCCAS_FALSE +am__fastdepCCAS_TRUE +CCASDEPMODE +CCASFLAGS +CCAS +OPENMP_CFLAGS +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +SOVERSION +EXTRA_VERSION +PATCH_VERSION +MINOR_VERSION +MAJOR_VERSION +top_top_srcdir +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +SCM_VERSION +SCM_BRANCH +GITBIN +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_dependency_tracking +enable_silent_rules +enable_maintainer_mode +enable_openmp +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +enable_ucg +with_docs_only +enable_doxygen_doc +enable_doxygen_dot +enable_doxygen_man +enable_doxygen_rtf +enable_doxygen_xml +enable_doxygen_chm +enable_doxygen_chi +enable_doxygen_html +enable_doxygen_ps +enable_doxygen_pdf +enable_debug +enable_compiler_opt +enable_optimizations +with_avx +with_sse41 +with_sse42 +with_mcpu +with_march +enable_frame_pointer +enable_gtest +with_valgrind +enable_numa +with_allocator +with_mpi +with_rte +with_fuse3 +with_fuse3_static +with_go +with_java +with_cuda +with_rocm +enable_profiling +with_bfd +enable_stats +enable_tuning +enable_logging +enable_assertions +with_cache_line_size +enable_builtin_memcpy +with_gdrcopy +with_verbs +with_rc +with_ud +with_dc +with_mlx5_dv +with_ib_hw_tm +with_dm +with_devx +with_rdmacm +enable_cma +with_knem +with_xpmem +with_ugni +with_iodemo_cuda +enable_fault_injection +enable_params_check +enable_debug_data +enable_mt +enable_experimental_api +enable_devel_headers +enable_examples +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CXX +CXXFLAGS +CCC +CCAS +CCASFLAGS +LT_SYS_LIBRARY_PATH +CXXCPP +DOXYGEN_PAPER_SIZE +MPICC +SHMEMCC +MPIRUN' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +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}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -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=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +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 +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +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 ucx 1.14 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --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] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/ucx] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of ucx 1.14:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-maintainer-mode + enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --disable-openmp do not use OpenMP + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --enable-ucg Enable the group collective operations (experimental + component), default: NO + --disable-doxygen-doc don't generate any doxygen documentation + --enable-doxygen-dot generate graphics for doxygen documentation + --disable-doxygen-man don't generate doxygen manual pages + --enable-doxygen-rtf generate doxygen RTF documentation + --enable-doxygen-xml generate doxygen XML documentation + --enable-doxygen-chm generate doxygen compressed HTML help documentation + --enable-doxygen-chi generate doxygen seperate compressed HTML help index + file + --disable-doxygen-html don't generate doxygen plain HTML documentation + --enable-doxygen-ps generate doxygen PostScript documentation + --disable-doxygen-pdf don't generate doxygen PDF documentation + --enable-debug Enable debug mode build + --enable-compiler-opt Set optimization level [0-3] + --enable-optimizations Enable non-portable machine-specific CPU + optimizations, default: NO + --enable-frame-pointer Compile with frame pointer, useful for profiling, + default: NO + --enable-gtest Enable tests using the Google C++ Testing Framework. + (Default is disabled.) + --disable-numa Disable NUMA support + --enable-profiling Enable profiling support, default: NO + --enable-stats Enable statistics, useful for profiling, default: NO + --enable-tuning Enable parameter tuning in run-time, default: NO + --enable-logging Enable debug logging, default: YES + + --disable-assertions Disable code assertions, default: NO + + --enable-builtin-memcpy Enable builtin memcpy routine, default: YES + --enable-cma Enable Cross Memory Attach + --enable-fault-injection + Enable fault injection code, default: NO + --disable-params-check Disable checking user parameters passed to API, + default: NO + --enable-debug-data Enable collecting data to ease debugging, default: + NO + --enable-mt Enable thread support in UCP and UCT, default: NO + --enable-experimental-api + Enable installing experimental APIs, default: NO + --enable-devel-headers Enable installing development headers, default: NO + --enable-examples Enable examples build, default: NO + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-docs-only Compile only the docs and not the rest of UCX. + [default=NO] + --with-avx Use AVX compiler option. + --with-sse41 Use SSE 4.1 compiler option. + --with-sse42 Use SSE 4.2 compiler option. + --with-mcpu Use CPU Model compiler option. + --with-march Use architecture tuning compiler option. + --with-valgrind Enable Valgrind annotations (small runtime overhead, + default NO) + --with-allocator=NAME Build UCX with predefined memory allocator. The + supported values are: ptmalloc286. Default: + ptmalloc286 + --with-mpi[=MPIHOME] Compile MPI tests (default is NO). + --with-rte(=DIR) Where to find the RTE libraries and header files + --with-fuse3=(DIR) Enable the use of FUSEv3 (default is guess). + --with-fuse3-static=(DIR) + Static link FUSEv3 library (default is no). + --with-go=(PATH) Compile GO UCX bindings (default is guess). + + --with-java=(PATH) Compile Java UCX (default is guess). + + --with-cuda=(DIR) Enable the use of CUDA (default is guess). + --with-rocm=(DIR) Enable the use of ROCm (default is autodetect). + --with-bfd=(DIR) Enable using BFD support for detailed backtrace + (default is guess). + --with-cache-line-size=SIZE + Build UCX with cache line size defined by user. This + parameter overwrites default cache line sizes + defines in UCX (x86-64: 64, Power: 128, ARMv8: + 64/128). The supported values are: 64, 128 + --with-gdrcopy=(DIR) Enable the use of GDR_COPY (default is guess). + --with-verbs(=DIR) Build OpenFabrics support, adding DIR/include, + DIR/lib, and DIR/lib64 to the search path for + headers and libraries + --with-rc Compile with IB Reliable Connection support + --with-ud Compile with IB Unreliable Datagram support + --with-dc Compile with IB Dynamic Connection support + --with-mlx5-dv Compile with mlx5 Direct Verbs support. Direct Verbs + (DV) support provides additional acceleration + capabilities that are not available in a regular + mode. + --with-ib-hw-tm Compile with IB Tag Matching support + --with-dm Compile with Device Memory support + --with-devx Compile with DEVX support + --with-rdmacm=(DIR) Enable the use of RDMACM (default is guess). + --with-knem=(DIR) Enable the use of KNEM (default is guess). + --with-xpmem=(DIR) Enable the use of XPMEM (default is guess). + --with-ugni(=DIR) Build Cray UGNI support + --with-iodemo-cuda Build io_demo example with CUDA support + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CCAS assembler compiler command (defaults to CC) + CCASFLAGS assembler compiler flags (defaults to CFLAGS) + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + CXXCPP C++ preprocessor + DOXYGEN_PAPER_SIZE + a4wide (default), a4, letter, legal or executive + MPICC MPI C compiler command + SHMEMCC SHMEM C compiler command + MPIRUN MPI launch command + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +ucx configure 1.14 +generated by GNU Autoconf 2.71 + +Copyright (C) 2021 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_check_decl + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else $as_nop + eval "$4=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$4 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +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 ucx $as_me 1.14, which was +generated by GNU Autoconf 2.71. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" +# Test code for whether the C++ compiler supports C++98 (global declarations) +ac_cxx_conftest_cxx98_globals=' +// Does the compiler advertise C++98 conformance? +#if !defined __cplusplus || __cplusplus < 199711L +# error "Compiler does not advertise C++98 conformance" +#endif + +// These inclusions are to reject old compilers that +// lack the unsuffixed header files. +#include +#include + +// and are *not* freestanding headers in C++98. +extern void assert (int); +namespace std { + extern int strcmp (const char *, const char *); +} + +// Namespaces, exceptions, and templates were all added after "C++ 2.0". +using std::exception; +using std::strcmp; + +namespace { + +void test_exception_syntax() +{ + try { + throw "test"; + } catch (const char *s) { + // Extra parentheses suppress a warning when building autoconf itself, + // due to lint rules shared with more typical C programs. + assert (!(strcmp) (s, "test")); + } +} + +template struct test_template +{ + T const val; + explicit test_template(T t) : val(t) {} + template T add(U u) { return static_cast(u) + val; } +}; + +} // anonymous namespace +' + +# Test code for whether the C++ compiler supports C++98 (body of main) +ac_cxx_conftest_cxx98_main=' + assert (argc); + assert (! argv[0]); +{ + test_exception_syntax (); + test_template tt (2.0); + assert (tt.add (4) == 6.0); + assert (true && !false); +} +' + +# Test code for whether the C++ compiler supports C++11 (global declarations) +ac_cxx_conftest_cxx11_globals=' +// Does the compiler advertise C++ 2011 conformance? +#if !defined __cplusplus || __cplusplus < 201103L +# error "Compiler does not advertise C++11 conformance" +#endif + +namespace cxx11test +{ + constexpr int get_val() { return 20; } + + struct testinit + { + int i; + double d; + }; + + class delegate + { + public: + delegate(int n) : n(n) {} + delegate(): delegate(2354) {} + + virtual int getval() { return this->n; }; + protected: + int n; + }; + + class overridden : public delegate + { + public: + overridden(int n): delegate(n) {} + virtual int getval() override final { return this->n * 2; } + }; + + class nocopy + { + public: + nocopy(int i): i(i) {} + nocopy() = default; + nocopy(const nocopy&) = delete; + nocopy & operator=(const nocopy&) = delete; + private: + int i; + }; + + // for testing lambda expressions + template Ret eval(Fn f, Ret v) + { + return f(v); + } + + // for testing variadic templates and trailing return types + template auto sum(V first) -> V + { + return first; + } + template auto sum(V first, Args... rest) -> V + { + return first + sum(rest...); + } +} +' + +# Test code for whether the C++ compiler supports C++11 (body of main) +ac_cxx_conftest_cxx11_main=' +{ + // Test auto and decltype + auto a1 = 6538; + auto a2 = 48573953.4; + auto a3 = "String literal"; + + int total = 0; + for (auto i = a3; *i; ++i) { total += *i; } + + decltype(a2) a4 = 34895.034; +} +{ + // Test constexpr + short sa[cxx11test::get_val()] = { 0 }; +} +{ + // Test initializer lists + cxx11test::testinit il = { 4323, 435234.23544 }; +} +{ + // Test range-based for + int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, + 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; + for (auto &x : array) { x += 23; } +} +{ + // Test lambda expressions + using cxx11test::eval; + assert (eval ([](int x) { return x*2; }, 21) == 42); + double d = 2.0; + assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); + assert (d == 5.0); + assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); + assert (d == 5.0); +} +{ + // Test use of variadic templates + using cxx11test::sum; + auto a = sum(1); + auto b = sum(1, 2); + auto c = sum(1.0, 2.0, 3.0); +} +{ + // Test constructor delegation + cxx11test::delegate d1; + cxx11test::delegate d2(); + cxx11test::delegate d3(45); +} +{ + // Test override and final + cxx11test::overridden o1(55464); +} +{ + // Test nullptr + char *c = nullptr; +} +{ + // Test template brackets + test_template<::test_template> v(test_template(12)); +} +{ + // Unicode literals + char const *utf8 = u8"UTF-8 string \u2500"; + char16_t const *utf16 = u"UTF-8 string \u2500"; + char32_t const *utf32 = U"UTF-32 string \u2500"; +} +' + +# Test code for whether the C compiler supports C++11 (complete). +ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} +${ac_cxx_conftest_cxx11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + ${ac_cxx_conftest_cxx11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C++98 (complete). +ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + return ok; +} +" + + +# Auxiliary files required by this configure script. +ac_aux_files="config.guess config.sub ltmain.sh missing install-sh compile" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +: ${CPPFLAGS=""} +: ${CFLAGS=""} +: ${CXXFLAGS=""} +config_flags="$*" +valgrind_libpath="" + + + + + + + + + + + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else $as_nop + ac_file='' +fi +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else $as_nop + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } + + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf "%s\n" "#define _MINIX 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h + +else $as_nop + MINIX= +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h + +fi + + +ac_config_headers="$ac_config_headers config.h" + + +# Extract the first word of "git", so it can be a program name with args. +set dummy git; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GITBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GITBIN"; then + ac_cv_prog_GITBIN="$GITBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GITBIN="yes" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GITBIN=$ac_cv_prog_GITBIN +if test -n "$GITBIN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GITBIN" >&5 +printf "%s\n" "$GITBIN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +if test x"${GITBIN}" = x"yes" +then : + # remove preceding "refs/heads/" (11 characters) for symbolic ref + + +else $as_nop + SCM_BRANCH="" + + SCM_VERSION="0000000" + +fi + + + + + +am__api_version='1.16' + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + SET_MAKE= +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf "%s\n" "${_am_result}" >&6; } + +# Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +# Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='ucx' + VERSION='1.14' + + +printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test $am_uid -le $am_max_uid; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + _am_tools=none + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test $am_gid -le $am_max_gid; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + _am_tools=none + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else $as_nop + am_cv_prog_tar_ustar=$_am_tool +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf "%s\n" "$am_cv_prog_tar_ustar" >&6; } + + + + + +depcc="$CC" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + +# Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; +esac +am_make=${MAKE-make} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test ${enable_maintainer_mode+y} +then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else $as_nop + USE_MAINTAINER_MODE=no +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + + + + + +top_top_srcdir=$srcdir + + +MAJOR_VERSION=1 +MINOR_VERSION=14 +PATCH_VERSION=0 +EXTRA_VERSION= +VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_VERSION$EXTRA_VERSION +SOVERSION=0:0:0 + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf "%s\n" "$ac_ct_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 +printf %s "checking whether the compiler supports GNU C++... " >&6; } +if test ${ac_cv_cxx_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+y} +ac_save_CXXFLAGS=$CXXFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +printf %s "checking whether $CXX accepts -g... " >&6; } +if test ${ac_cv_prog_cxx_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_g=yes +else $as_nop + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + +else $as_nop + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } +if test $ac_test_CXXFLAGS; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_prog_cxx_stdcxx=no +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 +printf %s "checking for $CXX option to enable C++11 features... " >&6; } +if test ${ac_cv_prog_cxx_11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_11=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx11_program +_ACEOF +for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx11" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX +fi + +if test "x$ac_cv_prog_cxx_cxx11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cxx_cxx11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx11" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 + ac_prog_cxx_stdcxx=cxx11 +fi +fi +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 +printf %s "checking for $CXX option to enable C++98 features... " >&6; } +if test ${ac_cv_prog_cxx_98+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_98=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx98_program +_ACEOF +for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx98=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx98" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX +fi + +if test "x$ac_cv_prog_cxx_cxx98" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cxx_cxx98" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx98" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 + ac_prog_cxx_stdcxx=cxx98 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CXX_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +if test -e penmp || test -e mp; then + as_fn_error $? "AC_OPENMP clobbers files named 'mp' and 'penmp'. Aborting configure because one of these files already exists." "$LINENO" 5 +fi +# Check whether --enable-openmp was given. +if test ${enable_openmp+y} +then : + enableval=$enable_openmp; +fi + + OPENMP_CFLAGS= + if test "$enable_openmp" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to support OpenMP" >&5 +printf %s "checking for $CC option to support OpenMP... " >&6; } +if test ${ac_cv_prog_c_openmp+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_c_openmp='not found' + for ac_option in '' -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ + -Popenmp --openmp; do + + ac_save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $ac_option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENMP +#error "OpenMP not supported" +#endif +#include +int main (void) { return omp_get_num_threads (); } + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENMP +#error "OpenMP not supported" +#endif +#include +int main (void) { return omp_get_num_threads (); } + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_prog_c_openmp=$ac_option +else $as_nop + ac_cv_prog_c_openmp='unsupported' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ac_save_CFLAGS + + if test "$ac_cv_prog_c_openmp" != 'not found'; then + break + fi + done + if test "$ac_cv_prog_c_openmp" = 'not found'; then + ac_cv_prog_c_openmp='unsupported' + elif test "$ac_cv_prog_c_openmp" = ''; then + ac_cv_prog_c_openmp='none needed' + fi + rm -f penmp mp +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_c_openmp" >&5 +printf "%s\n" "$ac_cv_prog_c_openmp" >&6; } + if test "$ac_cv_prog_c_openmp" != 'unsupported' && \ + test "$ac_cv_prog_c_openmp" != 'none needed'; then + OPENMP_CFLAGS="$ac_cv_prog_c_openmp" + fi + fi + + +# By default we simply use the C compiler to build assembly code. + +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS + + + +depcc="$CCAS" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CCAS_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CCAS_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CCAS_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CCAS_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CCAS_dependencies_compiler_type" >&6; } +CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then + am__fastdepCCAS_TRUE= + am__fastdepCCAS_FALSE='#' +else + am__fastdepCCAS_TRUE='#' + am__fastdepCCAS_FALSE= +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +printf %s "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +printf "%s\n" "no, using $LN_S" >&6; } +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + +case `pwd` in + *\ * | *\ *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +printf %s "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +printf "%s\n" "printf" >&6; } ;; + print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +printf "%s\n" "print -r" >&6; } ;; + *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +printf "%s\n" "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +printf %s "checking for fgrep... " >&6; } +if test ${ac_cv_path_FGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in fgrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +printf "%s\n" "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else $as_nop + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${lt_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +printf "%s\n" "$LD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${lt_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if test ${lt_cv_path_NM+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +printf "%s\n" "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +printf "%s\n" "$DUMPBIN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +printf "%s\n" "$ac_ct_DUMPBIN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +printf %s "checking the name lister ($NM) interface... " >&6; } +if test ${lt_cv_nm_interface+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +printf "%s\n" "$lt_cv_nm_interface" >&6; } + +# find the maximum length of command line arguments +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +printf %s "checking the maximum length of command line arguments... " >&6; } +if test ${lt_cv_sys_max_cmd_len+y} +then : + printf %s "(cached) " >&6 +else $as_nop + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf "%s\n" "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +printf %s "checking how to convert $build file names to $host format... " >&6; } +if test ${lt_cv_to_host_file_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +printf %s "checking how to convert $build file names to toolchain format... " >&6; } +if test ${lt_cv_to_tool_file_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +printf %s "checking for $LD option to reload object files... " >&6; } +if test ${lt_cv_ld_reload_flag+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_ld_reload_flag='-r' +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +printf "%s\n" "$OBJDUMP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +printf "%s\n" "$ac_ct_OBJDUMP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +printf %s "checking how to recognize dependent libraries... " >&6; } +if test ${lt_cv_deplibs_check_method+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + 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 + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +printf "%s\n" "$DLLTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +printf "%s\n" "$ac_ct_DLLTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +printf %s "checking how to associate runtime and link libraries... " >&6; } +if test ${lt_cv_sharedlib_from_linklib_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cr} + + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +printf %s "checking for archiver @FILE support... " >&6; } +if test ${lt_cv_ar_at_file+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +printf "%s\n" "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +printf %s "checking command to parse $NM output from $compiler object... " >&6; } +if test ${lt_cv_sys_global_symbol_pipe+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + 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++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + 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 + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +printf "%s\n" "failed" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +printf %s "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test ${with_sysroot+y} +then : + withval=$with_sysroot; +else $as_nop + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +printf "%s\n" "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +printf "%s\n" "${lt_sysroot:-no}" >&6; } + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +printf %s "checking for a working dd... " >&6; } +if test ${ac_cv_path_lt_DD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in dd + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +printf "%s\n" "$ac_cv_path_lt_DD" >&6; } + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +printf %s "checking how to truncate binary pipes... " >&6; } +if test ${lt_cv_truncate_bin+y} +then : + printf %s "(cached) " >&6 +else $as_nop + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +printf "%s\n" "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test ${enable_libtool_lock+y} +then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +printf %s "checking whether the C compiler needs -belf... " >&6; } +if test ${lt_cv_cc_needs_belf+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_cc_needs_belf=yes +else $as_nop + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +printf "%s\n" "$MANIFEST_TOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if test ${lt_cv_path_mainfest_tool+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +printf "%s\n" "$DSYMUTIL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +printf "%s\n" "$NMEDIT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +printf "%s\n" "$ac_ct_NMEDIT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_LIPO+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +printf "%s\n" "$LIPO" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_LIPO+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +printf "%s\n" "$ac_ct_LIPO" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +printf "%s\n" "$OTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +printf "%s\n" "$ac_ct_OTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +printf "%s\n" "$OTOOL64" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +printf "%s\n" "$ac_ct_OTOOL64" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +printf %s "checking for -single_module linker flag... " >&6; } +if test ${lt_cv_apple_cc_single_mod+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +printf %s "checking for -exported_symbols_list linker flag... " >&6; } +if test ${lt_cv_ld_exported_symbols_list+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_ld_exported_symbols_list=yes +else $as_nop + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +printf %s "checking for -force_load linker flag... " >&6; } +if test ${lt_cv_ld_force_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +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 "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +printf "%s\n" "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[912]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*|11.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes +then : + printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h + +fi + + + + +func_stripname_cnf () +{ + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; + esac +} # func_stripname_cnf + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test ${enable_shared+y} +then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else $as_nop + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test ${enable_static+y} +then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else $as_nop + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test ${with_pic+y} +then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else $as_nop + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test ${enable_fast_install+y} +then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else $as_nop + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +printf %s "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test ${with_aix_soname+y} +then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else $as_nop + if test ${lt_cv_with_aix_soname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +printf "%s\n" "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +printf %s "checking for objdir... " >&6; } +if test ${lt_cv_objdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +printf "%s\n" "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +printf %s "checking for ${ac_tool_prefix}file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +printf %s "checking for file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test ${lt_cv_prog_compiler_rtti_exceptions+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + 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*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +printf %s "checking for $compiler option to produce PIC... " >&6; } +if test ${lt_cv_prog_compiler_pic+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test ${lt_cv_prog_compiler_pic_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test ${lt_cv_prog_compiler_static_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +printf %s "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +printf "%s\n" "$hard_links" >&6; } + if test no = "$hard_links"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + 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 + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + 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' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +printf %s "checking if $CC understands -b... " >&6; } +if test ${lt_cv_prog_compiler__b+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_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 -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if test ${lt_cv_irix_exported_symbol+y} +then : + printf %s "(cached) " >&6 +else $as_nop + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_irix_exported_symbol=yes +else $as_nop + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +printf "%s\n" "$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' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + 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 + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_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 -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +printf "%s\n" "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +printf %s "checking whether -lc should be explicitly linked in... " >&6; } +if test ${lt_cv_archive_cmds_need_lc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +printf %s "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + 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' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + 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 + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + 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=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + 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' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + 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' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if test ${lt_cv_shlibpath_overrides_runpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null +then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + 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 + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + 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='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + 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=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + 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 + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + 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 + ;; + +*) + dynamic_linker=no + ;; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +printf "%s\n" "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +printf %s "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +printf "%s\n" "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dl_dlopen=yes +else $as_nop + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else $as_nop + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes +then : + lt_cv_dlopen=shl_load +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +printf %s "checking for shl_load in -ldld... " >&6; } +if test ${ac_cv_lib_dld_shl_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main (void) +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dld_shl_load=yes +else $as_nop + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes +then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else $as_nop + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes +then : + lt_cv_dlopen=dlopen +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dl_dlopen=yes +else $as_nop + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +printf %s "checking for dlopen in -lsvld... " >&6; } +if test ${ac_cv_lib_svld_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_svld_dlopen=yes +else $as_nop + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes +then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +printf %s "checking for dld_link in -ldld... " >&6; } +if test ${ac_cv_lib_dld_dld_link+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main (void) +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dld_dld_link=yes +else $as_nop + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes +then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +printf %s "checking whether a program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +printf "%s\n" "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +printf %s "checking whether a statically linked program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self_static+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +printf %s "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" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + fi + ;; + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +printf %s "checking if libtool supports shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +printf "%s\n" "$can_build_shared" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +printf %s "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +printf "%s\n" "$enable_shared" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +printf %s "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +printf "%s\n" "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC + + if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +printf %s "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if test ${ac_cv_prog_CXXCPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CXX needs to be expanded + for CXXCPP in "$CXX -E" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +printf "%s\n" "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else $as_nop + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${lt_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +printf "%s\n" "$LD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${lt_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + 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"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct_CXX=no + hardcode_direct_absolute_CXX=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec_CXX='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + no_undefined_flag_CXX='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if test ${lt_cv_aix_libpath__CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if test ${lt_cv_aix_libpath__CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' $wl-bernotok' + allow_undefined_flag_CXX=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='$wl--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + if test yes != "$lt_cv_apple_cc_single_mod"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + os2*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_minus_L_CXX=yes + allow_undefined_flag_CXX=unsupported + shrext_cmds=.dll + archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + 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 + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='$wl-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # 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"' + ;; + *) + if test yes = "$GXX"; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # 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"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $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 -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # 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 $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # 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 -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='$wl-E' + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # 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 -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; 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,no = "$GXX,$with_gnu_ld"; then + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $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 -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + + # 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"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + no_undefined_flag_CXX=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # 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"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # 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"' + fi + + hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='$wl-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='$wl-z,text' + allow_undefined_flag_CXX='$wl-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +printf "%s\n" "$ld_shlibs_CXX" >&6; } + test no = "$ld_shlibs_CXX" && can_build_shared=no + + GCC_CXX=$GXX + LD_CXX=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX=$prev$p + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX=$prev$p + else + postdeps_CXX="${postdeps_CXX} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX=$p + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX=$p + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + lt_prog_compiler_pic_CXX='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static_CXX='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +printf %s "checking for $compiler option to produce PIC... " >&6; } +if test ${lt_cv_prog_compiler_pic_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if test ${lt_cv_prog_compiler_pic_works_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test ${lt_cv_prog_compiler_static_works_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +printf "%s\n" "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +printf %s "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +printf "%s\n" "$hard_links" >&6; } + if test no = "$hard_links"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + 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' + fi + ;; + pw32*) + export_symbols_cmds_CXX=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + 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' + ;; + esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +printf "%s\n" "$ld_shlibs_CXX" >&6; } +test no = "$ld_shlibs_CXX" && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +printf %s "checking whether -lc should be explicitly linked in... " >&6; } +if test ${lt_cv_archive_cmds_need_lc_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +printf "%s\n" "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +printf %s "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + 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' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + 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 + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + 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=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + 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' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + 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' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if test ${lt_cv_shlibpath_overrides_runpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null +then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + 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 + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + 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='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + 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=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + 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 + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + 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 + ;; + +*) + dynamic_linker=no + ;; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +printf "%s\n" "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +printf %s "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test yes = "$hardcode_automatic_CXX"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct_CXX" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && + test no != "$hardcode_minus_L_CXX"; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +printf "%s\n" "$hardcode_action_CXX" >&6; } + +if test relink = "$hardcode_action_CXX" || + test yes = "$inherit_rpath_CXX"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + +# Autoupdate added the next two lines to ensure that your configure +# script's behavior did not change. They are probably safe to remove. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + + +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _mwvalidcheckl in -lmw" >&5 +printf %s "checking for _mwvalidcheckl in -lmw... " >&6; } +if test ${ac_cv_lib_mw__mwvalidcheckl+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmw $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char _mwvalidcheckl (); +int +main (void) +{ +return _mwvalidcheckl (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_mw__mwvalidcheckl=yes +else $as_nop + ac_cv_lib_mw__mwvalidcheckl=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mw__mwvalidcheckl" >&5 +printf "%s\n" "$ac_cv_lib_mw__mwvalidcheckl" >&6; } +if test "x$ac_cv_lib_mw__mwvalidcheckl" = xyes +then : + LIBM=-lmw +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 +printf %s "checking for cos in -lm... " >&6; } +if test ${ac_cv_lib_m_cos+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char cos (); +int +main (void) +{ +return cos (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_m_cos=yes +else $as_nop + ac_cv_lib_m_cos=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 +printf "%s\n" "$ac_cv_lib_m_cos" >&6; } +if test "x$ac_cv_lib_m_cos" = xyes +then : + LIBM="$LIBM -lm" +fi + + ;; +*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 +printf %s "checking for cos in -lm... " >&6; } +if test ${ac_cv_lib_m_cos+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char cos (); +int +main (void) +{ +return cos (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_m_cos=yes +else $as_nop + ac_cv_lib_m_cos=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 +printf "%s\n" "$ac_cv_lib_m_cos" >&6; } +if test "x$ac_cv_lib_m_cos" = xyes +then : + LIBM=-lm +fi + + ;; +esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 +printf %s "checking for C/C++ restrict keyword... " >&6; } +if test ${ac_cv_c_restrict+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_c_restrict=no + # Put '__restrict__' first, to avoid problems with glibc and non-GCC; see: + # https://lists.gnu.org/archive/html/bug-autoconf/2016-02/msg00006.html + # Put 'restrict' last, because C++ lacks it. + for ac_kw in __restrict__ __restrict _Restrict restrict; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +typedef int *int_ptr; + int foo (int_ptr $ac_kw ip) { return ip[0]; } + int bar (int [$ac_kw]); /* Catch GCC bug 14050. */ + int bar (int ip[$ac_kw]) { return ip[0]; } + +int +main (void) +{ +int s[1]; + int *$ac_kw t = s; + t[0] = 0; + return foo (t) + bar (t); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_restrict=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + test "$ac_cv_c_restrict" != no && break + done + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 +printf "%s\n" "$ac_cv_c_restrict" >&6; } + + case $ac_cv_c_restrict in + restrict) ;; + no) printf "%s\n" "#define restrict /**/" >>confdefs.h + ;; + *) printf "%s\n" "#define restrict $ac_cv_c_restrict" >>confdefs.h + ;; + esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else $as_nop + ac_cv_c_undeclared_builtin_options=$ac_arg +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See \`config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + +ac_fn_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_strerror_r" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_STRERROR_R $ac_have_decl" >>confdefs.h + + +if test $ac_cv_have_decl_strerror_r = yes; then + # For backward compatibility's sake, define HAVE_STRERROR_R. + # (We used to run AC_CHECK_FUNCS_ONCE for strerror_r, as well + # as AC_CHECK_DECLS_ONCE.) + +printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5 +printf %s "checking whether strerror_r returns char *... " >&6; } +if test ${ac_cv_func_strerror_r_char_p+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + ac_cv_func_strerror_r_char_p=no + if test $ac_cv_have_decl_strerror_r = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ + + char buf[100]; + char x = *strerror_r (0, buf, sizeof buf); + char *p = strerror_r (0, buf, sizeof buf); + return !p || x; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_strerror_r_char_p=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5 +printf "%s\n" "$ac_cv_func_strerror_r_char_p" >&6; } +if test $ac_cv_func_strerror_r_char_p = yes; then + +printf "%s\n" "#define STRERROR_R_CHAR_P 1" >>confdefs.h + +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="pkg-config" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + + + +# +# Define SHARED_LIB preprocessor macro when building a shared library +# +lt_prog_compiler_pic="$lt_prog_compiler_pic -DUCX_SHARED_LIB" + + +# +# Force link_all_deplibs=yes for libtool, otherwise it will not +# link against dependency libs +# +link_all_deplibs=yes + + +# +# Check if 'ln' supports creating relative links +# +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ${LN_S} supports --relative" >&5 +printf %s "checking if ${LN_S} supports --relative... " >&6; } +if ${LN_S} --relative symlinktest 2>/dev/null +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + LN_RS="${LN_S} --relative" + + rm symlinktest +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + LN_RS=${LN_S} + +fi + + +# +# Save config flags for version dump tool +# + +printf "%s\n" "#define UCX_CONFIGURE_FLAGS \"$config_flags\"" >>confdefs.h + + +# +# Define path of ucx.conf configuration file +# +ucx_config_dir=${sysconfdir}/ucx + + +# +# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it. +# + + + +# +# Paths for loadable modules +# +modulesubdir=${PACKAGE_NAME} + # module directory names +moduledir=${libdir}/${modulesubdir} + # module installation directory +localmoduledir='$(abs_top_builddir)/modules' + # local directory for module symlinks +objdir=${objdir} + # libtool objects dir, usually .libs +shrext=${shrext_cmds} + # libtool shared library extension + +printf "%s\n" "#define UCX_MODULE_SUBDIR \"${modulesubdir}\"" >>confdefs.h + + + +# +# Additional m4 files +# +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_prog_doxygen.html +# =========================================================================== +# +# SYNOPSIS +# +# DX_INIT_DOXYGEN(PROJECT-NAME, DOXYFILE-PATH, [OUTPUT-DIR]) +# DX_DOXYGEN_FEATURE(ON|OFF) +# DX_DOT_FEATURE(ON|OFF) +# DX_HTML_FEATURE(ON|OFF) +# DX_CHM_FEATURE(ON|OFF) +# DX_CHI_FEATURE(ON|OFF) +# DX_MAN_FEATURE(ON|OFF) +# DX_RTF_FEATURE(ON|OFF) +# DX_XML_FEATURE(ON|OFF) +# DX_PDF_FEATURE(ON|OFF) +# DX_PS_FEATURE(ON|OFF) +# +# DESCRIPTION +# +# The DX_*_FEATURE macros control the default setting for the given +# Doxygen feature. Supported features are 'DOXYGEN' itself, 'DOT' for +# generating graphics, 'HTML' for plain HTML, 'CHM' for compressed HTML +# help (for MS users), 'CHI' for generating a seperate .chi file by the +# .chm file, and 'MAN', 'RTF', 'XML', 'PDF' and 'PS' for the appropriate +# output formats. The environment variable DOXYGEN_PAPER_SIZE may be +# specified to override the default 'a4wide' paper size. +# +# By default, HTML, PDF and PS documentation is generated as this seems to +# be the most popular and portable combination. MAN pages created by +# Doxygen are usually problematic, though by picking an appropriate subset +# and doing some massaging they might be better than nothing. CHM and RTF +# are specific for MS (note that you can't generate both HTML and CHM at +# the same time). The XML is rather useless unless you apply specialized +# post-processing to it. +# +# The macros mainly control the default state of the feature. The use can +# override the default by specifying --enable or --disable. The macros +# ensure that contradictory flags are not given (e.g., +# --enable-doxygen-html and --enable-doxygen-chm, +# --enable-doxygen-anything with --disable-doxygen, etc.) Finally, each +# feature will be automatically disabled (with a warning) if the required +# programs are missing. +# +# Once all the feature defaults have been specified, call DX_INIT_DOXYGEN +# with the following parameters: a one-word name for the project for use +# as a filename base etc., an optional configuration file name (the +# default is 'Doxyfile', the same as Doxygen's default), and an optional +# output directory name (the default is 'doxygen-doc'). +# +# Automake Support +# +# The following is a template aminclude.am file for use with Automake. +# Make targets and variables values are controlled by the various +# DX_COND_* conditionals set by autoconf. +# +# The provided targets are: +# +# doxygen-doc: Generate all doxygen documentation. +# +# doxygen-run: Run doxygen, which will generate some of the +# documentation (HTML, CHM, CHI, MAN, RTF, XML) +# but will not do the post processing required +# for the rest of it (PS, PDF, and some MAN). +# +# doxygen-man: Rename some doxygen generated man pages. +# +# doxygen-ps: Generate doxygen PostScript documentation. +# +# doxygen-pdf: Generate doxygen PDF documentation. +# +# Note that by default these are not integrated into the automake targets. +# If doxygen is used to generate man pages, you can achieve this +# integration by setting man3_MANS to the list of man pages generated and +# then adding the dependency: +# +# $(man3_MANS): doxygen-doc +# +# This will cause make to run doxygen and generate all the documentation. +# +# The following variable is intended for use in Makefile.am: +# +# DX_CLEANFILES = everything to clean. +# +# Then add this variable to MOSTLYCLEANFILES. +# +# ----- begin aminclude.am ------------------------------------- +# +# ## --------------------------------- ## +# ## Format-independent Doxygen rules. ## +# ## --------------------------------- ## +# +# if DX_COND_doc +# +# ## ------------------------------- ## +# ## Rules specific for HTML output. ## +# ## ------------------------------- ## +# +# if DX_COND_html +# +# DX_CLEAN_HTML = @DX_DOCDIR@/html +# +# endif DX_COND_html +# +# ## ------------------------------ ## +# ## Rules specific for CHM output. ## +# ## ------------------------------ ## +# +# if DX_COND_chm +# +# DX_CLEAN_CHM = @DX_DOCDIR@/chm +# +# if DX_COND_chi +# +# DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE@.chi +# +# endif DX_COND_chi +# +# endif DX_COND_chm +# +# ## ------------------------------ ## +# ## Rules specific for MAN output. ## +# ## ------------------------------ ## +# +# if DX_COND_man +# +# DX_CLEAN_MAN = @DX_DOCDIR@/man +# +# endif DX_COND_man +# +# ## ------------------------------ ## +# ## Rules specific for RTF output. ## +# ## ------------------------------ ## +# +# if DX_COND_rtf +# +# DX_CLEAN_RTF = @DX_DOCDIR@/rtf +# +# endif DX_COND_rtf +# +# ## ------------------------------ ## +# ## Rules specific for XML output. ## +# ## ------------------------------ ## +# +# if DX_COND_xml +# +# DX_CLEAN_XML = @DX_DOCDIR@/xml +# +# endif DX_COND_xml +# +# ## ----------------------------- ## +# ## Rules specific for PS output. ## +# ## ----------------------------- ## +# +# if DX_COND_ps +# +# DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE@.ps +# +# DX_PS_GOAL = doxygen-ps +# +# doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps +# +# @DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag +# cd @DX_DOCDIR@/latex; \ +# rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ +# $(DX_LATEX) refman.tex; \ +# $(MAKEINDEX_PATH) refman.idx; \ +# $(DX_LATEX) refman.tex; \ +# countdown=5; \ +# while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \ +# refman.log > /dev/null 2>&1 \ +# && test $$countdown -gt 0; do \ +# $(DX_LATEX) refman.tex; \ +# countdown=`expr $$countdown - 1`; \ +# done; \ +# $(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi +# +# endif DX_COND_ps +# +# ## ------------------------------ ## +# ## Rules specific for PDF output. ## +# ## ------------------------------ ## +# +# if DX_COND_pdf +# +# DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE@.pdf +# +# DX_PDF_GOAL = doxygen-pdf +# +# doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf +# +# @DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag +# cd @DX_DOCDIR@/latex; \ +# rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ +# $(DX_PDFLATEX) refman.tex; \ +# $(DX_MAKEINDEX) refman.idx; \ +# $(DX_PDFLATEX) refman.tex; \ +# countdown=5; \ +# while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \ +# refman.log > /dev/null 2>&1 \ +# && test $$countdown -gt 0; do \ +# $(DX_PDFLATEX) refman.tex; \ +# countdown=`expr $$countdown - 1`; \ +# done; \ +# mv refman.pdf ../@PACKAGE@.pdf +# +# endif DX_COND_pdf +# +# ## ------------------------------------------------- ## +# ## Rules specific for LaTeX (shared for PS and PDF). ## +# ## ------------------------------------------------- ## +# +# if DX_COND_latex +# +# DX_CLEAN_LATEX = @DX_DOCDIR@/latex +# +# endif DX_COND_latex +# +# .PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL) +# +# .INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL) +# +# doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag +# +# doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL) +# +# @DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS) +# rm -rf @DX_DOCDIR@ +# $(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG) +# echo Timestamp >$@ +# +# DX_CLEANFILES = \ +# @DX_DOCDIR@/@PACKAGE@.tag \ +# -r \ +# $(DX_CLEAN_HTML) \ +# $(DX_CLEAN_CHM) \ +# $(DX_CLEAN_CHI) \ +# $(DX_CLEAN_MAN) \ +# $(DX_CLEAN_RTF) \ +# $(DX_CLEAN_XML) \ +# $(DX_CLEAN_PS) \ +# $(DX_CLEAN_PDF) \ +# $(DX_CLEAN_LATEX) +# +# endif DX_COND_doc +# +# ----- end aminclude.am --------------------------------------- +# +# LICENSE +# +# Copyright (c) 2009 Oren Ben-Kiki +# Copyright (C) UT-Battelle, LLC. 2014-2015. ALL RIGHTS RESERVED. +# +# 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 13 + +## ----------## +## Defaults. ## +## ----------## + +DX_ENV="" +DX_MIN_VERSION="1.8.6" + + + + + + + + + + + + +## --------------- ## +## Private macros. ## +## --------------- ## + +# DX_ENV_APPEND(VARIABLE, VALUE) +# ------------------------------ +# Append VARIABLE="VALUE" to DX_ENV for invoking doxygen. + + +# DX_DIRNAME_EXPR +# --------------- +# Expand into a shell expression prints the directory part of a path. + + +# DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF) +# ------------------------------------- +# Expands according to the M4 (static) status of the feature. + + +# DX_REQUIRE_PROG(VARIABLE, PROGRAM) +# ---------------------------------- +# Require the specified program to be found for the DX_CURRENT_FEATURE to work. + + +# DX_REQUIRE_PROG_WITH_VERSION(VARIABLE, PROGRAM, VERSIONCMD, MINVERSION) +# ---------------------------------- +# Require the specified program to be found for the DX_CURRENT_FEATURE to work. + + +# DX_TEST_FEATURE(FEATURE) +# ------------------------ +# Expand to a shell expression testing whether the feature is active. + + +# DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE) +# ------------------------------------------------- +# Verify that a required features has the right state before trying to turn on +# the DX_CURRENT_FEATURE. + + +# DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE) +# ---------------------------------------------------------- +# Turn off the DX_CURRENT_FEATURE if the required feature is off. + + +# DX_FEATURE_ARG(FEATURE, DESCRIPTION, +# CHECK_DEPEND, CLEAR_DEPEND, +# REQUIRE, DO-IF-ON, DO-IF-OFF) +# -------------------------------------------- +# Parse the command-line option controlling a feature. CHECK_DEPEND is called +# if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND), +# otherwise CLEAR_DEPEND is called to turn off the default state if a required +# feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional +# requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and +# DO-IF-ON or DO-IF-OFF are called according to the final state of the feature. + + +## -------------- ## +## Public macros. ## +## -------------- ## + +# DX_XXX_FEATURE(DEFAULT_STATE) +# ----------------------------- + + + + + + + + + + + + +# DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR]) +# --------------------------------------------------------- +# PROJECT also serves as the base name for the documentation files. +# The default CONFIG-FILE is "Doxyfile" and OUTPUT-DOC-DIR is "doxygen-doc". + + +# +# Copyright (C) UT-Battelle, LLC. 2015. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + + +# Extract the first word of "dot", so it can be a program name with args. +set dummy dot; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GRAPHVIZ_DOT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GRAPHVIZ_DOT"; then + ac_cv_prog_GRAPHVIZ_DOT="$GRAPHVIZ_DOT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GRAPHVIZ_DOT="yes" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GRAPHVIZ_DOT=$ac_cv_prog_GRAPHVIZ_DOT +if test -n "$GRAPHVIZ_DOT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GRAPHVIZ_DOT" >&5 +printf "%s\n" "$GRAPHVIZ_DOT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test "x$GRAPHVIZ_DOT" = xyes; then + HAVE_DOT_TRUE= + HAVE_DOT_FALSE='#' +else + HAVE_DOT_TRUE='#' + HAVE_DOT_FALSE= +fi + + +# +# Copyright (C) Huawei Technologies Co., Ltd. 2019. ALL RIGHTS RESERVED. +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2020. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +# +# Enable UCG - Group collective operations component +# + +ucg_modules="" + + # m4_sinclude() silently ignores errors + +# Check whether --enable-ucg was given. +if test ${enable_ucg+y} +then : + enableval=$enable_ucg; +else $as_nop + enable_ucg=no +fi + +if test "x$enable_ucg" != xno +then : + ucg_modules=":builtin" + +printf "%s\n" "#define ENABLE_UCG 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Building with Groups and collective operations support (UCG)" >&5 +printf "%s\n" "$as_me: Building with Groups and collective operations support (UCG)" >&6;} + +fi +if test -f ${ac_confdir}/src/ucg/Makefile.am +then : + UCG_SUBDIR=src/ucg + +fi + + if test "x$enable_ucg" != xno; then + HAVE_UCG_TRUE= + HAVE_UCG_FALSE='#' +else + HAVE_UCG_TRUE='#' + HAVE_UCG_FALSE= +fi + + + + +# Check whether --with-docs_only was given. +if test ${with_docs_only+y} +then : + withval=$with_docs_only; +else $as_nop + : +fi + + + + +# +# Doxygen options +# + + + + + + +# Files: +DX_PROJECT=UCX + +DX_CONFIG=docs/doxygen/ucxdox + +DX_DOCDIR=docs/doxygen-doc + + +# Environment variables used inside doxygen.cfg: +DX_ENV="$DX_ENV SRCDIR='$srcdir'" + +DX_ENV="$DX_ENV PROJECT='$DX_PROJECT'" + +DX_ENV="$DX_ENV DOCDIR='$DX_DOCDIR'" + +DX_ENV="$DX_ENV VERSION='$PACKAGE_VERSION'" + + +# Doxygen itself: + + + + # Check whether --enable-doxygen-doc was given. +if test ${enable_doxygen_doc+y} +then : + enableval=$enable_doxygen_doc; +case "$enableval" in +#( +y|Y|yes|Yes|YES) + DX_FLAG_doc=1 + + +;; #( +n|N|no|No|NO) + DX_FLAG_doc=0 + +;; #( +*) + as_fn_error $? "invalid value '$enableval' given to doxygen-doc" "$LINENO" 5 +;; +esac + +else $as_nop + +DX_FLAG_doc=1 + + + +fi + +if test "$DX_FLAG_doc" = 1; then + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}doxygen", so it can be a program name with args. +set dummy ${ac_tool_prefix}doxygen; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_DOXYGEN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_DOXYGEN in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_DOXYGEN="$DX_DOXYGEN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_DOXYGEN="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_DOXYGEN=$ac_cv_path_DX_DOXYGEN +if test -n "$DX_DOXYGEN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_DOXYGEN" >&5 +printf "%s\n" "$DX_DOXYGEN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_DOXYGEN"; then + ac_pt_DX_DOXYGEN=$DX_DOXYGEN + # Extract the first word of "doxygen", so it can be a program name with args. +set dummy doxygen; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_DOXYGEN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_DOXYGEN in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_DOXYGEN="$ac_pt_DX_DOXYGEN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_DOXYGEN="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_DOXYGEN=$ac_cv_path_ac_pt_DX_DOXYGEN +if test -n "$ac_pt_DX_DOXYGEN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_DOXYGEN" >&5 +printf "%s\n" "$ac_pt_DX_DOXYGEN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_DOXYGEN" = x; then + DX_DOXYGEN="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_DOXYGEN=$ac_pt_DX_DOXYGEN + fi +else + DX_DOXYGEN="$ac_cv_path_DX_DOXYGEN" +fi + +if test "$DX_FLAG_doc$DX_DOXYGEN" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: doxygen not found - will not generate any doxygen documentation" >&5 +printf "%s\n" "$as_me: WARNING: doxygen not found - will not generate any doxygen documentation" >&2;} + DX_FLAG_doc=0 + +fi +version=`doxygen --version` +as_arg_v1=$version +as_arg_v2=$DX_MIN_VERSION +awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null +case $? in #( + 1) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: doxygen version $version is bad. Required version: $DX_MIN_VERSION and above" >&5 +printf "%s\n" "$as_me: WARNING: doxygen version $version is bad. Required version: $DX_MIN_VERSION and above" >&2;} + DX_FLAG_doc=0 + + ;; #( + 0) : + ;; #( + 2) : + ;; #( + *) : + ;; +esac + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}perl", so it can be a program name with args. +set dummy ${ac_tool_prefix}perl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_PERL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_PERL="$DX_PERL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_PERL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_PERL=$ac_cv_path_DX_PERL +if test -n "$DX_PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_PERL" >&5 +printf "%s\n" "$DX_PERL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_PERL"; then + ac_pt_DX_PERL=$DX_PERL + # Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_PERL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_PERL="$ac_pt_DX_PERL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_PERL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_PERL=$ac_cv_path_ac_pt_DX_PERL +if test -n "$ac_pt_DX_PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_PERL" >&5 +printf "%s\n" "$ac_pt_DX_PERL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_PERL" = x; then + DX_PERL="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_PERL=$ac_pt_DX_PERL + fi +else + DX_PERL="$ac_cv_path_DX_PERL" +fi + +if test "$DX_FLAG_doc$DX_PERL" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: perl not found - will not generate any doxygen documentation" >&5 +printf "%s\n" "$as_me: WARNING: perl not found - will not generate any doxygen documentation" >&2;} + DX_FLAG_doc=0 + +fi + + : +fi + if test "$DX_FLAG_doc" = 1; then + DX_COND_doc_TRUE= + DX_COND_doc_FALSE='#' +else + DX_COND_doc_TRUE='#' + DX_COND_doc_FALSE= +fi + +if test "$DX_FLAG_doc" = 1; then + DX_ENV="$DX_ENV PERL_PATH='$DX_PERL'" + + : +else + + : +fi + + +# Dot for graphics: + + + + # Check whether --enable-doxygen-dot was given. +if test ${enable_doxygen_dot+y} +then : + enableval=$enable_doxygen_dot; +case "$enableval" in +#( +y|Y|yes|Yes|YES) + DX_FLAG_dot=1 + + +test "$DX_FLAG_doc" = "1" \ +|| as_fn_error $? "doxygen-dot requires doxygen-dot" "$LINENO" 5 + +;; #( +n|N|no|No|NO) + DX_FLAG_dot=0 + +;; #( +*) + as_fn_error $? "invalid value '$enableval' given to doxygen-dot" "$LINENO" 5 +;; +esac + +else $as_nop + +DX_FLAG_dot=0 + + +test "$DX_FLAG_doc" = "1" || DX_FLAG_dot=0 + + + +fi + +if test "$DX_FLAG_dot" = 1; then + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dot", so it can be a program name with args. +set dummy ${ac_tool_prefix}dot; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_DOT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_DOT in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_DOT="$DX_DOT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_DOT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_DOT=$ac_cv_path_DX_DOT +if test -n "$DX_DOT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_DOT" >&5 +printf "%s\n" "$DX_DOT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_DOT"; then + ac_pt_DX_DOT=$DX_DOT + # Extract the first word of "dot", so it can be a program name with args. +set dummy dot; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_DOT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_DOT in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_DOT="$ac_pt_DX_DOT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_DOT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_DOT=$ac_cv_path_ac_pt_DX_DOT +if test -n "$ac_pt_DX_DOT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_DOT" >&5 +printf "%s\n" "$ac_pt_DX_DOT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_DOT" = x; then + DX_DOT="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_DOT=$ac_pt_DX_DOT + fi +else + DX_DOT="$ac_cv_path_DX_DOT" +fi + +if test "$DX_FLAG_dot$DX_DOT" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: dot not found - will not generate graphics for doxygen documentation" >&5 +printf "%s\n" "$as_me: WARNING: dot not found - will not generate graphics for doxygen documentation" >&2;} + DX_FLAG_dot=0 + +fi + + : +fi + if test "$DX_FLAG_dot" = 1; then + DX_COND_dot_TRUE= + DX_COND_dot_FALSE='#' +else + DX_COND_dot_TRUE='#' + DX_COND_dot_FALSE= +fi + +if test "$DX_FLAG_dot" = 1; then + DX_ENV="$DX_ENV HAVE_DOT='YES'" + + DX_ENV="$DX_ENV DOT_PATH='`expr ".$DX_DOT" : '\(\.\)[^/]*$' \| "x$DX_DOT" : 'x\(.*\)/[^/]*$'`'" + + : +else + DX_ENV="$DX_ENV HAVE_DOT='NO'" + + : +fi + + +# Man pages generation: + + + + # Check whether --enable-doxygen-man was given. +if test ${enable_doxygen_man+y} +then : + enableval=$enable_doxygen_man; +case "$enableval" in +#( +y|Y|yes|Yes|YES) + DX_FLAG_man=1 + + +test "$DX_FLAG_doc" = "1" \ +|| as_fn_error $? "doxygen-man requires doxygen-man" "$LINENO" 5 + +;; #( +n|N|no|No|NO) + DX_FLAG_man=0 + +;; #( +*) + as_fn_error $? "invalid value '$enableval' given to doxygen-man" "$LINENO" 5 +;; +esac + +else $as_nop + +DX_FLAG_man=1 + + +test "$DX_FLAG_doc" = "1" || DX_FLAG_man=0 + + + +fi + +if test "$DX_FLAG_man" = 1; then + + : +fi + if test "$DX_FLAG_man" = 1; then + DX_COND_man_TRUE= + DX_COND_man_FALSE='#' +else + DX_COND_man_TRUE='#' + DX_COND_man_FALSE= +fi + +if test "$DX_FLAG_man" = 1; then + DX_ENV="$DX_ENV GENERATE_MAN='YES'" + + : +else + DX_ENV="$DX_ENV GENERATE_MAN='NO'" + + : +fi + + +# RTF file generation: + + + + # Check whether --enable-doxygen-rtf was given. +if test ${enable_doxygen_rtf+y} +then : + enableval=$enable_doxygen_rtf; +case "$enableval" in +#( +y|Y|yes|Yes|YES) + DX_FLAG_rtf=1 + + +test "$DX_FLAG_doc" = "1" \ +|| as_fn_error $? "doxygen-rtf requires doxygen-rtf" "$LINENO" 5 + +;; #( +n|N|no|No|NO) + DX_FLAG_rtf=0 + +;; #( +*) + as_fn_error $? "invalid value '$enableval' given to doxygen-rtf" "$LINENO" 5 +;; +esac + +else $as_nop + +DX_FLAG_rtf=0 + + +test "$DX_FLAG_doc" = "1" || DX_FLAG_rtf=0 + + + +fi + +if test "$DX_FLAG_rtf" = 1; then + + : +fi + if test "$DX_FLAG_rtf" = 1; then + DX_COND_rtf_TRUE= + DX_COND_rtf_FALSE='#' +else + DX_COND_rtf_TRUE='#' + DX_COND_rtf_FALSE= +fi + +if test "$DX_FLAG_rtf" = 1; then + DX_ENV="$DX_ENV GENERATE_RTF='YES'" + + : +else + DX_ENV="$DX_ENV GENERATE_RTF='NO'" + + : +fi + + +# XML file generation: + + + + # Check whether --enable-doxygen-xml was given. +if test ${enable_doxygen_xml+y} +then : + enableval=$enable_doxygen_xml; +case "$enableval" in +#( +y|Y|yes|Yes|YES) + DX_FLAG_xml=1 + + +test "$DX_FLAG_doc" = "1" \ +|| as_fn_error $? "doxygen-xml requires doxygen-xml" "$LINENO" 5 + +;; #( +n|N|no|No|NO) + DX_FLAG_xml=0 + +;; #( +*) + as_fn_error $? "invalid value '$enableval' given to doxygen-xml" "$LINENO" 5 +;; +esac + +else $as_nop + +DX_FLAG_xml=0 + + +test "$DX_FLAG_doc" = "1" || DX_FLAG_xml=0 + + + +fi + +if test "$DX_FLAG_xml" = 1; then + + : +fi + if test "$DX_FLAG_xml" = 1; then + DX_COND_xml_TRUE= + DX_COND_xml_FALSE='#' +else + DX_COND_xml_TRUE='#' + DX_COND_xml_FALSE= +fi + +if test "$DX_FLAG_xml" = 1; then + DX_ENV="$DX_ENV GENERATE_XML='YES'" + + : +else + DX_ENV="$DX_ENV GENERATE_XML='NO'" + + : +fi + + +# (Compressed) HTML help generation: + + + + # Check whether --enable-doxygen-chm was given. +if test ${enable_doxygen_chm+y} +then : + enableval=$enable_doxygen_chm; +case "$enableval" in +#( +y|Y|yes|Yes|YES) + DX_FLAG_chm=1 + + +test "$DX_FLAG_doc" = "1" \ +|| as_fn_error $? "doxygen-chm requires doxygen-chm" "$LINENO" 5 + +;; #( +n|N|no|No|NO) + DX_FLAG_chm=0 + +;; #( +*) + as_fn_error $? "invalid value '$enableval' given to doxygen-chm" "$LINENO" 5 +;; +esac + +else $as_nop + +DX_FLAG_chm=0 + + +test "$DX_FLAG_doc" = "1" || DX_FLAG_chm=0 + + + +fi + +if test "$DX_FLAG_chm" = 1; then + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}hhc", so it can be a program name with args. +set dummy ${ac_tool_prefix}hhc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_HHC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_HHC in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_HHC="$DX_HHC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_HHC="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_HHC=$ac_cv_path_DX_HHC +if test -n "$DX_HHC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_HHC" >&5 +printf "%s\n" "$DX_HHC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_HHC"; then + ac_pt_DX_HHC=$DX_HHC + # Extract the first word of "hhc", so it can be a program name with args. +set dummy hhc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_HHC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_HHC in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_HHC="$ac_pt_DX_HHC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_HHC="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_HHC=$ac_cv_path_ac_pt_DX_HHC +if test -n "$ac_pt_DX_HHC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_HHC" >&5 +printf "%s\n" "$ac_pt_DX_HHC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_HHC" = x; then + DX_HHC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_HHC=$ac_pt_DX_HHC + fi +else + DX_HHC="$ac_cv_path_DX_HHC" +fi + +if test "$DX_FLAG_chm$DX_HHC" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: hhc not found - will not generate doxygen compressed HTML help documentation" >&5 +printf "%s\n" "$as_me: WARNING: hhc not found - will not generate doxygen compressed HTML help documentation" >&2;} + DX_FLAG_chm=0 + +fi + + : +fi + if test "$DX_FLAG_chm" = 1; then + DX_COND_chm_TRUE= + DX_COND_chm_FALSE='#' +else + DX_COND_chm_TRUE='#' + DX_COND_chm_FALSE= +fi + +if test "$DX_FLAG_chm" = 1; then + DX_ENV="$DX_ENV HHC_PATH='$DX_HHC'" + + DX_ENV="$DX_ENV GENERATE_HTML='YES'" + + DX_ENV="$DX_ENV GENERATE_HTMLHELP='YES'" + + : +else + DX_ENV="$DX_ENV GENERATE_HTMLHELP='NO'" + + : +fi + + +# Seperate CHI file generation. + + + + # Check whether --enable-doxygen-chi was given. +if test ${enable_doxygen_chi+y} +then : + enableval=$enable_doxygen_chi; +case "$enableval" in +#( +y|Y|yes|Yes|YES) + DX_FLAG_chi=1 + + +test "$DX_FLAG_chm" = "1" \ +|| as_fn_error $? "doxygen-chi requires doxygen-chi" "$LINENO" 5 + +;; #( +n|N|no|No|NO) + DX_FLAG_chi=0 + +;; #( +*) + as_fn_error $? "invalid value '$enableval' given to doxygen-chi" "$LINENO" 5 +;; +esac + +else $as_nop + +DX_FLAG_chi=0 + + +test "$DX_FLAG_chm" = "1" || DX_FLAG_chi=0 + + + +fi + +if test "$DX_FLAG_chi" = 1; then + + : +fi + if test "$DX_FLAG_chi" = 1; then + DX_COND_chi_TRUE= + DX_COND_chi_FALSE='#' +else + DX_COND_chi_TRUE='#' + DX_COND_chi_FALSE= +fi + +if test "$DX_FLAG_chi" = 1; then + DX_ENV="$DX_ENV GENERATE_CHI='YES'" + + : +else + DX_ENV="$DX_ENV GENERATE_CHI='NO'" + + : +fi + + +# Plain HTML pages generation: + + + + # Check whether --enable-doxygen-html was given. +if test ${enable_doxygen_html+y} +then : + enableval=$enable_doxygen_html; +case "$enableval" in +#( +y|Y|yes|Yes|YES) + DX_FLAG_html=1 + + +test "$DX_FLAG_doc" = "1" \ +|| as_fn_error $? "doxygen-html requires doxygen-html" "$LINENO" 5 + +test "$DX_FLAG_chm" = "0" \ +|| as_fn_error $? "doxygen-html contradicts doxygen-html" "$LINENO" 5 + +;; #( +n|N|no|No|NO) + DX_FLAG_html=0 + +;; #( +*) + as_fn_error $? "invalid value '$enableval' given to doxygen-html" "$LINENO" 5 +;; +esac + +else $as_nop + +DX_FLAG_html=1 + + +test "$DX_FLAG_doc" = "1" || DX_FLAG_html=0 + + +test "$DX_FLAG_chm" = "0" || DX_FLAG_html=0 + + + +fi + +if test "$DX_FLAG_html" = 1; then + + : +fi + if test "$DX_FLAG_html" = 1; then + DX_COND_html_TRUE= + DX_COND_html_FALSE='#' +else + DX_COND_html_TRUE='#' + DX_COND_html_FALSE= +fi + +if test "$DX_FLAG_html" = 1; then + DX_ENV="$DX_ENV GENERATE_HTML='YES'" + + : +else + test "$DX_FLAG_chm" = 1 || DX_ENV="$DX_ENV GENERATE_HTML='NO'" + + : +fi + + +# PostScript file generation: + + + + # Check whether --enable-doxygen-ps was given. +if test ${enable_doxygen_ps+y} +then : + enableval=$enable_doxygen_ps; +case "$enableval" in +#( +y|Y|yes|Yes|YES) + DX_FLAG_ps=1 + + +test "$DX_FLAG_doc" = "1" \ +|| as_fn_error $? "doxygen-ps requires doxygen-ps" "$LINENO" 5 + +;; #( +n|N|no|No|NO) + DX_FLAG_ps=0 + +;; #( +*) + as_fn_error $? "invalid value '$enableval' given to doxygen-ps" "$LINENO" 5 +;; +esac + +else $as_nop + +DX_FLAG_ps=0 + + +test "$DX_FLAG_doc" = "1" || DX_FLAG_ps=0 + + + +fi + +if test "$DX_FLAG_ps" = 1; then + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}latex", so it can be a program name with args. +set dummy ${ac_tool_prefix}latex; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_LATEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_LATEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_LATEX="$DX_LATEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_LATEX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_LATEX=$ac_cv_path_DX_LATEX +if test -n "$DX_LATEX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_LATEX" >&5 +printf "%s\n" "$DX_LATEX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_LATEX"; then + ac_pt_DX_LATEX=$DX_LATEX + # Extract the first word of "latex", so it can be a program name with args. +set dummy latex; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_LATEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_LATEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_LATEX="$ac_pt_DX_LATEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_LATEX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_LATEX=$ac_cv_path_ac_pt_DX_LATEX +if test -n "$ac_pt_DX_LATEX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_LATEX" >&5 +printf "%s\n" "$ac_pt_DX_LATEX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_LATEX" = x; then + DX_LATEX="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_LATEX=$ac_pt_DX_LATEX + fi +else + DX_LATEX="$ac_cv_path_DX_LATEX" +fi + +if test "$DX_FLAG_ps$DX_LATEX" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: latex not found - will not generate doxygen PostScript documentation" >&5 +printf "%s\n" "$as_me: WARNING: latex not found - will not generate doxygen PostScript documentation" >&2;} + DX_FLAG_ps=0 + +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}makeindex", so it can be a program name with args. +set dummy ${ac_tool_prefix}makeindex; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_MAKEINDEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_MAKEINDEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_MAKEINDEX="$DX_MAKEINDEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_MAKEINDEX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_MAKEINDEX=$ac_cv_path_DX_MAKEINDEX +if test -n "$DX_MAKEINDEX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_MAKEINDEX" >&5 +printf "%s\n" "$DX_MAKEINDEX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_MAKEINDEX"; then + ac_pt_DX_MAKEINDEX=$DX_MAKEINDEX + # Extract the first word of "makeindex", so it can be a program name with args. +set dummy makeindex; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_MAKEINDEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_MAKEINDEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_MAKEINDEX="$ac_pt_DX_MAKEINDEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_MAKEINDEX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_MAKEINDEX=$ac_cv_path_ac_pt_DX_MAKEINDEX +if test -n "$ac_pt_DX_MAKEINDEX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_MAKEINDEX" >&5 +printf "%s\n" "$ac_pt_DX_MAKEINDEX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_MAKEINDEX" = x; then + DX_MAKEINDEX="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_MAKEINDEX=$ac_pt_DX_MAKEINDEX + fi +else + DX_MAKEINDEX="$ac_cv_path_DX_MAKEINDEX" +fi + +if test "$DX_FLAG_ps$DX_MAKEINDEX" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: makeindex not found - will not generate doxygen PostScript documentation" >&5 +printf "%s\n" "$as_me: WARNING: makeindex not found - will not generate doxygen PostScript documentation" >&2;} + DX_FLAG_ps=0 + +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}bibtex", so it can be a program name with args. +set dummy ${ac_tool_prefix}bibtex; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_BIBTEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_BIBTEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_BIBTEX="$DX_BIBTEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_BIBTEX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_BIBTEX=$ac_cv_path_DX_BIBTEX +if test -n "$DX_BIBTEX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_BIBTEX" >&5 +printf "%s\n" "$DX_BIBTEX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_BIBTEX"; then + ac_pt_DX_BIBTEX=$DX_BIBTEX + # Extract the first word of "bibtex", so it can be a program name with args. +set dummy bibtex; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_BIBTEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_BIBTEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_BIBTEX="$ac_pt_DX_BIBTEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_BIBTEX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_BIBTEX=$ac_cv_path_ac_pt_DX_BIBTEX +if test -n "$ac_pt_DX_BIBTEX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_BIBTEX" >&5 +printf "%s\n" "$ac_pt_DX_BIBTEX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_BIBTEX" = x; then + DX_BIBTEX="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_BIBTEX=$ac_pt_DX_BIBTEX + fi +else + DX_BIBTEX="$ac_cv_path_DX_BIBTEX" +fi + +if test "$DX_FLAG_ps$DX_BIBTEX" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: bibtex not found - will not generate doxygen PostScript documentation" >&5 +printf "%s\n" "$as_me: WARNING: bibtex not found - will not generate doxygen PostScript documentation" >&2;} + DX_FLAG_ps=0 + +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dvips", so it can be a program name with args. +set dummy ${ac_tool_prefix}dvips; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_DVIPS+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_DVIPS in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_DVIPS="$DX_DVIPS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_DVIPS="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_DVIPS=$ac_cv_path_DX_DVIPS +if test -n "$DX_DVIPS"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_DVIPS" >&5 +printf "%s\n" "$DX_DVIPS" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_DVIPS"; then + ac_pt_DX_DVIPS=$DX_DVIPS + # Extract the first word of "dvips", so it can be a program name with args. +set dummy dvips; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_DVIPS+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_DVIPS in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_DVIPS="$ac_pt_DX_DVIPS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_DVIPS="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_DVIPS=$ac_cv_path_ac_pt_DX_DVIPS +if test -n "$ac_pt_DX_DVIPS"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_DVIPS" >&5 +printf "%s\n" "$ac_pt_DX_DVIPS" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_DVIPS" = x; then + DX_DVIPS="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_DVIPS=$ac_pt_DX_DVIPS + fi +else + DX_DVIPS="$ac_cv_path_DX_DVIPS" +fi + +if test "$DX_FLAG_ps$DX_DVIPS" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: dvips not found - will not generate doxygen PostScript documentation" >&5 +printf "%s\n" "$as_me: WARNING: dvips not found - will not generate doxygen PostScript documentation" >&2;} + DX_FLAG_ps=0 + +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}egrep", so it can be a program name with args. +set dummy ${ac_tool_prefix}egrep; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_EGREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_EGREP="$DX_EGREP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_EGREP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_EGREP=$ac_cv_path_DX_EGREP +if test -n "$DX_EGREP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_EGREP" >&5 +printf "%s\n" "$DX_EGREP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_EGREP"; then + ac_pt_DX_EGREP=$DX_EGREP + # Extract the first word of "egrep", so it can be a program name with args. +set dummy egrep; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_EGREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_EGREP="$ac_pt_DX_EGREP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_EGREP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_EGREP=$ac_cv_path_ac_pt_DX_EGREP +if test -n "$ac_pt_DX_EGREP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_EGREP" >&5 +printf "%s\n" "$ac_pt_DX_EGREP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_EGREP" = x; then + DX_EGREP="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_EGREP=$ac_pt_DX_EGREP + fi +else + DX_EGREP="$ac_cv_path_DX_EGREP" +fi + +if test "$DX_FLAG_ps$DX_EGREP" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: egrep not found - will not generate doxygen PostScript documentation" >&5 +printf "%s\n" "$as_me: WARNING: egrep not found - will not generate doxygen PostScript documentation" >&2;} + DX_FLAG_ps=0 + +fi + + : +fi + if test "$DX_FLAG_ps" = 1; then + DX_COND_ps_TRUE= + DX_COND_ps_FALSE='#' +else + DX_COND_ps_TRUE='#' + DX_COND_ps_FALSE= +fi + +if test "$DX_FLAG_ps" = 1; then + + : +else + + : +fi + + +# PDF file generation: + + + + # Check whether --enable-doxygen-pdf was given. +if test ${enable_doxygen_pdf+y} +then : + enableval=$enable_doxygen_pdf; +case "$enableval" in +#( +y|Y|yes|Yes|YES) + DX_FLAG_pdf=1 + + +test "$DX_FLAG_doc" = "1" \ +|| as_fn_error $? "doxygen-pdf requires doxygen-pdf" "$LINENO" 5 + +;; #( +n|N|no|No|NO) + DX_FLAG_pdf=0 + +;; #( +*) + as_fn_error $? "invalid value '$enableval' given to doxygen-pdf" "$LINENO" 5 +;; +esac + +else $as_nop + +DX_FLAG_pdf=1 + + +test "$DX_FLAG_doc" = "1" || DX_FLAG_pdf=0 + + + +fi + +if test "$DX_FLAG_pdf" = 1; then + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pdflatex", so it can be a program name with args. +set dummy ${ac_tool_prefix}pdflatex; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_PDFLATEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_PDFLATEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_PDFLATEX="$DX_PDFLATEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_PDFLATEX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_PDFLATEX=$ac_cv_path_DX_PDFLATEX +if test -n "$DX_PDFLATEX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_PDFLATEX" >&5 +printf "%s\n" "$DX_PDFLATEX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_PDFLATEX"; then + ac_pt_DX_PDFLATEX=$DX_PDFLATEX + # Extract the first word of "pdflatex", so it can be a program name with args. +set dummy pdflatex; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_PDFLATEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_PDFLATEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_PDFLATEX="$ac_pt_DX_PDFLATEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_PDFLATEX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_PDFLATEX=$ac_cv_path_ac_pt_DX_PDFLATEX +if test -n "$ac_pt_DX_PDFLATEX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_PDFLATEX" >&5 +printf "%s\n" "$ac_pt_DX_PDFLATEX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_PDFLATEX" = x; then + DX_PDFLATEX="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_PDFLATEX=$ac_pt_DX_PDFLATEX + fi +else + DX_PDFLATEX="$ac_cv_path_DX_PDFLATEX" +fi + +if test "$DX_FLAG_pdf$DX_PDFLATEX" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: pdflatex not found - will not generate doxygen PDF documentation" >&5 +printf "%s\n" "$as_me: WARNING: pdflatex not found - will not generate doxygen PDF documentation" >&2;} + DX_FLAG_pdf=0 + +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}makeindex", so it can be a program name with args. +set dummy ${ac_tool_prefix}makeindex; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_MAKEINDEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_MAKEINDEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_MAKEINDEX="$DX_MAKEINDEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_MAKEINDEX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_MAKEINDEX=$ac_cv_path_DX_MAKEINDEX +if test -n "$DX_MAKEINDEX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_MAKEINDEX" >&5 +printf "%s\n" "$DX_MAKEINDEX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_MAKEINDEX"; then + ac_pt_DX_MAKEINDEX=$DX_MAKEINDEX + # Extract the first word of "makeindex", so it can be a program name with args. +set dummy makeindex; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_MAKEINDEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_MAKEINDEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_MAKEINDEX="$ac_pt_DX_MAKEINDEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_MAKEINDEX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_MAKEINDEX=$ac_cv_path_ac_pt_DX_MAKEINDEX +if test -n "$ac_pt_DX_MAKEINDEX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_MAKEINDEX" >&5 +printf "%s\n" "$ac_pt_DX_MAKEINDEX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_MAKEINDEX" = x; then + DX_MAKEINDEX="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_MAKEINDEX=$ac_pt_DX_MAKEINDEX + fi +else + DX_MAKEINDEX="$ac_cv_path_DX_MAKEINDEX" +fi + +if test "$DX_FLAG_pdf$DX_MAKEINDEX" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: makeindex not found - will not generate doxygen PDF documentation" >&5 +printf "%s\n" "$as_me: WARNING: makeindex not found - will not generate doxygen PDF documentation" >&2;} + DX_FLAG_pdf=0 + +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}bibtex", so it can be a program name with args. +set dummy ${ac_tool_prefix}bibtex; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_BIBTEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_BIBTEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_BIBTEX="$DX_BIBTEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_BIBTEX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_BIBTEX=$ac_cv_path_DX_BIBTEX +if test -n "$DX_BIBTEX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_BIBTEX" >&5 +printf "%s\n" "$DX_BIBTEX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_BIBTEX"; then + ac_pt_DX_BIBTEX=$DX_BIBTEX + # Extract the first word of "bibtex", so it can be a program name with args. +set dummy bibtex; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_BIBTEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_BIBTEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_BIBTEX="$ac_pt_DX_BIBTEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_BIBTEX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_BIBTEX=$ac_cv_path_ac_pt_DX_BIBTEX +if test -n "$ac_pt_DX_BIBTEX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_BIBTEX" >&5 +printf "%s\n" "$ac_pt_DX_BIBTEX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_BIBTEX" = x; then + DX_BIBTEX="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_BIBTEX=$ac_pt_DX_BIBTEX + fi +else + DX_BIBTEX="$ac_cv_path_DX_BIBTEX" +fi + +if test "$DX_FLAG_pdf$DX_BIBTEX" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: bibtex not found - will not generate doxygen PDF documentation" >&5 +printf "%s\n" "$as_me: WARNING: bibtex not found - will not generate doxygen PDF documentation" >&2;} + DX_FLAG_pdf=0 + +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}egrep", so it can be a program name with args. +set dummy ${ac_tool_prefix}egrep; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DX_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DX_EGREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_DX_EGREP="$DX_EGREP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DX_EGREP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DX_EGREP=$ac_cv_path_DX_EGREP +if test -n "$DX_EGREP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DX_EGREP" >&5 +printf "%s\n" "$DX_EGREP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_DX_EGREP"; then + ac_pt_DX_EGREP=$DX_EGREP + # Extract the first word of "egrep", so it can be a program name with args. +set dummy egrep; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_DX_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_DX_EGREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_DX_EGREP="$ac_pt_DX_EGREP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_DX_EGREP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_DX_EGREP=$ac_cv_path_ac_pt_DX_EGREP +if test -n "$ac_pt_DX_EGREP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_EGREP" >&5 +printf "%s\n" "$ac_pt_DX_EGREP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_DX_EGREP" = x; then + DX_EGREP="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DX_EGREP=$ac_pt_DX_EGREP + fi +else + DX_EGREP="$ac_cv_path_DX_EGREP" +fi + +if test "$DX_FLAG_pdf$DX_EGREP" = 1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: egrep not found - will not generate doxygen PDF documentation" >&5 +printf "%s\n" "$as_me: WARNING: egrep not found - will not generate doxygen PDF documentation" >&2;} + DX_FLAG_pdf=0 + +fi + + : +fi + if test "$DX_FLAG_pdf" = 1; then + DX_COND_pdf_TRUE= + DX_COND_pdf_FALSE='#' +else + DX_COND_pdf_TRUE='#' + DX_COND_pdf_FALSE= +fi + +if test "$DX_FLAG_pdf" = 1; then + + : +else + + : +fi + + +# LaTeX generation for PS and/or PDF: + if test "$DX_FLAG_ps" = 1 || test "$DX_FLAG_pdf" = 1; then + DX_COND_latex_TRUE= + DX_COND_latex_FALSE='#' +else + DX_COND_latex_TRUE='#' + DX_COND_latex_FALSE= +fi + +if test "$DX_FLAG_ps" = 1 || test "$DX_FLAG_pdf" = 1; then + DX_ENV="$DX_ENV GENERATE_LATEX='YES'" + +else + DX_ENV="$DX_ENV GENERATE_LATEX='NO'" + +fi + +# Paper size for PS and/or PDF: + +case "$DOXYGEN_PAPER_SIZE" in +#( +"") + DOXYGEN_PAPER_SIZE="" + +;; #( +a4wide|a4|letter|legal|executive) + DX_ENV="$DX_ENV PAPER_SIZE='$DOXYGEN_PAPER_SIZE'" + +;; #( +*) + as_fn_error $? "unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE'" "$LINENO" 5 +;; +esac + +#For debugging: +#echo DX_FLAG_doc=$DX_FLAG_doc +#echo DX_FLAG_dot=$DX_FLAG_dot +#echo DX_FLAG_man=$DX_FLAG_man +#echo DX_FLAG_html=$DX_FLAG_html +#echo DX_FLAG_chm=$DX_FLAG_chm +#echo DX_FLAG_chi=$DX_FLAG_chi +#echo DX_FLAG_rtf=$DX_FLAG_rtf +#echo DX_FLAG_xml=$DX_FLAG_xml +#echo DX_FLAG_pdf=$DX_FLAG_pdf +#echo DX_FLAG_ps=$DX_FLAG_ps +#echo DX_ENV=$DX_ENV + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX options needed to detect all undeclared functions" >&5 +printf %s "checking for $CXX options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_cxx_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CFLAGS=$CFLAGS + ac_cv_cxx_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + +else $as_nop + # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_cxx_undeclared_builtin_options='none needed' +else $as_nop + ac_cv_cxx_undeclared_builtin_options=$ac_arg +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_cxx_undeclared_builtin_options" >&6; } + case $ac_cv_cxx_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CXX report undeclared builtins +See \`config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_cxx_undeclared_builtin_options='' ;; #( + *) : + ac_cxx_undeclared_builtin_options=$ac_cv_cxx_undeclared_builtin_options ;; +esac + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define size_t unsigned int" >>confdefs.h + +fi + +if test "x$with_docs_only" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Documents only requested" >&5 +printf "%s\n" "$as_me: Documents only requested" >&6;} + if test "$DX_FLAG_doc" = 1 +then : + +else $as_nop + as_fn_error $? "--with-only-docs was specified, but doxygen was not found" "$LINENO" 5 +fi + if test "$DX_FLAG_html" = 1 +then : + +else $as_nop + if test "x$enable_doxygen_html" = xyes +then : + as_fn_error $? "--enable-doxygen-html was specified, but html tools were not found" "$LINENO" 5 +fi +fi + if test "$DX_FLAG_man" = 1 +then : + +else $as_nop + if test "x$enable_doxygen_man" = xyes +then : + as_fn_error $? "--enable-doxygen-man was specified, but man tools were not found" "$LINENO" 5 +fi +fi + if test "$DX_FLAG_pdf" = 1 +then : + +else $as_nop + if test "x$enable_doxygen_pdf" = xyes +then : + as_fn_error $? "--enable-doxygen-pdf was specified, but pdf tools were not found" "$LINENO" 5 +fi +fi + if true; then + DOCS_ONLY_TRUE= + DOCS_ONLY_FALSE='#' +else + DOCS_ONLY_TRUE='#' + DOCS_ONLY_FALSE= +fi + + if false; then + HAVE_GTEST_TRUE= + HAVE_GTEST_FALSE='#' +else + HAVE_GTEST_TRUE='#' + HAVE_GTEST_FALSE= +fi + + if false; then + HAVE_STATS_TRUE= + HAVE_STATS_FALSE='#' +else + HAVE_STATS_TRUE='#' + HAVE_STATS_FALSE= +fi + + if false; then + HAVE_TUNING_TRUE= + HAVE_TUNING_FALSE='#' +else + HAVE_TUNING_TRUE='#' + HAVE_TUNING_FALSE= +fi + + if false; then + HAVE_IB_TRUE= + HAVE_IB_FALSE='#' +else + HAVE_IB_TRUE='#' + HAVE_IB_FALSE= +fi + + if false; then + HAVE_MLX5_HW_UD_TRUE= + HAVE_MLX5_HW_UD_FALSE='#' +else + HAVE_MLX5_HW_UD_TRUE='#' + HAVE_MLX5_HW_UD_FALSE= +fi + + if false; then + HAVE_MLX5_DV_TRUE= + HAVE_MLX5_DV_FALSE='#' +else + HAVE_MLX5_DV_TRUE='#' + HAVE_MLX5_DV_FALSE= +fi + + if false; then + HAVE_DEVX_TRUE= + HAVE_DEVX_FALSE='#' +else + HAVE_DEVX_TRUE='#' + HAVE_DEVX_FALSE= +fi + + if false; then + HAVE_TL_RC_TRUE= + HAVE_TL_RC_FALSE='#' +else + HAVE_TL_RC_TRUE='#' + HAVE_TL_RC_FALSE= +fi + + if false; then + HAVE_TL_DC_TRUE= + HAVE_TL_DC_FALSE='#' +else + HAVE_TL_DC_TRUE='#' + HAVE_TL_DC_FALSE= +fi + + if false; then + HAVE_DC_DV_TRUE= + HAVE_DC_DV_FALSE='#' +else + HAVE_DC_DV_TRUE='#' + HAVE_DC_DV_FALSE= +fi + + if false; then + HAVE_TL_UD_TRUE= + HAVE_TL_UD_FALSE='#' +else + HAVE_TL_UD_TRUE='#' + HAVE_TL_UD_FALSE= +fi + + if false; then + HAVE_CRAY_UGNI_TRUE= + HAVE_CRAY_UGNI_FALSE='#' +else + HAVE_CRAY_UGNI_TRUE='#' + HAVE_CRAY_UGNI_FALSE= +fi + + if false; then + HAVE_CUDA_TRUE= + HAVE_CUDA_FALSE='#' +else + HAVE_CUDA_TRUE='#' + HAVE_CUDA_FALSE= +fi + + if false; then + HAVE_CUDA_STATIC_TRUE= + HAVE_CUDA_STATIC_FALSE='#' +else + HAVE_CUDA_STATIC_TRUE='#' + HAVE_CUDA_STATIC_FALSE= +fi + + if false; then + HAVE_GDR_COPY_TRUE= + HAVE_GDR_COPY_FALSE='#' +else + HAVE_GDR_COPY_TRUE='#' + HAVE_GDR_COPY_FALSE= +fi + + if false; then + HAVE_ROCM_TRUE= + HAVE_ROCM_FALSE='#' +else + HAVE_ROCM_TRUE='#' + HAVE_ROCM_FALSE= +fi + + if false; then + HAVE_HIP_TRUE= + HAVE_HIP_FALSE='#' +else + HAVE_HIP_TRUE='#' + HAVE_HIP_FALSE= +fi + + if false; then + HAVE_XPMEM_TRUE= + HAVE_XPMEM_FALSE='#' +else + HAVE_XPMEM_TRUE='#' + HAVE_XPMEM_FALSE= +fi + + if false; then + HAVE_CMA_TRUE= + HAVE_CMA_FALSE='#' +else + HAVE_CMA_TRUE='#' + HAVE_CMA_FALSE= +fi + + if false; then + HAVE_KNEM_TRUE= + HAVE_KNEM_FALSE='#' +else + HAVE_KNEM_TRUE='#' + HAVE_KNEM_FALSE= +fi + + if false; then + HAVE_RDMACM_TRUE= + HAVE_RDMACM_FALSE='#' +else + HAVE_RDMACM_TRUE='#' + HAVE_RDMACM_FALSE= +fi + + if false; then + HAVE_MPI_TRUE= + HAVE_MPI_FALSE='#' +else + HAVE_MPI_TRUE='#' + HAVE_MPI_FALSE= +fi + + if false; then + HAVE_MPIRUN_TRUE= + HAVE_MPIRUN_FALSE='#' +else + HAVE_MPIRUN_TRUE='#' + HAVE_MPIRUN_FALSE= +fi + + if false; then + HAVE_MPICC_TRUE= + HAVE_MPICC_FALSE='#' +else + HAVE_MPICC_TRUE='#' + HAVE_MPICC_FALSE= +fi + + if false; then + HAVE_SHMEMCC_TRUE= + HAVE_SHMEMCC_FALSE='#' +else + HAVE_SHMEMCC_TRUE='#' + HAVE_SHMEMCC_FALSE= +fi + + if false; then + HAVE_PROFILING_TRUE= + HAVE_PROFILING_FALSE='#' +else + HAVE_PROFILING_TRUE='#' + HAVE_PROFILING_FALSE= +fi + + if false; then + HAVE_UCM_PTMALLOC286_TRUE= + HAVE_UCM_PTMALLOC286_FALSE='#' +else + HAVE_UCM_PTMALLOC286_TRUE='#' + HAVE_UCM_PTMALLOC286_FALSE= +fi + + if false; then + HAVE_JAVA_TRUE= + HAVE_JAVA_FALSE='#' +else + HAVE_JAVA_TRUE='#' + HAVE_JAVA_FALSE= +fi + + if false; then + HAVE_GO_TRUE= + HAVE_GO_FALSE='#' +else + HAVE_GO_TRUE='#' + HAVE_GO_FALSE= +fi + + if false; then + HAVE_CXX11_TRUE= + HAVE_CXX11_FALSE='#' +else + HAVE_CXX11_TRUE='#' + HAVE_CXX11_FALSE= +fi + + if false; then + HAVE_GNUXX11_TRUE= + HAVE_GNUXX11_FALSE='#' +else + HAVE_GNUXX11_TRUE='#' + HAVE_GNUXX11_FALSE= +fi + + if false; then + HAVE_GLIBCXX_NOTHROW_TRUE= + HAVE_GLIBCXX_NOTHROW_FALSE='#' +else + HAVE_GLIBCXX_NOTHROW_TRUE='#' + HAVE_GLIBCXX_NOTHROW_FALSE= +fi + + if false; then + HAVE_TCMALLOC_TRUE= + HAVE_TCMALLOC_FALSE='#' +else + HAVE_TCMALLOC_TRUE='#' + HAVE_TCMALLOC_FALSE= +fi + + if false; then + ENABLE_EXPERIMENTAL_API_TRUE= + ENABLE_EXPERIMENTAL_API_FALSE='#' +else + ENABLE_EXPERIMENTAL_API_TRUE='#' + ENABLE_EXPERIMENTAL_API_FALSE= +fi + + if false; then + INSTALL_DEVEL_HEADERS_TRUE= + INSTALL_DEVEL_HEADERS_FALSE='#' +else + INSTALL_DEVEL_HEADERS_TRUE='#' + INSTALL_DEVEL_HEADERS_FALSE= +fi + + if false; then + HAVE_EXAMPLES_TRUE= + HAVE_EXAMPLES_FALSE='#' +else + HAVE_EXAMPLES_TRUE='#' + HAVE_EXAMPLES_FALSE= +fi + + if false; then + HAVE_AARCH64_THUNDERX2_TRUE= + HAVE_AARCH64_THUNDERX2_FALSE='#' +else + HAVE_AARCH64_THUNDERX2_TRUE='#' + HAVE_AARCH64_THUNDERX2_FALSE= +fi + + if false; then + HAVE_AARCH64_THUNDERX1_TRUE= + HAVE_AARCH64_THUNDERX1_FALSE='#' +else + HAVE_AARCH64_THUNDERX1_TRUE='#' + HAVE_AARCH64_THUNDERX1_FALSE= +fi + + if false; then + HAVE_AARCH64_HI1620_TRUE= + HAVE_AARCH64_HI1620_FALSE='#' +else + HAVE_AARCH64_HI1620_TRUE='#' + HAVE_AARCH64_HI1620_FALSE= +fi + + if false; then + HAVE_FUSE3_TRUE= + HAVE_FUSE3_FALSE='#' +else + HAVE_FUSE3_TRUE='#' + HAVE_FUSE3_FALSE= +fi + + if false; then + IODEMO_CUDA_TRUE= + IODEMO_CUDA_FALSE='#' +else + IODEMO_CUDA_TRUE='#' + IODEMO_CUDA_FALSE= +fi + + +else $as_nop + + if false; then + DOCS_ONLY_TRUE= + DOCS_ONLY_FALSE='#' +else + DOCS_ONLY_TRUE='#' + DOCS_ONLY_FALSE= +fi + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2014. ALL RIGHTS RESERVED. +# Copyright (c) UT-Battelle, LLC. 2017. ALL RIGHTS RESERVED. +# Copyright (C) ARM Ltd. 2016-2020. ALL RIGHTS RESERVED. +# Copyright (C) NextSilicon Ltd. 2021. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + + +# +# Initialize CFLAGS +# +BASE_CFLAGS="-g -Wall -Werror" + + +# +# Check that C++ is functional. +# +# AC_PROG_CXX never fails but falls back on g++ as a default CXX compiler that +# always present. If g++ isn't installed, the macro doesn't detect this and +# compilation fails later on. CHECK_CXX_COMP compiles simple C++ code to +# verify that compiler is present and functional. +# + + + +# +# Debug mode +# +# Check whether --enable-debug was given. +if test ${enable_debug+y} +then : + enableval=$enable_debug; +else $as_nop + enable_debug=no +fi + +if test "x$enable_debug" = xyes +then : + BASE_CFLAGS="-D_DEBUG $BASE_CFLAGS" + BASE_CXXFLAGS="-D_DEBUG" $BASE_CXXFLAGS +fi + + +# +# Optimization level +# +# Check whether --enable-compiler-opt was given. +if test ${enable_compiler_opt+y} +then : + enableval=$enable_compiler_opt; +else $as_nop + enable_compiler_opt="none" +fi + +if test "x$enable_compiler_opt" = "xyes" +then : + BASE_CFLAGS="-O3 $BASE_CFLAGS" +elif test "x$enable_compiler_opt" = "xnone" +then : + if test "x$enable_debug" = xyes +then : + BASE_CFLAGS="-O0 $BASE_CFLAGS" + BASE_CXXFLAGS="-O0 $BASE_CXXFLAGS" +else $as_nop + BASE_CFLAGS="-O3 $BASE_CFLAGS" + BASE_CXXFLAGS="-O0 $BASE_CXXFLAGS" +fi +elif test "x$enable_compiler_opt" = "xno" +then : + +else $as_nop + BASE_CFLAGS="-O$enable_compiler_opt $BASE_CFLAGS" +fi + + +# +# CHECK_CROSS_COMP (program, true-action, false-action) +# +# The macro checks if it can run the program; it executes +# true action if the program can be executed, otherwise +# false action is executed. +# For cross-platform compilation we only check +# if we can compile and link the program. + + + +# +# Check for one specific attribute by compiling with C +# Usage: CHECK_SPECIFIC_ATTRIBUTE([name], [doc], [program]) +# + + + +# +# Enable/disable turning on machine-specific optimizations +# +# Check whether --enable-optimizations was given. +if test ${enable_optimizations+y} +then : + enableval=$enable_optimizations; +else $as_nop + enable_optimizations=no +fi + + + +# +# Check if compiler supports a given CPU optimization flag, and if yes - add it +# to BASE_CFLAGS substitution, and OPT_CFLAGS C define. +# +# Usage: COMPILER_CPU_OPTIMIZATION([name], [doc], [flag], [program]) +# + + + +# +# Check platform uarch and apply micro-architecture specific optimizations +# + + + +# +# CHECK_COMPILER_FLAG +# Usage: CHECK_COMPILER_FLAG([name], [flag], [program], [if-true], [if-false]) +# +# The macro checks if program may be compiled and linked using specified flag +# + + + +# +# ADD_COMPILER_FLAG_IF_SUPPORTED +# Usage: ADD_COMPILER_FLAG_IF_SUPPORTED([name], [flag], [program], [if-true], [if-false]) +# +# The macro checks if program may be compiled using specified flag and adds +# this flag if it is supported +# + + + +# +# ADD_COMPILER_FLAGS_IF_SUPPORTED +# Usage: ADD_COMPILER_FLAGS_IF_SUPPORTED([[flag1], [flag2], [flag3]], [program]) +# +# The macro checks multiple flags supported by compiler +# + + + +# +# CHECK_DEPRECATED_DECL_FLAG (flag, variable) +# +# The macro checks if the given compiler flag enables usig deprecated declarations. +# If yes, it appends the flags to "variable". +# + + + +# +# Force ICC treat command line warnings as errors. +# This evaluation should be called prior to all other compiler flags evals +# + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -diag-error 10006" >&5 +printf %s "checking compiler flag -diag-error 10006... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -diag-error 10006" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -diag-error 10006" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -diag-error 10006" + BASE_CXXFLAGS="$BASE_CXXFLAGS -diag-error 10006" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -diag-disable 1478 overrides deprecated declarations" >&5 +printf %s "checking whether -diag-disable 1478 overrides deprecated declarations... " >&6; } + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -diag-disable 1478" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + int __attribute__ ((__deprecated__)) f() { return 0; } + int main(int argc, char** argv) { return f(); } + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS_NO_DEPRECATED="${CFLAGS_NO_DEPRECATED} -diag-disable 1478" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS="$SAVE_CFLAGS" + # icc + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -Wno-deprecated-declarations overrides deprecated declarations" >&5 +printf %s "checking whether -Wno-deprecated-declarations overrides deprecated declarations... " >&6; } + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wno-deprecated-declarations" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + int __attribute__ ((__deprecated__)) f() { return 0; } + int main(int argc, char** argv) { return f(); } + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS_NO_DEPRECATED="${CFLAGS_NO_DEPRECATED} -Wno-deprecated-declarations" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS="$SAVE_CFLAGS" + # gcc +CFLAGS_NO_DEPRECATED=$CFLAGS_NO_DEPRECATED + + + +# +# Disable format-string warning on ICC +# + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -diag-disable 269" >&5 +printf %s "checking compiler flag -diag-disable 269... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -diag-disable 269" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -diag-disable 269" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + int main(int argc, char** argv) { + char *p = NULL; + scanf("%m[^.]", &p); + free(p); + return 0; + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -diag-disable 269" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + +# +# Set default datatype alignment to 16 bytes. +# Some compilers (LLVM based, clang) expects allocation of datatypes by 32 bytes +# to optimize operations memset/memcpy/etc using vectorized processor instructions +# which requires alignment of memory buffer by 32 or higer bytes. Default malloc method +# guarantee alignment for 16 bytes only. Force using compiler 16-bytes alignment +# by default if option is supported. +# +UCX_ALLOC_ALIGN=16 + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -fmax-type-align=$UCX_ALLOC_ALIGN" >&5 +printf %s "checking compiler flag -fmax-type-align=$UCX_ALLOC_ALIGN... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -fmax-type-align=$UCX_ALLOC_ALIGN" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -fmax-type-align=$UCX_ALLOC_ALIGN" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -fmax-type-align=$UCX_ALLOC_ALIGN" + +printf "%s\n" "#define UCX_ALLOC_ALIGN $UCX_ALLOC_ALIGN" >>confdefs.h + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + +# +# SSE/AVX +# + + +# Check whether --with-avx was given. +if test ${with_avx+y} +then : + withval=$with_avx; +else $as_nop + with_avx=$enable_optimizations +fi + + + if test "x$with_avx" != "xno" +then : + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -mavx" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking -mavx" >&5 +printf %s "checking -mavx... " >&6; } + + if test "$cross_compiling" = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main(int argc, char** argv) { + return _mm256_testz_si256(_mm256_set1_epi32(1), _mm256_set1_epi32(3)); + } + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + # TODO: Add CPU UARCH detector and validator in UCX init. + # As for now we will avoid passing this information to + # library. + BASE_CFLAGS="$BASE_CFLAGS -mavx" + if test "xavx" != "xmcpu" -a "xavx" != "xmarch" +then : + OPT_CFLAGS="$OPT_CFLAGS|avx" +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main(int argc, char** argv) { + return _mm256_testz_si256(_mm256_set1_epi32(1), _mm256_set1_epi32(3)); + } + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + # TODO: Add CPU UARCH detector and validator in UCX init. + # As for now we will avoid passing this information to + # library. + BASE_CFLAGS="$BASE_CFLAGS -mavx" + if test "xavx" != "xmcpu" -a "xavx" != "xmarch" +then : + OPT_CFLAGS="$OPT_CFLAGS|avx" +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + + CFLAGS="$SAVE_CFLAGS" +fi + +if test "x$with_avx" != xyes +then : + + +# Check whether --with-sse41 was given. +if test ${with_sse41+y} +then : + withval=$with_sse41; +else $as_nop + with_sse41=$enable_optimizations +fi + + + if test "x$with_sse41" != "xno" +then : + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -msse4.1" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking -msse4.1" >&5 +printf %s "checking -msse4.1... " >&6; } + + if test "$cross_compiling" = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main(int argc, char** argv) { + return _mm_testz_si128(_mm_set1_epi32(1), _mm_set1_epi32(3)); + } + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + # TODO: Add CPU UARCH detector and validator in UCX init. + # As for now we will avoid passing this information to + # library. + BASE_CFLAGS="$BASE_CFLAGS -msse4.1" + if test "xsse41" != "xmcpu" -a "xsse41" != "xmarch" +then : + OPT_CFLAGS="$OPT_CFLAGS|sse41" +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main(int argc, char** argv) { + return _mm_testz_si128(_mm_set1_epi32(1), _mm_set1_epi32(3)); + } + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + # TODO: Add CPU UARCH detector and validator in UCX init. + # As for now we will avoid passing this information to + # library. + BASE_CFLAGS="$BASE_CFLAGS -msse4.1" + if test "xsse41" != "xmcpu" -a "xsse41" != "xmarch" +then : + OPT_CFLAGS="$OPT_CFLAGS|sse41" +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + + CFLAGS="$SAVE_CFLAGS" +fi + + + +# Check whether --with-sse42 was given. +if test ${with_sse42+y} +then : + withval=$with_sse42; +else $as_nop + with_sse42=$enable_optimizations +fi + + + if test "x$with_sse42" != "xno" +then : + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -msse4.2" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking -msse4.2" >&5 +printf %s "checking -msse4.2... " >&6; } + + if test "$cross_compiling" = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main(int argc, char** argv) { return _mm_popcnt_u32(0x101) - 2; + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + # TODO: Add CPU UARCH detector and validator in UCX init. + # As for now we will avoid passing this information to + # library. + BASE_CFLAGS="$BASE_CFLAGS -msse4.2" + if test "xsse42" != "xmcpu" -a "xsse42" != "xmarch" +then : + OPT_CFLAGS="$OPT_CFLAGS|sse42" +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main(int argc, char** argv) { return _mm_popcnt_u32(0x101) - 2; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + # TODO: Add CPU UARCH detector and validator in UCX init. + # As for now we will avoid passing this information to + # library. + BASE_CFLAGS="$BASE_CFLAGS -msse4.2" + if test "xsse42" != "xmcpu" -a "xsse42" != "xmarch" +then : + OPT_CFLAGS="$OPT_CFLAGS|sse42" +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + + CFLAGS="$SAVE_CFLAGS" +fi + + +fi + + + + cpuimpl=`grep 'CPU implementer' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` + cpuarch=`grep 'CPU architecture' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` + cpuvar=`grep 'CPU variant' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` + cpupart=`grep 'CPU part' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` + + ax_cpu="" + ax_arch="" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Detected CPU implementation: ${cpuimpl}" >&5 +printf "%s\n" "$as_me: Detected CPU implementation: ${cpuimpl}" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Detected CPU architecture: ${cpuarch}" >&5 +printf "%s\n" "$as_me: Detected CPU architecture: ${cpuarch}" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Detected CPU variant: ${cpuvar}" >&5 +printf "%s\n" "$as_me: Detected CPU variant: ${cpuvar}" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Detected CPU part: ${cpupart}" >&5 +printf "%s\n" "$as_me: Detected CPU part: ${cpupart}" >&6;} + + case $cpuimpl in + 0x42) case $cpupart in + 0x516 | 0x0516) + +printf "%s\n" "#define HAVE_AARCH64_THUNDERX2 1" >>confdefs.h + + ax_cpu="thunderx2t99" + ax_arch="armv8.1-a+lse" ;; + 0xaf | 0x0af) + +printf "%s\n" "#define HAVE_AARCH64_THUNDERX2 1" >>confdefs.h + + ax_cpu="thunderx2t99" + ax_arch="armv8.1-a+lse" ;; + esac + ;; + 0x43) case $cpupart in + 0x516 | 0x0516) + +printf "%s\n" "#define HAVE_AARCH64_THUNDERX2 1" >>confdefs.h + + ax_cpu="thunderx2t99" + ax_arch="armv8.1-a+lse" ;; + 0xaf | 0x0af) + +printf "%s\n" "#define HAVE_AARCH64_THUNDERX2 1" >>confdefs.h + + ax_cpu="thunderx2t99" + ax_arch="armv8.1-a+lse" ;; + 0xa1 | 0x0a1) + +printf "%s\n" "#define HAVE_AARCH64_THUNDERX1 1" >>confdefs.h + + ax_cpu="thunderxt88" ;; + esac + ;; + 0x48) case $cpupart in + 0xd01 | 0x0d01) + +printf "%s\n" "#define HAVE_AARCH64_HI1620 1" >>confdefs.h + + ax_cpu="tsv110" + ax_arch="armv8.2-a" ;; + esac + ;; + *) + ;; + esac + if test x$ax_cpu = xthunderx2t99; then + HAVE_AARCH64_THUNDERX2_TRUE= + HAVE_AARCH64_THUNDERX2_FALSE='#' +else + HAVE_AARCH64_THUNDERX2_TRUE='#' + HAVE_AARCH64_THUNDERX2_FALSE= +fi + + if test x$ax_cpu = xthunderxt88; then + HAVE_AARCH64_THUNDERX1_TRUE= + HAVE_AARCH64_THUNDERX1_FALSE='#' +else + HAVE_AARCH64_THUNDERX1_TRUE='#' + HAVE_AARCH64_THUNDERX1_FALSE= +fi + + if test x$ax_cpu = xtsv110; then + HAVE_AARCH64_HI1620_TRUE= + HAVE_AARCH64_HI1620_FALSE='#' +else + HAVE_AARCH64_HI1620_TRUE='#' + HAVE_AARCH64_HI1620_FALSE= +fi + + + + +# +# CPU tuning +# +if test "x$ax_cpu" != "x" +then : + + +# Check whether --with-mcpu was given. +if test ${with_mcpu+y} +then : + withval=$with_mcpu; +else $as_nop + with_mcpu=$enable_optimizations +fi + + + if test "x$with_mcpu" != "xno" +then : + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -mcpu=$ax_cpu" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking -mcpu=$ax_cpu" >&5 +printf %s "checking -mcpu=$ax_cpu... " >&6; } + + if test "$cross_compiling" = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv) { return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + # TODO: Add CPU UARCH detector and validator in UCX init. + # As for now we will avoid passing this information to + # library. + BASE_CFLAGS="$BASE_CFLAGS -mcpu=$ax_cpu" + if test "xmcpu" != "xmcpu" -a "xmcpu" != "xmarch" +then : + OPT_CFLAGS="$OPT_CFLAGS|mcpu" +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv) { return 0;} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + # TODO: Add CPU UARCH detector and validator in UCX init. + # As for now we will avoid passing this information to + # library. + BASE_CFLAGS="$BASE_CFLAGS -mcpu=$ax_cpu" + if test "xmcpu" != "xmcpu" -a "xmcpu" != "xmarch" +then : + OPT_CFLAGS="$OPT_CFLAGS|mcpu" +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + + CFLAGS="$SAVE_CFLAGS" +fi + + +fi + + +# +# Architecture tuning +# +if test "x$ax_arch" != "x" +then : + + +# Check whether --with-march was given. +if test ${with_march+y} +then : + withval=$with_march; +else $as_nop + with_march=$enable_optimizations +fi + + + if test "x$with_march" != "xno" +then : + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -march=$ax_arch" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking -march=$ax_arch" >&5 +printf %s "checking -march=$ax_arch... " >&6; } + + if test "$cross_compiling" = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv) { return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + # TODO: Add CPU UARCH detector and validator in UCX init. + # As for now we will avoid passing this information to + # library. + BASE_CFLAGS="$BASE_CFLAGS -march=$ax_arch" + if test "xmarch" != "xmcpu" -a "xmarch" != "xmarch" +then : + OPT_CFLAGS="$OPT_CFLAGS|march" +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv) { return 0;} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + # TODO: Add CPU UARCH detector and validator in UCX init. + # As for now we will avoid passing this information to + # library. + BASE_CFLAGS="$BASE_CFLAGS -march=$ax_arch" + if test "xmarch" != "xmcpu" -a "xmarch" != "xmarch" +then : + OPT_CFLAGS="$OPT_CFLAGS|march" +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + + CFLAGS="$SAVE_CFLAGS" +fi + + +fi + + +# +# Check for compiler attribute which disables optimizations per-function. +# + + if test ${ucx_cv_attribute_optimize+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS" + # + # Try to compile using the C compiler + # + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (int arg) __attribute__ ((optimize("O0"))); +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ucx_cv_attribute_optimize=1 +else $as_nop + ucx_cv_attribute_optimize=0 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS="$SAVE_CFLAGS" + +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __attribute__(optimize)" >&5 +printf %s "checking for __attribute__(optimize)... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ucx_cv_attribute_optimize" >&5 +printf "%s\n" "$ucx_cv_attribute_optimize" >&6; } + +printf "%s\n" "#define HAVE_ATTRIBUTE_NOOPTIMIZE $ucx_cv_attribute_optimize" >>confdefs.h + + + + +# +# Compile code with frame pointer. Optimizations usually omit the frame pointer, +# but if we are profiling the code with callgraph we need it. +# This option may affect perofrmance so it is off by default. +# +# Check whether --enable-frame-pointer was given. +if test ${enable_frame_pointer+y} +then : + enableval=$enable_frame_pointer; +else $as_nop + enable_frame_pointer=no +fi + +if test "x$enable_frame_pointer" = xyes +then : + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -fno-omit-frame-pointer" >&5 +printf %s "checking compiler flag -fno-omit-frame-pointer... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -fno-omit-frame-pointer" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -fno-omit-frame-pointer" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -fno-omit-frame-pointer" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiling with frame pointer" >&5 +printf "%s\n" "$as_me: compiling with frame pointer" >&6;} +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiling with frame pointer is not supported" >&5 +printf "%s\n" "$as_me: compiling with frame pointer is not supported" >&6;} +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + +else $as_nop + : +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -funwind-tables" >&5 +printf %s "checking compiler flag -funwind-tables... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -funwind-tables" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -funwind-tables" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -funwind-tables" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiling with unwind tables" >&5 +printf "%s\n" "$as_me: compiling with unwind tables" >&6;} +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiling without unwind tables" >&5 +printf "%s\n" "$as_me: compiling without unwind tables" >&6;} +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + +# +# Check for C++ support +# +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CXX works" >&5 +printf %s "checking if $CXX works... " >&6; } + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifndef __cplusplus + #error "No C++ support, AC_PROG_CXX failed" + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop + as_fn_error $? "Cannot continue. Please install C++ compiler." "$LINENO" 5 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +# +# Check for C++11 support +# +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking c++11 support" >&5 +printf %s "checking c++11 support... " >&6; } +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +SAVE_CXXFLAGS="$CXXFLAGS" +CXX11FLAGS="-std=c++11" +CXXFLAGS="$CXXFLAGS $CXX11FLAGS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + int main(int argc, char** argv) { + std::to_string(1); + return 0; + } +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + cxx11_happy=yes +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + cxx11_happy=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +CXXFLAGS="$SAVE_CXXFLAGS" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + if test "x$cxx11_happy" != xno; then + HAVE_CXX11_TRUE= + HAVE_CXX11_FALSE='#' +else + HAVE_CXX11_TRUE='#' + HAVE_CXX11_FALSE= +fi + + + +# +# Check for GNU++11 support +# +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking gnu++11 support" >&5 +printf %s "checking gnu++11 support... " >&6; } +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +SAVE_CXXFLAGS="$CXXFLAGS" +CXX11FLAGS="-std=gnu++11" +CXXFLAGS="$CXXFLAGS $CXX11FLAGS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + int main(int argc, char** argv) { + int a; + typeof(a) b = 0; + std::to_string(1); + return 0; + } +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + gnuxx11_happy=yes +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + gnuxx11_happy=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +CXXFLAGS="$SAVE_CXXFLAGS" + if test "x$gnuxx11_happy" != xno; then + HAVE_GNUXX11_TRUE= + HAVE_GNUXX11_FALSE='#' +else + HAVE_GNUXX11_TRUE='#' + HAVE_GNUXX11_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "_GLIBCXX_NOTHROW" "ac_cv_have_decl__GLIBCXX_NOTHROW" "#include +" "$ac_cxx_undeclared_builtin_options" "CXXFLAGS" +if test "x$ac_cv_have_decl__GLIBCXX_NOTHROW" = xyes +then : + have_glibcxx_nothrow=yes +else $as_nop + have_glibcxx_nothrow=no +fi + if test "x$have_glibcxx_nothrow" = xyes; then + HAVE_GLIBCXX_NOTHROW_TRUE= + HAVE_GLIBCXX_NOTHROW_FALSE='#' +else + HAVE_GLIBCXX_NOTHROW_TRUE='#' + HAVE_GLIBCXX_NOTHROW_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# +# PGI specific switches +# +# --diag_suppress 1 - Suppress last line ends without a newline +# --diag_suppress 68 - Suppress integer conversion resulted in a change of sign +# --diag_suppress 111 - Suppress statement is unreachable +# --diag_suppress 167 - Suppress int* incompatible with unsigned int* +# --diag_suppress 181 - Suppress incorrect printf format for PGI18 compiler. TODO: remove it after compiler fix +# --diag_suppress 188 - Suppress enumerated type mixed with another type +# --diag_suppress 381 - Suppress extra ";" ignored +# --diag_suppress 1215 - Suppress deprecated API warning for PGI18 compiler +# --diag_suppress 1901 - Use of a const variable in a constant expression is nonstandard in C +# --diag_suppress 1902 - Use of a const variable in a constant expression is nonstandard in C (same as 1901) + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --display_error_number" >&5 +printf %s "checking compiler flag --display_error_number... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --display_error_number" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --display_error_number" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS --display_error_number" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --diag_suppress 1" >&5 +printf %s "checking compiler flag --diag_suppress 1... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --diag_suppress 1" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --diag_suppress 1" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS --diag_suppress 1" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --diag_suppress 68" >&5 +printf %s "checking compiler flag --diag_suppress 68... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --diag_suppress 68" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --diag_suppress 68" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS --diag_suppress 68" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --diag_suppress 111" >&5 +printf %s "checking compiler flag --diag_suppress 111... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --diag_suppress 111" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --diag_suppress 111" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS --diag_suppress 111" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --diag_suppress 167" >&5 +printf %s "checking compiler flag --diag_suppress 167... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --diag_suppress 167" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --diag_suppress 167" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS --diag_suppress 167" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --diag_suppress 181" >&5 +printf %s "checking compiler flag --diag_suppress 181... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --diag_suppress 181" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --diag_suppress 181" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS --diag_suppress 181" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --diag_suppress 188" >&5 +printf %s "checking compiler flag --diag_suppress 188... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --diag_suppress 188" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --diag_suppress 188" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS --diag_suppress 188" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --diag_suppress 381" >&5 +printf %s "checking compiler flag --diag_suppress 381... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --diag_suppress 381" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --diag_suppress 381" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS --diag_suppress 381" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --diag_suppress 1215" >&5 +printf %s "checking compiler flag --diag_suppress 1215... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --diag_suppress 1215" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --diag_suppress 1215" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS --diag_suppress 1215" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --diag_suppress 1901" >&5 +printf %s "checking compiler flag --diag_suppress 1901... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --diag_suppress 1901" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --diag_suppress 1901" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS --diag_suppress 1901" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --diag_suppress 1902" >&5 +printf %s "checking compiler flag --diag_suppress 1902... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --diag_suppress 1902" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --diag_suppress 1902" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS --diag_suppress 1902" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + + +# +# Check if "-pedantic" flag is supported +# + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -pedantic" >&5 +printf %s "checking compiler flag -pedantic... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -pedantic" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -pedantic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + CFLAGS_PEDANTIC="$CFLAGS_PEDANTIC -pedantic" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + +# +# Check if "-dynamic-list-data" flag is supported +# + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wl,-dynamic-list-data" >&5 +printf %s "checking compiler flag -Wl,-dynamic-list-data... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wl,-dynamic-list-data" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wl,-dynamic-list-data" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + LDFLAGS_DYNAMIC_LIST_DATA="-Wl,-dynamic-list-data" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + LDFLAGS_DYNAMIC_LIST_DATA="-Wl,-export-dynamic" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + +# +# Add strict compilation flags +# + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wno-missing-field-initializers" >&5 +printf %s "checking compiler flag -Wno-missing-field-initializers... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wno-missing-field-initializers" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wno-missing-field-initializers" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Wno-missing-field-initializers" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wno-unused-parameter" >&5 +printf %s "checking compiler flag -Wno-unused-parameter... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wno-unused-parameter" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wno-unused-parameter" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Wno-unused-parameter" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wno-unused-label" >&5 +printf %s "checking compiler flag -Wno-unused-label... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wno-unused-label" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wno-unused-label" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Wno-unused-label" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wno-long-long" >&5 +printf %s "checking compiler flag -Wno-long-long... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wno-long-long" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wno-long-long" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Wno-long-long" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wno-endif-labels" >&5 +printf %s "checking compiler flag -Wno-endif-labels... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wno-endif-labels" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wno-endif-labels" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Wno-endif-labels" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wno-sign-compare" >&5 +printf %s "checking compiler flag -Wno-sign-compare... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wno-sign-compare" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wno-sign-compare" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Wno-sign-compare" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wno-multichar" >&5 +printf %s "checking compiler flag -Wno-multichar... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wno-multichar" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wno-multichar" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Wno-multichar" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wno-deprecated-declarations" >&5 +printf %s "checking compiler flag -Wno-deprecated-declarations... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wno-deprecated-declarations" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wno-deprecated-declarations" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Wno-deprecated-declarations" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Winvalid-pch" >&5 +printf %s "checking compiler flag -Winvalid-pch... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Winvalid-pch" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Winvalid-pch" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Winvalid-pch" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + + +# +# Set C++ optimization/debug flags to be the same as for C +# +BASE_CXXFLAGS="$BASE_CFLAGS" + + +# +# Add strict flags supported by C compiler only +# NOTE: This must be done after setting BASE_CXXFLAGS +# + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wno-pointer-sign" >&5 +printf %s "checking compiler flag -Wno-pointer-sign... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wno-pointer-sign" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wno-pointer-sign" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Wno-pointer-sign" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Werror-implicit-function-declaration" >&5 +printf %s "checking compiler flag -Werror-implicit-function-declaration... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Werror-implicit-function-declaration" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Werror-implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Werror-implicit-function-declaration" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wno-format-zero-length" >&5 +printf %s "checking compiler flag -Wno-format-zero-length... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wno-format-zero-length" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wno-format-zero-length" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Wno-format-zero-length" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wnested-externs" >&5 +printf %s "checking compiler flag -Wnested-externs... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wnested-externs" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wnested-externs" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Wnested-externs" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Wshadow" >&5 +printf %s "checking compiler flag -Wshadow... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Wshadow" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Wshadow" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Wshadow" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -Werror=declaration-after-statement" >&5 +printf %s "checking compiler flag -Werror=declaration-after-statement... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -Werror=declaration-after-statement" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -Werror=declaration-after-statement" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + BASE_CFLAGS="$BASE_CFLAGS -Werror=declaration-after-statement" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + + + + + + + + +# +# Set common C preprocessor flags +# +BASE_CPPFLAGS="-DCPU_FLAGS=\"$OPT_CFLAGS\"" +BASE_CPPFLAGS="$BASE_CPPFLAGS -I\${abs_top_srcdir}/src" +BASE_CPPFLAGS="$BASE_CPPFLAGS -I\${abs_top_builddir}" +BASE_CPPFLAGS="$BASE_CPPFLAGS -I\${abs_top_builddir}/src" +BASE_CPPFLAGS=$BASE_CPPFLAGS + + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2014. ALL RIGHTS RESERVED. +# Copyright (C) UT-Battelle, LLC. 2014-2015. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else $as_nop + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf "%s\n" "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test $ac_cv_working_alloca_h = yes; then + ac_cv_func_alloca_works=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +else $as_nop + ac_cv_func_alloca_works=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf "%s\n" "$ac_cv_func_alloca_works" >&6; } +fi + +if test $ac_cv_func_alloca_works = yes; then + +printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else $as_nop + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf "%s\n" "$ac_cv_c_stack_direction" >&6; } +printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + +# +# SystemV shared memory +# +#IPC_INFO +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shm_open in -lrt" >&5 +printf %s "checking for shm_open in -lrt... " >&6; } +if test ${ac_cv_lib_rt_shm_open+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char shm_open (); +int +main (void) +{ +return shm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_rt_shm_open=yes +else $as_nop + ac_cv_lib_rt_shm_open=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_shm_open" >&5 +printf "%s\n" "$ac_cv_lib_rt_shm_open" >&6; } +if test "x$ac_cv_lib_rt_shm_open" = xyes +then : + printf "%s\n" "#define HAVE_LIBRT 1" >>confdefs.h + + LIBS="-lrt $LIBS" + +else $as_nop + as_fn_error $? "librt not found" "$LINENO" 5 +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for timer_create in -lrt" >&5 +printf %s "checking for timer_create in -lrt... " >&6; } +if test ${ac_cv_lib_rt_timer_create+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char timer_create (); +int +main (void) +{ +return timer_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_rt_timer_create=yes +else $as_nop + ac_cv_lib_rt_timer_create=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_timer_create" >&5 +printf "%s\n" "$ac_cv_lib_rt_timer_create" >&6; } +if test "x$ac_cv_lib_rt_timer_create" = xyes +then : + printf "%s\n" "#define HAVE_LIBRT 1" >>confdefs.h + + LIBS="-lrt $LIBS" + +else $as_nop + as_fn_error $? "librt not found" "$LINENO" 5 +fi + + + +# +# Extended string functions +# +ac_fn_c_check_header_compile "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$ac_includes_default" +if test "x$ac_cv_header_libgen_h" = xyes +then : + printf "%s\n" "#define HAVE_LIBGEN_H 1" >>confdefs.h + +fi + +ac_fn_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "#define _GNU_SOURCE 1 + #include + #include + #ifdef HAVE_LIBGEN_H + #include + #endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_asprintf" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_ASPRINTF $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + as_fn_error $? "GNU string extensions not found" "$LINENO" 5 +fi +ac_fn_check_decl "$LINENO" "basename" "ac_cv_have_decl_basename" "#define _GNU_SOURCE 1 + #include + #include + #ifdef HAVE_LIBGEN_H + #include + #endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_basename" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_BASENAME $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + as_fn_error $? "GNU string extensions not found" "$LINENO" 5 +fi +ac_fn_check_decl "$LINENO" "fmemopen" "ac_cv_have_decl_fmemopen" "#define _GNU_SOURCE 1 + #include + #include + #ifdef HAVE_LIBGEN_H + #include + #endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_fmemopen" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_FMEMOPEN $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + as_fn_error $? "GNU string extensions not found" "$LINENO" 5 +fi + + + +# +# CPU-sets +# +ac_fn_c_check_header_compile "$LINENO" "sys/cpuset.h" "ac_cv_header_sys_cpuset_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpuset_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_CPUSET_H 1" >>confdefs.h + +fi + +ac_fn_check_decl "$LINENO" "CPU_ZERO" "ac_cv_have_decl_CPU_ZERO" "#define _GNU_SOURCE 1 + #include + #include + #ifdef HAVE_SYS_CPUSET_H + #include + #endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_CPU_ZERO" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_CPU_ZERO $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + as_fn_error $? "CPU_ZERO/CPU_ISSET not found" "$LINENO" 5 +fi +ac_fn_check_decl "$LINENO" "CPU_ISSET" "ac_cv_have_decl_CPU_ISSET" "#define _GNU_SOURCE 1 + #include + #include + #ifdef HAVE_SYS_CPUSET_H + #include + #endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_CPU_ISSET" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_CPU_ISSET $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + as_fn_error $? "CPU_ZERO/CPU_ISSET not found" "$LINENO" 5 +fi + +ac_fn_c_check_type "$LINENO" "cpu_set_t" "ac_cv_type_cpu_set_t" "#define _GNU_SOURCE 1 + #include + #include + #ifdef HAVE_SYS_CPUSET_H + #include + #endif +" +if test "x$ac_cv_type_cpu_set_t" = xyes +then : + +printf "%s\n" "#define HAVE_CPU_SET_T 1" >>confdefs.h + + +fi +ac_fn_c_check_type "$LINENO" "cpuset_t" "ac_cv_type_cpuset_t" "#define _GNU_SOURCE 1 + #include + #include + #ifdef HAVE_SYS_CPUSET_H + #include + #endif +" +if test "x$ac_cv_type_cpuset_t" = xyes +then : + +printf "%s\n" "#define HAVE_CPUSET_T 1" >>confdefs.h + + +fi + + + +# +# Type for sighandler +# +ac_fn_c_check_type "$LINENO" "sighandler_t" "ac_cv_type_sighandler_t" "#define _GNU_SOURCE 1 + #include +" +if test "x$ac_cv_type_sighandler_t" = xyes +then : + +printf "%s\n" "#define HAVE_SIGHANDLER_T 1" >>confdefs.h + + +fi +ac_fn_c_check_type "$LINENO" "__sighandler_t" "ac_cv_type___sighandler_t" "#define _GNU_SOURCE 1 + #include +" +if test "x$ac_cv_type___sighandler_t" = xyes +then : + +printf "%s\n" "#define HAVE___SIGHANDLER_T 1" >>confdefs.h + + +fi + + + +# +# pthread +# +ac_fn_c_check_header_compile "$LINENO" "pthread_np.h" "ac_cv_header_pthread_np_h" "$ac_includes_default" +if test "x$ac_cv_header_pthread_np_h" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_NP_H 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_create" >&5 +printf %s "checking for library containing pthread_create... " >&6; } +if test ${ac_cv_search_pthread_create+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char pthread_create (); +int +main (void) +{ +return pthread_create (); + ; + return 0; +} +_ACEOF +for ac_lib in '' pthread +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_pthread_create=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_pthread_create+y} +then : + break +fi +done +if test ${ac_cv_search_pthread_create+y} +then : + +else $as_nop + ac_cv_search_pthread_create=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pthread_create" >&5 +printf "%s\n" "$ac_cv_search_pthread_create" >&6; } +ac_res=$ac_cv_search_pthread_create +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_atfork" >&5 +printf %s "checking for library containing pthread_atfork... " >&6; } +if test ${ac_cv_search_pthread_atfork+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char pthread_atfork (); +int +main (void) +{ +return pthread_atfork (); + ; + return 0; +} +_ACEOF +for ac_lib in '' pthread +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_pthread_atfork=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_pthread_atfork+y} +then : + break +fi +done +if test ${ac_cv_search_pthread_atfork+y} +then : + +else $as_nop + ac_cv_search_pthread_atfork=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pthread_atfork" >&5 +printf "%s\n" "$ac_cv_search_pthread_atfork" >&6; } +ac_res=$ac_cv_search_pthread_atfork +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + + +# +# Misc. Linux-specific functions +# +ac_fn_c_check_func "$LINENO" "clearenv" "ac_cv_func_clearenv" +if test "x$ac_cv_func_clearenv" = xyes +then : + printf "%s\n" "#define HAVE_CLEARENV 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "malloc_trim" "ac_cv_func_malloc_trim" +if test "x$ac_cv_func_malloc_trim" = xyes +then : + printf "%s\n" "#define HAVE_MALLOC_TRIM 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "memalign" "ac_cv_func_memalign" +if test "x$ac_cv_func_memalign" = xyes +then : + printf "%s\n" "#define HAVE_MEMALIGN 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "posix_memalign" "ac_cv_func_posix_memalign" +if test "x$ac_cv_func_posix_memalign" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_MEMALIGN 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "mremap" "ac_cv_func_mremap" +if test "x$ac_cv_func_mremap" = xyes +then : + printf "%s\n" "#define HAVE_MREMAP 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "sched_setaffinity" "ac_cv_func_sched_setaffinity" +if test "x$ac_cv_func_sched_setaffinity" = xyes +then : + printf "%s\n" "#define HAVE_SCHED_SETAFFINITY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sched_getaffinity" "ac_cv_func_sched_getaffinity" +if test "x$ac_cv_func_sched_getaffinity" = xyes +then : + printf "%s\n" "#define HAVE_SCHED_GETAFFINITY 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "cpuset_setaffinity" "ac_cv_func_cpuset_setaffinity" +if test "x$ac_cv_func_cpuset_setaffinity" = xyes +then : + printf "%s\n" "#define HAVE_CPUSET_SETAFFINITY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "cpuset_getaffinity" "ac_cv_func_cpuset_getaffinity" +if test "x$ac_cv_func_cpuset_getaffinity" = xyes +then : + printf "%s\n" "#define HAVE_CPUSET_GETAFFINITY 1" >>confdefs.h + +fi + + + +# +# Route file descriptor signal to specific thread +# +ac_fn_check_decl "$LINENO" "F_SETOWN_EX" "ac_cv_have_decl_F_SETOWN_EX" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_F_SETOWN_EX" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_F_SETOWN_EX $ac_have_decl" >>confdefs.h + + + +# +# Ethtool definitions +# +ac_fn_check_decl "$LINENO" "ethtool_cmd_speed" "ac_cv_have_decl_ethtool_cmd_speed" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ethtool_cmd_speed" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_ETHTOOL_CMD_SPEED $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "SPEED_UNKNOWN" "ac_cv_have_decl_SPEED_UNKNOWN" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_SPEED_UNKNOWN" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SPEED_UNKNOWN $ac_have_decl" >>confdefs.h + + + +# +# PowerPC "sys/platform/ppc.h" header +# +ac_fn_c_check_header_compile "$LINENO" "sys/platform/ppc.h" "ac_cv_header_sys_platform_ppc_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_platform_ppc_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PLATFORM_PPC_H 1" >>confdefs.h + +fi + + + +# +# PowerPC query for getting TB and frequency +# +ac_fn_check_decl "$LINENO" "__ppc_get_timebase_freq" "ac_cv_have_decl___ppc_get_timebase_freq" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl___ppc_get_timebase_freq" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL___PPC_GET_TIMEBASE_FREQ $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__ppc_get_timebase" "ac_cv_have_decl___ppc_get_timebase" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl___ppc_get_timebase" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL___PPC_GET_TIMEBASE $ac_have_decl" >>confdefs.h + + + +# +# Google Testing framework +# + +# Check whether --enable-gtest was given. +if test ${enable_gtest+y} +then : + enableval=$enable_gtest; enable_gtest=$enableval +else $as_nop + enable_gtest=no +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for using Google C++ Testing Framework" >&5 +printf %s "checking for using Google C++ Testing Framework... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_gtest" >&5 +printf "%s\n" "$enable_gtest" >&6; } + if test "x$enable_gtest" = "xyes"; then + HAVE_GTEST_TRUE= + HAVE_GTEST_FALSE='#' +else + HAVE_GTEST_TRUE='#' + HAVE_GTEST_FALSE= +fi + + + + +# +# Valgrind support +# + +# Check whether --with-valgrind was given. +if test ${with_valgrind+y} +then : + withval=$with_valgrind; +else $as_nop + with_valgrind=no + +fi + +if test "x$with_valgrind" = xno +then : + +printf "%s\n" "#define NVALGRIND 1" >>confdefs.h + +else $as_nop + if test ! -d $with_valgrind +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Valgrind path was not defined, guessing ..." >&5 +printf "%s\n" "$as_me: Valgrind path was not defined, guessing ..." >&6;} + with_valgrind=/usr +else $as_nop + : +fi + as_ac_Header=`printf "%s\n" "ac_cv_header_$with_valgrind/include/valgrind/memcheck.h" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$with_valgrind/include/valgrind/memcheck.h" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + +else $as_nop + as_fn_error $? "Valgrind memcheck support requested, but not found, install valgrind-devel rpm." "$LINENO" 5 +fi + + CPPFLAGS="$CPPFLAGS -I$with_valgrind/include" + + +fi + + +# +# NUMA support +# +# Check whether --enable-numa was given. +if test ${enable_numa+y} +then : + enableval=$enable_numa; +else $as_nop + enable_numa=guess +fi + +if test "x$enable_numa" = xno +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: NUMA support is explictly disabled" >&5 +printf "%s\n" "$as_me: NUMA support is explictly disabled" >&6;} + numa_enable=disabled + +else $as_nop + + save_LDFLAGS="$LDFLAGS" + + numa_happy=yes + for ac_header in numa.h numaif.h +do : + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +else $as_nop + numa_happy=no +fi + +done + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mbind in -lnuma" >&5 +printf %s "checking for mbind in -lnuma... " >&6; } +if test ${ac_cv_lib_numa_mbind+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnuma $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char mbind (); +int +main (void) +{ +return mbind (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_numa_mbind=yes +else $as_nop + ac_cv_lib_numa_mbind=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_numa_mbind" >&5 +printf "%s\n" "$ac_cv_lib_numa_mbind" >&6; } +if test "x$ac_cv_lib_numa_mbind" = xyes +then : + NUMA_LIBS=-lnuma + +else $as_nop + numa_happy=no +fi + + ac_fn_c_check_type "$LINENO" "struct bitmask" "ac_cv_type_struct_bitmask" "#include +" +if test "x$ac_cv_type_struct_bitmask" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_BITMASK 1" >>confdefs.h + + +else $as_nop + numa_happy=no +fi + + + LDFLAGS="$save_LDFLAGS" + + if test "x$numa_happy" = xyes +then : + + +printf "%s\n" "#define HAVE_NUMA 1" >>confdefs.h + + numa_enable=enabled + +else $as_nop + + + + if test "x$enable_numa" = xyes +then : + as_fn_error $? "NUMA support not found. Please consider installing libnuma-devel package." "$LINENO" 5 +else $as_nop + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: NUMA support not found, this many impact library performance." >&5 +printf "%s\n" "$as_me: WARNING: NUMA support not found, this many impact library performance." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please consider installing libnuma-devel package." >&5 +printf "%s\n" "$as_me: WARNING: Please consider installing libnuma-devel package." >&2;} + +fi + numa_enable=disabled + +fi + +fi + + +# +# Malloc hooks +# +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking malloc hooks" >&5 +printf %s "checking malloc hooks... " >&6; } +SAVE_CFLAGS=$CFLAGS +CFLAGS="$CFLAGS $CFLAGS_NO_DEPRECATED" + + if test "$cross_compiling" = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + static int rc = 1; + void *ptr; + void *myhook(size_t size, const void *caller) { + rc = 0; + return NULL; + } + int main(int argc, char** argv) { + __malloc_hook = myhook; + ptr = malloc(1); + /* Keep the malloc call even with LTO */ + write(open("/dev/null", O_WRONLY), + &ptr, sizeof(ptr)); + return rc; + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_MALLOC_HOOK 1" >>confdefs.h + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: malloc hooks are not supported" >&5 +printf "%s\n" "$as_me: WARNING: malloc hooks are not supported" >&2;} + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + static int rc = 1; + void *ptr; + void *myhook(size_t size, const void *caller) { + rc = 0; + return NULL; + } + int main(int argc, char** argv) { + __malloc_hook = myhook; + ptr = malloc(1); + /* Keep the malloc call even with LTO */ + write(open("/dev/null", O_WRONLY), + &ptr, sizeof(ptr)); + return rc; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_MALLOC_HOOK 1" >>confdefs.h + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: malloc hooks are not supported" >&5 +printf "%s\n" "$as_me: WARNING: malloc hooks are not supported" >&2;} + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +CFLAGS=$SAVE_CFLAGS + + +# +# Check for capability.h header (usually comes from libcap-devel package) and +# make sure it defines the types we need +# + for ac_header in sys/capability.h +do : + ac_fn_c_check_header_compile "$LINENO" "sys/capability.h" "ac_cv_header_sys_capability_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_capability_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_CAPABILITY_H 1" >>confdefs.h + ac_fn_c_check_type "$LINENO" "cap_user_header_t" "ac_cv_type_cap_user_header_t" "#include +" +if test "x$ac_cv_type_cap_user_header_t" = xyes +then : + +printf "%s\n" "#define HAVE_CAP_USER_HEADER_T 1" >>confdefs.h + + +else $as_nop + +printf "%s\n" "#define HAVE_SYS_CAPABILITY_H 0" >>confdefs.h + +fi +ac_fn_c_check_type "$LINENO" "cap_user_data_t" "ac_cv_type_cap_user_data_t" "#include +" +if test "x$ac_cv_type_cap_user_data_t" = xyes +then : + +printf "%s\n" "#define HAVE_CAP_USER_DATA_T 1" >>confdefs.h + + +else $as_nop + +printf "%s\n" "#define HAVE_SYS_CAPABILITY_H 0" >>confdefs.h + +fi + + +fi + +done + +# +# Check for PR_SET_PTRACER +# +ac_fn_check_decl "$LINENO" "PR_SET_PTRACER" "ac_cv_have_decl_PR_SET_PTRACER" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_PR_SET_PTRACER" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_PR_SET_PTRACER $ac_have_decl" >>confdefs.h + + + +# +# ipv6 s6_addr32/__u6_addr32 shortcuts for in6_addr +# ip header structure layout name +# +ac_fn_c_check_member "$LINENO" "struct in6_addr" "s6_addr32" "ac_cv_member_struct_in6_addr_s6_addr32" "#include +" +if test "x$ac_cv_member_struct_in6_addr_s6_addr32" = xyes +then : + +printf "%s\n" "#define HAVE_IN6_ADDR_S6_ADDR32 1" >>confdefs.h + +fi + +ac_fn_c_check_member "$LINENO" "struct in6_addr" "__u6_addr.__u6_addr32" "ac_cv_member_struct_in6_addr___u6_addr___u6_addr32" "#include +" +if test "x$ac_cv_member_struct_in6_addr___u6_addr___u6_addr32" = xyes +then : + +printf "%s\n" "#define HAVE_IN6_ADDR_U6_ADDR32 1" >>confdefs.h + +fi + +ac_fn_c_check_member "$LINENO" "struct iphdr" "daddr.s_addr" "ac_cv_member_struct_iphdr_daddr_s_addr" "#include +" +if test "x$ac_cv_member_struct_iphdr_daddr_s_addr" = xyes +then : + +printf "%s\n" "#define HAVE_IPHDR_DADDR 1" >>confdefs.h + +fi + +ac_fn_c_check_member "$LINENO" "struct ip" "ip_dst.s_addr" "ac_cv_member_struct_ip_ip_dst_s_addr" "#include + #include + #include +" +if test "x$ac_cv_member_struct_ip_ip_dst_s_addr" = xyes +then : + +printf "%s\n" "#define HAVE_IP_IP_DST 1" >>confdefs.h + +fi + + + +# +# struct sigevent reporting thread id +# +ac_fn_c_check_member "$LINENO" "struct sigevent" "_sigev_un._tid" "ac_cv_member_struct_sigevent__sigev_un__tid" "#include +" +if test "x$ac_cv_member_struct_sigevent__sigev_un__tid" = xyes +then : + +printf "%s\n" "#define HAVE_SIGEVENT_SIGEV_UN_TID 1" >>confdefs.h + +fi + +ac_fn_c_check_member "$LINENO" "struct sigevent" "sigev_notify_thread_id" "ac_cv_member_struct_sigevent_sigev_notify_thread_id" "#include +" +if test "x$ac_cv_member_struct_sigevent_sigev_notify_thread_id" = xyes +then : + +printf "%s\n" "#define HAVE_SIGEVENT_SIGEV_NOTIFY_THREAD_ID 1" >>confdefs.h + +fi + + + +# +# sa_restorer is something that only Linux has +# +ac_fn_c_check_member "$LINENO" "struct sigaction" "sa_restorer" "ac_cv_member_struct_sigaction_sa_restorer" "#include +" +if test "x$ac_cv_member_struct_sigaction_sa_restorer" = xyes +then : + +printf "%s\n" "#define HAVE_SIGACTION_SA_RESTORER 1" >>confdefs.h + +fi + + + +# +# epoll vs. kqueue +# +ac_fn_c_check_header_compile "$LINENO" "sys/epoll.h" "ac_cv_header_sys_epoll_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_epoll_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_EPOLL_H 1" >>confdefs.h + +fi + +ac_fn_c_check_header_compile "$LINENO" "sys/eventfd.h" "ac_cv_header_sys_eventfd_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_eventfd_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_EVENTFD_H 1" >>confdefs.h + +fi + +ac_fn_c_check_header_compile "$LINENO" "sys/event.h" "ac_cv_header_sys_event_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_event_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_EVENT_H 1" >>confdefs.h + +fi + + + +# +# FreeBSD-specific threading functions +# +ac_fn_c_check_header_compile "$LINENO" "sys/thr.h" "ac_cv_header_sys_thr_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_thr_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_THR_H 1" >>confdefs.h + +fi + + + +# +# malloc headers are Linux-specific +# +ac_fn_c_check_header_compile "$LINENO" "malloc.h" "ac_cv_header_malloc_h" "$ac_includes_default" +if test "x$ac_cv_header_malloc_h" = xyes +then : + printf "%s\n" "#define HAVE_MALLOC_H 1" >>confdefs.h + +fi + +ac_fn_c_check_header_compile "$LINENO" "malloc_np.h" "ac_cv_header_malloc_np_h" "$ac_includes_default" +if test "x$ac_cv_header_malloc_np_h" = xyes +then : + printf "%s\n" "#define HAVE_MALLOC_NP_H 1" >>confdefs.h + +fi + + + +# +# endianess +# +ac_fn_c_check_header_compile "$LINENO" "endian.h," "ac_cv_header_endian_h_" "$ac_includes_default" +if test "x$ac_cv_header_endian_h_" = xyes +then : + printf "%s\n" "#define HAVE_ENDIAN_H_ 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/endian.h" "ac_cv_header_sys_endian_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_endian_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_ENDIAN_H 1" >>confdefs.h + +fi + + + +# +# Linux-only headers +# +ac_fn_c_check_header_compile "$LINENO" "linux/mman.h" "ac_cv_header_linux_mman_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_mman_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_MMAN_H 1" >>confdefs.h + +fi + +ac_fn_c_check_header_compile "$LINENO" "linux/ip.h" "ac_cv_header_linux_ip_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_ip_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_IP_H 1" >>confdefs.h + +fi + +ac_fn_c_check_header_compile "$LINENO" "linux/futex.h" "ac_cv_header_linux_futex_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_futex_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_FUTEX_H 1" >>confdefs.h + +fi + + + +# +# Networking headers +# +ac_fn_c_check_header_compile "$LINENO" "net/ethernet.h" "ac_cv_header_net_ethernet_h" "#include +" +if test "x$ac_cv_header_net_ethernet_h" = xyes +then : + printf "%s\n" "#define HAVE_NET_ETHERNET_H 1" >>confdefs.h + +fi + +ac_fn_c_check_header_compile "$LINENO" "netinet/ip.h" "ac_cv_header_netinet_ip_h" "#include + #include +" +if test "x$ac_cv_header_netinet_ip_h" = xyes +then : + printf "%s\n" "#define HAVE_NETINET_IP_H 1" >>confdefs.h + +fi + + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2016. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + + +# +# Memory allocator selection +# + +# Check whether --with-allocator was given. +if test ${with_allocator+y} +then : + withval=$with_allocator; +else $as_nop + with_allocator=ptmalloc286 +fi + + +case ${with_allocator} in + ptmalloc286) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Memory allocator is ptmalloc-2.8.6 version" >&5 +printf "%s\n" "$as_me: Memory allocator is ptmalloc-2.8.6 version" >&6;} + +printf "%s\n" "#define HAVE_UCM_PTMALLOC286 1" >>confdefs.h + + HAVE_UCM_PTMALLOC286=yes + ;; + *) + as_fn_error $? "Cannot continue. Unsupported memory allocator name + in --with-allocator=$with_allocator" "$LINENO" 5 + ;; +esac + + if test "x$HAVE_UCM_PTMALLOC286" = "xyes"; then + HAVE_UCM_PTMALLOC286_TRUE= + HAVE_UCM_PTMALLOC286_FALSE='#' +else + HAVE_UCM_PTMALLOC286_TRUE='#' + HAVE_UCM_PTMALLOC286_FALSE= +fi + + +ac_fn_c_check_func "$LINENO" "malloc_get_state" "ac_cv_func_malloc_get_state" +if test "x$ac_cv_func_malloc_get_state" = xyes +then : + printf "%s\n" "#define HAVE_MALLOC_GET_STATE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "malloc_set_state" "ac_cv_func_malloc_set_state" +if test "x$ac_cv_func_malloc_set_state" = xyes +then : + printf "%s\n" "#define HAVE_MALLOC_SET_STATE 1" >>confdefs.h + +fi + + + +# +# Madvise flags +# +ac_fn_check_decl "$LINENO" "MADV_FREE" "ac_cv_have_decl_MADV_FREE" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_MADV_FREE" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MADV_FREE $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "MADV_REMOVE" "ac_cv_have_decl_MADV_REMOVE" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_MADV_REMOVE" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MADV_REMOVE $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "POSIX_MADV_DONTNEED" "ac_cv_have_decl_POSIX_MADV_DONTNEED" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_POSIX_MADV_DONTNEED" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_POSIX_MADV_DONTNEED $ac_have_decl" >>confdefs.h + + + +# +# getauxval() +# +ac_fn_check_decl "$LINENO" "getauxval" "ac_cv_have_decl_getauxval" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getauxval" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_GETAUXVAL $ac_have_decl" >>confdefs.h + + + +# BISTRO hooks infrastructure +# +# SYS_xxx macro +# +mmap_hooks_happy=yes +ac_fn_check_decl "$LINENO" "SYS_mmap" "ac_cv_have_decl_SYS_mmap" " #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_SYS_mmap" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SYS_MMAP $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + mmap_hooks_happy=no +fi +ac_fn_check_decl "$LINENO" "SYS_munmap" "ac_cv_have_decl_SYS_munmap" " #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_SYS_munmap" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SYS_MUNMAP $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + mmap_hooks_happy=no +fi +ac_fn_check_decl "$LINENO" "SYS_mremap" "ac_cv_have_decl_SYS_mremap" " #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_SYS_mremap" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SYS_MREMAP $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + mmap_hooks_happy=no +fi +ac_fn_check_decl "$LINENO" "SYS_brk" "ac_cv_have_decl_SYS_brk" " #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_SYS_brk" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SYS_BRK $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + mmap_hooks_happy=no +fi +ac_fn_check_decl "$LINENO" "SYS_madvise" "ac_cv_have_decl_SYS_madvise" " #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_SYS_madvise" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SYS_MADVISE $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + mmap_hooks_happy=no +fi + + +shm_hooks_happy=yes +ac_fn_check_decl "$LINENO" "SYS_shmat" "ac_cv_have_decl_SYS_shmat" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_SYS_shmat" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SYS_SHMAT $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + shm_hooks_happy=no +fi +ac_fn_check_decl "$LINENO" "SYS_shmdt" "ac_cv_have_decl_SYS_shmdt" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_SYS_shmdt" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SYS_SHMDT $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + shm_hooks_happy=no +fi + + +ipc_hooks_happy=yes +ac_fn_check_decl "$LINENO" "SYS_ipc" "ac_cv_have_decl_SYS_ipc" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_SYS_ipc" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SYS_IPC $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + ipc_hooks_happy=no +fi + + +if test "x$mmap_hooks_happy" = "xyes" +then : + if test "x$ipc_hooks_happy" = "xyes" -o "x$shm_hooks_happy" = "xyes" +then : + bistro_hooks_happy=yes +fi +fi + +if test "x$bistro_hooks_happy" = "xyes" +then : + +printf "%s\n" "#define UCM_BISTRO_HOOKS 1" >>confdefs.h + +else $as_nop + +printf "%s\n" "#define UCM_BISTRO_HOOKS 0" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Some of required syscalls could not be found" >&5 +printf "%s\n" "$as_me: WARNING: Some of required syscalls could not be found" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: BISTRO mmap hook mode is disabled" >&5 +printf "%s\n" "$as_me: WARNING: BISTRO mmap hook mode is disabled" >&2;} +fi + +ac_fn_c_check_func "$LINENO" "__curbrk" "ac_cv_func___curbrk" +if test "x$ac_cv_func___curbrk" = xyes +then : + printf "%s\n" "#define HAVE___CURBRK 1" >>confdefs.h + +fi + + +# +# tcmalloc library - for testing only +# +SAVE_LDFLAGS="$LDFLAGS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tc_malloc in -ltcmalloc" >&5 +printf %s "checking for tc_malloc in -ltcmalloc... " >&6; } +if test ${ac_cv_lib_tcmalloc_tc_malloc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltcmalloc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char tc_malloc (); +int +main (void) +{ +return tc_malloc (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_tcmalloc_tc_malloc=yes +else $as_nop + ac_cv_lib_tcmalloc_tc_malloc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tcmalloc_tc_malloc" >&5 +printf "%s\n" "$ac_cv_lib_tcmalloc_tc_malloc" >&6; } +if test "x$ac_cv_lib_tcmalloc_tc_malloc" = xyes +then : + have_tcmalloc=yes + TCMALLOC_LIB="-ltcmalloc" +else $as_nop + have_tcmalloc=no +fi + + if test "x$have_tcmalloc" = "xyes"; then + HAVE_TCMALLOC_TRUE= + HAVE_TCMALLOC_FALSE='#' +else + HAVE_TCMALLOC_TRUE='#' + HAVE_TCMALLOC_FALSE= +fi + + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2014. ALL RIGHTS RESERVED. +# +# Copyright (C) UT-Battelle, LLC. 2015. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + + +# +# Enable compiling tests with MPI +# + +# Check whether --with-mpi was given. +if test ${with_mpi+y} +then : + withval=$with_mpi; : +else $as_nop + with_mpi=no +fi + + + if test "x$with_mpi" != xyes && test "x$with_mpi" != xno +then : + + if test -d "$with_mpi/bin" +then : + with_mpi="$with_mpi/bin" +else $as_nop + : +fi + mpi_path=$with_mpi;with_mpi=yes + +else $as_nop + mpi_path=$PATH +fi + +# +# Search for mpicc and mpirun in the given path. +# +if test "x$with_mpi" = xyes +then : + + + for ac_prog in mpicc mpiicc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MPICC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $MPICC in + [\\/]* | ?:[\\/]*) + ac_cv_path_MPICC="$MPICC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $mpi_path +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_MPICC="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +MPICC=$ac_cv_path_MPICC +if test -n "$MPICC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MPICC" >&5 +printf "%s\n" "$MPICC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$MPICC" && break +done +test -n "$MPICC" || MPICC="""" + + + for ac_prog in shmemcc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_SHMEMCC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $SHMEMCC in + [\\/]* | ?:[\\/]*) + ac_cv_path_SHMEMCC="$SHMEMCC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $mpi_path +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_SHMEMCC="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +SHMEMCC=$ac_cv_path_SHMEMCC +if test -n "$SHMEMCC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHMEMCC" >&5 +printf "%s\n" "$SHMEMCC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$SHMEMCC" && break +done +test -n "$SHMEMCC" || SHMEMCC="""" + + + for ac_prog in mpirun mpiexec aprun orterun +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MPIRUN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $MPIRUN in + [\\/]* | ?:[\\/]*) + ac_cv_path_MPIRUN="$MPIRUN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $mpi_path +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_MPIRUN="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +MPIRUN=$ac_cv_path_MPIRUN +if test -n "$MPIRUN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MPIRUN" >&5 +printf "%s\n" "$MPIRUN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$MPIRUN" && break +done +test -n "$MPIRUN" || MPIRUN="""" + + if test -z "$MPIRUN" +then : + as_fn_error $? "--with-mpi was requested but MPI was not found in the PATH in $mpi_path" "$LINENO" 5 +else $as_nop + : +fi + +else $as_nop + : +fi + +if test -n "$MPICC" +then : + +printf "%s\n" "#define HAVE_MPI 1" >>confdefs.h + + mpi_enable=enabled +else $as_nop + mpi_enable=disabled +fi + if test -n "$MPIRUN"; then + HAVE_MPI_TRUE= + HAVE_MPI_FALSE='#' +else + HAVE_MPI_TRUE='#' + HAVE_MPI_FALSE= +fi + + if test -n "$MPICC"; then + HAVE_MPICC_TRUE= + HAVE_MPICC_FALSE='#' +else + HAVE_MPICC_TRUE='#' + HAVE_MPICC_FALSE= +fi + + if test -n "$SHMEMCC"; then + HAVE_SHMEMCC_TRUE= + HAVE_SHMEMCC_FALSE='#' +else + HAVE_SHMEMCC_TRUE='#' + HAVE_SHMEMCC_FALSE= +fi + + if test -n "$MPIRUN"; then + HAVE_MPIRUN_TRUE= + HAVE_MPIRUN_FALSE='#' +else + HAVE_MPIRUN_TRUE='#' + HAVE_MPIRUN_FALSE= +fi + + + +# Check whether --with-rte was given. +if test ${with_rte+y} +then : + withval=$with_rte; +else $as_nop + with_rte=no +fi + + +if test "x$with_rte" != xno +then : + + for ac_header in $with_rte/include/rte.h +do : + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + rte_happy="yes" +else $as_nop + rte_happy="no" +fi + +done + if test "x$rte_happy" = xyes +then : + + RTE_CPPFLAGS="-I$with_rte/include" + + RTE_LDFLAGS="-L$with_rte/lib -lrte" + + +printf "%s\n" "#define HAVE_RTE 1" >>confdefs.h + + +fi +fi + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2020. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +fuse3_happy="no" + + +# Check whether --with-fuse3 was given. +if test ${with_fuse3+y} +then : + withval=$with_fuse3; +else $as_nop + with_fuse3=guess +fi + + + +# Check whether --with-fuse3-static was given. +if test ${with_fuse3_static+y} +then : + withval=$with_fuse3_static; +else $as_nop + with_fuse3_static=no +fi + + +if test "x$with_fuse3" != "xno" -o "x$with_fuse3_static" != "xno" +then : + + if test "x$with_fuse3_static" != "xno" +then : + with_fuse3="$with_fuse3_static" +fi + + save_PKG_CONFIG_PATH="$PKG_CONFIG_PATH" + + if test "x$with_fuse3" != "xguess" \ + -a "x$with_fuse3" != "xyes" \ + -a "x$with_fuse3" != "x" +then : + if test -d "$with_fuse3/lib64" +then : + libsuff="64" +else $as_nop + libsuff="" +fi + ucx_fuse3_pkgconfig="$with_fuse3/lib$libsuff/pkgconfig" + export PKG_CONFIG_PATH="$ucx_fuse3_pkgconfig:$PKG_CONFIG_PATH" +fi + + FUSE3_CPPFLAGS=$(pkg-config --cflags-only-I fuse3) + FUSE3_LDFLAGS=$(pkg-config --libs-only-L fuse3) + if test "x$with_fuse3_static" != "xno" +then : + FUSE3_LIBS=$(pkg-config --libs-only-l --static fuse3) + FUSE3_LIBS=${FUSE3_LIBS//"-lfuse3"/"-l:libfuse3.a"} +else $as_nop + FUSE3_LIBS=$(pkg-config --libs-only-l fuse3) +fi + + save_CPPFLAGS="$CPPFLAGS" + save_LDFLAGS="$LDFLAGS" + save_LIBS="$LIBS" + + CPPFLAGS="$FUSE3_CPPFLAGS $CPPFLAGS" + LDFLAGS="$FUSE3_LDFLAGS $LDFLAGS" + LIBS="$FUSE3_LIBS $LIBS" + + fuse3_happy="yes" + ac_fn_check_decl "$LINENO" "fuse_open_channel" "ac_cv_have_decl_fuse_open_channel" "#define FUSE_USE_VERSION 30 + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_fuse_open_channel" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_FUSE_OPEN_CHANNEL $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + FUSE3_CPPFLAGS=$FUSE3_CPPFLAGS + + +printf "%s\n" "#define FUSE_USE_VERSION 30" >>confdefs.h + +else $as_nop + fuse3_happy="no" +fi +ac_fn_check_decl "$LINENO" "fuse_mount" "ac_cv_have_decl_fuse_mount" "#define FUSE_USE_VERSION 30 + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_fuse_mount" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_FUSE_MOUNT $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + FUSE3_CPPFLAGS=$FUSE3_CPPFLAGS + + +printf "%s\n" "#define FUSE_USE_VERSION 30" >>confdefs.h + +else $as_nop + fuse3_happy="no" +fi +ac_fn_check_decl "$LINENO" "fuse_unmount" "ac_cv_have_decl_fuse_unmount" "#define FUSE_USE_VERSION 30 + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_fuse_unmount" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_FUSE_UNMOUNT $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + FUSE3_CPPFLAGS=$FUSE3_CPPFLAGS + + +printf "%s\n" "#define FUSE_USE_VERSION 30" >>confdefs.h + +else $as_nop + fuse3_happy="no" +fi + + + if test "x$fuse3_happy" = "xyes" +then : + + for ac_func in fuse_open_channel fuse_mount fuse_unmount +do : + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + FUSE3_LIBS="$FUSE3_LIBS" + + FUSE3_LDFLAGS=$FUSE3_LDFLAGS + +else $as_nop + fuse3_happy="no" +fi + +done +fi + + if test "x$fuse3_happy" != "xyes" -a "x$with_fuse3" != "xguess" +then : + as_fn_error $? "FUSEv3 requested but could not be found" "$LINENO" 5 +fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + export PKG_CONFIG_PATH="$save_PKG_CONFIG_PATH" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: FUSEv3 was explicitly disabled" >&5 +printf "%s\n" "$as_me: WARNING: FUSEv3 was explicitly disabled" >&2;} + +fi + + if test "x$fuse3_happy" != xno; then + HAVE_FUSE3_TRUE= + HAVE_FUSE3_FALSE='#' +else + HAVE_FUSE3_TRUE='#' + HAVE_FUSE3_FALSE= +fi + +vfs_enable=$fuse3_happy + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2021. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + +# +# Check for Golang support +# + +go_happy="no" + +# Check whether --with-go was given. +if test ${with_go+y} +then : + withval=$with_go; +else $as_nop + with_go=guess +fi + + +if test "x$with_go" != xno +then : + + # Extract the first word of "go", so it can be a program name with args. +set dummy go; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GOBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GOBIN"; then + ac_cv_prog_GOBIN="$GOBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GOBIN="yes" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GOBIN=$ac_cv_prog_GOBIN +if test -n "$GOBIN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GOBIN" >&5 +printf "%s\n" "$GOBIN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test "x${GOBIN}" = "xyes" +then : + as_arg_v1=1.16 +as_arg_v2=`go version | awk '{print substr($3, 3, length($3)-2)}'` +awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null +case $? in #( + 1) : + go_happy="yes" ;; #( + 0) : + go_happy="yes" ;; #( + 2) : + go_happy=no ;; #( + *) : + ;; +esac +else $as_nop + go_happy=no +fi + if test "x$go_happy" = xno +then : + if test "x$with_go" = "xguess" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Disabling GO support - GO compiler version 1.16 or newer not found." >&5 +printf "%s\n" "$as_me: WARNING: Disabling GO support - GO compiler version 1.16 or newer not found." >&2;} +else $as_nop + as_fn_error $? "GO support was explicitly requested, but go compiler not found." "$LINENO" 5 +fi +fi + +else $as_nop + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: GO support was explicitly disabled." >&5 +printf "%s\n" "$as_me: WARNING: GO support was explicitly disabled." >&2;} + +fi + + if test "x$go_happy" != "xno"; then + HAVE_GO_TRUE= + HAVE_GO_FALSE='#' +else + HAVE_GO_TRUE='#' + HAVE_GO_FALSE= +fi + +if test -z "$HAVE_GO_TRUE"; then : + GO="go" + + build_bindings="${build_bindings}:go" +fi + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2017. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# +# +# +# Check for Java support +# +# +java_happy="no" + +# Check whether --with-java was given. +if test ${with_java+y} +then : + withval=$with_java; +else $as_nop + with_java=guess +fi + + +if test "x$with_java" != xno +then : + + # Extract the first word of "mvn", so it can be a program name with args. +set dummy mvn; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MVNBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$MVNBIN"; then + ac_cv_prog_MVNBIN="$MVNBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_MVNBIN="yes" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MVNBIN=$ac_cv_prog_MVNBIN +if test -n "$MVNBIN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MVNBIN" >&5 +printf "%s\n" "$MVNBIN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + # Extract the first word of "java", so it can be a program name with args. +set dummy java; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_JAVABIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$JAVABIN"; then + ac_cv_prog_JAVABIN="$JAVABIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_JAVABIN="yes" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +JAVABIN=$ac_cv_prog_JAVABIN +if test -n "$JAVABIN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $JAVABIN" >&5 +printf "%s\n" "$JAVABIN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test "x${MVNBIN}" = "xyes" -a "x${JAVABIN}" = "xyes" +then : + + if test -n "$with_java" -a "x$with_java" != "xyes" -a "x$with_java" != "xguess" +then : + java_dir=$with_java +else $as_nop + + if test -n "$JAVA_HOME" +then : + +else $as_nop + + # Extract the first word of "readlink", so it can be a program name with args. +set dummy readlink; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_READLINK+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$READLINK"; then + ac_cv_prog_READLINK="$READLINK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_READLINK="yes" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +READLINK=$ac_cv_prog_READLINK +if test -n "$READLINK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $READLINK" >&5 +printf "%s\n" "$READLINK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test "x${READLINK}" = xyes +then : + + JAVA_BIN_FOLDER=`$as_dirname -- $(readlink -f $(type -P javac)) || +$as_expr X$(readlink -f $(type -P javac)) : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$(readlink -f $(type -P javac)) : 'X\(//\)[^/]' \| \ + X$(readlink -f $(type -P javac)) : 'X\(//\)$' \| \ + X$(readlink -f $(type -P javac)) : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X$(readlink -f $(type -P javac)) | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + JAVA_HOME=`$as_dirname -- $JAVA_BIN_FOLDER || +$as_expr X$JAVA_BIN_FOLDER : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$JAVA_BIN_FOLDER : 'X\(//\)[^/]' \| \ + X$JAVA_BIN_FOLDER : 'X\(//\)$' \| \ + X$JAVA_BIN_FOLDER : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X$JAVA_BIN_FOLDER | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Setting JAVA_HOME=$JAVA_HOME" >&5 +printf "%s\n" "$as_me: Setting JAVA_HOME=$JAVA_HOME" >&6;} + +else $as_nop + + if test "x$with_java" = "xguess" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: For Java support please install readlink or set JAVA_HOME=" >&5 +printf "%s\n" "$as_me: WARNING: For Java support please install readlink or set JAVA_HOME=" >&2;} +else $as_nop + as_fn_error $? "Java support requested, but couldn't find path; please set JAVA_HOME=" "$LINENO" 5 + +fi + + +fi + + +fi + java_dir=$JAVA_HOME + + +fi + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$java_dir/include/linux -I$java_dir/include $CPPFLAGS" + for ac_header in jni_md.h jni.h +do : + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + + java_happy="yes" + +else $as_nop + + if test "x$with_java" = "xguess" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Couldn't find jni headers." >&5 +printf "%s\n" "$as_me: WARNING: Couldn't find jni headers." >&2;} +else $as_nop + as_fn_error $? "Java support requested, but couldn't find jni headers in $java_dir" "$LINENO" 5 + +fi + + +fi + +done + + CPPFLAGS="$save_CPPFLAGS" + +else $as_nop + + if test "x$with_java" = "xguess" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Disabling Java support - java or mvn not in path." >&5 +printf "%s\n" "$as_me: WARNING: Disabling Java support - java or mvn not in path." >&2;} +else $as_nop + as_fn_error $? "Java support was explicitly requested, but java or mvn not in path." "$LINENO" 5 + +fi + + +fi + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Java support was explicitly disabled." >&5 +printf "%s\n" "$as_me: WARNING: Java support was explicitly disabled." >&2;} + +fi + +JDK=${java_dir} + + if test "x$java_happy" != "xno"; then + HAVE_JAVA_TRUE= + HAVE_JAVA_FALSE='#' +else + HAVE_JAVA_TRUE='#' + HAVE_JAVA_FALSE= +fi + +#Set MVN according to whether user has Java and Maven or not +if test -z "$HAVE_JAVA_TRUE"; then : + MVN="mvn" + + build_bindings="${build_bindings}:java" + +fi + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2017. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + + # UCX_CHECK_CUDA + + # +# Copyright (C) Advanced Micro Devices, Inc. 2016 - 2018. ALL RIGHTS RESERVED. +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +# ROCM_PARSE_FLAGS(ARG, VAR_LIBS, VAR_LDFLAGS, VAR_CPPFLAGS) +# ---------------------------------------------------------- +# Parse whitespace-separated ARG into appropriate LIBS, LDFLAGS, and +# CPPFLAGS variables. + + +# ROCM_BUILD_FLAGS(ARG, VAR_LIBS, VAR_LDFLAGS, VAR_CPPFLAGS, VAR_ROOT) +# ---------------------------------------------------------- +# Parse value of ARG into appropriate LIBS, LDFLAGS, and +# CPPFLAGS variables. + + +# HIP_BUILD_FLAGS(ARG, VAR_LIBS, VAR_LDFLAGS, VAR_CPPFLAGS) +# ---------------------------------------------------------- +# Parse value of ARG into appropriate LIBS, LDFLAGS, and +# CPPFLAGS variables. + + +# +# Check for ROCm support +# + + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2017. ALL RIGHTS RESERVED. +# Copyright (C) Advanced Micro Devices, Inc. 2019. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + + + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + + +SAVE_LDFLAGS="$LDFLAGS" + +# +# Linux +# +UCM_MODULE_LDFLAGS_TEST="-Xlinker -z -Xlinker interpose -Xlinker --no-as-needed" +LDFLAGS="$SAVE_LDFLAGS $UCM_MODULE_LDFLAGS_TEST" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + UCM_MODULE_LDFLAGS=$UCM_MODULE_LDFLAGS_TEST + + ucm_ldflags_happy=yes + +else $as_nop + + ucm_ldflags_happy=no + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +# +# ERROR +# +if test "x$ucm_ldflags_happy" = "xno" +then : + + as_fn_error $? "UCM linker flags are not supported" "$LINENO" 5 + +fi + +LDFLAGS="$SAVE_LDFLAGS" + +ucm_modules="" +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + + + +if test "x$cuda_checked" != "xyes" +then : + + +# Check whether --with-cuda was given. +if test ${with_cuda+y} +then : + withval=$with_cuda; +else $as_nop + with_cuda=guess +fi + + + if test "x$with_cuda" = "xno" +then : + + cuda_happy=no + have_cuda_static=no + +else $as_nop + + save_CPPFLAGS="$CPPFLAGS" + save_LDFLAGS="$LDFLAGS" + save_LIBS="$LIBS" + + CUDA_CPPFLAGS="" + CUDA_LDFLAGS="" + CUDA_LIBS="" + CUDA_STATIC_LIBS="" + + if test ! -z "$with_cuda" -a "x$with_cuda" != "xyes" -a "x$with_cuda" != "xguess" +then : + ucx_check_cuda_dir="$with_cuda" + if test -d "$with_cuda/lib64" +then : + libsuff="64" +else $as_nop + libsuff="" +fi + ucx_check_cuda_libdir="$with_cuda/lib$libsuff" + CUDA_CPPFLAGS="-I$with_cuda/include" + CUDA_LDFLAGS="-L$ucx_check_cuda_libdir -L$ucx_check_cuda_libdir/stubs" +fi + + if test ! -z "$with_cuda_libdir" -a "x$with_cuda_libdir" != "xyes" +then : + ucx_check_cuda_libdir="$with_cuda_libdir" + CUDA_LDFLAGS="-L$ucx_check_cuda_libdir -L$ucx_check_cuda_libdir/stubs" +fi + + CPPFLAGS="$CPPFLAGS $CUDA_CPPFLAGS" + LDFLAGS="$LDFLAGS $CUDA_LDFLAGS" + + # Check cuda header files + for ac_header in cuda.h cuda_runtime.h +do : + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + cuda_happy="yes" +else $as_nop + cuda_happy="no" +fi + +done + + # Check cuda libraries + if test "x$cuda_happy" = "xyes" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cuDeviceGetUuid in -lcuda" >&5 +printf %s "checking for cuDeviceGetUuid in -lcuda... " >&6; } +if test ${ac_cv_lib_cuda_cuDeviceGetUuid+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcuda $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char cuDeviceGetUuid (); +int +main (void) +{ +return cuDeviceGetUuid (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_cuda_cuDeviceGetUuid=yes +else $as_nop + ac_cv_lib_cuda_cuDeviceGetUuid=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cuda_cuDeviceGetUuid" >&5 +printf "%s\n" "$ac_cv_lib_cuda_cuDeviceGetUuid" >&6; } +if test "x$ac_cv_lib_cuda_cuDeviceGetUuid" = xyes +then : + CUDA_LIBS="$CUDA_LIBS -lcuda" +else $as_nop + cuda_happy="no" +fi + +fi + if test "x$cuda_happy" = "xyes" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cudaGetDeviceCount in -lcudart" >&5 +printf %s "checking for cudaGetDeviceCount in -lcudart... " >&6; } +if test ${ac_cv_lib_cudart_cudaGetDeviceCount+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcudart $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char cudaGetDeviceCount (); +int +main (void) +{ +return cudaGetDeviceCount (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_cudart_cudaGetDeviceCount=yes +else $as_nop + ac_cv_lib_cudart_cudaGetDeviceCount=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cudart_cudaGetDeviceCount" >&5 +printf "%s\n" "$ac_cv_lib_cudart_cudaGetDeviceCount" >&6; } +if test "x$ac_cv_lib_cudart_cudaGetDeviceCount" = xyes +then : + CUDA_LIBS="$CUDA_LIBS -lcudart" +else $as_nop + cuda_happy="no" +fi + +fi + + # Check nvml header files + if test "x$cuda_happy" = "xyes" +then : + for ac_header in nvml.h +do : + ac_fn_c_check_header_compile "$LINENO" "nvml.h" "ac_cv_header_nvml_h" "$ac_includes_default" +if test "x$ac_cv_header_nvml_h" = xyes +then : + printf "%s\n" "#define HAVE_NVML_H 1" >>confdefs.h + cuda_happy="yes" +else $as_nop + if test "x$with_cuda" != "xguess" +then : + as_fn_error $? "nvml header not found. Install appropriate cuda-nvml-devel package" "$LINENO" 5 +fi + cuda_happy="no" +fi + +done +fi + + # Check nvml library + if test "x$cuda_happy" = "xyes" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nvmlInit in -lnvidia-ml" >&5 +printf %s "checking for nvmlInit in -lnvidia-ml... " >&6; } +if test ${ac_cv_lib_nvidia_ml_nvmlInit+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnvidia-ml $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char nvmlInit (); +int +main (void) +{ +return nvmlInit (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nvidia_ml_nvmlInit=yes +else $as_nop + ac_cv_lib_nvidia_ml_nvmlInit=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nvidia_ml_nvmlInit" >&5 +printf "%s\n" "$ac_cv_lib_nvidia_ml_nvmlInit" >&6; } +if test "x$ac_cv_lib_nvidia_ml_nvmlInit" = xyes +then : + CUDA_LIBS="$CUDA_LIBS -lnvidia-ml" +else $as_nop + if test "x$with_cuda" != "xguess" +then : + as_fn_error $? "libnvidia-ml not found. Install appropriate nvidia-driver package" "$LINENO" 5 +fi + cuda_happy="no" +fi + +fi + + LDFLAGS="$save_LDFLAGS" + + # Check for cuda static library + have_cuda_static="no" + if test "x$cuda_happy" = "xyes" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cudaGetDeviceCount in -lcudart_static" >&5 +printf %s "checking for cudaGetDeviceCount in -lcudart_static... " >&6; } +if test ${ac_cv_lib_cudart_static_cudaGetDeviceCount+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcudart_static -ldl -lrt -lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char cudaGetDeviceCount (); +int +main (void) +{ +return cudaGetDeviceCount (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_cudart_static_cudaGetDeviceCount=yes +else $as_nop + ac_cv_lib_cudart_static_cudaGetDeviceCount=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cudart_static_cudaGetDeviceCount" >&5 +printf "%s\n" "$ac_cv_lib_cudart_static_cudaGetDeviceCount" >&6; } +if test "x$ac_cv_lib_cudart_static_cudaGetDeviceCount" = xyes +then : + CUDA_STATIC_LIBS="$CUDA_STATIC_LIBS -lcudart_static" + have_cuda_static="yes" +fi + +fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + + if test "x$cuda_happy" = "xyes" +then : + CUDA_CPPFLAGS="$CUDA_CPPFLAGS" + + CUDA_LDFLAGS="$CUDA_LDFLAGS" + + CUDA_LIBS="$CUDA_LIBS" + + CUDA_STATIC_LIBS="$CUDA_STATIC_LIBS" + + +printf "%s\n" "#define HAVE_CUDA 1" >>confdefs.h + +else $as_nop + if test "x$with_cuda" != "xguess" +then : + as_fn_error $? "CUDA support is requested but cuda packages cannot be found" "$LINENO" 5 +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: CUDA not found" >&5 +printf "%s\n" "$as_me: WARNING: CUDA not found" >&2;} +fi +fi + + +fi # "x$with_cuda" = "xno" + + cuda_checked=yes + if test "x$cuda_happy" != xno; then + HAVE_CUDA_TRUE= + HAVE_CUDA_FALSE='#' +else + HAVE_CUDA_TRUE='#' + HAVE_CUDA_FALSE= +fi + + if test "X$have_cuda_static" = "Xyes"; then + HAVE_CUDA_STATIC_TRUE= + HAVE_CUDA_STATIC_FALSE='#' +else + HAVE_CUDA_STATIC_TRUE='#' + HAVE_CUDA_STATIC_FALSE= +fi + + + +fi # "x$cuda_checked" != "xyes" + + +if test "x$cuda_happy" = "xyes" +then : + ucm_modules="${ucm_modules}:cuda" +fi +ac_config_files="$ac_config_files src/ucm/cuda/Makefile" + + +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# Copyright (C) Advanced Micro Devices, Inc. 2019. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + + + +if test "x$rocm_checked" != "xyes" +then : + + + +# Check whether --with-rocm was given. +if test ${with_rocm+y} +then : + withval=$with_rocm; +else $as_nop + with_rocm=guess +fi + + +rocm_happy=no +hip_happy=no +if test "x$with_rocm" != "xno" +then : + case "x$with_rocm" in #( + x|xguess|xyes) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ROCm path was not specified. Guessing ..." >&5 +printf "%s\n" "$as_me: ROCm path was not specified. Guessing ..." >&6;} + with_rocm="/opt/rocm" + ROCM_CPPFLAGS="-I$with_rocm/include/hsa -I$with_rocm/include" + ROCM_LDFLAGS="-L$with_rocm/lib -L$with_rocm/lib64 -L$with_rocm/hsa/lib" + ROCM_LIBS="-lhsa-runtime64 -lhsakmt" + ROCM_ROOT="$with_rocm" + ;; #( + x/*) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ROCm path given as $with_rocm ..." >&5 +printf "%s\n" "$as_me: ROCm path given as $with_rocm ..." >&6;} + ROCM_CPPFLAGS="-I$with_rocm/include/hsa -I$with_rocm/include" + ROCM_LDFLAGS="-L$with_rocm/lib -L$with_rocm/lib64 -L$with_rocm/hsa/lib" + ROCM_LIBS="-lhsa-runtime64 -lhsakmt" + ROCM_ROOT="$with_rocm" + ;; #( + *) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ROCm flags given ..." >&5 +printf "%s\n" "$as_me: ROCm flags given ..." >&6;} + for arg in $$with_rocm ; do + case $arg in #( + yes) : + ;; #( + no) : + ;; #( + -l*|*.a|*.so) : + ROCM_LIBS="$ROCM_LIBS $arg" ;; #( + -L*|-WL*|-Wl*) : + ROCM_LDFLAGS="$ROCM_LDFLAGS $arg" ;; #( + -I*) : + ROCM_CPPFLAGS="$ROCM_CPPFLAGS $arg" ;; #( + *lib|*lib/|*lib64|*lib64/) : + if test -d $arg +then : + ROCM_LDFLAGS="$ROCM_LDFLAGS -L$arg" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $arg of $with_rocm not parsed" >&5 +printf "%s\n" "$as_me: WARNING: $arg of $with_rocm not parsed" >&2;} +fi ;; #( + *include|*include/) : + if test -d $arg +then : + ROCM_CPPFLAGS="$ROCM_CPPFLAGS -I$arg" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $arg of $with_rocm not parsed" >&5 +printf "%s\n" "$as_me: WARNING: $arg of $with_rocm not parsed" >&2;} +fi ;; #( + *) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $arg of $with_rocm not parsed" >&5 +printf "%s\n" "$as_me: WARNING: $arg of $with_rocm not parsed" >&2;} ;; +esac +done ;; +esac + + SAVE_CPPFLAGS="$CPPFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + SAVE_LIBS="$LIBS" + + CPPFLAGS="$ROCM_CPPFLAGS $CPPFLAGS" + LDFLAGS="$ROCM_LDFLAGS $LDFLAGS" + LIBS="$ROCM_LIBS $LIBS" + + rocm_happy=yes + if test "x$rocm_happy" = xyes +then : + for ac_header in hsa.h +do : + ac_fn_c_check_header_compile "$LINENO" "hsa.h" "ac_cv_header_hsa_h" "$ac_includes_default" +if test "x$ac_cv_header_hsa_h" = xyes +then : + printf "%s\n" "#define HAVE_HSA_H 1" >>confdefs.h + rocm_happy=yes +else $as_nop + rocm_happy=no +fi + +done +fi + if test "x$rocm_happy" = xyes +then : + for ac_header in hsa_ext_amd.h +do : + ac_fn_c_check_header_compile "$LINENO" "hsa_ext_amd.h" "ac_cv_header_hsa_ext_amd_h" "$ac_includes_default" +if test "x$ac_cv_header_hsa_ext_amd_h" = xyes +then : + printf "%s\n" "#define HAVE_HSA_EXT_AMD_H 1" >>confdefs.h + rocm_happy=yes +else $as_nop + rocm_happy=no +fi + +done +fi + if test "x$rocm_happy" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hsa_init in -lhsa-runtime64" >&5 +printf %s "checking for hsa_init in -lhsa-runtime64... " >&6; } +if test ${ac_cv_lib_hsa_runtime64_hsa_init+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lhsa-runtime64 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char hsa_init (); +int +main (void) +{ +return hsa_init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_hsa_runtime64_hsa_init=yes +else $as_nop + ac_cv_lib_hsa_runtime64_hsa_init=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hsa_runtime64_hsa_init" >&5 +printf "%s\n" "$ac_cv_lib_hsa_runtime64_hsa_init" >&6; } +if test "x$ac_cv_lib_hsa_runtime64_hsa_init" = xyes +then : + rocm_happy=yes +else $as_nop + rocm_happy=no +fi + +fi + + if test "x$rocm_happy" = "xyes" +then : + +printf "%s\n" "#define HAVE_ROCM 1" >>confdefs.h + + + + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ROCm not found" >&5 +printf "%s\n" "$as_me: WARNING: ROCm not found" >&2;} +fi + + CPPFLAGS="$SAVE_CPPFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + LIBS="$SAVE_LIBS" + + HIP_CPPFLAGS="-D__HIP_PLATFORM_HCC__ -I$with_rocm/include/hip -I$with_rocm/include" + HIP_LDFLAGS="-L$with_rocm/hip/lib -L$with_rocm/lib" + HIP_LIBS="-lamdhip64" + + + CPPFLAGS="$HIP_CPPFLAGS $CPPFLAGS" + LDFLAGS="$HIP_LDFLAGS $LDFLAGS" + LIBS="$HIP_LIBS $LIBS" + + hip_happy=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hipFree in -lhip_hcc" >&5 +printf %s "checking for hipFree in -lhip_hcc... " >&6; } +if test ${ac_cv_lib_hip_hcc_hipFree+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lhip_hcc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char hipFree (); +int +main (void) +{ +return hipFree (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_hip_hcc_hipFree=yes +else $as_nop + ac_cv_lib_hip_hcc_hipFree=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hip_hcc_hipFree" >&5 +printf "%s\n" "$ac_cv_lib_hip_hcc_hipFree" >&6; } +if test "x$ac_cv_lib_hip_hcc_hipFree" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please install ROCm-3.7.0 or above" >&5 +printf "%s\n" "$as_me: WARNING: Please install ROCm-3.7.0 or above" >&2;} +else $as_nop + hip_happy=yes +fi + + if test "x$hip_happy" = xyes +then : + for ac_header in hip_runtime.h +do : + ac_fn_c_check_header_compile "$LINENO" "hip_runtime.h" "ac_cv_header_hip_runtime_h" "$ac_includes_default" +if test "x$ac_cv_header_hip_runtime_h" = xyes +then : + printf "%s\n" "#define HAVE_HIP_RUNTIME_H 1" >>confdefs.h + hip_happy=yes +else $as_nop + hip_happy=no +fi + +done +fi + if test "x$hip_happy" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hipFree in -lamdhip64" >&5 +printf %s "checking for hipFree in -lamdhip64... " >&6; } +if test ${ac_cv_lib_amdhip64_hipFree+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lamdhip64 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char hipFree (); +int +main (void) +{ +return hipFree (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_amdhip64_hipFree=yes +else $as_nop + ac_cv_lib_amdhip64_hipFree=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_amdhip64_hipFree" >&5 +printf "%s\n" "$ac_cv_lib_amdhip64_hipFree" >&6; } +if test "x$ac_cv_lib_amdhip64_hipFree" = xyes +then : + hip_happy=yes +else $as_nop + hip_happy=no +fi + +fi + if test "x$hip_happy" = xyes +then : + HIP_CXXFLAGS="--std=gnu++11" +fi + + CPPFLAGS="$SAVE_CPPFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + LIBS="$SAVE_LIBS" + + if test "x$hip_happy" = "xyes" +then : + +printf "%s\n" "#define HAVE_HIP 1" >>confdefs.h + + + + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HIP Runtime not found" >&5 +printf "%s\n" "$as_me: WARNING: HIP Runtime not found" >&2;} +fi + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ROCm was explicitly disabled" >&5 +printf "%s\n" "$as_me: WARNING: ROCm was explicitly disabled" >&2;} + +fi + +rocm_checked=yes + if test "x$rocm_happy" != xno; then + HAVE_ROCM_TRUE= + HAVE_ROCM_FALSE='#' +else + HAVE_ROCM_TRUE='#' + HAVE_ROCM_FALSE= +fi + + if test "x$hip_happy" != xno; then + HAVE_HIP_TRUE= + HAVE_HIP_FALSE='#' +else + HAVE_HIP_TRUE='#' + HAVE_HIP_FALSE= +fi + + + +fi + + +if test "x$rocm_happy" = "xyes" +then : + ucm_modules="${ucm_modules}:rocm" +fi +ac_config_files="$ac_config_files src/ucm/rocm/Makefile" + + + +printf "%s\n" "#define ucm_MODULES \"${ucm_modules}\"" >>confdefs.h + + +ac_config_files="$ac_config_files src/ucm/Makefile" + + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2014. ALL RIGHTS RESERVED. +# Copyright (C) UT-Battelle, LLC. 2015. ALL RIGHTS RESERVED. +# Copyright (C) ARM, Ltd. 2016. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +ucs_modules="" +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2020. ALL RIGHTS RESERVED. +# + + +ac_config_files="$ac_config_files src/ucs/vfs/sock/Makefile" + + +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2020. ALL RIGHTS RESERVED. +# + + +ac_fn_check_decl "$LINENO" "inotify_init" "ac_cv_have_decl_inotify_init" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_inotify_init" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_INOTIFY_INIT $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +printf "%s\n" "#define HAVE_INOTIFY 1" >>confdefs.h + +fi +ac_fn_check_decl "$LINENO" "inotify_add_watch" "ac_cv_have_decl_inotify_add_watch" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_inotify_add_watch" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_INOTIFY_ADD_WATCH $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +printf "%s\n" "#define HAVE_INOTIFY 1" >>confdefs.h + +fi +ac_fn_check_decl "$LINENO" "IN_ATTRIB" "ac_cv_have_decl_IN_ATTRIB" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IN_ATTRIB" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IN_ATTRIB $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +printf "%s\n" "#define HAVE_INOTIFY 1" >>confdefs.h + +fi + + +if test "x$fuse3_happy" = "xyes" +then : + ucs_modules="${ucs_modules}:fuse" +fi +ac_config_files="$ac_config_files src/ucs/vfs/fuse/Makefile src/ucs/vfs/fuse/ucx-fuse.pc" + + + +printf "%s\n" "#define ucs_MODULES \"${ucs_modules}\"" >>confdefs.h + + +# +# Internal profiling support. +# This option may affect perofrmance so it is off by default. +# +# Check whether --enable-profiling was given. +if test ${enable_profiling+y} +then : + enableval=$enable_profiling; +else $as_nop + enable_profiling=no +fi + + +if test "x$enable_profiling" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: enabling profiling" >&5 +printf "%s\n" "$as_me: enabling profiling" >&6;} + +printf "%s\n" "#define HAVE_PROFILING 1" >>confdefs.h + + HAVE_PROFILING=yes + : + +fi + if test "x$HAVE_PROFILING" = "xyes"; then + HAVE_PROFILING_TRUE= + HAVE_PROFILING_FALSE='#' +else + HAVE_PROFILING_TRUE='#' + HAVE_PROFILING_FALSE= +fi + + + +# +# Detailed backtrace with debug information. +# This option requires binutils-devel package. +# + +# Check whether --with-bfd was given. +if test ${with_bfd+y} +then : + withval=$with_bfd; +else $as_nop + with_bfd=guess +fi + +if test "x$with_bfd" != xno +then : + + # Do not define BFD_CFLAGS, BFD_LIBS, etc to make sure automake will not + # try to use them when bfd_happy=no + BFD_CHECK_CFLAGS="" + BFD_CHECK_LIBS="-lbfd -ldl -lz" + if test "x$with_bfd" = "xguess" -o "x$with_bfd" = "xyes" +then : + BFD_CHECK_CPPFLAGS="" + BFD_CHECK_LDFLAGS="" +else $as_nop + BFD_CHECK_CPPFLAGS="-I${with_bfd}/include" + BFD_CHECK_LDFLAGS="-L${with_bfd}/lib -L${with_bfd}/lib64" +fi + + save_CFLAGS="$CFLAGS" + save_CPPFLAGS="$CPPFLAGS" + save_LDFLAGS="$LDFLAGS" + save_LIBS="$LIBS" + + # Check BFD properties with all flags pointing to the custom location + CPPFLAGS="$CPPFLAGS $BFD_CHECK_CPPFLAGS" + LIBS="$LIBS $BFD_CHECK_LIBS" + BFD_CHECK_DEPLIBS="-liberty -lz -ldl" + + # Link the test applications as a shared library, to fail if libbfd is + # not a PIC object. + # Do not allow undefined symbols, to ensure all references are resolved. + # TODO Allow static link with static libbfd + CFLAGS="$CFLAGS $BFD_CHECK_CFLAGS -fPIC" + LDFLAGS="$LDFLAGS $BFD_CHECK_LDFLAGS -shared -Wl,--no-undefined" + + bfd_happy="yes" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bfd_openr in -lbfd" >&5 +printf %s "checking for bfd_openr in -lbfd... " >&6; } +if test ${ac_cv_lib_bfd_bfd_openr+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbfd $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char bfd_openr (); +int +main (void) +{ +return bfd_openr (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bfd_bfd_openr=yes +else $as_nop + ac_cv_lib_bfd_bfd_openr=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bfd_bfd_openr" >&5 +printf "%s\n" "$ac_cv_lib_bfd_bfd_openr" >&6; } +if test "x$ac_cv_lib_bfd_bfd_openr" = xyes +then : + printf "%s\n" "#define HAVE_LIBBFD 1" >>confdefs.h + + LIBS="-lbfd $LIBS" + +else $as_nop + + # If cannot link with bfd, try adding known dependency libs + # unset the cached check result to force re-check + unset ac_cv_lib_bfd_bfd_openr + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bfd_openr in -lbfd" >&5 +printf %s "checking for bfd_openr in -lbfd... " >&6; } +if test ${ac_cv_lib_bfd_bfd_openr+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbfd $BFD_CHECK_DEPLIBS $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char bfd_openr (); +int +main (void) +{ +return bfd_openr (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bfd_bfd_openr=yes +else $as_nop + ac_cv_lib_bfd_bfd_openr=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bfd_bfd_openr" >&5 +printf "%s\n" "$ac_cv_lib_bfd_bfd_openr" >&6; } +if test "x$ac_cv_lib_bfd_bfd_openr" = xyes +then : + BFD_CHECK_LIBS="$BFD_CHECK_LIBS $BFD_CHECK_DEPLIBS" + LIBS="$LIBS $BFD_CHECK_DEPLIBS" +else $as_nop + bfd_happy="no" +fi + + +fi + + ac_fn_c_check_header_compile "$LINENO" "bfd.h" "ac_cv_header_bfd_h" "$ac_includes_default" +if test "x$ac_cv_header_bfd_h" = xyes +then : + +else $as_nop + bfd_happy="no" +fi + + ac_fn_c_check_type "$LINENO" "struct dl_phdr_info" "ac_cv_type_struct_dl_phdr_info" "#define _GNU_SOURCE 1 + #include +" +if test "x$ac_cv_type_struct_dl_phdr_info" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_DL_PHDR_INFO 1" >>confdefs.h + + +else $as_nop + bfd_happy=no +fi + + + if test "x$bfd_happy" = "xyes" +then : + + # Check optional BFD functions + ac_fn_check_decl "$LINENO" "bfd_get_section_flags" "ac_cv_have_decl_bfd_get_section_flags" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bfd_get_section_flags" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_BFD_GET_SECTION_FLAGS $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "bfd_section_flags" "ac_cv_have_decl_bfd_section_flags" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bfd_section_flags" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_BFD_SECTION_FLAGS $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "bfd_get_section_vma" "ac_cv_have_decl_bfd_get_section_vma" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bfd_get_section_vma" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_BFD_GET_SECTION_VMA $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "bfd_section_vma" "ac_cv_have_decl_bfd_section_vma" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bfd_section_vma" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_BFD_SECTION_VMA $ac_have_decl" >>confdefs.h + + + # Check bfd_section_size() function type + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking bfd_section_size API version" >&5 +printf %s "checking bfd_section_size API version... " >&6; } + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include + int main(int argc, char** argv) { + asection sec; + bfd_section_size(&sec); + return 0; + } + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: 1-arg API" >&5 +printf "%s\n" "1-arg API" >&6; } + +printf "%s\n" "#define HAVE_1_ARG_BFD_SECTION_SIZE 1" >>confdefs.h + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: 2-args API" >&5 +printf "%s\n" "2-args API" >&6; } + +printf "%s\n" "#define HAVE_1_ARG_BFD_SECTION_SIZE 0" >>confdefs.h + + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + # Check if demange is supported + ac_fn_c_check_func "$LINENO" "cplus_demangle" "ac_cv_func_cplus_demangle" +if test "x$ac_cv_func_cplus_demangle" = xyes +then : + printf "%s\n" "#define HAVE_CPLUS_DEMANGLE 1" >>confdefs.h + +fi + + + case ${host} in + aarch64*) BFD_CHECK_CFLAGS="$BFD_CHECK_CFLAGS -funwind-tables" ;; + esac + + # Define macros and variable substitutions for BFD support + +printf "%s\n" "#define HAVE_DETAILED_BACKTRACE 1" >>confdefs.h + + BFD_CFLAGS=$BFD_CHECK_CFLAGS + + BFD_CPPFLAGS=$BFD_CHECK_CPPFLAGS + + BFD_LIBS=$BFD_CHECK_LIBS + + BFD_LDFLAGS=$BFD_CHECK_LDFLAGS + + BFD_DEPS=$BFD_CHECK_DEPLIBS + + +else $as_nop + + if test "x$with_bfd" != "xyes" -a "x$with_bfd" != "xguess" +then : + as_fn_error $? "BFD support requested but could not be found" "$LINENO" 5 +fi + +fi + + LIBS="$save_LIBS" + LDFLAGS="$save_LDFLAGS" + CPPFLAGS="$save_CPPFLAGS" + CFLAGS="$save_CFLAGS" + +else $as_nop + bfd_happy="no" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: BFD support was explicitly disabled" >&5 +printf "%s\n" "$as_me: WARNING: BFD support was explicitly disabled" >&2;} + +fi + + +# +# Enable statistics and counters +# +# Check whether --enable-stats was given. +if test ${enable_stats+y} +then : + enableval=$enable_stats; +else $as_nop + enable_stats=no +fi + + +if test "x$enable_stats" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: enabling statistics" >&5 +printf "%s\n" "$as_me: enabling statistics" >&6;} + +printf "%s\n" "#define ENABLE_STATS 1" >>confdefs.h + + HAVE_STATS=yes +else $as_nop + : + +fi + if test "x$HAVE_STATS" = "xyes"; then + HAVE_STATS_TRUE= + HAVE_STATS_FALSE='#' +else + HAVE_STATS_TRUE='#' + HAVE_STATS_FALSE= +fi + + + +# +# Enable tuning params at runtime +# +# Check whether --enable-tuning was given. +if test ${enable_tuning+y} +then : + enableval=$enable_tuning; +else $as_nop + enable_tuning=no +fi + + +if test "x$enable_tuning" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: enabling tuning" >&5 +printf "%s\n" "$as_me: enabling tuning" >&6;} + +printf "%s\n" "#define ENABLE_TUNING 1" >>confdefs.h + + HAVE_TUNING=yes +else $as_nop + : + +fi + if test "x$HAVE_TUNING" = "xyes"; then + HAVE_TUNING_TRUE= + HAVE_TUNING_FALSE='#' +else + HAVE_TUNING_TRUE='#' + HAVE_TUNING_FALSE= +fi + + + +# +# Disable logging levels below INFO +# +# Check whether --enable-logging was given. +if test ${enable_logging+y} +then : + enableval=$enable_logging; +fi + + +case $enable_logging in #( + no) : + +printf "%s\n" "#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_DEBUG" >>confdefs.h + ;; #( + warn) : + +printf "%s\n" "#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_WARN" >>confdefs.h + ;; #( + diag) : + +printf "%s\n" "#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_DIAG" >>confdefs.h + ;; #( + info) : + +printf "%s\n" "#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_INFO" >>confdefs.h + ;; #( + debug) : + +printf "%s\n" "#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_DEBUG" >>confdefs.h + ;; #( + trace) : + +printf "%s\n" "#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_TRACE" >>confdefs.h + ;; #( + trace_req) : + +printf "%s\n" "#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_TRACE_REQ" >>confdefs.h + ;; #( + trace_data) : + +printf "%s\n" "#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_TRACE_DATA" >>confdefs.h + ;; #( + trace_async) : + +printf "%s\n" "#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_TRACE_ASYNC" >>confdefs.h + ;; #( + trace_func) : + +printf "%s\n" "#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_TRACE_FUNC" >>confdefs.h + ;; #( + trace_poll) : + +printf "%s\n" "#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_TRACE_POLL" >>confdefs.h + ;; #( + *) : + +printf "%s\n" "#define UCS_MAX_LOG_LEVEL UCS_LOG_LEVEL_TRACE_POLL" >>confdefs.h + ;; +esac + +# +# Disable assertions +# +# Check whether --enable-assertions was given. +if test ${enable_assertions+y} +then : + enableval=$enable_assertions; +fi + + +if test "x$enable_assertions" != xno +then : + +printf "%s\n" "#define ENABLE_ASSERT 1" >>confdefs.h + + +fi + +# +# Check if __attribute__((constructor)) works +# +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking __attribute__((constructor))" >&5 +printf %s "checking __attribute__((constructor))... " >&6; } + + if test "$cross_compiling" = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +static int rc = 1; + static void constructor_test() __attribute__((constructor)); + static void constructor_test() { rc = 0; } + int main(int argc, char** argv) { return rc; } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop + as_fn_error $? "Cannot continue. Please use compiler that + supports __attribute__((constructor))" "$LINENO" 5 + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +static int rc = 1; + static void constructor_test() __attribute__((constructor)); + static void constructor_test() { rc = 0; } + int main(int argc, char** argv) { return rc; } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop + as_fn_error $? "Cannot continue. Please use compiler that + supports __attribute__((constructor))" "$LINENO" 5 + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + + + +# +# Manual configuration of cacheline size +# + +# Check whether --with-cache-line-size was given. +if test ${with_cache_line_size+y} +then : + withval=$with_cache_line_size; +else $as_nop + with_cache_line_size=no +fi + + +if test "x$with_cache_line_size" != xno +then : + + case ${with_cache_line_size} in + 64) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: The cache line size is set to 64B" >&5 +printf "%s\n" "The cache line size is set to 64B" >&6; } + +printf "%s\n" "#define HAVE_CACHE_LINE_SIZE 64" >>confdefs.h + + ;; + 128) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: The cache line size is set to 128B" >&5 +printf "%s\n" "The cache line size is set to 128B" >&6; } + +printf "%s\n" "#define HAVE_CACHE_LINE_SIZE 128" >>confdefs.h + + ;; + [0-9]*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unusual cache cache line size was specified: $with_cache_line_size" >&5 +printf "%s\n" "$as_me: WARNING: Unusual cache cache line size was specified: $with_cache_line_size" >&2;} + +printf "%s\n" "#define HAVE_CACHE_LINE_SIZE $with_cache_line_size" >>confdefs.h + + ;; + *) + as_fn_error $? "Cannot continue. Unsupported cache line size $with_cache_line_size." "$LINENO" 5 + ;; + esac +fi + + +# +# Architecture specific checks +# +case ${host} in + aarch64*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking support for CNTVCT_EL0 on aarch64" >&5 +printf %s "checking support for CNTVCT_EL0 on aarch64... " >&6; } + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no - cross-compiling detected" >&5 +printf "%s\n" "no - cross-compiling detected" >&6; } + +printf "%s\n" "#define HAVE_HW_TIMER 0" >>confdefs.h + + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +uint64_t tmp; asm volatile("mrs %0, cntvct_el0" : "=r" (tmp)); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_HW_TIMER 1" >>confdefs.h + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +printf "%s\n" "#define HAVE_HW_TIMER 0" >>confdefs.h + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +;; + *) + # HW timer is supported for all other architectures + +printf "%s\n" "#define HAVE_HW_TIMER 1" >>confdefs.h + +esac + +# +# Enable built-in memcpy +# +# Check whether --enable-builtin-memcpy was given. +if test ${enable_builtin_memcpy+y} +then : + enableval=$enable_builtin_memcpy; +else $as_nop + enable_builtin_memcpy=yes +fi + + +if test "x$enable_builtin_memcpy" != xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: enabling builtin memcpy" >&5 +printf "%s\n" "$as_me: enabling builtin memcpy" >&6;} + +printf "%s\n" "#define ENABLE_BUILTIN_MEMCPY 1" >>confdefs.h + +else $as_nop + +printf "%s\n" "#define ENABLE_BUILTIN_MEMCPY 0" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "__clear_cache" "ac_cv_func___clear_cache" +if test "x$ac_cv_func___clear_cache" = xyes +then : + printf "%s\n" "#define HAVE___CLEAR_CACHE 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "__aarch64_sync_cache_range" "ac_cv_func___aarch64_sync_cache_range" +if test "x$ac_cv_func___aarch64_sync_cache_range" = xyes +then : + printf "%s\n" "#define HAVE___AARCH64_SYNC_CACHE_RANGE 1" >>confdefs.h + +fi + + + +ac_config_files="$ac_config_files src/ucs/Makefile src/ucs/signal/Makefile src/ucs/ucx-ucs.pc" + + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +uct_modules="" +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2017. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + + + +if test "x$cuda_checked" != "xyes" +then : + + +# Check whether --with-cuda was given. +if test ${with_cuda+y} +then : + withval=$with_cuda; +else $as_nop + with_cuda=guess +fi + + + if test "x$with_cuda" = "xno" +then : + + cuda_happy=no + have_cuda_static=no + +else $as_nop + + save_CPPFLAGS="$CPPFLAGS" + save_LDFLAGS="$LDFLAGS" + save_LIBS="$LIBS" + + CUDA_CPPFLAGS="" + CUDA_LDFLAGS="" + CUDA_LIBS="" + CUDA_STATIC_LIBS="" + + if test ! -z "$with_cuda" -a "x$with_cuda" != "xyes" -a "x$with_cuda" != "xguess" +then : + ucx_check_cuda_dir="$with_cuda" + if test -d "$with_cuda/lib64" +then : + libsuff="64" +else $as_nop + libsuff="" +fi + ucx_check_cuda_libdir="$with_cuda/lib$libsuff" + CUDA_CPPFLAGS="-I$with_cuda/include" + CUDA_LDFLAGS="-L$ucx_check_cuda_libdir -L$ucx_check_cuda_libdir/stubs" +fi + + if test ! -z "$with_cuda_libdir" -a "x$with_cuda_libdir" != "xyes" +then : + ucx_check_cuda_libdir="$with_cuda_libdir" + CUDA_LDFLAGS="-L$ucx_check_cuda_libdir -L$ucx_check_cuda_libdir/stubs" +fi + + CPPFLAGS="$CPPFLAGS $CUDA_CPPFLAGS" + LDFLAGS="$LDFLAGS $CUDA_LDFLAGS" + + # Check cuda header files + for ac_header in cuda.h cuda_runtime.h +do : + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + cuda_happy="yes" +else $as_nop + cuda_happy="no" +fi + +done + + # Check cuda libraries + if test "x$cuda_happy" = "xyes" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cuDeviceGetUuid in -lcuda" >&5 +printf %s "checking for cuDeviceGetUuid in -lcuda... " >&6; } +if test ${ac_cv_lib_cuda_cuDeviceGetUuid+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcuda $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char cuDeviceGetUuid (); +int +main (void) +{ +return cuDeviceGetUuid (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_cuda_cuDeviceGetUuid=yes +else $as_nop + ac_cv_lib_cuda_cuDeviceGetUuid=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cuda_cuDeviceGetUuid" >&5 +printf "%s\n" "$ac_cv_lib_cuda_cuDeviceGetUuid" >&6; } +if test "x$ac_cv_lib_cuda_cuDeviceGetUuid" = xyes +then : + CUDA_LIBS="$CUDA_LIBS -lcuda" +else $as_nop + cuda_happy="no" +fi + +fi + if test "x$cuda_happy" = "xyes" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cudaGetDeviceCount in -lcudart" >&5 +printf %s "checking for cudaGetDeviceCount in -lcudart... " >&6; } +if test ${ac_cv_lib_cudart_cudaGetDeviceCount+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcudart $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char cudaGetDeviceCount (); +int +main (void) +{ +return cudaGetDeviceCount (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_cudart_cudaGetDeviceCount=yes +else $as_nop + ac_cv_lib_cudart_cudaGetDeviceCount=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cudart_cudaGetDeviceCount" >&5 +printf "%s\n" "$ac_cv_lib_cudart_cudaGetDeviceCount" >&6; } +if test "x$ac_cv_lib_cudart_cudaGetDeviceCount" = xyes +then : + CUDA_LIBS="$CUDA_LIBS -lcudart" +else $as_nop + cuda_happy="no" +fi + +fi + + # Check nvml header files + if test "x$cuda_happy" = "xyes" +then : + for ac_header in nvml.h +do : + ac_fn_c_check_header_compile "$LINENO" "nvml.h" "ac_cv_header_nvml_h" "$ac_includes_default" +if test "x$ac_cv_header_nvml_h" = xyes +then : + printf "%s\n" "#define HAVE_NVML_H 1" >>confdefs.h + cuda_happy="yes" +else $as_nop + if test "x$with_cuda" != "xguess" +then : + as_fn_error $? "nvml header not found. Install appropriate cuda-nvml-devel package" "$LINENO" 5 +fi + cuda_happy="no" +fi + +done +fi + + # Check nvml library + if test "x$cuda_happy" = "xyes" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nvmlInit in -lnvidia-ml" >&5 +printf %s "checking for nvmlInit in -lnvidia-ml... " >&6; } +if test ${ac_cv_lib_nvidia_ml_nvmlInit+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnvidia-ml $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char nvmlInit (); +int +main (void) +{ +return nvmlInit (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nvidia_ml_nvmlInit=yes +else $as_nop + ac_cv_lib_nvidia_ml_nvmlInit=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nvidia_ml_nvmlInit" >&5 +printf "%s\n" "$ac_cv_lib_nvidia_ml_nvmlInit" >&6; } +if test "x$ac_cv_lib_nvidia_ml_nvmlInit" = xyes +then : + CUDA_LIBS="$CUDA_LIBS -lnvidia-ml" +else $as_nop + if test "x$with_cuda" != "xguess" +then : + as_fn_error $? "libnvidia-ml not found. Install appropriate nvidia-driver package" "$LINENO" 5 +fi + cuda_happy="no" +fi + +fi + + LDFLAGS="$save_LDFLAGS" + + # Check for cuda static library + have_cuda_static="no" + if test "x$cuda_happy" = "xyes" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cudaGetDeviceCount in -lcudart_static" >&5 +printf %s "checking for cudaGetDeviceCount in -lcudart_static... " >&6; } +if test ${ac_cv_lib_cudart_static_cudaGetDeviceCount+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcudart_static -ldl -lrt -lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char cudaGetDeviceCount (); +int +main (void) +{ +return cudaGetDeviceCount (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_cudart_static_cudaGetDeviceCount=yes +else $as_nop + ac_cv_lib_cudart_static_cudaGetDeviceCount=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cudart_static_cudaGetDeviceCount" >&5 +printf "%s\n" "$ac_cv_lib_cudart_static_cudaGetDeviceCount" >&6; } +if test "x$ac_cv_lib_cudart_static_cudaGetDeviceCount" = xyes +then : + CUDA_STATIC_LIBS="$CUDA_STATIC_LIBS -lcudart_static" + have_cuda_static="yes" +fi + +fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + + if test "x$cuda_happy" = "xyes" +then : + CUDA_CPPFLAGS="$CUDA_CPPFLAGS" + + CUDA_LDFLAGS="$CUDA_LDFLAGS" + + CUDA_LIBS="$CUDA_LIBS" + + CUDA_STATIC_LIBS="$CUDA_STATIC_LIBS" + + +printf "%s\n" "#define HAVE_CUDA 1" >>confdefs.h + +else $as_nop + if test "x$with_cuda" != "xguess" +then : + as_fn_error $? "CUDA support is requested but cuda packages cannot be found" "$LINENO" 5 +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: CUDA not found" >&5 +printf "%s\n" "$as_me: WARNING: CUDA not found" >&2;} +fi +fi + + +fi # "x$with_cuda" = "xno" + + cuda_checked=yes + if test "x$cuda_happy" != xno; then + HAVE_CUDA_TRUE= + HAVE_CUDA_FALSE='#' +else + HAVE_CUDA_TRUE='#' + HAVE_CUDA_FALSE= +fi + + if test "X$have_cuda_static" = "Xyes"; then + HAVE_CUDA_STATIC_TRUE= + HAVE_CUDA_STATIC_FALSE='#' +else + HAVE_CUDA_STATIC_TRUE='#' + HAVE_CUDA_STATIC_FALSE= +fi + + + +fi # "x$cuda_checked" != "xyes" + + + +if test "x$cuda_happy" = "xyes" +then : + uct_modules="${uct_modules}:cuda" +fi +uct_cuda_modules="" +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2017. ALL RIGHTS RESERVED. +# Copyright (C) Advanced Micro Devices, Inc. 2019. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + + + +if test "x$gdrcopy_checked" != "xyes" +then : + + +gdrcopy_happy="no" + + +# Check whether --with-gdrcopy was given. +if test ${with_gdrcopy+y} +then : + withval=$with_gdrcopy; +else $as_nop + with_gdrcopy=guess +fi + + +if test "x$with_gdrcopy" != "xno" +then : + save_CPPFLAGS="$CPPFLAGS" + save_CFLAGS="$CFLAGS" + save_LDFLAGS="$LDFLAGS" + + if test ! -z "$with_gdrcopy" -a "x$with_gdrcopy" != "xyes" -a "x$with_gdrcopy" != "xguess" +then : + + ucx_check_gdrcopy_dir="$with_gdrcopy" + if test -d "$with_gdrcopy/lib64" +then : + libsuff="64" +else $as_nop + libsuff="" +fi + ucx_check_gdrcopy_libdir="$with_gdrcopy/lib$libsuff" + CPPFLAGS="-I$with_gdrcopy/include $save_CPPFLAGS" + LDFLAGS="-L$ucx_check_gdrcopy_libdir $save_LDFLAGS" + +fi + if test ! -z "$with_gdrcopy_libdir" -a "x$with_gdrcopy_libdir" != "xyes" +then : + ucx_check_gdrcopy_libdir="$with_gdrcopy_libdir" + LDFLAGS="-L$ucx_check_gdrcopy_libdir $save_LDFLAGS" +fi + + for ac_header in gdrapi.h +do : + ac_fn_c_check_header_compile "$LINENO" "gdrapi.h" "ac_cv_header_gdrapi_h" "$ac_includes_default" +if test "x$ac_cv_header_gdrapi_h" = xyes +then : + printf "%s\n" "#define HAVE_GDRAPI_H 1" >>confdefs.h + as_ac_Lib=`printf "%s\n" "ac_cv_lib_gdrapi ""_gdr_pin_buffer" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdr_pin_buffer in -lgdrapi " >&5 +printf %s "checking for gdr_pin_buffer in -lgdrapi ... " >&6; } +if eval test \${$as_ac_Lib+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgdrapi $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char gdr_pin_buffer (); +int +main (void) +{ +return gdr_pin_buffer (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$as_ac_Lib=yes" +else $as_nop + eval "$as_ac_Lib=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +eval ac_res=\$$as_ac_Lib + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Lib"\" = x"yes" +then : + gdrcopy_happy="yes" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: GDR_COPY runtime not detected. Disable." >&5 +printf "%s\n" "$as_me: WARNING: GDR_COPY runtime not detected. Disable." >&2;} + gdrcopy_happy="no" +fi + + +else $as_nop + gdrcopy_happy="no" +fi + +done + + if test "x$gdrcopy_happy" = "xyes" +then : + ac_fn_check_decl "$LINENO" "gdr_copy_to_mapping" "ac_cv_have_decl_gdr_copy_to_mapping" "#include \"gdrapi.h\" +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_gdr_copy_to_mapping" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_GDR_COPY_TO_MAPPING $ac_have_decl" >>confdefs.h + +fi + + CFLAGS="$save_CFLAGS" + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + + if test "x$gdrcopy_happy" = "xyes" +then : + + GDR_COPY_CPPFLAGS="-I$ucx_check_gdrcopy_dir/include/ " + + + gdr_copy_ldflags="-lgdrapi" + if test ! -z "$ucx_check_gdrcopy_libdir" +then : + gdr_copy_ldflags="$gdr_copy_ldflags -L$ucx_check_gdrcopy_libdir" +fi + GDR_COPY_LDFLAGS="$gdr_copy_ldflags" + + +else $as_nop + + if test "x$with_gdrcopy" != "xguess" +then : + as_fn_error $? "gdrcopy support is requested but gdrcopy packages cannot be found" "$LINENO" 5 +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: GDR_COPY not found" >&5 +printf "%s\n" "$as_me: WARNING: GDR_COPY not found" >&2;} +fi + +fi + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: GDR_COPY was explicitly disabled" >&5 +printf "%s\n" "$as_me: WARNING: GDR_COPY was explicitly disabled" >&2;} +fi + +gdrcopy_checked=yes + if test "x$gdrcopy_happy" != xno; then + HAVE_GDR_COPY_TRUE= + HAVE_GDR_COPY_FALSE='#' +else + HAVE_GDR_COPY_TRUE='#' + HAVE_GDR_COPY_FALSE= +fi + + + +fi + + + +if test "x$gdrcopy_happy" = "xyes" +then : + uct_cuda_modules="${uct_cuda_modules}:gdrcopy" +fi +ac_config_files="$ac_config_files src/uct/cuda/gdr_copy/Makefile src/uct/cuda/gdr_copy/ucx-gdrcopy.pc" + + + +printf "%s\n" "#define uct_cuda_MODULES \"${uct_cuda_modules}\"" >>confdefs.h + +ac_config_files="$ac_config_files src/uct/cuda/Makefile src/uct/cuda/ucx-cuda.pc" + + +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2014. ALL RIGHTS RESERVED. +# Copyright (C) UT-Battelle, LLC. 2014-2015. ALL RIGHTS RESERVED. +# Copyright (C) The University of Tennessee and the University of Tennessee Research Foundation. 2016. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + + + +# Check whether --with-verbs was given. +if test ${with_verbs+y} +then : + withval=$with_verbs; +else $as_nop + with_verbs=/usr +fi + + +if test "x$with_verbs" = "xyes" +then : + with_verbs=/usr +fi +if test -d "$with_verbs" +then : + with_ib=yes; str="with verbs support from $with_verbs" +else $as_nop + with_ib=no; str="without verbs support" +fi +if test -d "$with_verbs/lib64" +then : + libsuff="64" +else $as_nop + libsuff="" +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Compiling $str" >&5 +printf "%s\n" "$as_me: Compiling $str" >&6;} + +# +# RC Support +# + +# Check whether --with-rc was given. +if test ${with_rc+y} +then : + withval=$with_rc; +else $as_nop + with_rc=yes +fi + + + +# +# UD Support +# + +# Check whether --with-ud was given. +if test ${with_ud+y} +then : + withval=$with_ud; +else $as_nop + with_ud=yes +fi + + + +# +# DC Support +# + +# Check whether --with-dc was given. +if test ${with_dc+y} +then : + withval=$with_dc; +else $as_nop + with_dc=yes +fi + + + +# +# mlx5 DV support +# + +# Check whether --with-mlx5-dv was given. +if test ${with_mlx5_dv+y} +then : + withval=$with_mlx5_dv; +fi + + +# +# TM (IB Tag Matching) Support +# + +# Check whether --with-ib-hw-tm was given. +if test ${with_ib_hw_tm+y} +then : + withval=$with_ib_hw_tm; +else $as_nop + with_ib_hw_tm=yes +fi + + + +# +# DM Support +# + +# Check whether --with-dm was given. +if test ${with_dm+y} +then : + withval=$with_dm; +else $as_nop + with_dm=yes +fi + + +# +# DEVX Support +# + +# Check whether --with-devx was given. +if test ${with_devx+y} +then : + withval=$with_devx; +else $as_nop + with_devx=check +fi + + +# +# Check basic IB support: User wanted at least one IB transport, and we found +# verbs header file and library. +# +if test "x$with_ib" = "xyes" +then : + + save_LDFLAGS="$LDFLAGS" + save_CFLAGS="$CFLAGS" + save_CPPFLAGS="$CPPFLAGS" + if test "x/usr" = "x$with_verbs" +then : + +else $as_nop + verbs_incl="-I$with_verbs/include" + verbs_libs="-L$with_verbs/lib$libsuff" +fi + LDFLAGS="$verbs_libs $LDFLAGS" + CFLAGS="$verbs_incl $CFLAGS" + CPPFLAGS="$verbs_incl $CPPFLAGS" + ac_fn_c_check_header_compile "$LINENO" "infiniband/verbs.h" "ac_cv_header_infiniband_verbs_h" "$ac_includes_default" +if test "x$ac_cv_header_infiniband_verbs_h" = xyes +then : + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ibverbs header files not found" >&5 +printf "%s\n" "$as_me: WARNING: ibverbs header files not found" >&2;}; with_ib=no +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ibv_get_device_list in -libverbs" >&5 +printf %s "checking for ibv_get_device_list in -libverbs... " >&6; } +if test ${ac_cv_lib_ibverbs_ibv_get_device_list+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-libverbs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char ibv_get_device_list (); +int +main (void) +{ +return ibv_get_device_list (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_ibverbs_ibv_get_device_list=yes +else $as_nop + ac_cv_lib_ibverbs_ibv_get_device_list=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ibverbs_ibv_get_device_list" >&5 +printf "%s\n" "$ac_cv_lib_ibverbs_ibv_get_device_list" >&6; } +if test "x$ac_cv_lib_ibverbs_ibv_get_device_list" = xyes +then : + + IBVERBS_LDFLAGS="$verbs_libs -libverbs" + + IBVERBS_DIR="$with_verbs" + + IBVERBS_CPPFLAGS="$verbs_incl" + + IBVERBS_CFLAGS="$verbs_incl" + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libibverbs not found" >&5 +printf "%s\n" "$as_me: WARNING: libibverbs not found" >&2;}; with_ib=no +fi + + + have_ib_funcs=yes + LDFLAGS="$LDFLAGS $IBVERBS_LDFLAGS" + ac_fn_check_decl "$LINENO" "ibv_wc_status_str" "ac_cv_have_decl_ibv_wc_status_str" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_wc_status_str" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_WC_STATUS_STR $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + have_ib_funcs=no +fi +ac_fn_check_decl "$LINENO" "ibv_event_type_str" "ac_cv_have_decl_ibv_event_type_str" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_event_type_str" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_EVENT_TYPE_STR $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + have_ib_funcs=no +fi +ac_fn_check_decl "$LINENO" "ibv_query_gid" "ac_cv_have_decl_ibv_query_gid" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_query_gid" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_QUERY_GID $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + have_ib_funcs=no +fi +ac_fn_check_decl "$LINENO" "ibv_get_device_name" "ac_cv_have_decl_ibv_get_device_name" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_get_device_name" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_GET_DEVICE_NAME $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + have_ib_funcs=no +fi +ac_fn_check_decl "$LINENO" "ibv_create_srq" "ac_cv_have_decl_ibv_create_srq" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_create_srq" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_CREATE_SRQ $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + have_ib_funcs=no +fi +ac_fn_check_decl "$LINENO" "ibv_get_async_event" "ac_cv_have_decl_ibv_get_async_event" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_get_async_event" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_GET_ASYNC_EVENT $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + have_ib_funcs=no +fi + + if test "x$have_ib_funcs" != xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Some IB verbs are not found. Please make sure OFED version is 1.5 or above." >&5 +printf "%s\n" "$as_me: WARNING: Some IB verbs are not found. Please make sure OFED version is 1.5 or above." >&2;} + with_ib=no +fi + + LDFLAGS="$save_LDFLAGS" + CFLAGS="$save_CFLAGS" + CPPFLAGS="$save_CPPFLAGS" + +else $as_nop + : +fi + +if test "x$with_ib" = "xyes" +then : + + save_LDFLAGS="$LDFLAGS" + save_CFLAGS="$CFLAGS" + save_CPPFLAGS="$CPPFLAGS" + LDFLAGS="$IBVERBS_LDFLAGS $LDFLAGS" + CFLAGS="$IBVERBS_CFLAGS $CFLAGS" + CPPFLAGS="$IBVERBS_CPPFLAGS $CPPFLAGS" + + ac_fn_check_decl "$LINENO" "IBV_CREATE_CQ_ATTR_IGNORE_OVERRUN" "ac_cv_have_decl_IBV_CREATE_CQ_ATTR_IGNORE_OVERRUN" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IBV_CREATE_CQ_ATTR_IGNORE_OVERRUN" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_CREATE_CQ_ATTR_IGNORE_OVERRUN $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + have_cq_io=yes +fi + + + if test "x$with_mlx5_dv" != xno +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Checking for DV bare-metal support" >&5 +printf "%s\n" "$as_me: Checking for DV bare-metal support" >&6;} + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mlx5dv_query_device in -lmlx5-rdmav2" >&5 +printf %s "checking for mlx5dv_query_device in -lmlx5-rdmav2... " >&6; } +if test ${ac_cv_lib_mlx5_rdmav2_mlx5dv_query_device+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmlx5-rdmav2 -libverbs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char mlx5dv_query_device (); +int +main (void) +{ +return mlx5dv_query_device (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_mlx5_rdmav2_mlx5dv_query_device=yes +else $as_nop + ac_cv_lib_mlx5_rdmav2_mlx5dv_query_device=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mlx5_rdmav2_mlx5dv_query_device" >&5 +printf "%s\n" "$ac_cv_lib_mlx5_rdmav2_mlx5dv_query_device" >&6; } +if test "x$ac_cv_lib_mlx5_rdmav2_mlx5dv_query_device" = xyes +then : + LIB_MLX5=-lmlx5-rdmav2 + +else $as_nop + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mlx5dv_query_device in -lmlx5" >&5 +printf %s "checking for mlx5dv_query_device in -lmlx5... " >&6; } +if test ${ac_cv_lib_mlx5_mlx5dv_query_device+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmlx5 -libverbs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char mlx5dv_query_device (); +int +main (void) +{ +return mlx5dv_query_device (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_mlx5_mlx5dv_query_device=yes +else $as_nop + ac_cv_lib_mlx5_mlx5dv_query_device=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mlx5_mlx5dv_query_device" >&5 +printf "%s\n" "$ac_cv_lib_mlx5_mlx5dv_query_device" >&6; } +if test "x$ac_cv_lib_mlx5_mlx5dv_query_device" = xyes +then : + LIB_MLX5=-lmlx5 + +else $as_nop + with_mlx5_dv=no +fi + +fi + + + if test "x$with_mlx5_dv" != xno +then : + + for ac_header in infiniband/mlx5dv.h +do : + ac_fn_c_check_header_compile "$LINENO" "infiniband/mlx5dv.h" "ac_cv_header_infiniband_mlx5dv_h" " +" +if test "x$ac_cv_header_infiniband_mlx5dv_h" = xyes +then : + printf "%s\n" "#define HAVE_INFINIBAND_MLX5DV_H 1" >>confdefs.h + with_mlx5_dv=yes + mlx5_include=mlx5dv.h +fi + +done +fi + ac_fn_check_decl "$LINENO" "mlx5dv_init_obj" "ac_cv_have_decl_mlx5dv_init_obj" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_mlx5dv_init_obj" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MLX5DV_INIT_OBJ $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + with_mlx5_dv=no +fi +ac_fn_check_decl "$LINENO" "mlx5dv_create_qp" "ac_cv_have_decl_mlx5dv_create_qp" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_mlx5dv_create_qp" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MLX5DV_CREATE_QP $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + with_mlx5_dv=no +fi +ac_fn_check_decl "$LINENO" "mlx5dv_is_supported" "ac_cv_have_decl_mlx5dv_is_supported" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_mlx5dv_is_supported" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MLX5DV_IS_SUPPORTED $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + with_mlx5_dv=no +fi +ac_fn_check_decl "$LINENO" "mlx5dv_devx_subscribe_devx_event" "ac_cv_have_decl_mlx5dv_devx_subscribe_devx_event" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_mlx5dv_devx_subscribe_devx_event" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MLX5DV_DEVX_SUBSCRIBE_DEVX_EVENT $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + with_mlx5_dv=no +fi + + + if test "x$with_mlx5_dv" = "xyes" -a "x$have_cq_io" = "xyes" +then : + + ac_fn_check_decl "$LINENO" "MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE" "ac_cv_have_decl_MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE" "ac_cv_have_decl_MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE" "ac_cv_have_decl_MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "MLX5DV_UAR_ALLOC_TYPE_BF" "ac_cv_have_decl_MLX5DV_UAR_ALLOC_TYPE_BF" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_MLX5DV_UAR_ALLOC_TYPE_BF" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MLX5DV_UAR_ALLOC_TYPE_BF $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "MLX5DV_UAR_ALLOC_TYPE_NC" "ac_cv_have_decl_MLX5DV_UAR_ALLOC_TYPE_NC" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_MLX5DV_UAR_ALLOC_TYPE_NC" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MLX5DV_UAR_ALLOC_TYPE_NC $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "mlx5dv_devx_umem_reg_ex" "ac_cv_have_decl_mlx5dv_devx_umem_reg_ex" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_mlx5dv_devx_umem_reg_ex" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MLX5DV_DEVX_UMEM_REG_EX $ac_have_decl" >>confdefs.h + + ac_fn_c_check_member "$LINENO" "struct mlx5dv_cq" "cq_uar" "ac_cv_member_struct_mlx5dv_cq_cq_uar" "#include +" +if test "x$ac_cv_member_struct_mlx5dv_cq_cq_uar" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_MLX5DV_CQ_CQ_UAR 1" >>confdefs.h + + +fi + + ac_fn_check_decl "$LINENO" "MLX5DV_OBJ_AH" "ac_cv_have_decl_MLX5DV_OBJ_AH" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_MLX5DV_OBJ_AH" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MLX5DV_OBJ_AH $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + has_get_av=yes +fi + + ac_fn_check_decl "$LINENO" "MLX5DV_DCTYPE_DCT" "ac_cv_have_decl_MLX5DV_DCTYPE_DCT" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_MLX5DV_DCTYPE_DCT" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_MLX5DV_DCTYPE_DCT $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + have_dc_dv=yes +fi + + ac_fn_check_decl "$LINENO" "ibv_alloc_td" "ac_cv_have_decl_ibv_alloc_td" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_alloc_td" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_ALLOC_TD $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + has_res_domain=yes +fi + + if test x$with_devx != xno +then : + + ac_fn_check_decl "$LINENO" "MLX5DV_CONTEXT_FLAGS_DEVX" "ac_cv_have_decl_MLX5DV_CONTEXT_FLAGS_DEVX" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_MLX5DV_CONTEXT_FLAGS_DEVX" = xyes +then : + + +printf "%s\n" "#define HAVE_DEVX 1" >>confdefs.h + + have_devx=yes + +fi +fi +fi +fi + + if test "x$has_res_domain" = "xyes" -a "x$have_cq_io" = "xyes" +then : + +else $as_nop + + with_mlx5_dv=no +fi + + if test "x$with_mlx5_dv" = "xyes" +then : + +printf "%s\n" "#define HAVE_MLX5_DV 1" >>confdefs.h + + if test "x$has_get_av" = "xyes" +then : + +printf "%s\n" "#define HAVE_MLX5_HW_UD 1" >>confdefs.h + +fi +fi + + if test x$with_devx = xyes -a x$have_devx != xyes +then : + + as_fn_error $? "devx requested but not found" "$LINENO" 5 +fi + + ac_fn_check_decl "$LINENO" "IBV_LINK_LAYER_INFINIBAND" "ac_cv_have_decl_IBV_LINK_LAYER_INFINIBAND" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IBV_LINK_LAYER_INFINIBAND" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_LINK_LAYER_INFINIBAND $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "IBV_LINK_LAYER_ETHERNET" "ac_cv_have_decl_IBV_LINK_LAYER_ETHERNET" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IBV_LINK_LAYER_ETHERNET" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_LINK_LAYER_ETHERNET $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "IBV_EVENT_GID_CHANGE" "ac_cv_have_decl_IBV_EVENT_GID_CHANGE" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IBV_EVENT_GID_CHANGE" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_EVENT_GID_CHANGE $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "IBV_TRANSPORT_USNIC" "ac_cv_have_decl_IBV_TRANSPORT_USNIC" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IBV_TRANSPORT_USNIC" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_TRANSPORT_USNIC $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "IBV_TRANSPORT_USNIC_UDP" "ac_cv_have_decl_IBV_TRANSPORT_USNIC_UDP" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IBV_TRANSPORT_USNIC_UDP" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_TRANSPORT_USNIC_UDP $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "IBV_TRANSPORT_UNSPECIFIED" "ac_cv_have_decl_IBV_TRANSPORT_UNSPECIFIED" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IBV_TRANSPORT_UNSPECIFIED" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_TRANSPORT_UNSPECIFIED $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "ibv_create_qp_ex" "ac_cv_have_decl_ibv_create_qp_ex" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_create_qp_ex" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_CREATE_QP_EX $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "ibv_create_cq_ex" "ac_cv_have_decl_ibv_create_cq_ex" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_create_cq_ex" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_CREATE_CQ_EX $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "ibv_create_srq_ex" "ac_cv_have_decl_ibv_create_srq_ex" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_create_srq_ex" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_CREATE_SRQ_EX $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "ibv_reg_dmabuf_mr" "ac_cv_have_decl_ibv_reg_dmabuf_mr" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_reg_dmabuf_mr" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_REG_DMABUF_MR $ac_have_decl" >>confdefs.h + + + # Check ECE operation APIs are supported by rdma-core package + ac_fn_check_decl "$LINENO" "ibv_set_ece" "ac_cv_have_decl_ibv_set_ece" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_set_ece" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_SET_ECE $ac_have_decl" >>confdefs.h + + + # We shouldn't confuse upstream ibv_query_device_ex with + # legacy MOFED one, distinguish by arguments number + ac_fn_check_decl "$LINENO" "ibv_query_device_ex" "ac_cv_have_decl_ibv_query_device_ex" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_query_device_ex" = xyes +then : + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +ibv_query_device_ex(NULL, NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +printf "%s\n" "#define HAVE_DECL_IBV_QUERY_DEVICE_EX 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + ac_fn_c_check_member "$LINENO" "struct ibv_device_attr_ex" "pci_atomic_caps" "ac_cv_member_struct_ibv_device_attr_ex_pci_atomic_caps" "#include +" +if test "x$ac_cv_member_struct_ibv_device_attr_ex_pci_atomic_caps" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_IBV_DEVICE_ATTR_EX_PCI_ATOMIC_CAPS 1" >>confdefs.h + + +fi + + + ac_fn_check_decl "$LINENO" "IBV_ACCESS_ON_DEMAND" "ac_cv_have_decl_IBV_ACCESS_ON_DEMAND" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IBV_ACCESS_ON_DEMAND" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_ACCESS_ON_DEMAND $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + with_odp=yes +fi + + + if test "x$with_odp" = "xyes" +then : + + +printf "%s\n" "#define HAVE_ODP 1" >>confdefs.h + + + ac_fn_check_decl "$LINENO" "IBV_ODP_SUPPORT_IMPLICIT" "ac_cv_have_decl_IBV_ODP_SUPPORT_IMPLICIT" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IBV_ODP_SUPPORT_IMPLICIT" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_ODP_SUPPORT_IMPLICIT $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + with_odp_i=yes +fi + + + if test "x$with_odp_i" = "xyes" +then : + + +printf "%s\n" "#define HAVE_ODP_IMPLICIT 1" >>confdefs.h + +fi +fi + + ac_fn_check_decl "$LINENO" "IBV_ACCESS_RELAXED_ORDERING" "ac_cv_have_decl_IBV_ACCESS_RELAXED_ORDERING" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IBV_ACCESS_RELAXED_ORDERING" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_ACCESS_RELAXED_ORDERING $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "IBV_QPF_GRH_REQUIRED" "ac_cv_have_decl_IBV_QPF_GRH_REQUIRED" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IBV_QPF_GRH_REQUIRED" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_QPF_GRH_REQUIRED $ac_have_decl" >>confdefs.h + + + ac_fn_check_decl "$LINENO" "ibv_advise_mr" "ac_cv_have_decl_ibv_advise_mr" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_advise_mr" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_ADVISE_MR $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + with_prefetch=yes +fi + + + if test "x$with_prefetch" = "xyes" +then : + + +printf "%s\n" "#define HAVE_PREFETCH 1" >>confdefs.h + +fi + + ac_fn_c_check_member "$LINENO" "struct mlx5_wqe_av" "base" "ac_cv_member_struct_mlx5_wqe_av_base" "#include +" +if test "x$ac_cv_member_struct_mlx5_wqe_av_base" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_MLX5_WQE_AV_BASE 1" >>confdefs.h + + +fi +ac_fn_c_check_member "$LINENO" "struct mlx5_grh_av" "rmac" "ac_cv_member_struct_mlx5_grh_av_rmac" "#include +" +if test "x$ac_cv_member_struct_mlx5_grh_av_rmac" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_MLX5_GRH_AV_RMAC 1" >>confdefs.h + + +fi + + + ac_fn_c_check_member "$LINENO" "struct mlx5_cqe64" "ib_stride_index" "ac_cv_member_struct_mlx5_cqe64_ib_stride_index" "#include +" +if test "x$ac_cv_member_struct_mlx5_cqe64_ib_stride_index" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_MLX5_CQE64_IB_STRIDE_INDEX 1" >>confdefs.h + + +fi + + + +printf "%s\n" "#define HAVE_IB 1" >>confdefs.h + + + if test "x$with_dc" != xno -a "x$have_dc_dv" = xyes -a "x$with_mlx5_dv" = "xyes" +then : + + +printf "%s\n" "#define HAVE_TL_DC 1" >>confdefs.h + + if test -n "$have_dc_dv" +then : + +printf "%s\n" "#define HAVE_DC_DV 1" >>confdefs.h + +fi +else $as_nop + with_dc=no +fi + + if test "x$with_rc" != xno +then : + +printf "%s\n" "#define HAVE_TL_RC 1" >>confdefs.h + +fi + + if test "x$with_ud" != xno +then : + +printf "%s\n" "#define HAVE_TL_UD 1" >>confdefs.h + +fi + + # XRQ with Tag Matching support + if test "x$with_ib_hw_tm" != xno +then : + + if test "x$with_mlx5_dv" = "xyes" +then : + + ac_fn_c_check_member "$LINENO" "struct ibv_tmh" "tag" "ac_cv_member_struct_ibv_tmh_tag" "#include +" +if test "x$ac_cv_member_struct_ibv_tmh_tag" = xyes +then : + with_ib_hw_tm=upstream +fi + +fi +fi + + if test "x$with_ib_hw_tm" = xupstream +then : + +printf "%s\n" "#define IBV_HW_TM 1" >>confdefs.h + + ac_fn_c_check_member "$LINENO" "struct ibv_tm_caps" "flags" "ac_cv_member_struct_ibv_tm_caps_flags" "#include +" +if test "x$ac_cv_member_struct_ibv_tm_caps_flags" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_IBV_TM_CAPS_FLAGS 1" >>confdefs.h + + +fi + +fi + + # Device Memory support + if test "x$with_dm" != xno +then : + + ac_fn_check_decl "$LINENO" "ibv_alloc_dm" "ac_cv_have_decl_ibv_alloc_dm" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_alloc_dm" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_ALLOC_DM $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +printf "%s\n" "#define HAVE_IBV_DM 1" >>confdefs.h + +fi + +fi + + ac_fn_check_decl "$LINENO" "ibv_cmd_modify_qp" "ac_cv_have_decl_ibv_cmd_modify_qp" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_ibv_cmd_modify_qp" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IBV_CMD_MODIFY_QP $ac_have_decl" >>confdefs.h + + + mlnx_valg_libdir=$with_verbs/lib${libsuff}/mlnx_ofed/valgrind + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Checking OFED valgrind libs $mlnx_valg_libdir" >&5 +printf "%s\n" "$as_me: Checking OFED valgrind libs $mlnx_valg_libdir" >&6;} + + if test -d "$mlnx_valg_libdir" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $mlnx_valg_libdir to valgrind LD_LIBRARY_PATH" >&5 +printf "%s\n" "$as_me: Added $mlnx_valg_libdir to valgrind LD_LIBRARY_PATH" >&6;} + valgrind_libpath="$mlnx_valg_libdir:$valgrind_libpath" +fi + LDFLAGS="$save_LDFLAGS" + CFLAGS="$save_CFLAGS" + CPPFLAGS="$save_CPPFLAGS" + + uct_modules="${uct_modules}:ib" + +else $as_nop + + with_dc=no + with_rc=no + with_ud=no + with_mlx5_dv=no + +fi + +# +# For automake +# + if test "x$with_ib" != xno; then + HAVE_IB_TRUE= + HAVE_IB_FALSE='#' +else + HAVE_IB_TRUE='#' + HAVE_IB_FALSE= +fi + + if test "x$with_rc" != xno; then + HAVE_TL_RC_TRUE= + HAVE_TL_RC_FALSE='#' +else + HAVE_TL_RC_TRUE='#' + HAVE_TL_RC_FALSE= +fi + + if test "x$with_dc" != xno; then + HAVE_TL_DC_TRUE= + HAVE_TL_DC_FALSE='#' +else + HAVE_TL_DC_TRUE='#' + HAVE_TL_DC_FALSE= +fi + + if test -n "$have_dc_dv"; then + HAVE_DC_DV_TRUE= + HAVE_DC_DV_FALSE='#' +else + HAVE_DC_DV_TRUE='#' + HAVE_DC_DV_FALSE= +fi + + if test "x$with_ud" != xno; then + HAVE_TL_UD_TRUE= + HAVE_TL_UD_FALSE='#' +else + HAVE_TL_UD_TRUE='#' + HAVE_TL_UD_FALSE= +fi + + if test "x$with_mlx5_dv" = xyes; then + HAVE_MLX5_DV_TRUE= + HAVE_MLX5_DV_FALSE='#' +else + HAVE_MLX5_DV_TRUE='#' + HAVE_MLX5_DV_FALSE= +fi + + if test -n "$have_devx"; then + HAVE_DEVX_TRUE= + HAVE_DEVX_FALSE='#' +else + HAVE_DEVX_TRUE='#' + HAVE_DEVX_FALSE= +fi + + if test "x$with_mlx5_dv" != xno -a "x$has_get_av" != xno; then + HAVE_MLX5_HW_UD_TRUE= + HAVE_MLX5_HW_UD_FALSE='#' +else + HAVE_MLX5_HW_UD_TRUE='#' + HAVE_MLX5_HW_UD_FALSE= +fi + + +uct_ib_modules="" +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2021. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + +# +# Check for RDMACM support +# +rdmacm_happy="no" + +# Check whether --with-rdmacm was given. +if test ${with_rdmacm+y} +then : + withval=$with_rdmacm; +else $as_nop + with_rdmacm=guess +fi + + +if test "x$with_rdmacm" != xno +then : + if test "x$with_rdmacm" = xguess -o "x$with_rdmacm" = xyes -o "x$with_rdmacm" = x +then : + ucx_check_rdmacm_dir=/usr +else $as_nop + ucx_check_rdmacm_dir=$with_rdmacm +fi + + if test -d "$ucx_check_rdmacm_dir/lib64" +then : + libsuff="64" +else $as_nop + libsuff="" +fi + save_LDFLAGS="$LDFLAGS" + save_CPPFLAGS="$CPPFLAGS" + + if test "$ucx_check_rdmacm_dir" != /usr +then : + + LDFLAGS="-L$ucx_check_rdmacm_dir/lib$libsuff $LDFLAGS" + CPPFLAGS="-I$ucx_check_rdmacm_dir/include $CPPFLAGS" +fi + + as_ac_Header=`printf "%s\n" "ac_cv_header_$ucx_check_rdmacm_dir/include/rdma/rdma_cma.h" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ucx_check_rdmacm_dir/include/rdma/rdma_cma.h" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rdma_establish in -lrdmacm" >&5 +printf %s "checking for rdma_establish in -lrdmacm... " >&6; } +if test ${ac_cv_lib_rdmacm_rdma_establish+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrdmacm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char rdma_establish (); +int +main (void) +{ +return rdma_establish (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_rdmacm_rdma_establish=yes +else $as_nop + ac_cv_lib_rdmacm_rdma_establish=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rdmacm_rdma_establish" >&5 +printf "%s\n" "$ac_cv_lib_rdmacm_rdma_establish" >&6; } +if test "x$ac_cv_lib_rdmacm_rdma_establish" = xyes +then : + uct_modules="${uct_modules}:rdmacm" + rdmacm_happy="yes" + if test "$ucx_check_rdmacm_dir" != /usr +then : + + RDMACM_CPPFLAGS="-I$ucx_check_rdmacm_dir/include" + + RDMACM_LDFLAGS="-L$ucx_check_rdmacm_dir/lib$libsuff" + +fi + RDMACM_LIBS=-lrdmacm + +else $as_nop + if test "x$with_rdmacm" != xguess +then : + as_fn_error $? "RDMACM requested but librdmacm is not found or does not provide rdma_establish() API" "$LINENO" 5 +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: RDMACM requested but librdmacm is not found or does not provide rdma_establish() API" >&5 +printf "%s\n" "$as_me: WARNING: RDMACM requested but librdmacm is not found or does not provide rdma_establish() API" >&2;} +fi + +fi + + +else $as_nop + + if test "x$with_rdmacm" != xguess +then : + as_fn_error $? "RDMACM requested but required file (rdma/rdma_cma.h) could not be found in $ucx_check_rdmacm_dir" "$LINENO" 5 +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: RDMACM requested but required file (rdma/rdma_cma.h) could not be found in $ucx_check_rdmacm_dir" >&5 +printf "%s\n" "$as_me: WARNING: RDMACM requested but required file (rdma/rdma_cma.h) could not be found in $ucx_check_rdmacm_dir" >&2;} +fi + +fi + + + LDFLAGS="$save_LDFLAGS" + CPPFLAGS="$save_CPPFLAGS" + + +fi + + if test "x$rdmacm_happy" != xno; then + HAVE_RDMACM_TRUE= + HAVE_RDMACM_FALSE='#' +else + HAVE_RDMACM_TRUE='#' + HAVE_RDMACM_FALSE= +fi + +ac_config_files="$ac_config_files src/uct/ib/rdmacm/Makefile src/uct/ib/rdmacm/ucx-rdmacm.pc" + + + +printf "%s\n" "#define uct_ib_MODULES \"${uct_ib_modules}\"" >>confdefs.h + +ac_config_files="$ac_config_files src/uct/ib/Makefile src/uct/ib/ucx-ib.pc" + + +# +# Copyright (C) Advanced Micro Devices, Inc. 2016 - 2018. ALL RIGHTS RESERVED. +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + + + +if test "x$rocm_checked" != "xyes" +then : + + + +# Check whether --with-rocm was given. +if test ${with_rocm+y} +then : + withval=$with_rocm; +else $as_nop + with_rocm=guess +fi + + +rocm_happy=no +hip_happy=no +if test "x$with_rocm" != "xno" +then : + case "x$with_rocm" in #( + x|xguess|xyes) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ROCm path was not specified. Guessing ..." >&5 +printf "%s\n" "$as_me: ROCm path was not specified. Guessing ..." >&6;} + with_rocm="/opt/rocm" + ROCM_CPPFLAGS="-I$with_rocm/include/hsa -I$with_rocm/include" + ROCM_LDFLAGS="-L$with_rocm/lib -L$with_rocm/lib64 -L$with_rocm/hsa/lib" + ROCM_LIBS="-lhsa-runtime64 -lhsakmt" + ROCM_ROOT="$with_rocm" + ;; #( + x/*) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ROCm path given as $with_rocm ..." >&5 +printf "%s\n" "$as_me: ROCm path given as $with_rocm ..." >&6;} + ROCM_CPPFLAGS="-I$with_rocm/include/hsa -I$with_rocm/include" + ROCM_LDFLAGS="-L$with_rocm/lib -L$with_rocm/lib64 -L$with_rocm/hsa/lib" + ROCM_LIBS="-lhsa-runtime64 -lhsakmt" + ROCM_ROOT="$with_rocm" + ;; #( + *) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ROCm flags given ..." >&5 +printf "%s\n" "$as_me: ROCm flags given ..." >&6;} + for arg in $$with_rocm ; do + case $arg in #( + yes) : + ;; #( + no) : + ;; #( + -l*|*.a|*.so) : + ROCM_LIBS="$ROCM_LIBS $arg" ;; #( + -L*|-WL*|-Wl*) : + ROCM_LDFLAGS="$ROCM_LDFLAGS $arg" ;; #( + -I*) : + ROCM_CPPFLAGS="$ROCM_CPPFLAGS $arg" ;; #( + *lib|*lib/|*lib64|*lib64/) : + if test -d $arg +then : + ROCM_LDFLAGS="$ROCM_LDFLAGS -L$arg" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $arg of $with_rocm not parsed" >&5 +printf "%s\n" "$as_me: WARNING: $arg of $with_rocm not parsed" >&2;} +fi ;; #( + *include|*include/) : + if test -d $arg +then : + ROCM_CPPFLAGS="$ROCM_CPPFLAGS -I$arg" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $arg of $with_rocm not parsed" >&5 +printf "%s\n" "$as_me: WARNING: $arg of $with_rocm not parsed" >&2;} +fi ;; #( + *) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $arg of $with_rocm not parsed" >&5 +printf "%s\n" "$as_me: WARNING: $arg of $with_rocm not parsed" >&2;} ;; +esac +done ;; +esac + + SAVE_CPPFLAGS="$CPPFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + SAVE_LIBS="$LIBS" + + CPPFLAGS="$ROCM_CPPFLAGS $CPPFLAGS" + LDFLAGS="$ROCM_LDFLAGS $LDFLAGS" + LIBS="$ROCM_LIBS $LIBS" + + rocm_happy=yes + if test "x$rocm_happy" = xyes +then : + for ac_header in hsa.h +do : + ac_fn_c_check_header_compile "$LINENO" "hsa.h" "ac_cv_header_hsa_h" "$ac_includes_default" +if test "x$ac_cv_header_hsa_h" = xyes +then : + printf "%s\n" "#define HAVE_HSA_H 1" >>confdefs.h + rocm_happy=yes +else $as_nop + rocm_happy=no +fi + +done +fi + if test "x$rocm_happy" = xyes +then : + for ac_header in hsa_ext_amd.h +do : + ac_fn_c_check_header_compile "$LINENO" "hsa_ext_amd.h" "ac_cv_header_hsa_ext_amd_h" "$ac_includes_default" +if test "x$ac_cv_header_hsa_ext_amd_h" = xyes +then : + printf "%s\n" "#define HAVE_HSA_EXT_AMD_H 1" >>confdefs.h + rocm_happy=yes +else $as_nop + rocm_happy=no +fi + +done +fi + if test "x$rocm_happy" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hsa_init in -lhsa-runtime64" >&5 +printf %s "checking for hsa_init in -lhsa-runtime64... " >&6; } +if test ${ac_cv_lib_hsa_runtime64_hsa_init+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lhsa-runtime64 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char hsa_init (); +int +main (void) +{ +return hsa_init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_hsa_runtime64_hsa_init=yes +else $as_nop + ac_cv_lib_hsa_runtime64_hsa_init=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hsa_runtime64_hsa_init" >&5 +printf "%s\n" "$ac_cv_lib_hsa_runtime64_hsa_init" >&6; } +if test "x$ac_cv_lib_hsa_runtime64_hsa_init" = xyes +then : + rocm_happy=yes +else $as_nop + rocm_happy=no +fi + +fi + + if test "x$rocm_happy" = "xyes" +then : + +printf "%s\n" "#define HAVE_ROCM 1" >>confdefs.h + + + + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ROCm not found" >&5 +printf "%s\n" "$as_me: WARNING: ROCm not found" >&2;} +fi + + CPPFLAGS="$SAVE_CPPFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + LIBS="$SAVE_LIBS" + + HIP_CPPFLAGS="-D__HIP_PLATFORM_HCC__ -I$with_rocm/include/hip -I$with_rocm/include" + HIP_LDFLAGS="-L$with_rocm/hip/lib -L$with_rocm/lib" + HIP_LIBS="-lamdhip64" + + + CPPFLAGS="$HIP_CPPFLAGS $CPPFLAGS" + LDFLAGS="$HIP_LDFLAGS $LDFLAGS" + LIBS="$HIP_LIBS $LIBS" + + hip_happy=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hipFree in -lhip_hcc" >&5 +printf %s "checking for hipFree in -lhip_hcc... " >&6; } +if test ${ac_cv_lib_hip_hcc_hipFree+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lhip_hcc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char hipFree (); +int +main (void) +{ +return hipFree (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_hip_hcc_hipFree=yes +else $as_nop + ac_cv_lib_hip_hcc_hipFree=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hip_hcc_hipFree" >&5 +printf "%s\n" "$ac_cv_lib_hip_hcc_hipFree" >&6; } +if test "x$ac_cv_lib_hip_hcc_hipFree" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please install ROCm-3.7.0 or above" >&5 +printf "%s\n" "$as_me: WARNING: Please install ROCm-3.7.0 or above" >&2;} +else $as_nop + hip_happy=yes +fi + + if test "x$hip_happy" = xyes +then : + for ac_header in hip_runtime.h +do : + ac_fn_c_check_header_compile "$LINENO" "hip_runtime.h" "ac_cv_header_hip_runtime_h" "$ac_includes_default" +if test "x$ac_cv_header_hip_runtime_h" = xyes +then : + printf "%s\n" "#define HAVE_HIP_RUNTIME_H 1" >>confdefs.h + hip_happy=yes +else $as_nop + hip_happy=no +fi + +done +fi + if test "x$hip_happy" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hipFree in -lamdhip64" >&5 +printf %s "checking for hipFree in -lamdhip64... " >&6; } +if test ${ac_cv_lib_amdhip64_hipFree+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lamdhip64 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char hipFree (); +int +main (void) +{ +return hipFree (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_amdhip64_hipFree=yes +else $as_nop + ac_cv_lib_amdhip64_hipFree=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_amdhip64_hipFree" >&5 +printf "%s\n" "$ac_cv_lib_amdhip64_hipFree" >&6; } +if test "x$ac_cv_lib_amdhip64_hipFree" = xyes +then : + hip_happy=yes +else $as_nop + hip_happy=no +fi + +fi + if test "x$hip_happy" = xyes +then : + HIP_CXXFLAGS="--std=gnu++11" +fi + + CPPFLAGS="$SAVE_CPPFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + LIBS="$SAVE_LIBS" + + if test "x$hip_happy" = "xyes" +then : + +printf "%s\n" "#define HAVE_HIP 1" >>confdefs.h + + + + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HIP Runtime not found" >&5 +printf "%s\n" "$as_me: WARNING: HIP Runtime not found" >&2;} +fi + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ROCm was explicitly disabled" >&5 +printf "%s\n" "$as_me: WARNING: ROCm was explicitly disabled" >&2;} + +fi + +rocm_checked=yes + if test "x$rocm_happy" != xno; then + HAVE_ROCM_TRUE= + HAVE_ROCM_FALSE='#' +else + HAVE_ROCM_TRUE='#' + HAVE_ROCM_FALSE= +fi + + if test "x$hip_happy" != xno; then + HAVE_HIP_TRUE= + HAVE_HIP_FALSE='#' +else + HAVE_HIP_TRUE='#' + HAVE_HIP_FALSE= +fi + + + +fi + + + +if test "x$rocm_happy" = "xyes" +then : + uct_modules="${uct_modules}:rocm" +fi +uct_rocm_modules="" + +printf "%s\n" "#define uct_rocm_MODULES \"${uct_rocm_modules}\"" >>confdefs.h + +ac_config_files="$ac_config_files src/uct/rocm/Makefile src/uct/rocm/ucx-rocm.pc" + + +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2020. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2020. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +# +# Copyright (C) UT-Battelle, LLC. 2014-2015. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +cma_happy="no" +# Check whether --enable-cma was given. +if test ${enable_cma+y} +then : + enableval=$enable_cma; +else $as_nop + enable_cma=yes +fi + + +if test "x$enable_cma" != xno +then : + for ac_header in sys/uio.h +do : + ac_fn_c_check_header_compile "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_uio_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_UIO_H 1" >>confdefs.h + ac_fn_c_check_func "$LINENO" "process_vm_readv" "ac_cv_func_process_vm_readv" +if test "x$ac_cv_func_process_vm_readv" = xyes +then : + cma_happy="yes" +else $as_nop + cma_happy="no" +fi + + if test "x$cma_happy" = "xyes" +then : + uct_modules="${uct_modules}:cma" +fi + +fi + +done + + +fi + + if test "x$cma_happy" != xno; then + HAVE_CMA_TRUE= + HAVE_CMA_FALSE='#' +else + HAVE_CMA_TRUE='#' + HAVE_CMA_FALSE= +fi + +ac_config_files="$ac_config_files src/uct/sm/scopy/cma/Makefile src/uct/sm/scopy/cma/ucx-cma.pc" + + +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +knem_happy="no" + + +# Check whether --with-knem was given. +if test ${with_knem+y} +then : + withval=$with_knem; +else $as_nop + with_knem=guess +fi + + +if test "x$with_knem" != xno +then : + if test "x$with_knem" = "xguess" -o "x$with_knem" = xyes -o "x$with_knem" = "x" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: KNEM path was not found, guessing ..." >&5 +printf "%s\n" "$as_me: KNEM path was not found, guessing ..." >&6;} + ucx_check_knem_include_dir=$(pkg-config --cflags knem) +else $as_nop + ucx_check_knem_include_dir=-I$with_knem/include +fi + + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$ucx_check_knem_include_dir $CPPFLAGS" + + ac_fn_check_decl "$LINENO" "KNEM_CMD_GET_INFO" "ac_cv_have_decl_KNEM_CMD_GET_INFO" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_KNEM_CMD_GET_INFO" = xyes +then : + KNEM_CPPFLAGS=$ucx_check_knem_include_dir + + uct_modules="${uct_modules}:knem" + knem_happy="yes" +else $as_nop + if test "x$with_knem" != xguess +then : + as_fn_error $? "KNEM requested but required file (knem_io.h) could not be found" "$LINENO" 5 +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: KNEM requested but required file (knem_io.h) could not be found" >&5 +printf "%s\n" "$as_me: WARNING: KNEM requested but required file (knem_io.h) could not be found" >&2;} +fi +fi + + CPPFLAGS="$save_CPPFLAGS" + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: KNEM was explicitly disabled" >&5 +printf "%s\n" "$as_me: WARNING: KNEM was explicitly disabled" >&2;} + +fi + + if test "x$knem_happy" != xno; then + HAVE_KNEM_TRUE= + HAVE_KNEM_FALSE='#' +else + HAVE_KNEM_TRUE='#' + HAVE_KNEM_FALSE= +fi + +ac_config_files="$ac_config_files src/uct/sm/scopy/knem/Makefile src/uct/sm/scopy/knem/ucx-knem.pc" + + + +ac_config_files="$ac_config_files src/uct/sm/scopy/Makefile" + + +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# Copyright (c) UT-Battelle, LLC. 2014-2015. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +xpmem_happy="no" + +# Check whether --with-xpmem was given. +if test ${with_xpmem+y} +then : + withval=$with_xpmem; +else $as_nop + with_xpmem=guess +fi + + +if test "x$with_xpmem" != "xno" +then : + if test ! -d "$with_xpmem" +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: XPMEM - failed to open the requested location ($with_xpmem), guessing ..." >&5 +printf "%s\n" "$as_me: XPMEM - failed to open the requested location ($with_xpmem), guessing ..." >&6;} + if $PKG_CONFIG --exists cray-xpmem +then : + + xpmem_happy=yes + XPMEM_CFLAGS=`$PKG_CONFIG --cflags cray-xpmem` + + XPMEM_LIBS=`$PKG_CONFIG --libs cray-xpmem` + + +else $as_nop + + # If cray-xpmem module not found in pkg-config, try to search + xpmem_header=$(find /opt/xpmem /usr/local/include /usr/local/xpmem -name xpmem.h 2>/dev/null|head -1) + if test -f "$xpmem_header" +then : + with_xpmem=$(dirname $xpmem_header | head -1 | sed -e s,/include,,g) +fi + +fi + +fi + +fi + +# Verify XPMEM lib and header files +if test "x$xpmem_happy" = "xno" -a -d "$with_xpmem" +then : + + save_LDFLAGS="$LDFLAGS" + save_CPPFLAGS="$CPPFLAGS" + LDFLAGS="$LDFLAGS -L$with_xpmem/lib -lxpmem" + CPPFLAGS="$CPPFLAGS -I$with_xpmem/include" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xpmem_init in -lxpmem" >&5 +printf %s "checking for xpmem_init in -lxpmem... " >&6; } +if test ${ac_cv_lib_xpmem_xpmem_init+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lxpmem $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char xpmem_init (); +int +main (void) +{ +return xpmem_init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_xpmem_xpmem_init=yes +else $as_nop + ac_cv_lib_xpmem_xpmem_init=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xpmem_xpmem_init" >&5 +printf "%s\n" "$ac_cv_lib_xpmem_xpmem_init" >&6; } +if test "x$ac_cv_lib_xpmem_xpmem_init" = xyes +then : + ac_fn_c_check_header_compile "$LINENO" "xpmem.h" "ac_cv_header_xpmem_h" "$ac_includes_default" +if test "x$ac_cv_header_xpmem_h" = xyes +then : + XPMEM_CFLAGS="-I$with_xpmem/include" + + XPMEM_LIBS="-L$with_xpmem/lib -lxpmem" + + xpmem_happy="yes" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cray-xpmem header was not found in $with_xpmem" >&5 +printf "%s\n" "$as_me: WARNING: cray-xpmem header was not found in $with_xpmem" >&2;} + +fi + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cray-xpmem lib was not found in $with_xpmem" >&5 +printf "%s\n" "$as_me: WARNING: cray-xpmem lib was not found in $with_xpmem" >&2;} + +fi + + LDFLAGS="$save_LDFLAGS" + CPPFLAGS="$save_CPPFLAGS" + + +fi + +if test "x$xpmem_happy" = "xyes" +then : + uct_modules="${uct_modules}:xpmem" +fi + if test "x$xpmem_happy" != "xno"; then + HAVE_XPMEM_TRUE= + HAVE_XPMEM_FALSE='#' +else + HAVE_XPMEM_TRUE='#' + HAVE_XPMEM_FALSE= +fi + +ac_config_files="$ac_config_files src/uct/sm/mm/xpmem/Makefile src/uct/sm/mm/xpmem/ucx-xpmem.pc" + + + +ac_config_files="$ac_config_files src/uct/sm/mm/Makefile" + + + +ac_config_files="$ac_config_files src/uct/sm/Makefile" + + +# +# Copyright (C) UT-Battelle, LLC. 2014. ALL RIGHTS RESERVED. +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# Copyright (C) ARM Ltd. 2020. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +cray_ugni_supported=no + + +# Check whether --with-ugni was given. +if test ${with_ugni+y} +then : + withval=$with_ugni; +fi + + +if test "x$with_ugni" != "xno" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking cray-ugni" >&5 +printf %s "checking cray-ugni... " >&6; } + if $PKG_CONFIG --exists cray-ugni cray-pmi +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CRAY_UGNI_CFLAGS=`$PKG_CONFIG --cflags cray-ugni cray-pmi` + + CRAY_UGNI_LIBS=`$PKG_CONFIG --libs cray-ugni cray-pmi` + + uct_modules="${uct_modules}:ugni" + cray_ugni_supported=yes + +printf "%s\n" "#define HAVE_TL_UGNI 1" >>confdefs.h + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + if test "x$with_ugni" != "x" +then : + as_fn_error $? "UGNI support was requested but cray-ugni and cray-pmi packages cannot be found" "$LINENO" 5 +fi + +fi +fi + + + if test "x$cray_ugni_supported" = xyes; then + HAVE_CRAY_UGNI_TRUE= + HAVE_CRAY_UGNI_FALSE='#' +else + HAVE_CRAY_UGNI_TRUE='#' + HAVE_CRAY_UGNI_FALSE= +fi + +ac_config_files="$ac_config_files src/uct/ugni/Makefile src/uct/ugni/ucx-ugni.pc" + + + + +printf "%s\n" "#define uct_MODULES \"${uct_modules}\"" >>confdefs.h + + +ac_config_files="$ac_config_files src/uct/Makefile src/uct/ucx-uct.pc" + + +# +# TCP flags +# +ac_fn_check_decl "$LINENO" "IPPROTO_TCP" "ac_cv_have_decl_IPPROTO_TCP" "#include + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_IPPROTO_TCP" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_IPPROTO_TCP $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + tcp_keepalive_happy=no +fi +ac_fn_check_decl "$LINENO" "SOL_SOCKET" "ac_cv_have_decl_SOL_SOCKET" "#include + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_SOL_SOCKET" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SOL_SOCKET $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + tcp_keepalive_happy=no +fi +ac_fn_check_decl "$LINENO" "SO_KEEPALIVE" "ac_cv_have_decl_SO_KEEPALIVE" "#include + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_SO_KEEPALIVE" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SO_KEEPALIVE $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + tcp_keepalive_happy=no +fi +ac_fn_check_decl "$LINENO" "TCP_KEEPCNT" "ac_cv_have_decl_TCP_KEEPCNT" "#include + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_TCP_KEEPCNT" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_TCP_KEEPCNT $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + tcp_keepalive_happy=no +fi +ac_fn_check_decl "$LINENO" "TCP_KEEPIDLE" "ac_cv_have_decl_TCP_KEEPIDLE" "#include + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_TCP_KEEPIDLE" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_TCP_KEEPIDLE $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + tcp_keepalive_happy=no +fi +ac_fn_check_decl "$LINENO" "TCP_KEEPINTVL" "ac_cv_have_decl_TCP_KEEPINTVL" "#include + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_TCP_KEEPINTVL" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_TCP_KEEPINTVL $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +else $as_nop + tcp_keepalive_happy=no +fi + +if test "x$tcp_keepalive_happy" != "xno" +then : + +printf "%s\n" "#define UCT_TCP_EP_KEEPALIVE 1" >>confdefs.h + +fi; + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + +ucx_perftest_modules="" +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -fno-exceptions" >&5 +printf %s "checking compiler flag -fno-exceptions... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -fno-exceptions" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -fno-exceptions" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv){return 0;} +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + PERF_LIB_CXXFLAGS="$PERF_LIB_CXXFLAGS -fno-exceptions" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -fno-rtti" >&5 +printf %s "checking compiler flag -fno-rtti... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -fno-rtti" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -fno-rtti" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv){return 0;} +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + PERF_LIB_CXXFLAGS="$PERF_LIB_CXXFLAGS -fno-rtti" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --no_exceptions" >&5 +printf %s "checking compiler flag --no_exceptions... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --no_exceptions" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --no_exceptions" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv){return 0;} +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + PERF_LIB_CXXFLAGS="$PERF_LIB_CXXFLAGS --no_exceptions" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +PERF_LIB_CXXFLAGS=$PERF_LIB_CXXFLAGS + + +ac_config_files="$ac_config_files src/tools/perf/lib/Makefile" + + +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2018. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + + + +if test "x$cuda_checked" != "xyes" +then : + + +# Check whether --with-cuda was given. +if test ${with_cuda+y} +then : + withval=$with_cuda; +else $as_nop + with_cuda=guess +fi + + + if test "x$with_cuda" = "xno" +then : + + cuda_happy=no + have_cuda_static=no + +else $as_nop + + save_CPPFLAGS="$CPPFLAGS" + save_LDFLAGS="$LDFLAGS" + save_LIBS="$LIBS" + + CUDA_CPPFLAGS="" + CUDA_LDFLAGS="" + CUDA_LIBS="" + CUDA_STATIC_LIBS="" + + if test ! -z "$with_cuda" -a "x$with_cuda" != "xyes" -a "x$with_cuda" != "xguess" +then : + ucx_check_cuda_dir="$with_cuda" + if test -d "$with_cuda/lib64" +then : + libsuff="64" +else $as_nop + libsuff="" +fi + ucx_check_cuda_libdir="$with_cuda/lib$libsuff" + CUDA_CPPFLAGS="-I$with_cuda/include" + CUDA_LDFLAGS="-L$ucx_check_cuda_libdir -L$ucx_check_cuda_libdir/stubs" +fi + + if test ! -z "$with_cuda_libdir" -a "x$with_cuda_libdir" != "xyes" +then : + ucx_check_cuda_libdir="$with_cuda_libdir" + CUDA_LDFLAGS="-L$ucx_check_cuda_libdir -L$ucx_check_cuda_libdir/stubs" +fi + + CPPFLAGS="$CPPFLAGS $CUDA_CPPFLAGS" + LDFLAGS="$LDFLAGS $CUDA_LDFLAGS" + + # Check cuda header files + for ac_header in cuda.h cuda_runtime.h +do : + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + cuda_happy="yes" +else $as_nop + cuda_happy="no" +fi + +done + + # Check cuda libraries + if test "x$cuda_happy" = "xyes" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cuDeviceGetUuid in -lcuda" >&5 +printf %s "checking for cuDeviceGetUuid in -lcuda... " >&6; } +if test ${ac_cv_lib_cuda_cuDeviceGetUuid+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcuda $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char cuDeviceGetUuid (); +int +main (void) +{ +return cuDeviceGetUuid (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_cuda_cuDeviceGetUuid=yes +else $as_nop + ac_cv_lib_cuda_cuDeviceGetUuid=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cuda_cuDeviceGetUuid" >&5 +printf "%s\n" "$ac_cv_lib_cuda_cuDeviceGetUuid" >&6; } +if test "x$ac_cv_lib_cuda_cuDeviceGetUuid" = xyes +then : + CUDA_LIBS="$CUDA_LIBS -lcuda" +else $as_nop + cuda_happy="no" +fi + +fi + if test "x$cuda_happy" = "xyes" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cudaGetDeviceCount in -lcudart" >&5 +printf %s "checking for cudaGetDeviceCount in -lcudart... " >&6; } +if test ${ac_cv_lib_cudart_cudaGetDeviceCount+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcudart $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char cudaGetDeviceCount (); +int +main (void) +{ +return cudaGetDeviceCount (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_cudart_cudaGetDeviceCount=yes +else $as_nop + ac_cv_lib_cudart_cudaGetDeviceCount=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cudart_cudaGetDeviceCount" >&5 +printf "%s\n" "$ac_cv_lib_cudart_cudaGetDeviceCount" >&6; } +if test "x$ac_cv_lib_cudart_cudaGetDeviceCount" = xyes +then : + CUDA_LIBS="$CUDA_LIBS -lcudart" +else $as_nop + cuda_happy="no" +fi + +fi + + # Check nvml header files + if test "x$cuda_happy" = "xyes" +then : + for ac_header in nvml.h +do : + ac_fn_c_check_header_compile "$LINENO" "nvml.h" "ac_cv_header_nvml_h" "$ac_includes_default" +if test "x$ac_cv_header_nvml_h" = xyes +then : + printf "%s\n" "#define HAVE_NVML_H 1" >>confdefs.h + cuda_happy="yes" +else $as_nop + if test "x$with_cuda" != "xguess" +then : + as_fn_error $? "nvml header not found. Install appropriate cuda-nvml-devel package" "$LINENO" 5 +fi + cuda_happy="no" +fi + +done +fi + + # Check nvml library + if test "x$cuda_happy" = "xyes" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nvmlInit in -lnvidia-ml" >&5 +printf %s "checking for nvmlInit in -lnvidia-ml... " >&6; } +if test ${ac_cv_lib_nvidia_ml_nvmlInit+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnvidia-ml $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char nvmlInit (); +int +main (void) +{ +return nvmlInit (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nvidia_ml_nvmlInit=yes +else $as_nop + ac_cv_lib_nvidia_ml_nvmlInit=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nvidia_ml_nvmlInit" >&5 +printf "%s\n" "$ac_cv_lib_nvidia_ml_nvmlInit" >&6; } +if test "x$ac_cv_lib_nvidia_ml_nvmlInit" = xyes +then : + CUDA_LIBS="$CUDA_LIBS -lnvidia-ml" +else $as_nop + if test "x$with_cuda" != "xguess" +then : + as_fn_error $? "libnvidia-ml not found. Install appropriate nvidia-driver package" "$LINENO" 5 +fi + cuda_happy="no" +fi + +fi + + LDFLAGS="$save_LDFLAGS" + + # Check for cuda static library + have_cuda_static="no" + if test "x$cuda_happy" = "xyes" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cudaGetDeviceCount in -lcudart_static" >&5 +printf %s "checking for cudaGetDeviceCount in -lcudart_static... " >&6; } +if test ${ac_cv_lib_cudart_static_cudaGetDeviceCount+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcudart_static -ldl -lrt -lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char cudaGetDeviceCount (); +int +main (void) +{ +return cudaGetDeviceCount (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_cudart_static_cudaGetDeviceCount=yes +else $as_nop + ac_cv_lib_cudart_static_cudaGetDeviceCount=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cudart_static_cudaGetDeviceCount" >&5 +printf "%s\n" "$ac_cv_lib_cudart_static_cudaGetDeviceCount" >&6; } +if test "x$ac_cv_lib_cudart_static_cudaGetDeviceCount" = xyes +then : + CUDA_STATIC_LIBS="$CUDA_STATIC_LIBS -lcudart_static" + have_cuda_static="yes" +fi + +fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + + if test "x$cuda_happy" = "xyes" +then : + CUDA_CPPFLAGS="$CUDA_CPPFLAGS" + + CUDA_LDFLAGS="$CUDA_LDFLAGS" + + CUDA_LIBS="$CUDA_LIBS" + + CUDA_STATIC_LIBS="$CUDA_STATIC_LIBS" + + +printf "%s\n" "#define HAVE_CUDA 1" >>confdefs.h + +else $as_nop + if test "x$with_cuda" != "xguess" +then : + as_fn_error $? "CUDA support is requested but cuda packages cannot be found" "$LINENO" 5 +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: CUDA not found" >&5 +printf "%s\n" "$as_me: WARNING: CUDA not found" >&2;} +fi +fi + + +fi # "x$with_cuda" = "xno" + + cuda_checked=yes + if test "x$cuda_happy" != xno; then + HAVE_CUDA_TRUE= + HAVE_CUDA_FALSE='#' +else + HAVE_CUDA_TRUE='#' + HAVE_CUDA_FALSE= +fi + + if test "X$have_cuda_static" = "Xyes"; then + HAVE_CUDA_STATIC_TRUE= + HAVE_CUDA_STATIC_FALSE='#' +else + HAVE_CUDA_STATIC_TRUE='#' + HAVE_CUDA_STATIC_FALSE= +fi + + + +fi # "x$cuda_checked" != "xyes" + + + +if test "x$cuda_happy" = "xyes" +then : + ucx_perftest_modules="${ucx_perftest_modules}:cuda" +fi + +ac_config_files="$ac_config_files src/tools/perf/cuda/Makefile" + + +# +# Copyright (C) Advanced Micro Devices, Inc. 2019. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + + + +if test "x$rocm_checked" != "xyes" +then : + + + +# Check whether --with-rocm was given. +if test ${with_rocm+y} +then : + withval=$with_rocm; +else $as_nop + with_rocm=guess +fi + + +rocm_happy=no +hip_happy=no +if test "x$with_rocm" != "xno" +then : + case "x$with_rocm" in #( + x|xguess|xyes) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ROCm path was not specified. Guessing ..." >&5 +printf "%s\n" "$as_me: ROCm path was not specified. Guessing ..." >&6;} + with_rocm="/opt/rocm" + ROCM_CPPFLAGS="-I$with_rocm/include/hsa -I$with_rocm/include" + ROCM_LDFLAGS="-L$with_rocm/lib -L$with_rocm/lib64 -L$with_rocm/hsa/lib" + ROCM_LIBS="-lhsa-runtime64 -lhsakmt" + ROCM_ROOT="$with_rocm" + ;; #( + x/*) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ROCm path given as $with_rocm ..." >&5 +printf "%s\n" "$as_me: ROCm path given as $with_rocm ..." >&6;} + ROCM_CPPFLAGS="-I$with_rocm/include/hsa -I$with_rocm/include" + ROCM_LDFLAGS="-L$with_rocm/lib -L$with_rocm/lib64 -L$with_rocm/hsa/lib" + ROCM_LIBS="-lhsa-runtime64 -lhsakmt" + ROCM_ROOT="$with_rocm" + ;; #( + *) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ROCm flags given ..." >&5 +printf "%s\n" "$as_me: ROCm flags given ..." >&6;} + for arg in $$with_rocm ; do + case $arg in #( + yes) : + ;; #( + no) : + ;; #( + -l*|*.a|*.so) : + ROCM_LIBS="$ROCM_LIBS $arg" ;; #( + -L*|-WL*|-Wl*) : + ROCM_LDFLAGS="$ROCM_LDFLAGS $arg" ;; #( + -I*) : + ROCM_CPPFLAGS="$ROCM_CPPFLAGS $arg" ;; #( + *lib|*lib/|*lib64|*lib64/) : + if test -d $arg +then : + ROCM_LDFLAGS="$ROCM_LDFLAGS -L$arg" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $arg of $with_rocm not parsed" >&5 +printf "%s\n" "$as_me: WARNING: $arg of $with_rocm not parsed" >&2;} +fi ;; #( + *include|*include/) : + if test -d $arg +then : + ROCM_CPPFLAGS="$ROCM_CPPFLAGS -I$arg" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $arg of $with_rocm not parsed" >&5 +printf "%s\n" "$as_me: WARNING: $arg of $with_rocm not parsed" >&2;} +fi ;; #( + *) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $arg of $with_rocm not parsed" >&5 +printf "%s\n" "$as_me: WARNING: $arg of $with_rocm not parsed" >&2;} ;; +esac +done ;; +esac + + SAVE_CPPFLAGS="$CPPFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + SAVE_LIBS="$LIBS" + + CPPFLAGS="$ROCM_CPPFLAGS $CPPFLAGS" + LDFLAGS="$ROCM_LDFLAGS $LDFLAGS" + LIBS="$ROCM_LIBS $LIBS" + + rocm_happy=yes + if test "x$rocm_happy" = xyes +then : + for ac_header in hsa.h +do : + ac_fn_c_check_header_compile "$LINENO" "hsa.h" "ac_cv_header_hsa_h" "$ac_includes_default" +if test "x$ac_cv_header_hsa_h" = xyes +then : + printf "%s\n" "#define HAVE_HSA_H 1" >>confdefs.h + rocm_happy=yes +else $as_nop + rocm_happy=no +fi + +done +fi + if test "x$rocm_happy" = xyes +then : + for ac_header in hsa_ext_amd.h +do : + ac_fn_c_check_header_compile "$LINENO" "hsa_ext_amd.h" "ac_cv_header_hsa_ext_amd_h" "$ac_includes_default" +if test "x$ac_cv_header_hsa_ext_amd_h" = xyes +then : + printf "%s\n" "#define HAVE_HSA_EXT_AMD_H 1" >>confdefs.h + rocm_happy=yes +else $as_nop + rocm_happy=no +fi + +done +fi + if test "x$rocm_happy" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hsa_init in -lhsa-runtime64" >&5 +printf %s "checking for hsa_init in -lhsa-runtime64... " >&6; } +if test ${ac_cv_lib_hsa_runtime64_hsa_init+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lhsa-runtime64 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char hsa_init (); +int +main (void) +{ +return hsa_init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_hsa_runtime64_hsa_init=yes +else $as_nop + ac_cv_lib_hsa_runtime64_hsa_init=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hsa_runtime64_hsa_init" >&5 +printf "%s\n" "$ac_cv_lib_hsa_runtime64_hsa_init" >&6; } +if test "x$ac_cv_lib_hsa_runtime64_hsa_init" = xyes +then : + rocm_happy=yes +else $as_nop + rocm_happy=no +fi + +fi + + if test "x$rocm_happy" = "xyes" +then : + +printf "%s\n" "#define HAVE_ROCM 1" >>confdefs.h + + + + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ROCm not found" >&5 +printf "%s\n" "$as_me: WARNING: ROCm not found" >&2;} +fi + + CPPFLAGS="$SAVE_CPPFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + LIBS="$SAVE_LIBS" + + HIP_CPPFLAGS="-D__HIP_PLATFORM_HCC__ -I$with_rocm/include/hip -I$with_rocm/include" + HIP_LDFLAGS="-L$with_rocm/hip/lib -L$with_rocm/lib" + HIP_LIBS="-lamdhip64" + + + CPPFLAGS="$HIP_CPPFLAGS $CPPFLAGS" + LDFLAGS="$HIP_LDFLAGS $LDFLAGS" + LIBS="$HIP_LIBS $LIBS" + + hip_happy=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hipFree in -lhip_hcc" >&5 +printf %s "checking for hipFree in -lhip_hcc... " >&6; } +if test ${ac_cv_lib_hip_hcc_hipFree+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lhip_hcc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char hipFree (); +int +main (void) +{ +return hipFree (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_hip_hcc_hipFree=yes +else $as_nop + ac_cv_lib_hip_hcc_hipFree=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hip_hcc_hipFree" >&5 +printf "%s\n" "$ac_cv_lib_hip_hcc_hipFree" >&6; } +if test "x$ac_cv_lib_hip_hcc_hipFree" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please install ROCm-3.7.0 or above" >&5 +printf "%s\n" "$as_me: WARNING: Please install ROCm-3.7.0 or above" >&2;} +else $as_nop + hip_happy=yes +fi + + if test "x$hip_happy" = xyes +then : + for ac_header in hip_runtime.h +do : + ac_fn_c_check_header_compile "$LINENO" "hip_runtime.h" "ac_cv_header_hip_runtime_h" "$ac_includes_default" +if test "x$ac_cv_header_hip_runtime_h" = xyes +then : + printf "%s\n" "#define HAVE_HIP_RUNTIME_H 1" >>confdefs.h + hip_happy=yes +else $as_nop + hip_happy=no +fi + +done +fi + if test "x$hip_happy" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hipFree in -lamdhip64" >&5 +printf %s "checking for hipFree in -lamdhip64... " >&6; } +if test ${ac_cv_lib_amdhip64_hipFree+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lamdhip64 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char hipFree (); +int +main (void) +{ +return hipFree (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_amdhip64_hipFree=yes +else $as_nop + ac_cv_lib_amdhip64_hipFree=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_amdhip64_hipFree" >&5 +printf "%s\n" "$ac_cv_lib_amdhip64_hipFree" >&6; } +if test "x$ac_cv_lib_amdhip64_hipFree" = xyes +then : + hip_happy=yes +else $as_nop + hip_happy=no +fi + +fi + if test "x$hip_happy" = xyes +then : + HIP_CXXFLAGS="--std=gnu++11" +fi + + CPPFLAGS="$SAVE_CPPFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + LIBS="$SAVE_LIBS" + + if test "x$hip_happy" = "xyes" +then : + +printf "%s\n" "#define HAVE_HIP 1" >>confdefs.h + + + + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HIP Runtime not found" >&5 +printf "%s\n" "$as_me: WARNING: HIP Runtime not found" >&2;} +fi + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ROCm was explicitly disabled" >&5 +printf "%s\n" "$as_me: WARNING: ROCm was explicitly disabled" >&2;} + +fi + +rocm_checked=yes + if test "x$rocm_happy" != xno; then + HAVE_ROCM_TRUE= + HAVE_ROCM_FALSE='#' +else + HAVE_ROCM_TRUE='#' + HAVE_ROCM_FALSE= +fi + + if test "x$hip_happy" != xno; then + HAVE_HIP_TRUE= + HAVE_HIP_FALSE='#' +else + HAVE_HIP_TRUE='#' + HAVE_HIP_FALSE= +fi + + + +fi + + + +if test "x$rocm_happy" = "xyes" +then : + ucx_perftest_modules="${ucx_perftest_modules}:rocm" +fi + +ac_config_files="$ac_config_files src/tools/perf/rocm/Makefile" + + + +printf "%s\n" "#define ucx_perftest_MODULES \"${ucx_perftest_modules}\"" >>confdefs.h + + +# TODO build RTE support (MPI/librte) as loadable modules +if test -n "$MPICC" +then : + UCX_PERFTEST_CC=$MPICC + +else $as_nop + UCX_PERFTEST_CC=$CC + +fi + +ac_config_files="$ac_config_files src/tools/perf/Makefile" + + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2019. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag -fno-tree-vectorize" >&5 +printf %s "checking compiler flag -fno-tree-vectorize... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS -fno-tree-vectorize" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS -fno-tree-vectorize" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv){return 0;} +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + GTEST_CXXFLAGS="$GTEST_CXXFLAGS -fno-tree-vectorize" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + +# error #186: pointless comparison of unsigned integer with zero + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --diag_suppress 186" >&5 +printf %s "checking compiler flag --diag_suppress 186... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --diag_suppress 186" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --diag_suppress 186" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv){return 0;} +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + GTEST_CXXFLAGS="$GTEST_CXXFLAGS --diag_suppress 186" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + +# error #236: controlling expression is constant + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler flag --diag_suppress 236" >&5 +printf %s "checking compiler flag --diag_suppress 236... " >&6; } + SAVE_CFLAGS="$CFLAGS" + SAVE_CXXFLAGS="$CFLAGS" + CFLAGS="$BASE_CFLAGS $CFLAGS --diag_suppress 236" + CXXFLAGS="$BASE_CXXFLAGS $CXXFLAGS --diag_suppress 236" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char** argv){return 0;} +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + GTEST_CXXFLAGS="$GTEST_CXXFLAGS --diag_suppress 236" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$SAVE_CFLAGS" + CXXFLAGS="$SAVE_CXXFLAGS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +GTEST_CXXFLAGS=$GTEST_CXXFLAGS + + +test_modules="" +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2021. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + +ac_config_files="$ac_config_files test/gtest/common/googletest/Makefile" + + +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2019. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + +ac_config_files="$ac_config_files test/gtest/ucm/test_dlopen/Makefile" + + +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2019. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + +ac_config_files="$ac_config_files test/gtest/ucm/test_dlopen/rpath-subdir/Makefile" + + +# +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2019. ALL RIGHTS RESERVED. +# +# See file LICENSE for terms. +# + +test_modules="${test_modules}:module" +ac_config_files="$ac_config_files test/gtest/ucs/test_module/Makefile" + + + +printf "%s\n" "#define test_MODULES \"${test_modules}\"" >>confdefs.h + +ac_config_files="$ac_config_files test/gtest/Makefile" + + + # +# Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2021. ALL RIGHTS RESERVED. +# See file LICENSE for terms. +# + +# +# io_demo CUDA support +# + +# Check whether --with-iodemo_cuda was given. +if test ${with_iodemo_cuda+y} +then : + withval=$with_iodemo_cuda; +else $as_nop + with_iodemo_cuda=no +fi + + +if test "x$with_iodemo_cuda" != xno +then : + +printf "%s\n" "#define WITH_IODEMO_CUDA 1" >>confdefs.h + +fi + +# +# For automake +# + if test "x$with_iodemo_cuda" != xno; then + IODEMO_CUDA_TRUE= + IODEMO_CUDA_FALSE='#' +else + IODEMO_CUDA_TRUE='#' + IODEMO_CUDA_FALSE= +fi + + + # +# Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# See file LICENSE for terms. +# + +ac_config_files="$ac_config_files test/apps/uct_info/Makefile" + + + + + # + # Enable fault injection code + # + # Check whether --enable-fault-injection was given. +if test ${enable_fault_injection+y} +then : + enableval=$enable_fault_injection; +else $as_nop + enable_fault_injection=no +fi + + if test "x$enable_fault_injection" = xyes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: enabling with fault injection code" >&5 +printf "%s\n" "$as_me: enabling with fault injection code" >&6;} + +printf "%s\n" "#define ENABLE_FAULT_INJECTION 1" >>confdefs.h + +else $as_nop + : +fi + + + # + # Disable checking user parameters + # + # Check whether --enable-params-check was given. +if test ${enable_params_check+y} +then : + enableval=$enable_params_check; +else $as_nop + enable_params_check=yes +fi + + if test "x$enable_params_check" = xyes +then : + +printf "%s\n" "#define ENABLE_PARAMS_CHECK 1" >>confdefs.h + +else $as_nop + printf "%s\n" "#define ENABLE_PARAMS_CHECK 0" >>confdefs.h + +fi + + # + # Enable collecting data to ease debugging + # + # Check whether --enable-debug-data was given. +if test ${enable_debug_data+y} +then : + enableval=$enable_debug_data; +else $as_nop + enable_debug_data=no +fi + + if test "x$enable_debug_data" = xyes +then : + +printf "%s\n" "#define ENABLE_DEBUG_DATA 1" >>confdefs.h + + +printf "%s\n" "#define UCT_UD_EP_DEBUG_HOOKS 1" >>confdefs.h + +else $as_nop + printf "%s\n" "#define ENABLE_DEBUG_DATA 0" >>confdefs.h + + printf "%s\n" "#define UCT_UD_EP_DEBUG_HOOKS 0" >>confdefs.h + +fi + + + # + # Enable multithreading support + # + # Check whether --enable-mt was given. +if test ${enable_mt+y} +then : + enableval=$enable_mt; +else $as_nop + enable_mt=no +fi + + if test "x$enable_mt" = xyes +then : + +printf "%s\n" "#define ENABLE_MT 1" >>confdefs.h + + mt_enable=enabled +else $as_nop + printf "%s\n" "#define ENABLE_MT 0" >>confdefs.h + + mt_enable=disabled +fi + + + # + # Enable experimental header + # + # Check whether --enable-experimental-api was given. +if test ${enable_experimental_api+y} +then : + enableval=$enable_experimental_api; +else $as_nop + enable_experimental_api=no +fi + + if test "x$enable_experimental_api" = "xyes"; then + ENABLE_EXPERIMENTAL_API_TRUE= + ENABLE_EXPERIMENTAL_API_FALSE='#' +else + ENABLE_EXPERIMENTAL_API_TRUE='#' + ENABLE_EXPERIMENTAL_API_FALSE= +fi + + + + # + # Install development headers + # + # Check whether --enable-devel-headers was given. +if test ${enable_devel_headers+y} +then : + enableval=$enable_devel_headers; +else $as_nop + enable_devel_headers=no +fi + + if test "x$enable_devel_headers" = "xyes"; then + INSTALL_DEVEL_HEADERS_TRUE= + INSTALL_DEVEL_HEADERS_FALSE='#' +else + INSTALL_DEVEL_HEADERS_TRUE='#' + INSTALL_DEVEL_HEADERS_FALSE= +fi + + + + # + # Path for valgrind-enabled libraries + # + VALGRIND_LIBPATH=${valgrind_libpath} + + + + # + # Enable examples build + # + # Check whether --enable-examples was given. +if test ${enable_examples+y} +then : + enableval=$enable_examples; +else $as_nop + enable_examples=no +fi + + if test "x$enable_examples" = "xyes"; then + HAVE_EXAMPLES_TRUE= + HAVE_EXAMPLES_FALSE='#' +else + HAVE_EXAMPLES_TRUE='#' + HAVE_EXAMPLES_FALSE= +fi + + +fi # Docs only + +# +# Print which transports are built +# +build_modules="${uct_modules}" +build_modules="${build_modules}${ucs_modules}" +build_modules="${build_modules}${uct_ib_modules}" +build_modules="${build_modules}${uct_cuda_modules}" +build_modules="${build_modules}${ucm_modules}" +build_modules="${build_modules}${ucx_perftest_modules}" +build_modules="${build_modules}${uct_rocm_modules}" +build_modules="${build_modules}${ucg_modules}" +build_modules=${build_modules} + +build_bindings=${build_bindings} + + +# +# Final output +# +ac_config_files="$ac_config_files Makefile docs/doxygen/header.tex src/uct/api/version.h" + +if test "x$with_docs_only" = xyes +then : + +else $as_nop + +ac_config_files="$ac_config_files ucx.spec ucx.pc contrib/rpmdef.sh debian/rules debian/control debian/changelog src/ucp/Makefile src/ucp/api/ucp_version.h src/ucp/core/ucp_version.c src/tools/vfs/Makefile src/tools/info/Makefile src/tools/profile/Makefile test/apps/Makefile test/apps/iodemo/Makefile test/apps/sockaddr/Makefile test/apps/profiling/Makefile test/mpi/Makefile bindings/go/Makefile bindings/java/Makefile bindings/java/pom.xml bindings/java/src/main/native/Makefile examples/Makefile cmake/Makefile cmake/ucx-config-version.cmake cmake/ucx-config.cmake cmake/ucx-targets.cmake" + + +ac_config_files="$ac_config_files test/mpi/run_mpi.sh" + + +fi + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_DOT_TRUE}" && test -z "${HAVE_DOT_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DOT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_UCG_TRUE}" && test -z "${HAVE_UCG_FALSE}"; then + as_fn_error $? "conditional \"HAVE_UCG\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DX_COND_doc_TRUE}" && test -z "${DX_COND_doc_FALSE}"; then + as_fn_error $? "conditional \"DX_COND_doc\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DX_COND_dot_TRUE}" && test -z "${DX_COND_dot_FALSE}"; then + as_fn_error $? "conditional \"DX_COND_dot\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DX_COND_man_TRUE}" && test -z "${DX_COND_man_FALSE}"; then + as_fn_error $? "conditional \"DX_COND_man\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DX_COND_rtf_TRUE}" && test -z "${DX_COND_rtf_FALSE}"; then + as_fn_error $? "conditional \"DX_COND_rtf\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DX_COND_xml_TRUE}" && test -z "${DX_COND_xml_FALSE}"; then + as_fn_error $? "conditional \"DX_COND_xml\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DX_COND_chm_TRUE}" && test -z "${DX_COND_chm_FALSE}"; then + as_fn_error $? "conditional \"DX_COND_chm\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DX_COND_chi_TRUE}" && test -z "${DX_COND_chi_FALSE}"; then + as_fn_error $? "conditional \"DX_COND_chi\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DX_COND_html_TRUE}" && test -z "${DX_COND_html_FALSE}"; then + as_fn_error $? "conditional \"DX_COND_html\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DX_COND_ps_TRUE}" && test -z "${DX_COND_ps_FALSE}"; then + as_fn_error $? "conditional \"DX_COND_ps\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DX_COND_pdf_TRUE}" && test -z "${DX_COND_pdf_FALSE}"; then + as_fn_error $? "conditional \"DX_COND_pdf\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DX_COND_latex_TRUE}" && test -z "${DX_COND_latex_FALSE}"; then + as_fn_error $? "conditional \"DX_COND_latex\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DOCS_ONLY_TRUE}" && test -z "${DOCS_ONLY_FALSE}"; then + as_fn_error $? "conditional \"DOCS_ONLY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GTEST_TRUE}" && test -z "${HAVE_GTEST_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GTEST\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_STATS_TRUE}" && test -z "${HAVE_STATS_FALSE}"; then + as_fn_error $? "conditional \"HAVE_STATS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_TUNING_TRUE}" && test -z "${HAVE_TUNING_FALSE}"; then + as_fn_error $? "conditional \"HAVE_TUNING\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_IB_TRUE}" && test -z "${HAVE_IB_FALSE}"; then + as_fn_error $? "conditional \"HAVE_IB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_MLX5_HW_UD_TRUE}" && test -z "${HAVE_MLX5_HW_UD_FALSE}"; then + as_fn_error $? "conditional \"HAVE_MLX5_HW_UD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_MLX5_DV_TRUE}" && test -z "${HAVE_MLX5_DV_FALSE}"; then + as_fn_error $? "conditional \"HAVE_MLX5_DV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_DEVX_TRUE}" && test -z "${HAVE_DEVX_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DEVX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_TL_RC_TRUE}" && test -z "${HAVE_TL_RC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_TL_RC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_TL_DC_TRUE}" && test -z "${HAVE_TL_DC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_TL_DC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_DC_DV_TRUE}" && test -z "${HAVE_DC_DV_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DC_DV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_TL_UD_TRUE}" && test -z "${HAVE_TL_UD_FALSE}"; then + as_fn_error $? "conditional \"HAVE_TL_UD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CRAY_UGNI_TRUE}" && test -z "${HAVE_CRAY_UGNI_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CRAY_UGNI\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CUDA_TRUE}" && test -z "${HAVE_CUDA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CUDA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CUDA_STATIC_TRUE}" && test -z "${HAVE_CUDA_STATIC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CUDA_STATIC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GDR_COPY_TRUE}" && test -z "${HAVE_GDR_COPY_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GDR_COPY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_ROCM_TRUE}" && test -z "${HAVE_ROCM_FALSE}"; then + as_fn_error $? "conditional \"HAVE_ROCM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_HIP_TRUE}" && test -z "${HAVE_HIP_FALSE}"; then + as_fn_error $? "conditional \"HAVE_HIP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_XPMEM_TRUE}" && test -z "${HAVE_XPMEM_FALSE}"; then + as_fn_error $? "conditional \"HAVE_XPMEM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CMA_TRUE}" && test -z "${HAVE_CMA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CMA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_KNEM_TRUE}" && test -z "${HAVE_KNEM_FALSE}"; then + as_fn_error $? "conditional \"HAVE_KNEM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_RDMACM_TRUE}" && test -z "${HAVE_RDMACM_FALSE}"; then + as_fn_error $? "conditional \"HAVE_RDMACM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_MPI_TRUE}" && test -z "${HAVE_MPI_FALSE}"; then + as_fn_error $? "conditional \"HAVE_MPI\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_MPIRUN_TRUE}" && test -z "${HAVE_MPIRUN_FALSE}"; then + as_fn_error $? "conditional \"HAVE_MPIRUN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_MPICC_TRUE}" && test -z "${HAVE_MPICC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_MPICC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_SHMEMCC_TRUE}" && test -z "${HAVE_SHMEMCC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_SHMEMCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_PROFILING_TRUE}" && test -z "${HAVE_PROFILING_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PROFILING\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_UCM_PTMALLOC286_TRUE}" && test -z "${HAVE_UCM_PTMALLOC286_FALSE}"; then + as_fn_error $? "conditional \"HAVE_UCM_PTMALLOC286\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_JAVA_TRUE}" && test -z "${HAVE_JAVA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_JAVA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GO_TRUE}" && test -z "${HAVE_GO_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GO\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CXX11_TRUE}" && test -z "${HAVE_CXX11_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CXX11\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GNUXX11_TRUE}" && test -z "${HAVE_GNUXX11_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GNUXX11\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GLIBCXX_NOTHROW_TRUE}" && test -z "${HAVE_GLIBCXX_NOTHROW_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GLIBCXX_NOTHROW\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_TCMALLOC_TRUE}" && test -z "${HAVE_TCMALLOC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_TCMALLOC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_EXPERIMENTAL_API_TRUE}" && test -z "${ENABLE_EXPERIMENTAL_API_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_EXPERIMENTAL_API\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${INSTALL_DEVEL_HEADERS_TRUE}" && test -z "${INSTALL_DEVEL_HEADERS_FALSE}"; then + as_fn_error $? "conditional \"INSTALL_DEVEL_HEADERS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_EXAMPLES_TRUE}" && test -z "${HAVE_EXAMPLES_FALSE}"; then + as_fn_error $? "conditional \"HAVE_EXAMPLES\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_AARCH64_THUNDERX2_TRUE}" && test -z "${HAVE_AARCH64_THUNDERX2_FALSE}"; then + as_fn_error $? "conditional \"HAVE_AARCH64_THUNDERX2\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_AARCH64_THUNDERX1_TRUE}" && test -z "${HAVE_AARCH64_THUNDERX1_FALSE}"; then + as_fn_error $? "conditional \"HAVE_AARCH64_THUNDERX1\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_AARCH64_HI1620_TRUE}" && test -z "${HAVE_AARCH64_HI1620_FALSE}"; then + as_fn_error $? "conditional \"HAVE_AARCH64_HI1620\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_FUSE3_TRUE}" && test -z "${HAVE_FUSE3_FALSE}"; then + as_fn_error $? "conditional \"HAVE_FUSE3\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${IODEMO_CUDA_TRUE}" && test -z "${IODEMO_CUDA_FALSE}"; then + as_fn_error $? "conditional \"IODEMO_CUDA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DOCS_ONLY_TRUE}" && test -z "${DOCS_ONLY_FALSE}"; then + as_fn_error $? "conditional \"DOCS_ONLY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_AARCH64_THUNDERX2_TRUE}" && test -z "${HAVE_AARCH64_THUNDERX2_FALSE}"; then + as_fn_error $? "conditional \"HAVE_AARCH64_THUNDERX2\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_AARCH64_THUNDERX1_TRUE}" && test -z "${HAVE_AARCH64_THUNDERX1_FALSE}"; then + as_fn_error $? "conditional \"HAVE_AARCH64_THUNDERX1\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_AARCH64_HI1620_TRUE}" && test -z "${HAVE_AARCH64_HI1620_FALSE}"; then + as_fn_error $? "conditional \"HAVE_AARCH64_HI1620\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CXX11_TRUE}" && test -z "${HAVE_CXX11_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CXX11\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GNUXX11_TRUE}" && test -z "${HAVE_GNUXX11_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GNUXX11\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GLIBCXX_NOTHROW_TRUE}" && test -z "${HAVE_GLIBCXX_NOTHROW_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GLIBCXX_NOTHROW\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GTEST_TRUE}" && test -z "${HAVE_GTEST_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GTEST\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_UCM_PTMALLOC286_TRUE}" && test -z "${HAVE_UCM_PTMALLOC286_FALSE}"; then + as_fn_error $? "conditional \"HAVE_UCM_PTMALLOC286\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_TCMALLOC_TRUE}" && test -z "${HAVE_TCMALLOC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_TCMALLOC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_MPI_TRUE}" && test -z "${HAVE_MPI_FALSE}"; then + as_fn_error $? "conditional \"HAVE_MPI\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_MPICC_TRUE}" && test -z "${HAVE_MPICC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_MPICC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_SHMEMCC_TRUE}" && test -z "${HAVE_SHMEMCC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_SHMEMCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_MPIRUN_TRUE}" && test -z "${HAVE_MPIRUN_FALSE}"; then + as_fn_error $? "conditional \"HAVE_MPIRUN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_FUSE3_TRUE}" && test -z "${HAVE_FUSE3_FALSE}"; then + as_fn_error $? "conditional \"HAVE_FUSE3\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GO_TRUE}" && test -z "${HAVE_GO_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GO\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_JAVA_TRUE}" && test -z "${HAVE_JAVA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_JAVA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CUDA_TRUE}" && test -z "${HAVE_CUDA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CUDA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CUDA_STATIC_TRUE}" && test -z "${HAVE_CUDA_STATIC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CUDA_STATIC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_ROCM_TRUE}" && test -z "${HAVE_ROCM_FALSE}"; then + as_fn_error $? "conditional \"HAVE_ROCM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_HIP_TRUE}" && test -z "${HAVE_HIP_FALSE}"; then + as_fn_error $? "conditional \"HAVE_HIP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_PROFILING_TRUE}" && test -z "${HAVE_PROFILING_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PROFILING\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_STATS_TRUE}" && test -z "${HAVE_STATS_FALSE}"; then + as_fn_error $? "conditional \"HAVE_STATS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_TUNING_TRUE}" && test -z "${HAVE_TUNING_FALSE}"; then + as_fn_error $? "conditional \"HAVE_TUNING\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CUDA_TRUE}" && test -z "${HAVE_CUDA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CUDA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CUDA_STATIC_TRUE}" && test -z "${HAVE_CUDA_STATIC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CUDA_STATIC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GDR_COPY_TRUE}" && test -z "${HAVE_GDR_COPY_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GDR_COPY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_IB_TRUE}" && test -z "${HAVE_IB_FALSE}"; then + as_fn_error $? "conditional \"HAVE_IB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_TL_RC_TRUE}" && test -z "${HAVE_TL_RC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_TL_RC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_TL_DC_TRUE}" && test -z "${HAVE_TL_DC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_TL_DC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_DC_DV_TRUE}" && test -z "${HAVE_DC_DV_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DC_DV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_TL_UD_TRUE}" && test -z "${HAVE_TL_UD_FALSE}"; then + as_fn_error $? "conditional \"HAVE_TL_UD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_MLX5_DV_TRUE}" && test -z "${HAVE_MLX5_DV_FALSE}"; then + as_fn_error $? "conditional \"HAVE_MLX5_DV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_DEVX_TRUE}" && test -z "${HAVE_DEVX_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DEVX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_MLX5_HW_UD_TRUE}" && test -z "${HAVE_MLX5_HW_UD_FALSE}"; then + as_fn_error $? "conditional \"HAVE_MLX5_HW_UD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_RDMACM_TRUE}" && test -z "${HAVE_RDMACM_FALSE}"; then + as_fn_error $? "conditional \"HAVE_RDMACM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_ROCM_TRUE}" && test -z "${HAVE_ROCM_FALSE}"; then + as_fn_error $? "conditional \"HAVE_ROCM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_HIP_TRUE}" && test -z "${HAVE_HIP_FALSE}"; then + as_fn_error $? "conditional \"HAVE_HIP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CMA_TRUE}" && test -z "${HAVE_CMA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CMA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_KNEM_TRUE}" && test -z "${HAVE_KNEM_FALSE}"; then + as_fn_error $? "conditional \"HAVE_KNEM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_XPMEM_TRUE}" && test -z "${HAVE_XPMEM_FALSE}"; then + as_fn_error $? "conditional \"HAVE_XPMEM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CRAY_UGNI_TRUE}" && test -z "${HAVE_CRAY_UGNI_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CRAY_UGNI\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CUDA_TRUE}" && test -z "${HAVE_CUDA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CUDA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CUDA_STATIC_TRUE}" && test -z "${HAVE_CUDA_STATIC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CUDA_STATIC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_ROCM_TRUE}" && test -z "${HAVE_ROCM_FALSE}"; then + as_fn_error $? "conditional \"HAVE_ROCM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_HIP_TRUE}" && test -z "${HAVE_HIP_FALSE}"; then + as_fn_error $? "conditional \"HAVE_HIP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${IODEMO_CUDA_TRUE}" && test -z "${IODEMO_CUDA_FALSE}"; then + as_fn_error $? "conditional \"IODEMO_CUDA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_EXPERIMENTAL_API_TRUE}" && test -z "${ENABLE_EXPERIMENTAL_API_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_EXPERIMENTAL_API\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${INSTALL_DEVEL_HEADERS_TRUE}" && test -z "${INSTALL_DEVEL_HEADERS_FALSE}"; then + as_fn_error $? "conditional \"INSTALL_DEVEL_HEADERS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_EXAMPLES_TRUE}" && test -z "${HAVE_EXAMPLES_FALSE}"; then + as_fn_error $? "conditional \"HAVE_EXAMPLES\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by ucx $as_me 1.14, which was +generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +ucx config.status 1.14 +configured by $0, generated by GNU Autoconf 2.71, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2021 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +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"`' +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"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "src/ucm/cuda/Makefile") CONFIG_FILES="$CONFIG_FILES src/ucm/cuda/Makefile" ;; + "src/ucm/rocm/Makefile") CONFIG_FILES="$CONFIG_FILES src/ucm/rocm/Makefile" ;; + "src/ucm/Makefile") CONFIG_FILES="$CONFIG_FILES src/ucm/Makefile" ;; + "src/ucs/vfs/sock/Makefile") CONFIG_FILES="$CONFIG_FILES src/ucs/vfs/sock/Makefile" ;; + "src/ucs/vfs/fuse/Makefile") CONFIG_FILES="$CONFIG_FILES src/ucs/vfs/fuse/Makefile" ;; + "src/ucs/vfs/fuse/ucx-fuse.pc") CONFIG_FILES="$CONFIG_FILES src/ucs/vfs/fuse/ucx-fuse.pc" ;; + "src/ucs/Makefile") CONFIG_FILES="$CONFIG_FILES src/ucs/Makefile" ;; + "src/ucs/signal/Makefile") CONFIG_FILES="$CONFIG_FILES src/ucs/signal/Makefile" ;; + "src/ucs/ucx-ucs.pc") CONFIG_FILES="$CONFIG_FILES src/ucs/ucx-ucs.pc" ;; + "src/uct/cuda/gdr_copy/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/cuda/gdr_copy/Makefile" ;; + "src/uct/cuda/gdr_copy/ucx-gdrcopy.pc") CONFIG_FILES="$CONFIG_FILES src/uct/cuda/gdr_copy/ucx-gdrcopy.pc" ;; + "src/uct/cuda/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/cuda/Makefile" ;; + "src/uct/cuda/ucx-cuda.pc") CONFIG_FILES="$CONFIG_FILES src/uct/cuda/ucx-cuda.pc" ;; + "src/uct/ib/rdmacm/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/ib/rdmacm/Makefile" ;; + "src/uct/ib/rdmacm/ucx-rdmacm.pc") CONFIG_FILES="$CONFIG_FILES src/uct/ib/rdmacm/ucx-rdmacm.pc" ;; + "src/uct/ib/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/ib/Makefile" ;; + "src/uct/ib/ucx-ib.pc") CONFIG_FILES="$CONFIG_FILES src/uct/ib/ucx-ib.pc" ;; + "src/uct/rocm/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/rocm/Makefile" ;; + "src/uct/rocm/ucx-rocm.pc") CONFIG_FILES="$CONFIG_FILES src/uct/rocm/ucx-rocm.pc" ;; + "src/uct/sm/scopy/cma/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/sm/scopy/cma/Makefile" ;; + "src/uct/sm/scopy/cma/ucx-cma.pc") CONFIG_FILES="$CONFIG_FILES src/uct/sm/scopy/cma/ucx-cma.pc" ;; + "src/uct/sm/scopy/knem/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/sm/scopy/knem/Makefile" ;; + "src/uct/sm/scopy/knem/ucx-knem.pc") CONFIG_FILES="$CONFIG_FILES src/uct/sm/scopy/knem/ucx-knem.pc" ;; + "src/uct/sm/scopy/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/sm/scopy/Makefile" ;; + "src/uct/sm/mm/xpmem/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/sm/mm/xpmem/Makefile" ;; + "src/uct/sm/mm/xpmem/ucx-xpmem.pc") CONFIG_FILES="$CONFIG_FILES src/uct/sm/mm/xpmem/ucx-xpmem.pc" ;; + "src/uct/sm/mm/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/sm/mm/Makefile" ;; + "src/uct/sm/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/sm/Makefile" ;; + "src/uct/ugni/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/ugni/Makefile" ;; + "src/uct/ugni/ucx-ugni.pc") CONFIG_FILES="$CONFIG_FILES src/uct/ugni/ucx-ugni.pc" ;; + "src/uct/Makefile") CONFIG_FILES="$CONFIG_FILES src/uct/Makefile" ;; + "src/uct/ucx-uct.pc") CONFIG_FILES="$CONFIG_FILES src/uct/ucx-uct.pc" ;; + "src/tools/perf/lib/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/perf/lib/Makefile" ;; + "src/tools/perf/cuda/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/perf/cuda/Makefile" ;; + "src/tools/perf/rocm/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/perf/rocm/Makefile" ;; + "src/tools/perf/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/perf/Makefile" ;; + "test/gtest/common/googletest/Makefile") CONFIG_FILES="$CONFIG_FILES test/gtest/common/googletest/Makefile" ;; + "test/gtest/ucm/test_dlopen/Makefile") CONFIG_FILES="$CONFIG_FILES test/gtest/ucm/test_dlopen/Makefile" ;; + "test/gtest/ucm/test_dlopen/rpath-subdir/Makefile") CONFIG_FILES="$CONFIG_FILES test/gtest/ucm/test_dlopen/rpath-subdir/Makefile" ;; + "test/gtest/ucs/test_module/Makefile") CONFIG_FILES="$CONFIG_FILES test/gtest/ucs/test_module/Makefile" ;; + "test/gtest/Makefile") CONFIG_FILES="$CONFIG_FILES test/gtest/Makefile" ;; + "test/apps/uct_info/Makefile") CONFIG_FILES="$CONFIG_FILES test/apps/uct_info/Makefile" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "docs/doxygen/header.tex") CONFIG_FILES="$CONFIG_FILES docs/doxygen/header.tex" ;; + "src/uct/api/version.h") CONFIG_FILES="$CONFIG_FILES src/uct/api/version.h" ;; + "ucx.spec") CONFIG_FILES="$CONFIG_FILES ucx.spec" ;; + "ucx.pc") CONFIG_FILES="$CONFIG_FILES ucx.pc" ;; + "contrib/rpmdef.sh") CONFIG_FILES="$CONFIG_FILES contrib/rpmdef.sh" ;; + "debian/rules") CONFIG_FILES="$CONFIG_FILES debian/rules" ;; + "debian/control") CONFIG_FILES="$CONFIG_FILES debian/control" ;; + "debian/changelog") CONFIG_FILES="$CONFIG_FILES debian/changelog" ;; + "src/ucp/Makefile") CONFIG_FILES="$CONFIG_FILES src/ucp/Makefile" ;; + "src/ucp/api/ucp_version.h") CONFIG_FILES="$CONFIG_FILES src/ucp/api/ucp_version.h" ;; + "src/ucp/core/ucp_version.c") CONFIG_FILES="$CONFIG_FILES src/ucp/core/ucp_version.c" ;; + "src/tools/vfs/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/vfs/Makefile" ;; + "src/tools/info/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/info/Makefile" ;; + "src/tools/profile/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/profile/Makefile" ;; + "test/apps/Makefile") CONFIG_FILES="$CONFIG_FILES test/apps/Makefile" ;; + "test/apps/iodemo/Makefile") CONFIG_FILES="$CONFIG_FILES test/apps/iodemo/Makefile" ;; + "test/apps/sockaddr/Makefile") CONFIG_FILES="$CONFIG_FILES test/apps/sockaddr/Makefile" ;; + "test/apps/profiling/Makefile") CONFIG_FILES="$CONFIG_FILES test/apps/profiling/Makefile" ;; + "test/mpi/Makefile") CONFIG_FILES="$CONFIG_FILES test/mpi/Makefile" ;; + "bindings/go/Makefile") CONFIG_FILES="$CONFIG_FILES bindings/go/Makefile" ;; + "bindings/java/Makefile") CONFIG_FILES="$CONFIG_FILES bindings/java/Makefile" ;; + "bindings/java/pom.xml") CONFIG_FILES="$CONFIG_FILES bindings/java/pom.xml" ;; + "bindings/java/src/main/native/Makefile") CONFIG_FILES="$CONFIG_FILES bindings/java/src/main/native/Makefile" ;; + "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; + "cmake/Makefile") CONFIG_FILES="$CONFIG_FILES cmake/Makefile" ;; + "cmake/ucx-config-version.cmake") CONFIG_FILES="$CONFIG_FILES cmake/ucx-config-version.cmake" ;; + "cmake/ucx-config.cmake") CONFIG_FILES="$CONFIG_FILES cmake/ucx-config.cmake" ;; + "cmake/ucx-targets.cmake") CONFIG_FILES="$CONFIG_FILES cmake/ucx-targets.cmake" ;; + "test/mpi/run_mpi.sh") CONFIG_FILES="$CONFIG_FILES test/mpi/run_mpi.sh" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + 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; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + "test/mpi/run_mpi.sh":F) chmod a+x test/mpi/run_mpi.sh ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + +# +# Print build condiguration +# +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: =========================================================" >&5 +printf "%s\n" "$as_me: =========================================================" >&6;} +if test "x$with_docs_only" = xyes +then : + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Building documents only" >&5 +printf "%s\n" "$as_me: Building documents only" >&6;} + +else $as_nop + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: UCX build configuration:" >&5 +printf "%s\n" "$as_me: UCX build configuration:" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Build prefix: ${prefix}" >&5 +printf "%s\n" "$as_me: Build prefix: ${prefix}" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Configuration dir: ${ucx_config_dir}" >&5 +printf "%s\n" "$as_me: Configuration dir: ${ucx_config_dir}" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Preprocessor flags: ${BASE_CPPFLAGS}" >&5 +printf "%s\n" "$as_me: Preprocessor flags: ${BASE_CPPFLAGS}" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: C compiler: ${CC} ${BASE_CFLAGS}" >&5 +printf "%s\n" "$as_me: C compiler: ${CC} ${BASE_CFLAGS}" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: C++ compiler: ${CXX} ${BASE_CXXFLAGS}" >&5 +printf "%s\n" "$as_me: C++ compiler: ${CXX} ${BASE_CXXFLAGS}" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Multi-thread: ${mt_enable}" >&5 +printf "%s\n" "$as_me: Multi-thread: ${mt_enable}" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: NUMA support: ${numa_enable}" >&5 +printf "%s\n" "$as_me: NUMA support: ${numa_enable}" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: MPI tests: ${mpi_enable}" >&5 +printf "%s\n" "$as_me: MPI tests: ${mpi_enable}" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: VFS support: ${vfs_enable}" >&5 +printf "%s\n" "$as_me: VFS support: ${vfs_enable}" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Devel headers: ${enable_devel_headers}" >&5 +printf "%s\n" "$as_me: Devel headers: ${enable_devel_headers}" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: io_demo CUDA support: ${with_iodemo_cuda}" >&5 +printf "%s\n" "$as_me: io_demo CUDA support: ${with_iodemo_cuda}" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Bindings: <$(echo ${build_bindings}|tr ':' ' ') >" >&5 +printf "%s\n" "$as_me: Bindings: <$(echo ${build_bindings}|tr ':' ' ') >" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: UCS modules: <$(echo ${ucs_modules}|tr ':' ' ') >" >&5 +printf "%s\n" "$as_me: UCS modules: <$(echo ${ucs_modules}|tr ':' ' ') >" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: UCT modules: <$(echo ${uct_modules}|tr ':' ' ') >" >&5 +printf "%s\n" "$as_me: UCT modules: <$(echo ${uct_modules}|tr ':' ' ') >" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: CUDA modules: <$(echo ${uct_cuda_modules}|tr ':' ' ') >" >&5 +printf "%s\n" "$as_me: CUDA modules: <$(echo ${uct_cuda_modules}|tr ':' ' ') >" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ROCM modules: <$(echo ${uct_rocm_modules}|tr ':' ' ') >" >&5 +printf "%s\n" "$as_me: ROCM modules: <$(echo ${uct_rocm_modules}|tr ':' ' ') >" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: IB modules: <$(echo ${uct_ib_modules}|tr ':' ' ') >" >&5 +printf "%s\n" "$as_me: IB modules: <$(echo ${uct_ib_modules}|tr ':' ' ') >" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: UCM modules: <$(echo ${ucm_modules}|tr ':' ' ') >" >&5 +printf "%s\n" "$as_me: UCM modules: <$(echo ${ucm_modules}|tr ':' ' ') >" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Perf modules: <$(echo ${ucx_perftest_modules}|tr ':' ' ') >" >&5 +printf "%s\n" "$as_me: Perf modules: <$(echo ${ucx_perftest_modules}|tr ':' ' ') >" >&6;} +if test "x$enable_ucg" != "xno" +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: UCG modules: <$(echo ${ucg_modules}|tr ':' ' ') >" >&5 +printf "%s\n" "$as_me: UCG modules: <$(echo ${ucg_modules}|tr ':' ' ') >" >&6;} +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: =========================================================" >&5 +printf "%s\n" "$as_me: =========================================================" >&6;} + diff --git a/conftest-conftest.c.245r.expand b/conftest-conftest.c.245r.expand new file mode 100644 index 000000000000..5e397dbc8e87 --- /dev/null +++ b/conftest-conftest.c.245r.expand @@ -0,0 +1,354 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +int main (int argc, char * * argv) +{ + char * p; + char * p.0_1; + +;; basic block 2, loop depth 0 +;; pred: ENTRY + # DEBUG BEGIN_STMT + p = 0B; + # DEBUG BEGIN_STMT + scanf ("%m[^.]", &p); + # DEBUG BEGIN_STMT + p.0_1 = p; + free (p.0_1); + # DEBUG BEGIN_STMT + p ={v} {CLOBBER}; + return 0; +;; succ: EXIT + +} + + + +Partition map + +Partition 1 (p.0_1 - 1 ) +Partition 7 (argc_7(D) - 7 ) +Partition 8 (argv_8(D) - 8 ) +Partition 9 (_9(D) - 9 ) + + +Coalescible Partition map + +Partition 0, base 0 (argc_7(D) - 7 ) +Partition 1, base 1 (argv_8(D) - 8 ) +Partition 2, base 2 (_9(D) - 9 ) + + +Partition map + +Partition 0 (argc_7(D) - 7 ) +Partition 1 (argv_8(D) - 8 ) +Partition 2 (_9(D) - 9 ) + + +Conflict graph: + +After sorting: +Coalesce List: + +Partition map + +Partition 0 (argc_7(D) - 7 ) +Partition 1 (argv_8(D) - 8 ) +Partition 2 (_9(D) - 9 ) + +After Coalescing: + +Partition map + +Partition 0 (p.0_1 - 1 ) +Partition 1 (argc_7(D) - 7 ) +Partition 2 (argv_8(D) - 8 ) +Partition 3 (_9(D) - 9 ) + + +Replacing Expressions +p.0_1 replace with --> p.0_1 = p; + + +int main (int argc, char * * argv) +{ + char * p; + char * p.0_1; + int _9(D); + +;; basic block 2, loop depth 0 +;; pred: ENTRY + # DEBUG BEGIN_STMT + p = 0B; + # DEBUG BEGIN_STMT + scanf ("%m[^.]", &p); + # DEBUG BEGIN_STMT + p.0_1 = p; + free (p.0_1); + # DEBUG BEGIN_STMT + p ={v} {CLOBBER}; + return 0; +;; succ: EXIT + +} + + +Partition 0: size 8 align 8 + p + +;; Generating RTL for gimple basic block 2 + +;; # DEBUG BEGIN_STMT + +(debug_insn 9 8 0 (debug_marker) "conftest.c":49:54 -1 + (nil)) +;; p = 0B; + +(insn 10 9 0 (set (mem/f/c:DI (plus:DI (reg/f:DI 77 virtual-stack-vars) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 -1 + (nil)) + +;; # DEBUG BEGIN_STMT + +(debug_insn 11 10 0 (debug_marker) "conftest.c":50:54 -1 + (nil)) +;; scanf ("%m[^.]", &p); + +(insn 12 11 13 (parallel [ + (set (reg:DI 87) + (plus:DI (reg/f:DI 77 virtual-stack-vars) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 -1 + (nil)) + +(insn 13 12 14 (set (reg:DI 4 si) + (reg:DI 87)) "conftest.c":50:54 -1 + (nil)) + +(insn 14 13 15 (set (reg:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 -1 + (nil)) + +(insn 15 14 16 (set (reg:DI 5 di) + (reg:DI 88)) "conftest.c":50:54 -1 + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) + +(insn 16 15 17 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 -1 + (nil)) + +(call_insn 17 16 0 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 -1 + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) + +;; # DEBUG BEGIN_STMT + +(debug_insn 18 17 0 (debug_marker) "conftest.c":51:54 -1 + (nil)) +;; free (p.0_1); + +(insn 19 18 20 (set (reg:DI 89) + (mem/f/c:DI (plus:DI (reg/f:DI 77 virtual-stack-vars) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 -1 + (nil)) + +(insn 20 19 21 (set (reg:DI 5 di) + (reg:DI 89)) "conftest.c":51:54 -1 + (nil)) + +(call_insn 21 20 0 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 -1 + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) + +;; # DEBUG BEGIN_STMT + +(debug_insn 22 21 0 (debug_marker) "conftest.c":52:54 -1 + (nil)) +;; p ={v} {CLOBBER}; + +(nil) + +;; return 0; + +(insn 23 22 24 (set (reg:SI 83 [ ]) + (const_int 0 [0])) "conftest.c":53:50 -1 + (nil)) + +(jump_insn 24 23 25 (set (pc) + (label_ref 0)) "conftest.c":53:50 -1 + (nil)) + +(barrier 25 24 0) +Predictions for insn 29 bb 4 + first match heuristics: 99.96% exec 1073741824 (estimated locally) hit 2147483640 (estimated locally) (200.0%) + combined heuristics: 99.96% exec 1073741824 (estimated locally) hit 2147483640 (estimated locally) (200.0%) + noreturn call heuristics: 99.96% exec 1073741824 (estimated locally) hit 2147483640 (estimated locally) (200.0%) + + +try_optimize_cfg iteration 1 + +Merging block 3 into block 2... +Merged blocks 2 and 3. +Merged 2 and 3 without moving. +Removing jump 24. +Merging block 4 into block 2... +Merged blocks 2 and 4. +Merged 2 and 4 without moving. + + +try_optimize_cfg iteration 2 + +fix_loop_structure: fixing up loops for function + + +;; +;; Full RTL generated for this function: +;; +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 5, flags: (NEW, REACHABLE, RTL, MODIFIED, VISITED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 7 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn 2 7 3 2 (set (reg/v:SI 84 [ argc ]) + (reg:SI 5 di [ argc ])) "conftest.c":48:82 -1 + (nil)) +(insn 3 2 4 2 (set (reg/v/f:DI 85 [ argv ]) + (reg:DI 4 si [ argv ])) "conftest.c":48:82 -1 + (nil)) +(note 4 3 5 2 NOTE_INSN_FUNCTION_BEG) +(insn 5 4 6 2 (set (reg/f:DI 86) + (const_int 40 [0x28])) "conftest.c":48:82 -1 + (nil)) +(insn 6 5 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 77 virtual-stack-vars) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (reg/f:DI 86) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 -1 + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 77 virtual-stack-vars) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 -1 + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg:DI 87) + (plus:DI (reg/f:DI 77 virtual-stack-vars) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 -1 + (nil)) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg:DI 87)) "conftest.c":50:54 -1 + (nil)) +(insn 14 13 15 2 (set (reg:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 -1 + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg:DI 88)) "conftest.c":50:54 -1 + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 -1 + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 -1 + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg:DI 89) + (mem/f/c:DI (plus:DI (reg/f:DI 77 virtual-stack-vars) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 -1 + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg:DI 89)) "conftest.c":51:54 -1 + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 -1 + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 23 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 23 22 27 2 (set (reg:SI 83 [ ]) + (const_int 0 [0])) "conftest.c":53:50 -1 + (nil)) +(insn 27 23 28 2 (set (reg/f:DI 91) + (const_int 40 [0x28])) "conftest.c":53:50 -1 + (nil)) +(insn 28 27 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 77 virtual-stack-vars) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (reg/f:DI 91) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 -1 + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 -1 + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 6 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 5 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) + +;; basic block 5, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 6, flags: (NEW, REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +(note 36 29 30 5 [bb 5] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 5 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 -1 + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: + +(barrier 31 30 32) +;; basic block 6, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 5, next block 1, flags: (NEW, REACHABLE, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +(code_label 32 31 37 6 2 (nil) [1 uses]) +(note 37 32 33 6 [bb 6] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 6 (set (reg/i:SI 0 ax) + (reg:SI 83 [ ])) "conftest.c":53:50 -1 + (nil)) +(insn 34 33 0 6 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) + diff --git a/conftest-conftest.c.246r.vregs b/conftest-conftest.c.246r.vregs new file mode 100644 index 000000000000..3e5755e6e315 --- /dev/null +++ b/conftest-conftest.c.246r.vregs @@ -0,0 +1,137 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 5, flags: (NEW, REACHABLE, RTL, MODIFIED, VISITED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 7 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn 2 7 3 2 (set (reg/v:SI 84 [ argc ]) + (reg:SI 5 di [ argc ])) "conftest.c":48:82 75 {*movsi_internal} + (nil)) +(insn 3 2 4 2 (set (reg/v/f:DI 85 [ argv ]) + (reg:DI 4 si [ argv ])) "conftest.c":48:82 74 {*movdi_internal} + (nil)) +(note 4 3 5 2 NOTE_INSN_FUNCTION_BEG) +(insn 5 4 6 2 (set (reg/f:DI 86) + (const_int 40 [0x28])) "conftest.c":48:82 74 {*movdi_internal} + (nil)) +(insn 6 5 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (reg/f:DI 86) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (nil)) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 14 13 15 2 (set (reg:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg:DI 89) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg:DI 89)) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 23 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 23 22 27 2 (set (reg:SI 83 [ ]) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 27 23 28 2 (set (reg/f:DI 91) + (const_int 40 [0x28])) "conftest.c":53:50 74 {*movdi_internal} + (nil)) +(insn 28 27 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (reg/f:DI 91) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 6 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 5 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) + +;; basic block 5, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 6, flags: (NEW, REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +(note 36 29 30 5 [bb 5] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 5 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: + +(barrier 31 30 32) +;; basic block 6, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 5, next block 1, flags: (NEW, REACHABLE, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +(code_label 32 31 37 6 2 (nil) [1 uses]) +(note 37 32 33 6 [bb 6] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 6 (set (reg/i:SI 0 ax) + (reg:SI 83 [ ])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 6 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) + diff --git a/conftest-conftest.c.247r.into_cfglayout b/conftest-conftest.c.247r.into_cfglayout new file mode 100644 index 000000000000..371eadf16b66 --- /dev/null +++ b/conftest-conftest.c.247r.into_cfglayout @@ -0,0 +1,139 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +try_optimize_cfg iteration 1 + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (NEW, REACHABLE, RTL, MODIFIED, VISITED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 7 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn 2 7 3 2 (set (reg/v:SI 84 [ argc ]) + (reg:SI 5 di [ argc ])) "conftest.c":48:82 75 {*movsi_internal} + (nil)) +(insn 3 2 4 2 (set (reg/v/f:DI 85 [ argv ]) + (reg:DI 4 si [ argv ])) "conftest.c":48:82 74 {*movdi_internal} + (nil)) +(note 4 3 5 2 NOTE_INSN_FUNCTION_BEG) +(insn 5 4 6 2 (set (reg/f:DI 86) + (const_int 40 [0x28])) "conftest.c":48:82 74 {*movdi_internal} + (nil)) +(insn 6 5 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (reg/f:DI 86) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (nil)) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 14 13 15 2 (set (reg:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg:DI 89) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg:DI 89)) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 23 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 23 22 27 2 (set (reg:SI 83 [ ]) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 27 23 28 2 (set (reg/f:DI 91) + (const_int 40 [0x28])) "conftest.c":53:50 74 {*movdi_internal} + (nil)) +(insn 28 27 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (reg/f:DI 91) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (NEW, REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (NEW, REACHABLE, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (reg:SI 83 [ ])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) + diff --git a/conftest-conftest.c.248r.jump b/conftest-conftest.c.248r.jump new file mode 100644 index 000000000000..607edebd01f6 --- /dev/null +++ b/conftest-conftest.c.248r.jump @@ -0,0 +1,273 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +Deleted 2 trivially dead insns + +5 basic blocks, 4 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, VISITED) +;; pred: +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (NEW, REACHABLE, RTL, MODIFIED, VISITED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 5 2 NOTE_INSN_FUNCTION_BEG) +(insn 5 4 6 2 (set (reg/f:DI 86) + (const_int 40 [0x28])) "conftest.c":48:82 74 {*movdi_internal} + (nil)) +(insn 6 5 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (reg/f:DI 86) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (nil)) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 14 13 15 2 (set (reg:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg:DI 89) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg:DI 89)) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 23 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 23 22 27 2 (set (reg:SI 83 [ ]) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 27 23 28 2 (set (reg/f:DI 91) + (const_int 40 [0x28])) "conftest.c":53:50 74 {*movdi_internal} + (nil)) +(insn 28 27 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (reg/f:DI 91) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (NEW, REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (NEW, REACHABLE, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (reg:SI 83 [ ])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 4, next block (nil), flags: (REACHABLE, RTL, VISITED) +;; pred: 4 [always] count:1073312328 (estimated locally) (FALLTHRU) +;; succ: + + + + +try_optimize_cfg iteration 1 + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 5 2 NOTE_INSN_FUNCTION_BEG) +(insn 5 4 6 2 (set (reg/f:DI 86) + (const_int 40 [0x28])) "conftest.c":48:82 74 {*movdi_internal} + (nil)) +(insn 6 5 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (reg/f:DI 86) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (nil)) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 14 13 15 2 (set (reg:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg:DI 89) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg:DI 89)) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 23 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 23 22 27 2 (set (reg:SI 83 [ ]) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 27 23 28 2 (set (reg/f:DI 91) + (const_int 40 [0x28])) "conftest.c":53:50 74 {*movdi_internal} + (nil)) +(insn 28 27 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (reg/f:DI 91) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (reg:SI 83 [ ])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) + diff --git a/conftest-conftest.c.249r.subreg1 b/conftest-conftest.c.249r.subreg1 new file mode 100644 index 000000000000..ae7ffc373843 --- /dev/null +++ b/conftest-conftest.c.249r.subreg1 @@ -0,0 +1,256 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +Choices when optimizing for size: + Splitting mode TI for copy lowering. + Splitting mode OI for copy lowering. + Splitting mode XI for copy lowering. + Splitting mode POI for copy lowering. + Splitting mode TQ for copy lowering. + Splitting mode UTQ for copy lowering. + Splitting mode TA for copy lowering. + Splitting mode UTA for copy lowering. + Skipping mode XF for copy lowering. + Skipping mode TF for copy lowering. + Splitting mode TD for copy lowering. + Splitting mode CDI for copy lowering. + Splitting mode CTI for copy lowering. + Splitting mode CPOI for copy lowering. + Splitting mode COI for copy lowering. + Splitting mode CXI for copy lowering. + Skipping mode DC for copy lowering. + Skipping mode XC for copy lowering. + Skipping mode TC for copy lowering. + Splitting mode V12QI for copy lowering. + Splitting mode V6HI for copy lowering. + Splitting mode V14QI for copy lowering. + Skipping mode V16QI for copy lowering. + Skipping mode V8HI for copy lowering. + Skipping mode V4SI for copy lowering. + Skipping mode V2DI for copy lowering. + Skipping mode V1TI for copy lowering. + Splitting mode V32QI for copy lowering. + Splitting mode V16HI for copy lowering. + Splitting mode V8SI for copy lowering. + Splitting mode V4DI for copy lowering. + Splitting mode V2TI for copy lowering. + Splitting mode V64QI for copy lowering. + Splitting mode V32HI for copy lowering. + Splitting mode V16SI for copy lowering. + Splitting mode V8DI for copy lowering. + Splitting mode V4TI for copy lowering. + Splitting mode V128QI for copy lowering. + Splitting mode V64HI for copy lowering. + Splitting mode V32SI for copy lowering. + Splitting mode V16DI for copy lowering. + Splitting mode V8TI for copy lowering. + Splitting mode V64SI for copy lowering. + Skipping mode V4SF for copy lowering. + Skipping mode V2DF for copy lowering. + Splitting mode V8SF for copy lowering. + Splitting mode V4DF for copy lowering. + Splitting mode V2TF for copy lowering. + Splitting mode V16SF for copy lowering. + Splitting mode V8DF for copy lowering. + Splitting mode V4TF for copy lowering. + Splitting mode V32SF for copy lowering. + Splitting mode V16DF for copy lowering. + Splitting mode V8TF for copy lowering. + Splitting mode V64SF for copy lowering. + Splitting mode V32DF for copy lowering. + Splitting mode V16TF for copy lowering. + Skipping mode TI for zero_extend lowering. + Splitting mode TI for ashift lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for lshiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for ashiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + +Choices when optimizing for speed: + Splitting mode TI for copy lowering. + Splitting mode OI for copy lowering. + Splitting mode XI for copy lowering. + Splitting mode POI for copy lowering. + Splitting mode TQ for copy lowering. + Splitting mode UTQ for copy lowering. + Splitting mode TA for copy lowering. + Splitting mode UTA for copy lowering. + Skipping mode XF for copy lowering. + Skipping mode TF for copy lowering. + Splitting mode TD for copy lowering. + Splitting mode CDI for copy lowering. + Splitting mode CTI for copy lowering. + Splitting mode CPOI for copy lowering. + Splitting mode COI for copy lowering. + Splitting mode CXI for copy lowering. + Skipping mode DC for copy lowering. + Skipping mode XC for copy lowering. + Skipping mode TC for copy lowering. + Splitting mode V12QI for copy lowering. + Splitting mode V6HI for copy lowering. + Splitting mode V14QI for copy lowering. + Skipping mode V16QI for copy lowering. + Skipping mode V8HI for copy lowering. + Skipping mode V4SI for copy lowering. + Skipping mode V2DI for copy lowering. + Skipping mode V1TI for copy lowering. + Splitting mode V32QI for copy lowering. + Splitting mode V16HI for copy lowering. + Splitting mode V8SI for copy lowering. + Splitting mode V4DI for copy lowering. + Splitting mode V2TI for copy lowering. + Splitting mode V64QI for copy lowering. + Splitting mode V32HI for copy lowering. + Splitting mode V16SI for copy lowering. + Splitting mode V8DI for copy lowering. + Splitting mode V4TI for copy lowering. + Splitting mode V128QI for copy lowering. + Splitting mode V64HI for copy lowering. + Splitting mode V32SI for copy lowering. + Splitting mode V16DI for copy lowering. + Splitting mode V8TI for copy lowering. + Splitting mode V64SI for copy lowering. + Skipping mode V4SF for copy lowering. + Skipping mode V2DF for copy lowering. + Splitting mode V8SF for copy lowering. + Splitting mode V4DF for copy lowering. + Splitting mode V2TF for copy lowering. + Splitting mode V16SF for copy lowering. + Splitting mode V8DF for copy lowering. + Splitting mode V4TF for copy lowering. + Splitting mode V32SF for copy lowering. + Splitting mode V16DF for copy lowering. + Splitting mode V8TF for copy lowering. + Splitting mode V64SF for copy lowering. + Splitting mode V32DF for copy lowering. + Splitting mode V16TF for copy lowering. + Skipping mode TI for zero_extend lowering. + Splitting mode TI for ashift lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for lshiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for ashiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + +Nothing to lower in this function. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 5 2 NOTE_INSN_FUNCTION_BEG) +(insn 5 4 6 2 (set (reg/f:DI 86) + (const_int 40 [0x28])) "conftest.c":48:82 74 {*movdi_internal} + (nil)) +(insn 6 5 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (reg/f:DI 86) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (nil)) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 14 13 15 2 (set (reg:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg:DI 89) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg:DI 89)) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 23 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 23 22 27 2 (set (reg:SI 83 [ ]) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 27 23 28 2 (set (reg/f:DI 91) + (const_int 40 [0x28])) "conftest.c":53:50 74 {*movdi_internal} + (nil)) +(insn 28 27 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (reg/f:DI 91) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (reg:SI 83 [ ])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) + diff --git a/conftest-conftest.c.250r.dfinit b/conftest-conftest.c.250r.dfinit new file mode 100644 index 000000000000..5335cb6fba8f --- /dev/null +++ b/conftest-conftest.c.250r.dfinit @@ -0,0 +1,152 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +verify found no changes in insn with uid = 17. +verify found no changes in insn with uid = 21. +verify found no changes in insn with uid = 30. + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r83={1d,1u} r86={1d,1u} r87={1d,1u} r88={1d,1u} r89={1d,1u} r91={1d,1u} +;; total ref usage 270{234d,36u,0e} in 23{20 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 5 2 NOTE_INSN_FUNCTION_BEG) +(insn 5 4 6 2 (set (reg/f:DI 86) + (const_int 40 [0x28])) "conftest.c":48:82 74 {*movdi_internal} + (nil)) +(insn 6 5 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (reg/f:DI 86) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (nil)) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 14 13 15 2 (set (reg:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg:DI 89) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg:DI 89)) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 23 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 23 22 27 2 (set (reg:SI 83 [ ]) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 27 23 28 2 (set (reg/f:DI 91) + (const_int 40 [0x28])) "conftest.c":53:50 74 {*movdi_internal} + (nil)) +(insn 28 27 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (reg/f:DI 91) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (reg:SI 83 [ ])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) + diff --git a/conftest-conftest.c.251r.cse1 b/conftest-conftest.c.251r.cse1 new file mode 100644 index 000000000000..70712a25d1af --- /dev/null +++ b/conftest-conftest.c.251r.cse1 @@ -0,0 +1,425 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + +5 basic blocks, 4 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } + + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} + +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 5 2 NOTE_INSN_FUNCTION_BEG) +(insn 5 4 6 2 (set (reg/f:DI 86) + (const_int 40 [0x28])) "conftest.c":48:82 74 {*movdi_internal} + (nil)) +(insn 6 5 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (reg/f:DI 86) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (nil)) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 14 13 15 2 (set (reg:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg:DI 89) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg:DI 89)) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 23 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 23 22 27 2 (set (reg:SI 83 [ ]) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 27 23 28 2 (set (reg/f:DI 91) + (const_int 40 [0x28])) "conftest.c":53:50 74 {*movdi_internal} + (nil)) +(insn 28 27 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (reg/f:DI 91) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) + +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} + +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) + +;; succ: + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} + +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (reg:SI 83 [ ])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) + +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 4, next block (nil), flags: (RTL, MODIFIED) +;; pred: 4 [always] count:1073312328 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} + + +;; succ: + + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) + + +main + +Dataflow summary: +def_info->table_size = 0, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r83={1d,1u} r86={1d,1u} r87={1d,1u} r88={1d,1u} r89={1d,1u} r91={1d,1u} +;; total ref usage 270{234d,36u,0e} in 23{20 regular + 3 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } + +( 0 )->[2]->( 4 3 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} + +( 2 )->[3]->( ) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} + +( 2 )->[4]->( 1 ) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} + +( 4 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} + +Finding needed instructions: + Adding insn 29 to worklist + Adding insn 28 to worklist + Adding insn 21 to worklist + Adding insn 17 to worklist + Adding insn 10 to worklist + Adding insn 6 to worklist + Adding insn 30 to worklist + Adding insn 34 to worklist +Finished finding needed instructions: +processing block 4 lr out = 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + Adding insn 33 to worklist +processing block 3 lr out = 7 [sp] 16 [argp] 19 [frame] +processing block 2 lr out = 6 [bp] 7 [sp] 16 [argp] 19 [frame] 83 + Adding insn 27 to worklist + Adding insn 23 to worklist + Adding insn 20 to worklist + Adding insn 19 to worklist + Adding insn 16 to worklist + Adding insn 15 to worklist + Adding insn 14 to worklist + Adding insn 13 to worklist + Adding insn 12 to worklist + Adding insn 5 to worklist +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +;; Following path with 26 sets: 2 4 +deferring rescan insn with uid = 28. +deferring rescan insn with uid = 33. +;; Following path with 25 sets: 2 3 +;; Following path with 2 sets: 4 + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +rescanning insn with uid = 28. +rescanning insn with uid = 33. +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r83={1d} r86={1d,2u} r87={1d,1u} r88={1d,1u} r89={1d,1u} r91={1d} +;; total ref usage 270{234d,35u,1e} in 23{20 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 83 86 87 88 89 91 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 83 86 87 88 89 91 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 5 2 NOTE_INSN_FUNCTION_BEG) +(insn 5 4 6 2 (set (reg/f:DI 86) + (const_int 40 [0x28])) "conftest.c":48:82 74 {*movdi_internal} + (nil)) +(insn 6 5 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (reg/f:DI 86) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_DEAD (reg/f:DI 86) + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil)))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (expr_list:REG_DEAD (reg/f:DI 87) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 23 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 23 22 27 2 (set (reg:SI 83 [ ]) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 27 23 28 2 (set (reg/f:DI 91) + (const_int 40 [0x28])) "conftest.c":53:50 74 {*movdi_internal} + (nil)) +(insn 28 27 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (reg/f:DI 86) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_DEAD (reg/f:DI 91) + (nil))) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] 83 +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] 83 + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] 83 +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] 83 +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] 83 +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 83 [ ]) + (nil))) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.252r.fwprop1 b/conftest-conftest.c.252r.fwprop1 new file mode 100644 index 000000000000..4ba743a8ce02 --- /dev/null +++ b/conftest-conftest.c.252r.fwprop1 @@ -0,0 +1,240 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 3 4 +;; 2 succs { 4 3 } +;; 3 succs { } +;; 4 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +cannot propagate from insn 12 into insn 13: would increase complexity of pattern + +propagating insn 14 into insn 15, replacing: +(set (reg:DI 5 di) + (reg/f:DI 88)) +failed to match this instruction: +(set (reg:DI 5 di) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) +cannot propagate from insn 19 into insn 20: would increase complexity of pattern + +propagating insn 5 into insn 28, replacing: +(parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (reg/f:DI 86) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) +successfully matched this instruction to stack_protect_test_1_di: +(parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) +rescanning insn with uid = 28. +updating insn 28 in-place +verify found no changes in insn with uid = 28. + + +try_optimize_cfg iteration 1 + +deleting insn with uid = 27. +deleting insn with uid = 23. +Deleted 2 trivially dead insns + +Number of successful forward propagations: 1 + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r86={1d,1u} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 267{232d,34u,1e} in 21{18 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 83 86 87 88 89 91 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 83 86 87 88 89 91 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 5 2 NOTE_INSN_FUNCTION_BEG) +(insn 5 4 6 2 (set (reg/f:DI 86) + (const_int 40 [0x28])) "conftest.c":48:82 74 {*movdi_internal} + (nil)) +(insn 6 5 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (reg/f:DI 86) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_DEAD (reg/f:DI 86) + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil)))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (expr_list:REG_DEAD (reg/f:DI 87) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 83 [ ]) + (nil))) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.253r.cprop1 b/conftest-conftest.c.253r.cprop1 new file mode 100644 index 000000000000..92e55138f041 --- /dev/null +++ b/conftest-conftest.c.253r.cprop1 @@ -0,0 +1,402 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) + + +main + +Dataflow summary: +def_info->table_size = 0, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r86={1d,1u} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 267{232d,34u,1e} in 21{18 regular + 3 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 0 )->[2]->( 4 3 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 86 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 83 86 87 88 89 91 +;; live kill 17 [flags] +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 2 )->[3]->( ) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +( 2 )->[4]->( 1 ) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 4 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 29 to worklist + Adding insn 28 to worklist + Adding insn 21 to worklist + Adding insn 17 to worklist + Adding insn 10 to worklist + Adding insn 6 to worklist + Adding insn 30 to worklist + Adding insn 34 to worklist +Finished finding needed instructions: +processing block 4 lr out = 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + Adding insn 33 to worklist +processing block 3 lr out = 7 [sp] 16 [argp] 19 [frame] +processing block 2 lr out = 6 [bp] 7 [sp] 16 [argp] 19 [frame] + Adding insn 20 to worklist + Adding insn 19 to worklist + Adding insn 16 to worklist + Adding insn 15 to worklist + Adding insn 14 to worklist + Adding insn 13 to worklist + Adding insn 12 to worklist + Adding insn 5 to worklist +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +rescanning insn with uid = 6. +LOCAL CONST-PROP: Replacing reg 86 in insn 6 with constant (const_int 40 [0x28]) +Found 0 implicit sets +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) + + +main + +Dataflow summary: +def_info->table_size = 0, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r86={1d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 266{232d,33u,1e} in 21{18 regular + 3 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 0 )->[2]->( 4 3 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 86 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 86 87 88 89 +;; live kill 17 [flags] +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 2 )->[3]->( ) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +( 2 )->[4]->( 1 ) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 4 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 29 to worklist + Adding insn 28 to worklist + Adding insn 21 to worklist + Adding insn 17 to worklist + Adding insn 10 to worklist + Adding insn 6 to worklist + Adding insn 30 to worklist + Adding insn 34 to worklist +Finished finding needed instructions: +processing block 4 lr out = 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + Adding insn 33 to worklist +processing block 3 lr out = 7 [sp] 16 [argp] 19 [frame] +processing block 2 lr out = 6 [bp] 7 [sp] 16 [argp] 19 [frame] + Adding insn 20 to worklist + Adding insn 19 to worklist + Adding insn 16 to worklist + Adding insn 15 to worklist + Adding insn 14 to worklist + Adding insn 13 to worklist + Adding insn 12 to worklist +DCE: Deleting insn 5 +deleting insn with uid = 5. +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +SET hash table (11 buckets, 1 entries) +Index 0 (hash value 0) + (reg/f:DI 88) := (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + +CPROP of main, 5 basic blocks, 112 bytes needed, 1 local const props, 0 local copy props, 0 global const props, 0 global copy props + + + +try_optimize_cfg iteration 1 + +fix_loop_structure: fixing up loops for function +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_DEAD (reg/f:DI 86) + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil)))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (expr_list:REG_DEAD (reg/f:DI 87) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 83 [ ]) + (nil))) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.254r.pre b/conftest-conftest.c.254r.pre new file mode 100644 index 000000000000..0ebb68ddd3ce --- /dev/null +++ b/conftest-conftest.c.254r.pre @@ -0,0 +1,204 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +LDST list: + Pattern ( 0): (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + Stores : {(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +} + + +Expression hash table (11 buckets, 3 entries) +Index 0 (hash value 6; max distance 0) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) +Index 1 (hash value 8; max distance 0) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) +Index 2 (hash value 10; max distance 0) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + +PRE GCSE of main, 5 basic blocks, 2192 bytes needed, 0 substs, 0 insns created +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_DEAD (reg/f:DI 86) + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil)))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (expr_list:REG_DEAD (reg/f:DI 87) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 83 [ ]) + (nil))) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.256r.cprop2 b/conftest-conftest.c.256r.cprop2 new file mode 100644 index 000000000000..00a07f73f0e5 --- /dev/null +++ b/conftest-conftest.c.256r.cprop2 @@ -0,0 +1,289 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) + + +main + +Dataflow summary: +def_info->table_size = 0, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 0 )->[2]->( 4 3 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 2 )->[3]->( ) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +( 2 )->[4]->( 1 ) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 4 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 29 to worklist + Adding insn 28 to worklist + Adding insn 21 to worklist + Adding insn 17 to worklist + Adding insn 10 to worklist + Adding insn 6 to worklist + Adding insn 30 to worklist + Adding insn 34 to worklist +Finished finding needed instructions: +processing block 4 lr out = 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + Adding insn 33 to worklist +processing block 3 lr out = 7 [sp] 16 [argp] 19 [frame] +processing block 2 lr out = 6 [bp] 7 [sp] 16 [argp] 19 [frame] + Adding insn 20 to worklist + Adding insn 19 to worklist + Adding insn 16 to worklist + Adding insn 15 to worklist + Adding insn 14 to worklist + Adding insn 13 to worklist + Adding insn 12 to worklist +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +Found 0 implicit sets +SET hash table (11 buckets, 1 entries) +Index 0 (hash value 0) + (reg/f:DI 88) := (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + +CPROP of main, 5 basic blocks, 112 bytes needed, 0 local const props, 0 local copy props, 0 global const props, 0 global copy props + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_DEAD (reg/f:DI 86) + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil)))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (expr_list:REG_DEAD (reg/f:DI 87) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 83 [ ]) + (nil))) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.258r.cse_local b/conftest-conftest.c.258r.cse_local new file mode 100644 index 000000000000..d14159246441 --- /dev/null +++ b/conftest-conftest.c.258r.cse_local @@ -0,0 +1,184 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +;; Following path with 21 sets: 2 +;; Following path with 1 sets: 3 +;; Following path with 2 sets: 4 +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.259r.ce1 b/conftest-conftest.c.259r.ce1 new file mode 100644 index 000000000000..dcbb4e12cc24 --- /dev/null +++ b/conftest-conftest.c.259r.ce1 @@ -0,0 +1,413 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +0 registers. + +5 basic blocks, 4 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] + +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill + +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; succ: + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill + +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 4, next block (nil), flags: (REACHABLE, RTL, MODIFIED) +;; pred: 4 [always] count:1073312328 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + + + +try_optimize_cfg iteration 1 + +fix_loop_structure: fixing up loops for function +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 3 4 +;; 2 succs { 4 3 } +;; 3 succs { } +;; 4 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + +IF-CASE-2 found, start 2, else 4 + + +========== no more changes + +1 possible IF blocks searched. +0 IF blocks converted. +0 true changes made. + + + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.260r.reginfo b/conftest-conftest.c.260r.reginfo new file mode 100644 index 000000000000..aecb1a20b237 --- /dev/null +++ b/conftest-conftest.c.260r.reginfo @@ -0,0 +1,179 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +verify found no changes in insn with uid = 17. +verify found no changes in insn with uid = 21. +verify found no changes in insn with uid = 30. + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.261r.loop2 b/conftest-conftest.c.261r.loop2 new file mode 100644 index 000000000000..5d30ec5dfe36 --- /dev/null +++ b/conftest-conftest.c.261r.loop2 @@ -0,0 +1,176 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.262r.loop2_init b/conftest-conftest.c.262r.loop2_init new file mode 100644 index 000000000000..af8605b59248 --- /dev/null +++ b/conftest-conftest.c.262r.loop2_init @@ -0,0 +1,388 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +0 registers. + +5 basic blocks, 4 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] + +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill + +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; succ: + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill + +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 4, next block (nil), flags: (REACHABLE, RTL, MODIFIED) +;; pred: 4 [always] count:1073312328 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 3 4 +;; 2 succs { 4 3 } +;; 3 succs { } +;; 4 succs { 1 } + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.263r.loop2_invariant b/conftest-conftest.c.263r.loop2_invariant new file mode 100644 index 000000000000..560e8534fde0 --- /dev/null +++ b/conftest-conftest.c.263r.loop2_invariant @@ -0,0 +1,178 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.266r.loop2_done b/conftest-conftest.c.266r.loop2_done new file mode 100644 index 000000000000..ffe843e8f0e5 --- /dev/null +++ b/conftest-conftest.c.266r.loop2_done @@ -0,0 +1,383 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +try_optimize_cfg iteration 1 + +0 registers. + +5 basic blocks, 4 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] + +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill + +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; succ: + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill + +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 4, next block (nil), flags: (REACHABLE, RTL, MODIFIED) +;; pred: 4 [always] count:1073312328 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.269r.cprop3 b/conftest-conftest.c.269r.cprop3 new file mode 100644 index 000000000000..542103bf8a06 --- /dev/null +++ b/conftest-conftest.c.269r.cprop3 @@ -0,0 +1,188 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +Found 0 implicit sets +SET hash table (11 buckets, 1 entries) +Index 0 (hash value 0) + (reg/f:DI 88) := (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + +CPROP of main, 5 basic blocks, 112 bytes needed, 0 local const props, 0 local copy props, 0 global const props, 0 global copy props + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.270r.stv1 b/conftest-conftest.c.270r.stv1 new file mode 100644 index 000000000000..c8d97be5aa18 --- /dev/null +++ b/conftest-conftest.c.270r.stv1 @@ -0,0 +1,187 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +Searching for mode conversion candidates... +There are no candidates for optimization. +Total insns converted: 0 +starting the processing of deferred insns +ending the processing of deferred insns +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.271r.cse2 b/conftest-conftest.c.271r.cse2 new file mode 100644 index 000000000000..21f0871d6399 --- /dev/null +++ b/conftest-conftest.c.271r.cse2 @@ -0,0 +1,386 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + +5 basic blocks, 4 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d5(0){ }d9(1){ }d13(2){ }d18(4){ }d24(5){ }d25(6){ }d26(7){ }d51(16){ }d61(19){ }d65(20){ }d69(21){ }d73(22){ }d77(23){ }d81(24){ }d85(25){ }d89(26){ }d93(27){ }d121(36){ }d125(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] + +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill + +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; succ: + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill + +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 4, next block (nil), flags: (REACHABLE, RTL, MODIFIED) +;; pred: 4 [always] count:1073312328 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +;; Following path with 23 sets: 2 4 +;; Following path with 22 sets: 2 3 +;; Following path with 2 sets: 4 +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.272r.dse1 b/conftest-conftest.c.272r.dse1 new file mode 100644 index 000000000000..8ba57ee5339a --- /dev/null +++ b/conftest-conftest.c.272r.dse1 @@ -0,0 +1,364 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + +**scanning insn=6 + stack protector canary read ignored. + mem: (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) + + after canon_rtx address: (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) + gid=0 offset=-8 + processing const base store gid=0[-8..0) +mems_found = 1, cannot_delete = true + +**scanning insn=9 + +**scanning insn=10 + mem: (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + + after canon_rtx address: (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + gid=0 offset=-16 + processing const base store gid=0[-16..-8) + trying store in insn=6 gid=0[-8..0) +mems_found = 1, cannot_delete = false + +**scanning insn=11 + +**scanning insn=12 +mems_found = 0, cannot_delete = true + +**scanning insn=13 +mems_found = 0, cannot_delete = true + +**scanning insn=14 +mems_found = 0, cannot_delete = true + +**scanning insn=15 +mems_found = 0, cannot_delete = true + +**scanning insn=16 +mems_found = 0, cannot_delete = true + +**scanning insn=17 + mem: (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + + after canon_rtx address: (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + gid=1 offset=0 + processing const load gid=1[0..1) + +**scanning insn=18 + +**scanning insn=19 + mem: (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + + after canon_rtx address: (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + gid=0 offset=-16 + processing const load gid=0[-16..-8) +mems_found = 0, cannot_delete = true + +**scanning insn=20 +mems_found = 0, cannot_delete = true + +**scanning insn=21 + mem: (symbol_ref:DI ("free") [flags 0x41] ) + + after canon_rtx address: (symbol_ref:DI ("free") [flags 0x41] ) + gid=2 offset=0 + processing const load gid=2[0..1) + +**scanning insn=22 + +**scanning insn=28 + stack protector canary read ignored. + stack protector canary read ignored. +mems_found = 0, cannot_delete = true + +**scanning insn=29 +mems_found = 0, cannot_delete = true + +**scanning insn=30 + mem: (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + + after canon_rtx address: (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + gid=3 offset=0 + processing const load gid=3[0..1) + +**scanning insn=33 +mems_found = 0, cannot_delete = true + +**scanning insn=34 +mems_found = 0, cannot_delete = false +group 0 is frame related group 0(16+0): n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 p +group 1(0+0): n p +group 2(0+0): n p +group 3(0+0): n p +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +doing global processing +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) + + +*** Global dataflow info after analysis. + +( )->[0]->( 2 ) + in: + gen: + kill: *MISSING* + out: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 + +( 0 )->[2]->( 4 3 ) + in: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 + gen: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 + kill: + out: 1, 2, 3, 4, 5, 6, 7, 8 + +( 2 )->[3]->( ) + in: 1, 2, 3, 4, 5, 6, 7, 8 + gen: + kill: 9, 10, 11, 12, 13, 14, 15, 16 + out: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 + +( 2 )->[4]->( 1 ) + in: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 + gen: + kill: + out: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 + +( 4 )->[1]->( ) + in: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 + gen: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 + kill: *MISSING* + out: *MISSING* + +starting to process insn 29 + v: 1, 2, 3, 4, 5, 6, 7, 8 +starting to process insn 28 + v: 1, 2, 3, 4, 5, 6, 7, 8 +starting to process insn 22 + v: 1, 2, 3, 4, 5, 6, 7, 8 +starting to process insn 21 + v: 1, 2, 3, 4, 5, 6, 7, 8 +non-frame wild read +starting to process insn 20 + v: 1, 2, 3, 4, 5, 6, 7, 8 +starting to process insn 19 + v: 1, 2, 3, 4, 5, 6, 7, 8 +regular read +starting to process insn 18 + v: 1, 2, 3, 4, 5, 6, 7, 8 +starting to process insn 17 + v: 1, 2, 3, 4, 5, 6, 7, 8 +non-frame wild read +starting to process insn 16 + v: 1, 2, 3, 4, 5, 6, 7, 8 +starting to process insn 15 + v: 1, 2, 3, 4, 5, 6, 7, 8 +starting to process insn 14 + v: 1, 2, 3, 4, 5, 6, 7, 8 +starting to process insn 13 + v: 1, 2, 3, 4, 5, 6, 7, 8 +starting to process insn 12 + v: 1, 2, 3, 4, 5, 6, 7, 8 +starting to process insn 11 + v: 1, 2, 3, 4, 5, 6, 7, 8 +starting to process insn 10 + v: 1, 2, 3, 4, 5, 6, 7, 8 +i = -16, index = 16 +failing at i = -16 +starting to process insn 9 + v: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 +starting to process insn 6 + v: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 +starting to process insn 30 + v: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 +non-frame wild read +starting to process insn 34 + v: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 +starting to process insn 33 + v: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 +dse: local deletions = 0, global deletions = 0 +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.273r.fwprop2 b/conftest-conftest.c.273r.fwprop2 new file mode 100644 index 000000000000..056d312852ed --- /dev/null +++ b/conftest-conftest.c.273r.fwprop2 @@ -0,0 +1,197 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 3 4 +;; 2 succs { 4 3 } +;; 3 succs { } +;; 4 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + + +try_optimize_cfg iteration 1 + + +Number of successful forward propagations: 0 + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.275r.init-regs b/conftest-conftest.c.275r.init-regs new file mode 100644 index 000000000000..968267049b7d --- /dev/null +++ b/conftest-conftest.c.275r.init-regs @@ -0,0 +1,181 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.276r.ud_dce b/conftest-conftest.c.276r.ud_dce new file mode 100644 index 000000000000..9a8b778913db --- /dev/null +++ b/conftest-conftest.c.276r.ud_dce @@ -0,0 +1,342 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; Reaching defs: +;; sparse invalidated +;; dense invalidated 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227 +;; reg->defs[] map: 0[0,5] 1[6,9] 2[10,13] 4[14,18] 5[19,24] 6[25,25] 7[26,26] 8[27,29] 9[30,32] 10[33,35] 11[36,38] 12[39,41] 13[42,44] 14[45,47] 15[48,50] 16[51,51] 17[52,57] 18[58,60] 19[61,61] 20[62,65] 21[66,69] 22[70,73] 23[74,77] 24[78,81] 25[82,85] 26[86,89] 27[90,93] 28[94,96] 29[97,99] 30[100,102] 31[103,105] 32[106,108] 33[109,111] 34[112,114] 35[115,117] 36[118,121] 37[122,125] 38[126,128] 39[129,131] 44[132,134] 45[135,137] 46[138,140] 47[141,143] 48[144,146] 49[147,149] 50[150,152] 51[153,155] 52[156,158] 53[159,161] 54[162,164] 55[165,167] 56[168,170] 57[171,173] 58[174,176] 59[177,179] 60[180,182] 61[183,185] 62[186,188] 63[189,191] 64[192,194] 65[195,197] 66[198,200] 67[201,203] 68[204,206] 69[207,209] 70[210,212] 71[213,215] 72[216,218] 73[219,221] 74[222,224] 75[225,227] 87[228,228] 88[229,229] 89[230,230] + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d5(0){ }d9(1){ }d13(2){ }d18(4){ }d24(5){ }d25(6){ }d26(7){ }d51(16){ }d61(19){ }d65(20){ }d69(21){ }d73(22){ }d77(23){ }d81(24){ }d85(25){ }d89(26){ }d93(27){ }d121(36){ }d125(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; rd in (0) +;; rd gen (19) 0[5],1[9],2[13],4[18],5[24],6[25],7[26],16[51],19[61],20[65],21[69],22[73],23[77],24[81],25[85],26[89],27[93],36[121],37[125] +;; rd kill (69) 0[0,1,2,3,4,5],1[6,7,8,9],2[10,11,12,13],4[14,15,16,17,18],5[19,20,21,22,23,24],6[25],7[26],16[51],19[61],20[62,63,64,65],21[66,67,68,69],22[70,71,72,73],23[74,75,76,77],24[78,79,80,81],25[82,83,84,85],26[86,87,88,89],27[90,91,92,93],36[118,119,120,121],37[122,123,124,125] +;; UD chains for artificial uses at top +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; rd out (4) 6[25],7[26],16[51],19[61] +;; UD chains for artificial uses at bottom + +( 0 )->[2]->( 4 3 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ d25(bb 0 insn -1) }u-1(7){ d26(bb 0 insn -1) }u-1(16){ d51(bb 0 insn -1) }u-1(19){ d61(bb 0 insn -1) }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +;; rd in (4) 6[25],7[26],16[51],19[61] +;; rd gen (4) 17[53],87[228],88[229],89[230] +;; rd kill (9) 17[52,53,54,55,56,57],87[228],88[229],89[230] +;; UD chains for artificial uses at top +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; rd out (4) 6[25],7[26],16[51],19[61] +;; UD chains for artificial uses at bottom +;; reg 6 { d25(bb 0 insn -1) } +;; reg 7 { d26(bb 0 insn -1) } +;; reg 16 { d51(bb 0 insn -1) } +;; reg 19 { d61(bb 0 insn -1) } + +( 2 )->[3]->( ) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ d25(bb 0 insn -1) }u-1(7){ d26(bb 0 insn -1) }u-1(16){ d51(bb 0 insn -1) }u-1(19){ d61(bb 0 insn -1) }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +;; rd in (4) 6[25],7[26],16[51],19[61] +;; rd gen (0) +;; rd kill (0) +;; UD chains for artificial uses at top +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] +;; rd out (3) 7[26],16[51],19[61] +;; UD chains for artificial uses at bottom +;; reg 6 { d25(bb 0 insn -1) } +;; reg 7 { d26(bb 0 insn -1) } +;; reg 16 { d51(bb 0 insn -1) } +;; reg 19 { d61(bb 0 insn -1) } + +( 2 )->[4]->( 1 ) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ d25(bb 0 insn -1) }u-1(7){ d26(bb 0 insn -1) }u-1(16){ d51(bb 0 insn -1) }u-1(19){ d61(bb 0 insn -1) }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +;; rd in (4) 6[25],7[26],16[51],19[61] +;; rd gen (1) 0[0] +;; rd kill (6) 0[0,1,2,3,4,5] +;; UD chains for artificial uses at top +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; rd out (5) 0[0],6[25],7[26],16[51],19[61] +;; UD chains for artificial uses at bottom +;; reg 6 { d25(bb 0 insn -1) } +;; reg 7 { d26(bb 0 insn -1) } +;; reg 16 { d51(bb 0 insn -1) } +;; reg 19 { d61(bb 0 insn -1) } + +( 4 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ d0(bb 4 insn 33) }u-1(6){ d25(bb 0 insn -1) }u-1(7){ d26(bb 0 insn -1) }u-1(19){ d61(bb 0 insn -1) }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill +;; rd in (5) 0[0],6[25],7[26],16[51],19[61] +;; rd gen (0) +;; rd kill (0) +;; UD chains for artificial uses at top +;; lr out +;; live out +;; rd out (0) +;; UD chains for artificial uses at bottom +;; reg 0 { d0(bb 4 insn 33) } +;; reg 6 { d25(bb 0 insn -1) } +;; reg 7 { d26(bb 0 insn -1) } +;; reg 19 { d61(bb 0 insn -1) } + +Finding needed instructions: + Adding insn 29 to worklist + Adding insn 28 to worklist + Adding insn 21 to worklist + Adding insn 17 to worklist + Adding insn 10 to worklist + Adding insn 6 to worklist + Adding insn 30 to worklist + Adding insn 34 to worklist +Finished finding needed instructions: + Adding insn 33 to worklist +Processing use of (reg 0 ax) in insn 34: +Processing use of (reg 7 sp) in insn 30: +Processing use of (reg 19 frame) in insn 6: +Processing use of (reg 19 frame) in insn 10: +Processing use of (reg 7 sp) in insn 17: +Processing use of (reg 0 ax) in insn 17: + Adding insn 16 to worklist +Processing use of (reg 4 si) in insn 17: + Adding insn 13 to worklist +Processing use of (reg 5 di) in insn 17: + Adding insn 15 to worklist +Processing use of (reg 88) in insn 15: + Adding insn 14 to worklist +Processing use of (reg 87) in insn 13: + Adding insn 12 to worklist +Processing use of (reg 19 frame) in insn 12: +Processing use of (reg 7 sp) in insn 21: +Processing use of (reg 5 di) in insn 21: + Adding insn 20 to worklist +Processing use of (reg 89 [ p ]) in insn 20: + Adding insn 19 to worklist +Processing use of (reg 19 frame) in insn 19: +Processing use of (reg 19 frame) in insn 28: +Processing use of (reg 17 flags) in insn 29: +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.277r.combine b/conftest-conftest.c.277r.combine new file mode 100644 index 000000000000..668312b448c0 --- /dev/null +++ b/conftest-conftest.c.277r.combine @@ -0,0 +1,276 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +insn_cost 0 for 6: {[frame:DI-0x8]=unspec[[0x28]] 79;scratch=0;clobber flags:CC;} + REG_UNUSED flags:CC +insn_cost 0 for 9: debug begin stmt marker +insn_cost 4 for 10: [frame:DI-0x10]=0 +insn_cost 0 for 11: debug begin stmt marker +insn_cost 4 for 12: {r87:DI=frame:DI-0x10;clobber flags:CC;} + REG_UNUSED flags:CC +insn_cost 4 for 13: si:DI=r87:DI + REG_DEAD r87:DI + REG_EQUAL frame:DI-0x10 +insn_cost 1 for 14: r88:DI=`*.LC0' +insn_cost 4 for 15: di:DI=r88:DI + REG_DEAD r88:DI + REG_EQUAL `*.LC0' +insn_cost 4 for 16: ax:QI=0 +insn_cost 9 for 17: ax:SI=call [`*__isoc99_scanf'] argc:0 + REG_DEAD di:DI + REG_DEAD si:DI + REG_UNUSED ax:SI + REG_CALL_DECL `*__isoc99_scanf' +insn_cost 0 for 18: debug begin stmt marker +insn_cost 8 for 19: r89:DI=[frame:DI-0x10] +insn_cost 4 for 20: di:DI=r89:DI + REG_DEAD r89:DI +insn_cost 0 for 21: call [`free'] argc:0 + REG_DEAD di:DI + REG_CALL_DECL `free' + REG_EH_REGION 0 +insn_cost 0 for 22: debug begin stmt marker +insn_cost 16 for 28: {flags:CCZ=unspec[[frame:DI-0x8],[0x28]] 80;clobber scratch;} +insn_cost 13 for 29: pc={(flags:CCZ==0)?L32:pc} + REG_DEAD flags:CCZ + REG_BR_PROB 1073312332 +insn_cost 0 for 30: call [`__stack_chk_fail'] argc:0 + REG_CALL_DECL `__stack_chk_fail' + REG_ARGS_SIZE 0 + REG_NORETURN 0 + REG_EH_REGION 0 +insn_cost 4 for 33: ax:SI=0 +insn_cost 0 for 34: use ax:SI + +Trying 16 -> 17: + 16: ax:QI=0 + 17: ax:SI=call [`*__isoc99_scanf'] argc:0 + REG_DEAD di:DI + REG_DEAD si:DI + REG_UNUSED ax:SI + REG_CALL_DECL `*__isoc99_scanf' +Can't combine i2 into i3 + +Trying 15 -> 17: + 15: di:DI=`*.LC0' + REG_DEAD r88:DI + REG_EQUAL `*.LC0' + 17: ax:SI=call [`*__isoc99_scanf'] argc:0 + REG_DEAD di:DI + REG_DEAD si:DI + REG_UNUSED ax:SI + REG_CALL_DECL `*__isoc99_scanf' +Can't combine i2 into i3 + +Trying 28 -> 29: + 28: {flags:CCZ=unspec[[frame:DI-0x8],[0x28]] 80;clobber scratch;} + 29: pc={(flags:CCZ==0)?L32:pc} + REG_DEAD flags:CCZ + REG_BR_PROB 1073312332 +Failed to match this instruction: +(set (pc) + (if_then_else (eq (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST) + (const_int 0 [0])) + (label_ref 32) + (pc))) + +Trying 33 -> 34: + 33: ax:SI=0 + 34: use ax:SI +Failed to match this instruction: +(parallel [ + (use (const_int 0 [0])) + (set (reg/i:SI 0 ax) + (const_int 0 [0])) + ]) +Failed to match this instruction: +(parallel [ + (use (const_int 0 [0])) + (set (reg/i:SI 0 ax) + (const_int 0 [0])) + ]) +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Combiner totals: 4 attempts, 2 substitutions (1 requiring new space), +;; 0 successes. diff --git a/conftest-conftest.c.280r.stv2 b/conftest-conftest.c.280r.stv2 new file mode 100644 index 000000000000..ff8f64b74cac --- /dev/null +++ b/conftest-conftest.c.280r.stv2 @@ -0,0 +1,200 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +Searching for mode conversion candidates... + insn 19 is marked as a DImode candidate +Created a new instruction chain #1 +Building chain #1... + Adding insn 19 to chain #1 + r89 use in insn 20 isn't convertible + Mark r89 def in insn 19 as requiring both modes in chain #1 +Collected chain #1... + insns: 19 + defs to convert: r89 +Computing gain for chain #1... + Instruction conversion gain: 0 + Registers conversion cost: 6 + Total gain: -6 +Chain #1 conversion is not profitable +Total insns converted: 0 +starting the processing of deferred insns +ending the processing of deferred insns +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.281r.ce2 b/conftest-conftest.c.281r.ce2 new file mode 100644 index 000000000000..96eaec72637a --- /dev/null +++ b/conftest-conftest.c.281r.ce2 @@ -0,0 +1,201 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 3 4 +;; 2 succs { 4 3 } +;; 3 succs { } +;; 4 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + +IF-CASE-2 found, start 2, else 4 + + +========== no more changes + +1 possible IF blocks searched. +0 IF blocks converted. +0 true changes made. + + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.282r.jump_after_combine b/conftest-conftest.c.282r.jump_after_combine new file mode 100644 index 000000000000..91a7b63fdc14 --- /dev/null +++ b/conftest-conftest.c.282r.jump_after_combine @@ -0,0 +1,180 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +try_optimize_cfg iteration 1 + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.283r.bbpart b/conftest-conftest.c.283r.bbpart new file mode 100644 index 000000000000..59b564854cd2 --- /dev/null +++ b/conftest-conftest.c.283r.bbpart @@ -0,0 +1,178 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 30 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.284r.outof_cfglayout b/conftest-conftest.c.284r.outof_cfglayout new file mode 100644 index 000000000000..0494a5c8b934 --- /dev/null +++ b/conftest-conftest.c.284r.outof_cfglayout @@ -0,0 +1,182 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +Reordered sequence: + 2 bb 2 + 3 bb 3 + 4 bb 4 + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.285r.split1 b/conftest-conftest.c.285r.split1 new file mode 100644 index 000000000000..40206f04be46 --- /dev/null +++ b/conftest-conftest.c.285r.split1 @@ -0,0 +1,178 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.286r.subreg3 b/conftest-conftest.c.286r.subreg3 new file mode 100644 index 000000000000..4eb12ed095f8 --- /dev/null +++ b/conftest-conftest.c.286r.subreg3 @@ -0,0 +1,307 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +Choices when optimizing for size: + Splitting mode TI for copy lowering. + Splitting mode OI for copy lowering. + Splitting mode XI for copy lowering. + Splitting mode POI for copy lowering. + Splitting mode TQ for copy lowering. + Splitting mode UTQ for copy lowering. + Splitting mode TA for copy lowering. + Splitting mode UTA for copy lowering. + Skipping mode XF for copy lowering. + Skipping mode TF for copy lowering. + Splitting mode TD for copy lowering. + Splitting mode CDI for copy lowering. + Splitting mode CTI for copy lowering. + Splitting mode CPOI for copy lowering. + Splitting mode COI for copy lowering. + Splitting mode CXI for copy lowering. + Skipping mode DC for copy lowering. + Skipping mode XC for copy lowering. + Skipping mode TC for copy lowering. + Splitting mode V12QI for copy lowering. + Splitting mode V6HI for copy lowering. + Splitting mode V14QI for copy lowering. + Skipping mode V16QI for copy lowering. + Skipping mode V8HI for copy lowering. + Skipping mode V4SI for copy lowering. + Skipping mode V2DI for copy lowering. + Skipping mode V1TI for copy lowering. + Splitting mode V32QI for copy lowering. + Splitting mode V16HI for copy lowering. + Splitting mode V8SI for copy lowering. + Splitting mode V4DI for copy lowering. + Splitting mode V2TI for copy lowering. + Splitting mode V64QI for copy lowering. + Splitting mode V32HI for copy lowering. + Splitting mode V16SI for copy lowering. + Splitting mode V8DI for copy lowering. + Splitting mode V4TI for copy lowering. + Splitting mode V128QI for copy lowering. + Splitting mode V64HI for copy lowering. + Splitting mode V32SI for copy lowering. + Splitting mode V16DI for copy lowering. + Splitting mode V8TI for copy lowering. + Splitting mode V64SI for copy lowering. + Skipping mode V4SF for copy lowering. + Skipping mode V2DF for copy lowering. + Splitting mode V8SF for copy lowering. + Splitting mode V4DF for copy lowering. + Splitting mode V2TF for copy lowering. + Splitting mode V16SF for copy lowering. + Splitting mode V8DF for copy lowering. + Splitting mode V4TF for copy lowering. + Splitting mode V32SF for copy lowering. + Splitting mode V16DF for copy lowering. + Splitting mode V8TF for copy lowering. + Splitting mode V64SF for copy lowering. + Splitting mode V32DF for copy lowering. + Splitting mode V16TF for copy lowering. + Skipping mode TI for zero_extend lowering. + Splitting mode TI for ashift lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for lshiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for ashiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + +Choices when optimizing for speed: + Splitting mode TI for copy lowering. + Splitting mode OI for copy lowering. + Splitting mode XI for copy lowering. + Splitting mode POI for copy lowering. + Splitting mode TQ for copy lowering. + Splitting mode UTQ for copy lowering. + Splitting mode TA for copy lowering. + Splitting mode UTA for copy lowering. + Skipping mode XF for copy lowering. + Skipping mode TF for copy lowering. + Splitting mode TD for copy lowering. + Splitting mode CDI for copy lowering. + Splitting mode CTI for copy lowering. + Splitting mode CPOI for copy lowering. + Splitting mode COI for copy lowering. + Splitting mode CXI for copy lowering. + Skipping mode DC for copy lowering. + Skipping mode XC for copy lowering. + Skipping mode TC for copy lowering. + Splitting mode V12QI for copy lowering. + Splitting mode V6HI for copy lowering. + Splitting mode V14QI for copy lowering. + Skipping mode V16QI for copy lowering. + Skipping mode V8HI for copy lowering. + Skipping mode V4SI for copy lowering. + Skipping mode V2DI for copy lowering. + Skipping mode V1TI for copy lowering. + Splitting mode V32QI for copy lowering. + Splitting mode V16HI for copy lowering. + Splitting mode V8SI for copy lowering. + Splitting mode V4DI for copy lowering. + Splitting mode V2TI for copy lowering. + Splitting mode V64QI for copy lowering. + Splitting mode V32HI for copy lowering. + Splitting mode V16SI for copy lowering. + Splitting mode V8DI for copy lowering. + Splitting mode V4TI for copy lowering. + Splitting mode V128QI for copy lowering. + Splitting mode V64HI for copy lowering. + Splitting mode V32SI for copy lowering. + Splitting mode V16DI for copy lowering. + Splitting mode V8TI for copy lowering. + Splitting mode V64SI for copy lowering. + Skipping mode V4SF for copy lowering. + Skipping mode V2DF for copy lowering. + Splitting mode V8SF for copy lowering. + Splitting mode V4DF for copy lowering. + Splitting mode V2TF for copy lowering. + Splitting mode V16SF for copy lowering. + Splitting mode V8DF for copy lowering. + Splitting mode V4TF for copy lowering. + Splitting mode V32SF for copy lowering. + Splitting mode V16DF for copy lowering. + Splitting mode V8TF for copy lowering. + Splitting mode V64SF for copy lowering. + Splitting mode V32DF for copy lowering. + Splitting mode V16TF for copy lowering. + Skipping mode TI for zero_extend lowering. + Splitting mode TI for ashift lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for lshiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for ashiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + +Nothing to lower in this function. +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.288r.mode_sw b/conftest-conftest.c.288r.mode_sw new file mode 100644 index 000000000000..f61062c0b599 --- /dev/null +++ b/conftest-conftest.c.288r.mode_sw @@ -0,0 +1,180 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.289r.asmcons b/conftest-conftest.c.289r.asmcons new file mode 100644 index 000000000000..40206f04be46 --- /dev/null +++ b/conftest-conftest.c.289r.asmcons @@ -0,0 +1,178 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r89={1d,1u} +;; total ref usage 265{231d,33u,1e} in 20{17 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 89 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] 87 88 89 +;; live kill 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (scratch:DI) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (nil)) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 19 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 19 18 20 2 (set (reg/f:DI 89 [ p ]) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(insn 20 19 21 2 (set (reg:DI 5 di) + (reg/f:DI 89 [ p ])) "conftest.c":51:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 89 [ p ]) + (nil))) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (scratch:DI)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] +;; live out 7 [sp] 16 [argp] 19 [frame] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.294r.ira b/conftest-conftest.c.294r.ira new file mode 100644 index 000000000000..800d87c3007f --- /dev/null +++ b/conftest-conftest.c.294r.ira @@ -0,0 +1,311 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +Starting decreasing number of live ranges... +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 3 4 +;; 2 succs { 4 3 } +;; 3 succs { } +;; 4 succs { 1 } +rescanning insn with uid = 20. +deleting insn with uid = 19. +Removing SCRATCH to p92 in insn #6 (nop 2) +rescanning insn with uid = 6. +Removing SCRATCH to p93 in insn #28 (nop 3) +rescanning insn with uid = 28. +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +Reg 88 uninteresting +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 3 4 +;; 2 succs { 4 3 } +;; 3 succs { } +;; 4 succs { 1 } +Building IRA IR +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +init_insns for 88: (insn_list:REG_DEP_TRUE 14 (nil)) +Reg 87 had equivalence, but can't be eliminated + +Pass 0 for finding pseudo/allocno costs + + a0 (r93,l0) best GENERAL_REGS, allocno GENERAL_REGS + a3 (r92,l0) best GENERAL_REGS, allocno GENERAL_REGS + a1 (r88,l0) best DIREG, allocno DIREG + a2 (r87,l0) best SIREG, allocno SIREG + + a0(r93,l0) costs: AREG:0,0 DREG:0,0 CREG:0,0 BREG:0,0 SIREG:0,0 DIREG:0,0 AD_REGS:0,0 CLOBBERED_REGS:0,0 Q_REGS:0,0 NON_Q_REGS:0,0 TLS_GOTBASE_REGS:0,0 GENERAL_REGS:0,0 SSE_FIRST_REG:6000,6000 NO_REX_SSE_REGS:6000,6000 SSE_REGS:6000,6000 MMX_REGS:13000,13000 INT_SSE_REGS:13000,13000 ALL_REGS:212000,212000 MEM:6000,6000 + a1(r88,l0) costs: AREG:2000,2000 DREG:2000,2000 CREG:2000,2000 BREG:2000,2000 SIREG:2000,2000 DIREG:-1000,-1000 AD_REGS:2000,2000 CLOBBERED_REGS:2000,2000 Q_REGS:2000,2000 NON_Q_REGS:2000,2000 TLS_GOTBASE_REGS:2000,2000 GENERAL_REGS:2000,2000 SSE_FIRST_REG:12000,12000 NO_REX_SSE_REGS:12000,12000 SSE_REGS:12000,12000 MMX_REGS:23000,23000 INT_SSE_REGS:23000,23000 ALL_REGS:316000,316000 MEM:11000,11000 + a2(r87,l0) costs: AREG:2000,2000 DREG:2000,2000 CREG:2000,2000 BREG:2000,2000 SIREG:-1000,-1000 DIREG:2000,2000 AD_REGS:2000,2000 CLOBBERED_REGS:2000,2000 Q_REGS:2000,2000 NON_Q_REGS:2000,2000 TLS_GOTBASE_REGS:2000,2000 GENERAL_REGS:2000,2000 SSE_FIRST_REG:12000,12000 NO_REX_SSE_REGS:12000,12000 SSE_REGS:12000,12000 MMX_REGS:26000,26000 INT_SSE_REGS:26000,26000 ALL_REGS:424000,424000 MEM:12000,12000 + a3(r92,l0) costs: AREG:0,0 DREG:0,0 CREG:0,0 BREG:0,0 SIREG:0,0 DIREG:0,0 AD_REGS:0,0 CLOBBERED_REGS:0,0 Q_REGS:0,0 NON_Q_REGS:0,0 TLS_GOTBASE_REGS:0,0 GENERAL_REGS:0,0 SSE_FIRST_REG:6000,6000 NO_REX_SSE_REGS:6000,6000 SSE_REGS:6000,6000 MMX_REGS:13000,13000 INT_SSE_REGS:13000,13000 ALL_REGS:212000,212000 MEM:6000,6000 + + +Pass 1 for finding pseudo/allocno costs + + r93: preferred GENERAL_REGS, alternative NO_REGS, allocno GENERAL_REGS + r92: preferred GENERAL_REGS, alternative NO_REGS, allocno GENERAL_REGS + r88: preferred DIREG, alternative GENERAL_REGS, allocno GENERAL_REGS + r87: preferred SIREG, alternative GENERAL_REGS, allocno GENERAL_REGS + + a0(r93,l0) costs: GENERAL_REGS:0,0 SSE_FIRST_REG:6000,6000 NO_REX_SSE_REGS:6000,6000 SSE_REGS:6000,6000 MMX_REGS:13000,13000 INT_SSE_REGS:13000,13000 ALL_REGS:212000,212000 MEM:6000,6000 + a1(r88,l0) costs: AREG:4000,4000 DREG:4000,4000 CREG:4000,4000 BREG:4000,4000 SIREG:4000,4000 DIREG:2000,-1000 AD_REGS:4000,4000 CLOBBERED_REGS:2000,2000 Q_REGS:4000,4000 NON_Q_REGS:2000,2000 TLS_GOTBASE_REGS:2000,2000 GENERAL_REGS:2000,2000 SSE_FIRST_REG:18000,18000 NO_REX_SSE_REGS:18000,18000 SSE_REGS:18000,18000 MMX_REGS:39000,39000 INT_SSE_REGS:26000,26000 ALL_REGS:322000,322000 MEM:18000,18000 + a2(r87,l0) costs: AREG:4000,4000 DREG:4000,4000 CREG:4000,4000 BREG:4000,4000 SIREG:2000,-1000 DIREG:4000,4000 AD_REGS:4000,4000 CLOBBERED_REGS:2000,2000 Q_REGS:4000,4000 NON_Q_REGS:2000,2000 TLS_GOTBASE_REGS:2000,2000 GENERAL_REGS:2000,2000 SSE_FIRST_REG:18000,18000 NO_REX_SSE_REGS:18000,18000 SSE_REGS:18000,18000 MMX_REGS:39000,39000 INT_SSE_REGS:26000,26000 ALL_REGS:424000,424000 MEM:18000,18000 + a3(r92,l0) costs: GENERAL_REGS:0,0 SSE_FIRST_REG:6000,6000 NO_REX_SSE_REGS:6000,6000 SSE_REGS:6000,6000 MMX_REGS:13000,13000 INT_SSE_REGS:13000,13000 ALL_REGS:212000,212000 MEM:6000,6000 + + Insn 34(l0): point = 0 + Insn 33(l0): point = 2 + Insn 30(l0): point = 5 + Insn 29(l0): point = 8 + Insn 28(l0): point = 10 + Insn 21(l0): point = 12 + Insn 20(l0): point = 14 + Insn 17(l0): point = 16 + Insn 16(l0): point = 18 + Insn 15(l0): point = 20 + Insn 14(l0): point = 22 + Insn 13(l0): point = 24 + Insn 12(l0): point = 26 + Insn 10(l0): point = 28 + Insn 6(l0): point = 30 + a0(r93): [10..10] + a1(r88): [21..22] + a2(r87): [25..26] + a3(r92): [30..30] +Compressing live ranges: from 33 to 6 - 18% +Ranges after the compression: + a0(r93): [0..0] + a1(r88): [1..2] + a2(r87): [3..4] + a3(r92): [5..5] ++++Allocating 0 bytes for conflict table (uncompressed size 32) +;; a0(r93,l0) conflicts: +;; total conflict hard regs: +;; conflict hard regs: + +;; a1(r88,l0) conflicts: +;; total conflict hard regs: +;; conflict hard regs: + +;; a2(r87,l0) conflicts: +;; total conflict hard regs: +;; conflict hard regs: + +;; a3(r92,l0) conflicts: +;; total conflict hard regs: +;; conflict hard regs: + + + pref0:a1(r88)<-hr5@1500 + pref1:a2(r87)<-hr4@1500 + regions=1, blocks=5, points=6 + allocnos=4 (big 0), copies=0, conflicts=0, ranges=4 + +**** Allocnos coloring: + + + Loop 0 (parent -1, header bb2, depth 0) + bbs: 4 3 2 + all: 0r93 1r88 2r87 3r92 + modified regnos: 87 88 92 93 + border: + Pressure: GENERAL_REGS=3 + Hard reg set forest: + 0:( 0-6 8-15 20-51)@0 + 1:( 0-6 36-43)@62000 + 2:( 0-3 5-6 36-43)@38000 + Allocno a0r93 of GENERAL_REGS(15) has 15 avail. regs 0-6 36-43, node: 0-6 36-43 (confl regs = 7-35 44-75) + Allocno a1r88 of GENERAL_REGS(15) has 14 avail. regs 0-3 5-6 36-43, node: 0-3 5-6 36-43 (confl regs = 4 7-35 44-75) + Allocno a2r87 of GENERAL_REGS(15) has 15 avail. regs 0-6 36-43, node: 0-6 36-43 (confl regs = 7-35 44-75) + Allocno a3r92 of GENERAL_REGS(15) has 15 avail. regs 0-6 36-43, node: 0-6 36-43 (confl regs = 7-35 44-75) + Forming thread from colorable bucket: + Pushing a3(r92,l0)(cost 0) + Pushing a0(r93,l0)(cost 0) + Pushing a2(r87,l0)(cost 0) + Pushing a1(r88,l0)(cost 0) + Popping a1(r88,l0) -- assign reg 5 + Popping a2(r87,l0) -- assign reg 4 + Popping a0(r93,l0) -- assign reg 0 + Popping a3(r92,l0) -- assign reg 0 +Disposition: + 2:r87 l0 4 1:r88 l0 5 3:r92 l0 0 0:r93 l0 0 +New iteration of spill/restore move ++++Costs: overall -2000, reg -2000, mem 0, ld 0, st 0, move 0 ++++ move loops 0, new jumps 0 + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={6d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r6={1d,4u} r7={1d,7u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r16={1d,3u} r17={6d,1u} r18={3d} r19={1d,9u,2e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} r87={1d,1u} r88={1d,1u} r92={1d} r93={1d} +;; total ref usage 266{232d,32u,2e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] 87 88 92 93 +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 92) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:DI 92) + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil)))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 13 2 (parallel [ + (set (reg/f:DI 87) + (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0]))) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":50:54 210 {*adddi_1} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 13 12 14 2 (set (reg:DI 4 si) + (reg/f:DI 87)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 87) + (expr_list:REG_EQUAL (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil)))) +(insn 14 13 15 2 (set (reg/f:DI 88) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn 15 14 16 2 (set (reg:DI 5 di) + (reg/f:DI 88)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_DEAD (reg/f:DI 88) + (expr_list:REG_EQUAL (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil)))) +(insn 16 15 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 19 frame) + (const_int -8 [0xfffffffffffffff8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 93)) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 93) + (nil))) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] 16 [argp] 19 [frame] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 0 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest-conftest.c.295r.reload b/conftest-conftest.c.295r.reload new file mode 100644 index 000000000000..8727b3e27b01 --- /dev/null +++ b/conftest-conftest.c.295r.reload @@ -0,0 +1,285 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + +********** Local #1: ********** + + Spilling non-eliminable hard regs: 7 +New elimination table: +Can eliminate 16 to 7 (offset=32, prev_offset=0) +Can eliminate 16 to 6 (offset=8, prev_offset=0) +Can eliminate 19 to 7 (offset=16, prev_offset=0) +Can eliminate 19 to 6 (offset=-8, prev_offset=0) + 2 Scratch win: reject+=2 + alt=0,overall=2,losers=0,rld_nregs=0 + Choosing alt 0 in insn 6: (0) =m (1) m (2) =&r {stack_protect_set_1_di} + 0 Non-pseudo reload: reject+=2 + 0 Non input pseudo reload: reject++ + alt=2,overall=9,losers=1,rld_nregs=1 + 0 Non-pseudo reload: reject+=2 + 0 Non input pseudo reload: reject++ + alt=3,overall=9,losers=1,rld_nregs=1 + 0 Non-pseudo reload: reject+=2 + 0 Non input pseudo reload: reject++ + alt=4,overall=9,losers=1,rld_nregs=1 + alt=5,overall=0,losers=0,rld_nregs=0 + Choosing alt 5 in insn 10: (0) m (1) re {*movdi_internal} + alt=2: Bad operand -- refuse + 1 Non-pseudo reload: reject+=2 + 1 Non input pseudo reload: reject++ + Cycle danger: overall += LRA_MAX_REJECT + alt=3,overall=609,losers=1,rld_nregs=1 + alt=4,overall=0,losers=0,rld_nregs=0 + Choosing alt 4 in insn 14: (0) r (1) i {*movdi_internal} + 1 Non-pseudo reload: reject+=2 + 1 Non input pseudo reload: reject++ + Cycle danger: overall += LRA_MAX_REJECT + alt=0,overall=609,losers=1,rld_nregs=1 + 1 Non-pseudo reload: reject+=2 + 1 Non input pseudo reload: reject++ + Cycle danger: overall += LRA_MAX_REJECT + alt=1,overall=609,losers=1,rld_nregs=1 + 1 Non-pseudo reload: reject+=2 + 1 Non input pseudo reload: reject++ + Cycle danger: overall += LRA_MAX_REJECT + alt=2,overall=609,losers=1,rld_nregs=1 + alt=3,overall=0,losers=0,rld_nregs=0 + Choosing alt 3 in insn 16: (0) q (1) n {*movqi_internal} + alt=0,overall=0,losers=0,rld_nregs=0 + Choosing alt 0 in insn 17: (1) rBwBz {*call_value} + alt=2: Bad operand -- refuse + alt=3,overall=0,losers=0,rld_nregs=0 + Choosing alt 3 in insn 20: (0) r (1) rem {*movdi_internal} + alt=0,overall=0,losers=0,rld_nregs=0 + Choosing alt 0 in insn 21: (0) rBwBz {*call} + 3 Scratch win: reject+=2 + alt=0,overall=2,losers=0,rld_nregs=0 + Choosing alt 0 in insn 28: (1) m (2) m (3) =&r {stack_protect_test_1_di} + alt=0,overall=0,losers=0,rld_nregs=0 + Choosing alt 0 in insn 30: (0) rBwBz {*call} + alt=0,overall=0,losers=0,rld_nregs=0 + Choosing alt 0 in insn 33: (0) =r (1) g {*movsi_internal} + Spilling non-eliminable hard regs: 7 + +********** Inheritance #1: ********** + +EBB 2 +EBB 3 +EBB 4 + +********** Pseudo live ranges #1: ********** + + BB 3 + Insn 30: point = 0, n_alt = 0 + BB 4 + Insn 34: point = 0, n_alt = -1 + Insn 33: point = 0, n_alt = 0 + BB 2 + Insn 29: point = 0, n_alt = -1 + Insn 28: point = 0, n_alt = 0 + Insn 21: point = 2, n_alt = 0 + Insn 20: point = 2, n_alt = 3 + Insn 17: point = 2, n_alt = 0 + Insn 16: point = 2, n_alt = 3 + Insn 15: point = 2, n_alt = -2 + Insn 14: point = 3, n_alt = 4 + Insn 13: point = 4, n_alt = -2 + Insn 12: point = 5, n_alt = -2 + Insn 10: point = 6, n_alt = 5 + Insn 6: point = 6, n_alt = 0 + r87: [4..5] + r88: [2..3] + r92: [6..7] + r93: [0..1] +Compressing live ranges: from 8 to 8 - 100% +Ranges after the compression: + r87: [4..5] + r88: [2..3] + r92: [6..7] + r93: [0..1] + +********** Assignment #1: ********** + + +********** Undoing inheritance #1: ********** + + +********** Local #2: ********** + + Spilling non-eliminable hard regs: 7 + Spilling non-eliminable hard regs: 7 +New elimination table: +Can eliminate 16 to 7 (offset=32, prev_offset=32) +Can eliminate 16 to 6 (offset=8, prev_offset=0) +Can eliminate 19 to 7 (offset=16, prev_offset=16) +Can eliminate 19 to 6 (offset=-8, prev_offset=0) +changing reg in insn 12 +changing reg in insn 13 +changing reg in insn 14 +changing reg in insn 15 +changing reg in insn 6 +changing reg in insn 28 +deleting insn with uid = 13. +deleting insn with uid = 15. + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +ending the processing of deferred insns +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={8d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={1d,12u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={5d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 246{226d,19u,1e} in 17{14 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 16 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn 16 14 17 2 (set (reg:QI 0 ax) + (const_int 0 [0])) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 39 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 39 34 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.297r.postreload b/conftest-conftest.c.297r.postreload new file mode 100644 index 000000000000..e956b75fef88 --- /dev/null +++ b/conftest-conftest.c.297r.postreload @@ -0,0 +1,157 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +rescanning insn with uid = 16. +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={8d,4u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={1d,12u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={5d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 247{226d,20u,1e} in 17{14 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 16 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn 16 14 17 2 (set (reg:QI 0 ax) + (reg:QI 0 ax)) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 39 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 39 34 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.298r.gcse2 b/conftest-conftest.c.298r.gcse2 new file mode 100644 index 000000000000..aae140ba5cb7 --- /dev/null +++ b/conftest-conftest.c.298r.gcse2 @@ -0,0 +1,159 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +expression hash table +size 13, 0 elements, 0.000000 collision/search ratio + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={8d,4u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={1d,12u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={5d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 247{226d,20u,1e} in 17{14 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 16 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn 16 14 17 2 (set (reg:QI 0 ax) + (reg:QI 0 ax)) "conftest.c":50:54 77 {*movqi_internal} + (nil)) +(call_insn 17 16 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 39 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 39 34 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.299r.split2 b/conftest-conftest.c.299r.split2 new file mode 100644 index 000000000000..f3578169d7ba --- /dev/null +++ b/conftest-conftest.c.299r.split2 @@ -0,0 +1,152 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +deleting insn with uid = 16. + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={1d,12u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={5d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 245{225d,19u,1e} in 16{13 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 39 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 39 34 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.300r.ree b/conftest-conftest.c.300r.ree new file mode 100644 index 000000000000..5230ce89f709 --- /dev/null +++ b/conftest-conftest.c.300r.ree @@ -0,0 +1,160 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={1d,12u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={5d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 245{225d,19u,1e} in 16{13 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 39 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 39 34 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.301r.cmpelim b/conftest-conftest.c.301r.cmpelim new file mode 100644 index 000000000000..48849361d70a --- /dev/null +++ b/conftest-conftest.c.301r.cmpelim @@ -0,0 +1,156 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={1d,12u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={5d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 245{225d,19u,1e} in 16{13 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 39 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +;; succ: EXIT [always] count:1073312328 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 39 34 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.302r.pro_and_epilogue b/conftest-conftest.c.302r.pro_and_epilogue new file mode 100644 index 000000000000..b6e3328cb7c4 --- /dev/null +++ b/conftest-conftest.c.302r.pro_and_epilogue @@ -0,0 +1,228 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +Stack clash no probe small stack adjustment in prologue. +Stack clash residual allocation in prologue. +Stack clash no frame pointer needed. +Stack clash not noreturn prologue. +verify found no changes in insn with uid = 12. +Attempting shrink-wrapping optimization. +Block 2 needs prologue due to insn 6: +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +Block 3 needs prologue due to insn 30: +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +After wrapping required blocks, PRO is now 2 +Avoiding non-duplicatable blocks, PRO is now 2 +Bumping back to anticipatable blocks, PRO is now 2 +scanning new insn with uid = 43. +scanning new insn with uid = 44. +scanning new insn with uid = 40. +verify found no changes in insn with uid = 17. +verify found no changes in insn with uid = 21. +verify found no changes in insn with uid = 30. + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={7d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 253{229d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 40 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn/f 40 7 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 -1 + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil))) +(note 41 40 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 41 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (nil)) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (nil)) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (int_list:REG_BR_PROB 1073312332 (nil)) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 42 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(note 42 34 43 4 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 42 44 4 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 -1 + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil))) +(jump_insn 44 43 47 4 (simple_return) "conftest.c":53:50 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 39) +(note 39 47 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.303r.dse2 b/conftest-conftest.c.303r.dse2 new file mode 100644 index 000000000000..1abc310d2fa4 --- /dev/null +++ b/conftest-conftest.c.303r.dse2 @@ -0,0 +1,301 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) + +**scanning insn=40 + adding wild read for (clobber (mem:BLK (scratch)) +mems_found = 0, cannot_delete = true + +**scanning insn=6 + stack protector canary read ignored. + mem: (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) + + after canon_rtx address: (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) + + after cselib_expand address: (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) + + after canon_rtx address: (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) + varying cselib base=2:4306 offset = 8 + processing cselib store [8..16) +mems_found = 1, cannot_delete = true + +**scanning insn=9 + +**scanning insn=10 + mem: (reg/f:DI 7 sp) + + after canon_rtx address: (reg/f:DI 7 sp) + + after cselib_expand address: (reg/f:DI 7 sp) + + after canon_rtx address: (reg/f:DI 7 sp) + varying cselib base=2:4306 offset = 0 + processing cselib store [0..8) + trying store in insn=6 gid=-1[8..16) +mems_found = 1, cannot_delete = false + +**scanning insn=11 + +**scanning insn=12 +mems_found = 0, cannot_delete = true + +**scanning insn=14 +mems_found = 0, cannot_delete = true + +**scanning insn=17 + mem: (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + + after canon_rtx address: (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + gid=0 offset=0 + processing const load gid=0[0..1) + +**scanning insn=18 + +**scanning insn=20 + mem: (reg/f:DI 7 sp) + + after canon_rtx address: (reg/f:DI 7 sp) + + after cselib_expand address: (reg/f:DI 7 sp) + + after canon_rtx address: (reg/f:DI 7 sp) + varying cselib base=2:4306 offset = 0 + processing cselib load mem:(mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) +mems_found = 0, cannot_delete = true + +**scanning insn=21 + mem: (symbol_ref:DI ("free") [flags 0x41] ) + + after canon_rtx address: (symbol_ref:DI ("free") [flags 0x41] ) + gid=1 offset=0 + processing const load gid=1[0..1) + +**scanning insn=22 + +**scanning insn=28 + stack protector canary read ignored. + stack protector canary read ignored. +mems_found = 0, cannot_delete = true + +**scanning insn=29 +mems_found = 0, cannot_delete = true + +**scanning insn=30 + mem: (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + + after canon_rtx address: (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + gid=2 offset=0 + processing const load gid=2[0..1) + +**scanning insn=33 +mems_found = 0, cannot_delete = true + +**scanning insn=34 +mems_found = 0, cannot_delete = false + +**scanning insn=43 + adding wild read for (clobber (mem:BLK (scratch)) +mems_found = 0, cannot_delete = true + +**scanning insn=44 +mems_found = 0, cannot_delete = false +group 0(0+0): n p +group 1(0+0): n p +group 2(0+0): n p +dse: local deletions = 0, global deletions = 0 +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={7d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 253{229d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 40 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn/f 40 7 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 -1 + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 41 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 42 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(note 42 34 43 4 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 42 44 4 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 -1 + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(jump_insn 44 43 47 4 (simple_return) "conftest.c":53:50 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 39) +(note 39 47 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.304r.csa b/conftest-conftest.c.304r.csa new file mode 100644 index 000000000000..1546e51771c8 --- /dev/null +++ b/conftest-conftest.c.304r.csa @@ -0,0 +1,193 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={7d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 253{229d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 40 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn/f 40 7 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 -1 + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 41 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 42 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(note 42 34 43 4 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 42 44 4 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 -1 + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(jump_insn 44 43 47 4 (simple_return) "conftest.c":53:50 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 39) +(note 39 47 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.305r.jump2 b/conftest-conftest.c.305r.jump2 new file mode 100644 index 000000000000..e768c7b3a04c --- /dev/null +++ b/conftest-conftest.c.305r.jump2 @@ -0,0 +1,192 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +try_optimize_cfg iteration 1 + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={7d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 253{229d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 40 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn/f 40 7 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 -1 + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 41 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 42 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(note 42 34 43 4 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 42 44 4 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 -1 + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(jump_insn 44 43 47 4 (simple_return) "conftest.c":53:50 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 39) +(note 39 47 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.306r.compgotos b/conftest-conftest.c.306r.compgotos new file mode 100644 index 000000000000..f6d1f8412597 --- /dev/null +++ b/conftest-conftest.c.306r.compgotos @@ -0,0 +1,188 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={7d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 253{229d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 40 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn/f 40 7 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 -1 + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 41 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 33 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 33 37 34 4 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":53:50 75 {*movsi_internal} + (nil)) +(insn 34 33 42 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(note 42 34 43 4 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 42 44 4 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 -1 + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(jump_insn 44 43 47 4 (simple_return) "conftest.c":53:50 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 39) +(note 39 47 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.308r.peephole2 b/conftest-conftest.c.308r.peephole2 new file mode 100644 index 000000000000..11fb795d18b6 --- /dev/null +++ b/conftest-conftest.c.308r.peephole2 @@ -0,0 +1,298 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) + + +main + +Dataflow summary: +def_info->table_size = 225, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={7d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 253{229d,23u,1e} in 19{16 regular + 3 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d6(0){ }d10(1){ }d14(2){ }d19(4){ }d25(5){ }d26(7){ }d62(20){ }d66(21){ }d70(22){ }d74(23){ }d78(24){ }d82(25){ }d86(26){ }d90(27){ }d118(36){ }d122(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 7 [sp] +;; live out 7 [sp] + +( 0 )->[2]->( 4 3 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +;; lr out 7 [sp] +;; live out 7 [sp] + +( 2 )->[3]->( ) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +;; lr out 7 [sp] +;; live out 7 [sp] + +( 2 )->[4]->( 1 ) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +( 4 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 29 to worklist + Adding insn 28 to worklist + Adding insn 21 to worklist + Adding insn 17 to worklist + Adding insn 10 to worklist + Adding insn 6 to worklist + Adding insn 30 to worklist + Adding insn 44 to worklist + Adding insn 34 to worklist +Finished finding needed instructions: +processing block 4 lr out = 0 [ax] 7 [sp] + Adding insn 43 to worklist + Adding insn 33 to worklist +processing block 3 lr out = 7 [sp] +processing block 2 lr out = 7 [sp] + Adding insn 20 to worklist + Adding insn 14 to worklist + Adding insn 12 to worklist + Adding insn 40 to worklist +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +Splitting with gen_peephole2_171 (i386.md:20322) +scanning new insn with uid = 50. +deleting insn with uid = 33. +verify found no changes in insn with uid = 50. +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 40 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn/f 40 7 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 -1 + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 41 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 50 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 50 37 34 4 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 -1 + (nil)) +(insn 34 50 42 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(note 42 34 43 4 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 42 44 4 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 -1 + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(jump_insn 44 43 47 4 (simple_return) "conftest.c":53:50 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 39) +(note 39 47 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.309r.ce3 b/conftest-conftest.c.309r.ce3 new file mode 100644 index 000000000000..96dd1e9a01fd --- /dev/null +++ b/conftest-conftest.c.309r.ce3 @@ -0,0 +1,314 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 3 4 +;; 2 succs { 4 3 } +;; 3 succs { } +;; 4 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) + + +main + +Dataflow summary: +def_info->table_size = 225, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d6(0){ }d10(1){ }d14(2){ }d19(4){ }d25(5){ }d26(7){ }d62(20){ }d66(21){ }d70(22){ }d74(23){ }d78(24){ }d82(25){ }d86(26){ }d90(27){ }d118(36){ }d122(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 7 [sp] +;; live out 7 [sp] + +( 0 )->[2]->( 4 3 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +;; lr out 7 [sp] +;; live out 7 [sp] + +( 2 )->[3]->( ) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +;; lr out 7 [sp] +;; live out 7 [sp] + +( 2 )->[4]->( 1 ) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +( 4 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 29 to worklist + Adding insn 28 to worklist + Adding insn 21 to worklist + Adding insn 17 to worklist + Adding insn 10 to worklist + Adding insn 6 to worklist + Adding insn 30 to worklist + Adding insn 44 to worklist + Adding insn 34 to worklist +Finished finding needed instructions: +processing block 4 lr out = 0 [ax] 7 [sp] + Adding insn 43 to worklist + Adding insn 50 to worklist +processing block 3 lr out = 7 [sp] +processing block 2 lr out = 7 [sp] + Adding insn 20 to worklist + Adding insn 14 to worklist + Adding insn 12 to worklist + Adding insn 40 to worklist +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) + +IF-CASE-2 found, start 2, else 4 + + +========== no more changes + +1 possible IF blocks searched. +0 IF blocks converted. +0 true changes made. + + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 40 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn/f 40 7 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 -1 + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 41 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 50 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 50 37 34 4 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 -1 + (nil)) +(insn 34 50 42 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(note 42 34 43 4 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 42 44 4 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 -1 + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(jump_insn 44 43 47 4 (simple_return) "conftest.c":53:50 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 39) +(note 39 47 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.311r.cprop_hardreg b/conftest-conftest.c.311r.cprop_hardreg new file mode 100644 index 000000000000..1da305839014 --- /dev/null +++ b/conftest-conftest.c.311r.cprop_hardreg @@ -0,0 +1,202 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +deferring rescan insn with uid = 12. +starting the processing of deferred insns +verify found no changes in insn with uid = 12. +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 40 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn/f 40 7 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 41 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 50 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 50 37 34 4 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 34 50 42 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(note 42 34 43 4 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 42 44 4 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(jump_insn 44 43 47 4 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 39) +(note 39 47 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.312r.rtl_dce b/conftest-conftest.c.312r.rtl_dce new file mode 100644 index 000000000000..a1618aef7609 --- /dev/null +++ b/conftest-conftest.c.312r.rtl_dce @@ -0,0 +1,292 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d6(0){ }d10(1){ }d14(2){ }d19(4){ }d25(5){ }d26(7){ }d62(20){ }d66(21){ }d70(22){ }d74(23){ }d78(24){ }d82(25){ }d86(26){ }d90(27){ }d118(36){ }d122(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 7 [sp] +;; live out 7 [sp] + +( 0 )->[2]->( 4 3 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +;; lr out 7 [sp] +;; live out 7 [sp] + +( 2 )->[3]->( ) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +;; lr out 7 [sp] +;; live out 7 [sp] + +( 2 )->[4]->( 1 ) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +( 4 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 29 to worklist + Adding insn 28 to worklist + Adding insn 21 to worklist + Adding insn 17 to worklist + Adding insn 10 to worklist + Adding insn 6 to worklist + Adding insn 30 to worklist + Adding insn 44 to worklist + Adding insn 34 to worklist +Finished finding needed instructions: +processing block 4 lr out = 0 [ax] 7 [sp] + Adding insn 43 to worklist + Adding insn 50 to worklist +processing block 3 lr out = 7 [sp] +processing block 2 lr out = 7 [sp] + Adding insn 20 to worklist + Adding insn 14 to worklist + Adding insn 12 to worklist + Adding insn 40 to worklist +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (HOT_PARTITION, RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 40 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn/f 40 7 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 41 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; succ: 4 [100.0% (guessed)] count:1073312328 (estimated locally) +;; 3 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 429496 (estimated locally) +;; prev block 2, next block 4, flags: (HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(note 36 29 30 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 3 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 32) +;; basic block 4, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 3, next block 1, flags: (HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(code_label 32 31 37 4 2 (nil) [1 uses]) +(note 37 32 50 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(insn 50 37 34 4 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 34 50 42 4 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(note 42 34 43 4 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 42 44 4 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(jump_insn 44 43 47 4 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 39) +(note 39 47 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.313r.bbro b/conftest-conftest.c.313r.bbro new file mode 100644 index 000000000000..939cdeb365a5 --- /dev/null +++ b/conftest-conftest.c.313r.bbro @@ -0,0 +1,447 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +try_optimize_cfg iteration 1 + +rescanning insn with uid = 29. +rescanning insn with uid = 29. + +Reordering with the STC algorithm. + +STC - round 1 +Getting bb 2 +Basic block 2 was visited in trace 1 + Possible start of next round: 3 (key: -4) +Basic block 4 was visited in trace 1 +STC - round 2 +Getting bb 3 + Possible start point of next round: 3 (key: -4) +STC - round 3 +Getting bb 3 + Possible start point of next round: 3 (key: -4) +STC - round 4 +Getting bb 3 +Basic block 3 was visited in trace 2 +Trace 1 (round 1): 2 [1073741824 (estimated locally)] 4 [1073312328 (estimated locally)] +Trace 2 (round 4): 3 [429496 (estimated locally)] +Final order: +2 4 3 +Reordered sequence: + 2 bb 2 + 3 bb 4 + 4 bb 3 + +5 basic blocks, 4 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL) +;; pred: +;; bb 0 artificial_defs: { d6(0){ }d10(1){ }d14(2){ }d19(4){ }d25(5){ }d26(7){ }d62(20){ }d66(21){ }d70(22){ }d74(23){ }d78(24){ }d82(25){ }d86(26){ }d90(27){ }d118(36){ }d122(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 7 [sp] +;; live out 7 [sp] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] + +(note 7 0 40 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn/f 40 7 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 41 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 36 2 (set (pc) + (if_then_else (eq (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref 32) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 1073312332 (nil))) + -> 32) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; succ: 3 [100.0% (guessed)] count:1073312328 (estimated locally) (CAN_FALLTHRU) +;; 4 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU,CAN_FALLTHRU) + +;; basic block 3, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) (CAN_FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] + +(code_label 32 30 37 3 2 (nil) [1 uses]) +(note 37 32 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn 50 37 34 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 34 50 42 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(note 42 34 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 42 44 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(jump_insn 44 43 0 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +;; succ: EXIT [always] count:1073312328 (estimated locally) + +;; basic block 4, loop depth 0, count 429496 (estimated locally) +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill + +(note 36 29 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 32 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; succ: + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 4, next block (nil), flags: (REACHABLE, RTL) +;; pred: 3 [always] count:1073312328 (estimated locally) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + + + +try_optimize_cfg iteration 1 + +Emitting label for block 4 +rescanning insn with uid = 29. +Reordered sequence: + 2 bb 2 + 3 bb 3 + 4 bb 4 + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 40 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn/f 40 7 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 41 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +;; succ: 3 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; 4 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn 50 37 34 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 34 50 42 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(note 42 34 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 42 44 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(jump_insn 44 43 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 51) +;; basic block 4, loop depth 0, count 429496 (estimated locally) +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.314r.split3 b/conftest-conftest.c.314r.split3 new file mode 100644 index 000000000000..8b6e6fb1b51f --- /dev/null +++ b/conftest-conftest.c.314r.split3 @@ -0,0 +1,192 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 40 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn/f 40 7 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 41 6 2 NOTE_INSN_FUNCTION_BEG) +(insn 6 4 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 10 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 10 9 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 12 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(insn 12 11 14 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 14 12 17 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(call_insn 17 14 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +;; succ: 3 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; 4 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn 50 37 34 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 34 50 42 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(note 42 34 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 42 44 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(jump_insn 44 43 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 51) +;; basic block 4, loop depth 0, count 429496 (estimated locally) +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.315r.sched2 b/conftest-conftest.c.315r.sched2 new file mode 100644 index 000000000000..25f19cc06401 --- /dev/null +++ b/conftest-conftest.c.315r.sched2 @@ -0,0 +1,343 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) + + +main + +Dataflow summary: +def_info->table_size = 225, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d6(0){ }d10(1){ }d14(2){ }d19(4){ }d25(5){ }d26(7){ }d62(20){ }d66(21){ }d70(22){ }d74(23){ }d78(24){ }d82(25){ }d86(26){ }d90(27){ }d118(36){ }d122(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 7 [sp] +;; live out 7 [sp] + +( 0 )->[2]->( 3 4 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +;; lr out 7 [sp] +;; live out 7 [sp] + +( 2 )->[3]->( 1 ) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +( 2 )->[4]->( ) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +;; lr out 7 [sp] +;; live out 7 [sp] + +( 3 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 29 to worklist + Adding insn 28 to worklist + Adding insn 21 to worklist + Adding insn 17 to worklist + Adding insn 10 to worklist + Adding insn 6 to worklist + Adding insn 44 to worklist + Adding insn 34 to worklist + Adding insn 30 to worklist +Finished finding needed instructions: +processing block 3 lr out = 0 [ax] 7 [sp] + Adding insn 43 to worklist + Adding insn 50 to worklist +processing block 4 lr out = 7 [sp] +processing block 2 lr out = 7 [sp] + Adding insn 20 to worklist + Adding insn 14 to worklist + Adding insn 12 to worklist + Adding insn 40 to worklist +df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 4 count 5 ( 1) +;; ====================================================== +;; -- basic block 2 from 40 to 29 -- after reload +;; ====================================================== + +;; 0--> b 0: i 40 {sp=sp-0x18;clobber flags;clobber [scratch];}:hsw_decodern,hsw_p0156 +;; 0--> b 0: i 14 di=`*.LC0' :hsw_decodern,hsw_p1|hsw_p5 +;; 1--> b 0: i 6 {[sp+0x8]=unspec[[0x28]] 79;ax=0;clobber flags;}:hsw_decoder0 +;; 1--> b 0: i 9 debug_marker :nothing +;; 1--> b 0: i 12 si=sp :hsw_decodern,hsw_p0156 +;; 1--> b 0: i 10 [sp]=0 :hsw_decodern,(hsw_p4+(hsw_p2|hsw_p3|hsw_p7)) +;; 1--> b 0: i 11 debug_marker :nothing +;; 7--> b 0: i 17 ax=call [`*__isoc99_scanf'] :hsw_decoder0 +;; 7--> b 0: i 18 debug_marker :nothing +;; 7--> b 0: i 20 di=[sp] :hsw_decodern,hsw_p23 +;; 9--> b 0: i 21 call [`free'] :hsw_decoder0 +;; 9--> b 0: i 22 debug_marker :nothing +;; 10--> b 0: i 28 {flags=unspec[[sp+0x8],[0x28]] 80;clobber ax;}:hsw_decoder0 +;; 10--> b 0: i 29 pc={(flags!=0)?L51:pc} :hsw_decodern,hsw_p6 +;; Ready list (final): +;; total time = 10 +;; new head = 40 +;; new tail = 29 + +;; ====================================================== +;; -- basic block 3 from 50 to 44 -- after reload +;; ====================================================== + +;; 0--> b 0: i 50 {ax=0;clobber flags;} :hsw_decodern,hsw_p0156 +;; 0--> b 0: i 43 {sp=sp+0x18;clobber flags;clobber [scratch];}:hsw_decodern,hsw_p0156 +;; 0--> b 0: i 34 use ax :nothing +;; 1--> b 0: i 44 simple_return :hsw_decoder0 +;; Ready list (final): +;; total time = 1 +;; new head = 50 +;; new tail = 44 + +;; ====================================================== +;; -- basic block 4 from 30 to 30 -- after reload +;; ====================================================== + +;; 0--> b 0: i 30 call [`__stack_chk_fail'] :hsw_decoder0 +;; Ready list (final): +;; total time = 0 +;; new head = 30 +;; new tail = 30 + + + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 6 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn:TI 6 14 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 12 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 12 9 10 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 10 12 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 17 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(call_insn:TI 17 11 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn:TI 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +;; succ: 3 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; 4 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 51) +;; basic block 4, loop depth 0, count 429496 (estimated locally) +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.317r.stack b/conftest-conftest.c.317r.stack new file mode 100644 index 000000000000..cb3336a64cd9 --- /dev/null +++ b/conftest-conftest.c.317r.stack @@ -0,0 +1,194 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 6 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn:TI 6 14 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 12 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 12 9 10 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 10 12 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 17 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(call_insn:TI 17 11 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn:TI 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +;; succ: 3 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; 4 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 51) +;; basic block 4, loop depth 0, count 429496 (estimated locally) +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.318r.zero_call_used_regs b/conftest-conftest.c.318r.zero_call_used_regs new file mode 100644 index 000000000000..b8260e49e062 --- /dev/null +++ b/conftest-conftest.c.318r.zero_call_used_regs @@ -0,0 +1,192 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 6 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn:TI 6 14 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 12 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 12 9 10 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 10 12 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 17 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(call_insn:TI 17 11 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn:TI 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +;; succ: 3 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; 4 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 51) +;; basic block 4, loop depth 0, count 429496 (estimated locally) +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.319r.alignments b/conftest-conftest.c.319r.alignments new file mode 100644 index 000000000000..c88ff9c69471 --- /dev/null +++ b/conftest-conftest.c.319r.alignments @@ -0,0 +1,398 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + +5 basic blocks, 4 edges. +;; bb 0 artificial_defs: { d6(0){ }d10(1){ }d14(2){ }d19(4){ }d25(5){ }d26(7){ }d62(20){ }d66(21){ }d70(22){ }d74(23){ }d78(24){ }d82(25){ }d86(26){ }d90(27){ }d118(36){ }d122(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 7 [sp] +;; live out 7 [sp] + + +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] + +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 6 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn:TI 6 14 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 12 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 12 9 10 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 10 12 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 17 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(call_insn:TI 17 11 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn:TI 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +;; lr out 7 [sp] +;; live out 7 [sp] + + +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] + +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + + +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill + +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; lr out 7 [sp] +;; live out 7 [sp] + + +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill + +;; lr out +;; live out + + + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 3 4 +;; 2 succs { 3 4 } +;; 3 succs { 1 } +;; 4 succs { } +count_max: 1073741824 (estimated locally) +BB 2 loop 0 loop_depth 0 skipped. +BB 3 loop 0 loop_depth 0 skipped. +BB 4 loop 0 loop_depth 0 skipped. + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 19{16 regular + 3 call} insns. +(note 1 0 7 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 6 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn:TI 6 14 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(debug_insn 9 6 12 2 (debug_marker) "conftest.c":49:54 -1 + (nil)) +(insn 12 9 10 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 10 12 11 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(debug_insn 11 10 17 2 (debug_marker) "conftest.c":50:54 -1 + (nil)) +(call_insn:TI 17 11 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(debug_insn 18 17 20 2 (debug_marker) "conftest.c":51:54 -1 + (nil)) +(insn 20 18 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(debug_insn 22 21 28 2 (debug_marker) "conftest.c":52:54 -1 + (nil)) +(insn:TI 28 22 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +;; succ: 3 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; 4 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 51) +;; basic block 4, loop depth 0, count 429496 (estimated locally) +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.320r.vartrack b/conftest-conftest.c.320r.vartrack new file mode 100644 index 000000000000..876793594bfc --- /dev/null +++ b/conftest-conftest.c.320r.vartrack @@ -0,0 +1,1724 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +first value: 9 +bb 2 op 0 insn 40 MO_CLOBBER (reg:CC 17 flags) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + from insn 1 (reg:SI 5 di [ argc ]) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + from insn 1 (reg:DI 4 si [ argv ]) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 40 (reg/f:DI 7 sp) + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +next uid 10 +bb 2 op 1 insn 40 MO_ADJUST (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) +bb 2 op 2 insn 14 MO_VAL_SET (concat/u:DI (value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] ))) +(insn 14 41 6 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + from insn 1 (reg:DI 4 si [ argv ]) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (reg/f:DI 5 di [88]) + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 40 (reg/f:DI 7 sp) + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +next uid 11 +bb 2 op 3 insn 6 MO_CLOBBER (reg:CC 17 flags) +bb 2 op 4 insn 6 MO_VAL_SET (concat/u:DI (value/u:DI 11:4257 @0x2a02908/0x294b128) + (set (reg:DI 0 ax [92]) + (const_int 0 [0]))) +(insn:TI 6 14 9 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 16 argp) + (const_int -24 [0xffffffffffffffe8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 6 (reg:DI 0 ax [92]) + from insn 6 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + from insn 1 (reg:DI 4 si [ argv ]) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (reg/f:DI 5 di [88]) + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 40 (reg/f:DI 7 sp) + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +next uid 13 +deleting insn with uid = 9. +bb 2 op 5 insn 12 MO_VAL_SET (concat/u:DI (value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + (set (reg/f:DI 4 si [87]) + (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0])))) +(insn 12 53 10 2 (set (reg/f:DI 4 si [87]) + (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0]))) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 6 (reg:DI 0 ax [92]) + from insn 6 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (reg/f:DI 5 di [88]) + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 12 (reg/f:DI 4 si [87]) + from insn 40 (reg/f:DI 7 sp) + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +next uid 13 +bb 2 op 6 insn 10 MO_VAL_SET (concat/u:DI (concat:DI (value/u:DI 11:4257 @0x2a02908/0x294b128) + (mem/f/c:DI (value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) [1 p+0 S8 A64])) + (mem/f/c:DI (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0])) [1 p+0 S8 A64])) +(insn 10 12 11 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0])) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 10 (mem/f/c:DI (value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) [1 p+0 S8 A64]) + from insn 6 (reg:DI 0 ax [92]) + from insn 6 (const_int 0 [0]) + no addrs last mem +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (reg/f:DI 5 di [88]) + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 12 (reg/f:DI 4 si [87]) + from insn 40 (reg/f:DI 7 sp) + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + addr list: + (value/u:DI 11:4257 @0x2a02908/0x294b128) +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +first mem (value/u:DI 11:4257 @0x2a02908/0x294b128) +next uid 13 +deleting insn with uid = 11. +bb 2 op 7 insn 17 MO_CALL (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) +bb 2 op 8 insn 17 MO_CLOBBER (reg:SI 0 ax) +(call_insn:TI 17 54 18 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 6 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 40 (reg/f:DI 7 sp) + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +next uid 13 +deleting insn with uid = 18. +bb 2 op 9 insn 20 MO_VAL_USE (concat/v:DI (concat (value/u:DI 13:13 @0x2a02928/0x294b178) + (mem/f/c:DI (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0])) [1 p+0 S8 A64])) + (mem/f/c:DI (value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) [1 p+0 S8 A64])) +bb 2 op 10 insn 20 MO_VAL_SET (concat/u:DI (value/u:DI 13:13 @0x2a02928/0x294b178) + (set (reg:DI 5 di) + (mem/f/c:DI (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0])) [1 p+0 S8 A64]))) +(insn 20 55 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0])) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 6 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u:DI 13:13 @0x2a02928/0x294b178) + locs: + from insn 20 (reg:DI 5 di) + from insn 20 (mem/f/c:DI (value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) [1 p+0 S8 A64]) + no addrs last mem +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 40 (reg/f:DI 7 sp) + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + addr list: + (value/u:DI 13:13 @0x2a02928/0x294b178) +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +first mem (value/u:DI 13:13 @0x2a02928/0x294b178) +next uid 14 +bb 2 op 11 insn 21 MO_CALL (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) +(call_insn:TI 21 20 22 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 6 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u:DI 13:13 @0x2a02928/0x294b178) no locs no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 40 (reg/f:DI 7 sp) + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +next uid 14 +deleting insn with uid = 22. +bb 2 op 12 insn 28 MO_CLOBBER (reg:DI 0 ax [93]) +bb 2 op 13 insn 28 MO_CLOBBER (reg:CCZ 17 flags) +(insn:TI 28 56 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 16 argp) + (const_int -24 [0xffffffffffffffe8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 6 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u:DI 13:13 @0x2a02928/0x294b178) no locs no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 40 (reg/f:DI 7 sp) + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +next uid 14 +bb 2 op 14 insn 29 MO_USE_NO_VAR (reg:CCZ 17 flags) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 6 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u:DI 13:13 @0x2a02928/0x294b178) no locs no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 40 (reg/f:DI 7 sp) + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +next uid 14 +bb 3 op 0 insn 50 MO_CLOBBER (reg:CC 17 flags) +bb 3 op 1 insn 50 MO_VAL_SET (concat/u:DI (value/u:DI 11:4257 @0x2a02908/0x294b128) + (set (reg:DI 0 ax) + (const_int 0 [0]))) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 50 (reg:DI 0 ax) + from insn 6 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u:DI 13:13 @0x2a02928/0x294b178) no locs no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 40 (reg/f:DI 7 sp) + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +next uid 14 +bb 3 op 2 insn 43 MO_CLOBBER (reg:CC 17 flags) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 16 argp) + (const_int -8 [0xfffffffffffffff8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 43 (reg/f:DI 7 sp) + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 50 (reg:DI 0 ax) + from insn 6 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u:DI 13:13 @0x2a02928/0x294b178) no locs no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +next uid 14 +bb 3 op 3 insn 43 MO_ADJUST (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) +bb 3 op 4 insn 34 MO_USE_NO_VAR (reg/i:SI 0 ax) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 43 (reg/f:DI 7 sp) + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 50 (reg:DI 0 ax) + from insn 6 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u:DI 13:13 @0x2a02928/0x294b178) no locs no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +next uid 14 +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +cselib hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 43 (reg/f:DI 7 sp) + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 50 (reg:DI 0 ax) + from insn 6 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u:DI 13:13 @0x2a02928/0x294b178) no locs no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +cselib preserved hash table: +next uid 14 +first value: 14 +bb 4 op 0 insn 30 MO_CALL (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +cselib hash table: +cselib preserved hash table: +(value/u:DI 1:1 @0x2a02868/0x294af98) + locs: + from insn 1 (value/u:DI 4:4339 @0x2a02898/0x294b010) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x2a02878/0x294afc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x2a02888/0x294afe8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x2a02868/0x294af98) + (const_int -8 [0xfffffffffffffff8])) + no addrs +(value/u:SI 5:5 @0x2a028a8/0x294b038) + locs: + from insn 1 (value/u:SI 6:229 @0x2a028b8/0x294b060) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + no addrs +(value:DI 12:4315 @0x2a02918/0x294b150) + locs: + from insn 6 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -16 [0xfffffffffffffff0])) + no addrs +(value/u:DI 7:7 @0x2a028c8/0x294b088) + locs: + from insn 1 (value/u:DI 8:230 @0x2a028d8/0x294b0b0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + no addrs +(value/u:DI 10:3140853979 @0x2a028f8/0x294b100) + locs: + from insn 14 (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + no addrs +(value/u:DI 11:4257 @0x2a02908/0x294b128) + locs: + from insn 6 (const_int 0 [0]) + no addrs +(value/u:SI 6:229 @0x2a028b8/0x294b060) + locs: + from insn 1 (value/u:SI 5:5 @0x2a028a8/0x294b038) + no addrs +(value/u:DI 8:230 @0x2a028d8/0x294b0b0) + locs: + from insn 1 (value/u:DI 7:7 @0x2a028c8/0x294b088) + no addrs +(value/u:DI 3:4322 @0x2a02888/0x294afe8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + no addrs +(value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) + locs: + (reg/f:DI 7 sp) + from insn 40 (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) + no addrs +(value/u:DI 4:4339 @0x2a02898/0x294b010) + locs: + from insn 1 (value/u:DI 1:1 @0x2a02868/0x294af98) + no addrs +next uid 14 +14: (reg/f:DI 5 di [88]) evaluates to (value/u:DI 10:3140853979 @0x2a028f8/0x294b100) +14: (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) +6: (reg:DI 0 ax [92]) evaluates to (value/u:DI 11:4257 @0x2a02908/0x294b128) +6: (const_int 0 [0]) +12: (reg/f:DI 4 si [87]) evaluates to (value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) +40: (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) +10: (mem/f/c:DI (value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) [1 p+0 S8 A64]) evaluates to (value/u:DI 11:4257 @0x2a02908/0x294b128) +6: (const_int 0 [0]) +20: (value/u:DI 13:13 @0x2a02928/0x294b178) is at (mem/f/c:DI (value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) [1 p+0 S8 A64]) +20: (reg:DI 5 di) evaluates to (value/u:DI 13:13 @0x2a02928/0x294b178) +dataflow difference found: addition of: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) +dataflow difference found: addition of: + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) +BB 2: in 7 (was 0), out 13 (was 0), rem 2 + 0, tsz 6 +BB 2 IN: +Stack adjustment: 8 +Reg 4:(value/u:DI 7:7 @0x2a028c8/0x294b088) ++0 +Reg 5:(value/u:SI 5:5 @0x2a028a8/0x294b038) ++0 +Variables: + (value/u:DI 7:7 @0x2a028c8/0x294b088) + offset 0 + (reg:DI 4 si [ argv ]) + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) + (value/u:SI 5:5 @0x2a028a8/0x294b038) + offset 0 + (reg:SI 5 di [ argc ]) + +BB 2 OUT: +Stack adjustment: 32 +Variables: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) + +dataflow difference found: addition of: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) +dataflow difference found: addition of: + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) +BB 4: in 13 (was 0), out 13 (was 0), rem 1 + 0, tsz 18 +BB 4 IN: +Stack adjustment: 32 +Variables: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) + +BB 4 OUT: +Stack adjustment: 32 +Variables: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) + +50: (reg:DI 0 ax) evaluates to (value/u:DI 11:4257 @0x2a02908/0x294b128) +6: (const_int 0 [0]) +dataflow difference found: addition of: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) +dataflow difference found: addition of: + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) +dataflow difference found: addition of: + (value/u:DI 11:4257 @0x2a02908/0x294b128) + offset 0 + (reg:DI 0 ax) +BB 3: in 13 (was 0), out 7 (was 0), rem 0 + 0, tsz 24 +BB 3 IN: +Stack adjustment: 32 +Variables: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) + +BB 3 OUT: +Stack adjustment: 8 +Reg 0:(value/u:DI 11:4257 @0x2a02908/0x294b128) ++0 +Variables: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) + (value/u:DI 11:4257 @0x2a02908/0x294b128) + offset 0 + (reg:DI 0 ax) + + +Basic block 2: +IN: +Stack adjustment: 8 +Reg 4:(value/u:DI 7:7 @0x2a028c8/0x294b088) ++0 +Reg 5:(value/u:SI 5:5 @0x2a028a8/0x294b038) ++0 +Variables: + (value/u:DI 7:7 @0x2a028c8/0x294b088) + offset 0 + (reg:DI 4 si [ argv ]) + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) + (value/u:SI 5:5 @0x2a028a8/0x294b038) + offset 0 + (reg:SI 5 di [ argc ]) + +OUT: +Stack adjustment: 32 +Variables: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) + + +Basic block 3: +IN: +Stack adjustment: 32 +Variables: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) + +OUT: +Stack adjustment: 8 +Reg 0:(value/u:DI 11:4257 @0x2a02908/0x294b128) ++0 +Variables: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) + (value/u:DI 11:4257 @0x2a02908/0x294b128) + offset 0 + (reg:DI 0 ax) + + +Basic block 4: +IN: +Stack adjustment: 32 +Variables: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) + +OUT: +Stack adjustment: 32 +Variables: + name: argc + offset 0 + (value/u:SI 5:5 @0x2a028a8/0x294b038) + name: argv + offset 0 + (value/u:DI 7:7 @0x2a028c8/0x294b088) + + +5 basic blocks, 4 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL) +;; pred: +;; bb 0 artificial_defs: { d6(0){ }d10(1){ }d14(2){ }d19(4){ }d25(5){ }d26(7){ }d62(20){ }d66(21){ }d70(22){ }d74(23){ }d78(24){ }d82(25){ }d86(26){ }d90(27){ }d118(36){ }d122(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 7 [sp] +;; live out 7 [sp] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] + +(note 7 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 6 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(insn:TI 6 14 53 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 53 6 12 2 conftest.c:49 NOTE_INSN_BEGIN_STMT) +(insn 12 53 10 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(insn 10 12 54 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(note 54 10 17 2 conftest.c:50 NOTE_INSN_BEGIN_STMT) +(call_insn:TI 17 54 55 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(note 55 17 20 2 conftest.c:51 NOTE_INSN_BEGIN_STMT) +(insn 20 55 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 56 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(note 56 21 28 2 conftest.c:52 NOTE_INSN_BEGIN_STMT) +(insn:TI 28 56 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; succ: 3 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; 4 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) + +;; basic block 3, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] + +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +;; succ: EXIT [always] count:1073312328 (estimated locally) + +;; basic block 4, loop depth 0, count 429496 (estimated locally) +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill + +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (nil)) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; succ: + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 4, next block (nil), flags: (REACHABLE, RTL) +;; pred: 3 [always] count:1073312328 (estimated locally) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + +14: (reg/f:DI 5 di [88]) evaluates to (value/u:DI 10:3140853979 @0x2a028f8/0x294b100) +14: (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) +6: (reg:DI 0 ax [92]) evaluates to (value/u:DI 11:4257 @0x2a02908/0x294b128) +6: (const_int 0 [0]) +12: (reg/f:DI 4 si [87]) evaluates to (value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) +40: (plus:DI (value/u/c:DI 2:2 @0x2a02878/0x294afc0) + (const_int -24 [0xffffffffffffffe8])) +10: (mem/f/c:DI (value/u/f/j:DI 9:4307 @0x2a028e8/0x294b0d8) [1 p+0 S8 A64]) evaluates to (value/u/f:DI 11:4257 @0x2a02908/0x294b128) +6: (const_int 0 [0]) +20: (value/u:DI 13:13 @0x2a02928/0x294b178) is at (mem/f/c:DI (value/u/j:DI 9:4307 @0x2a028e8/0x294b0d8) [1 p+0 S8 A64]) +20: (reg:DI 5 di) evaluates to (value/u/f:DI 13:13 @0x2a02928/0x294b178) +50: (reg:DI 0 ax) evaluates to (value/u/f:DI 11:4257 @0x2a02908/0x294b128) +6: (const_int 0 [0]) + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 15{12 regular + 3 call} insns. +(note 1 0 57 NOTE_INSN_DELETED) +(note 57 1 58 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 58 57 7 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 3, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; live kill 0 [ax] 17 [flags] +(note 7 58 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 59 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(note 59 14 6 2 (var_location argc (entry_value:SI (reg:SI 5 di [ argc ]))) NOTE_INSN_VAR_LOCATION) +(insn:TI 6 59 53 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 53 6 12 2 conftest.c:49 NOTE_INSN_BEGIN_STMT) +(insn 12 53 60 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(note 60 12 10 2 (var_location argv (entry_value:DI (reg:DI 4 si [ argv ]))) NOTE_INSN_VAR_LOCATION) +(insn 10 60 54 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(note 54 10 17 2 conftest.c:50 NOTE_INSN_BEGIN_STMT) +(call_insn:TI 17 54 55 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_ARG_LOCATION (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 5 di) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) + (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 4 si) + (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0]))) + (nil))) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(note 55 17 20 2 conftest.c:51 NOTE_INSN_BEGIN_STMT) +(insn 20 55 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 56 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(note 56 21 28 2 conftest.c:52 NOTE_INSN_BEGIN_STMT) +(insn:TI 28 56 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +;; succ: 3 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; 4 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; lr out 7 [sp] +;; live out 7 [sp] + +;; basic block 3, loop depth 0, count 1073312328 (estimated locally), maybe hot +;; prev block 2, next block 4, flags: (REACHABLE, HOT_PARTITION, RTL, MODIFIED) +;; pred: 2 [100.0% (guessed)] count:1073312328 (estimated locally) (FALLTHRU,CAN_FALLTHRU) +;; bb 3 artificial_defs: { } +;; bb 3 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 7 [sp] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] 7 [sp] +;; live kill 17 [flags] +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073312328 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 47 44 51) +;; basic block 4, loop depth 0, count 429496 (estimated locally) +;; prev block 3, next block 1, flags: (REACHABLE, HOT_PARTITION, RTL) +;; pred: 2 [0.0% (guessed)] count:429496 (estimated locally) (CAN_FALLTHRU) +;; bb 4 artificial_defs: { } +;; bb 4 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; live in 7 [sp] +;; live gen +;; live kill +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))))) + (nil)) +;; succ: +;; lr out 7 [sp] +;; live out 7 [sp] + +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.321r.mach b/conftest-conftest.c.321r.mach new file mode 100644 index 000000000000..154b212d6ced --- /dev/null +++ b/conftest-conftest.c.321r.mach @@ -0,0 +1,154 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 15{12 regular + 3 call} insns. +(note 1 0 57 NOTE_INSN_DELETED) +(note 57 1 58 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 58 57 7 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(note 7 58 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 59 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(note 59 14 6 2 (var_location argc (entry_value:SI (reg:SI 5 di [ argc ]))) NOTE_INSN_VAR_LOCATION) +(insn:TI 6 59 53 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 53 6 12 2 conftest.c:49 NOTE_INSN_BEGIN_STMT) +(insn 12 53 60 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(note 60 12 10 2 (var_location argv (entry_value:DI (reg:DI 4 si [ argv ]))) NOTE_INSN_VAR_LOCATION) +(insn 10 60 54 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(note 54 10 17 2 conftest.c:50 NOTE_INSN_BEGIN_STMT) +(call_insn:TI 17 54 55 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_ARG_LOCATION (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 5 di) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) + (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 4 si) + (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0]))) + (nil))) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(note 55 17 20 2 conftest.c:51 NOTE_INSN_BEGIN_STMT) +(insn 20 55 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 56 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(note 56 21 28 2 conftest.c:52 NOTE_INSN_BEGIN_STMT) +(insn:TI 28 56 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 47 44 51) +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))))) + (nil)) +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.322r.barriers b/conftest-conftest.c.322r.barriers new file mode 100644 index 000000000000..154b212d6ced --- /dev/null +++ b/conftest-conftest.c.322r.barriers @@ -0,0 +1,154 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 15{12 regular + 3 call} insns. +(note 1 0 57 NOTE_INSN_DELETED) +(note 57 1 58 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 58 57 7 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(note 7 58 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 59 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(note 59 14 6 2 (var_location argc (entry_value:SI (reg:SI 5 di [ argc ]))) NOTE_INSN_VAR_LOCATION) +(insn:TI 6 59 53 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 53 6 12 2 conftest.c:49 NOTE_INSN_BEGIN_STMT) +(insn 12 53 60 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(note 60 12 10 2 (var_location argv (entry_value:DI (reg:DI 4 si [ argv ]))) NOTE_INSN_VAR_LOCATION) +(insn 10 60 54 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(note 54 10 17 2 conftest.c:50 NOTE_INSN_BEGIN_STMT) +(call_insn:TI 17 54 55 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_ARG_LOCATION (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 5 di) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) + (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 4 si) + (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0]))) + (nil))) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(note 55 17 20 2 conftest.c:51 NOTE_INSN_BEGIN_STMT) +(insn 20 55 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 56 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(note 56 21 28 2 conftest.c:52 NOTE_INSN_BEGIN_STMT) +(insn:TI 28 56 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 47 44 51) +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))))) + (nil)) +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.326r.endbr_and_patchable_area b/conftest-conftest.c.326r.endbr_and_patchable_area new file mode 100644 index 000000000000..ffd07d4dfcf9 --- /dev/null +++ b/conftest-conftest.c.326r.endbr_and_patchable_area @@ -0,0 +1,159 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +scanning new insn with uid = 61. + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 15{12 regular + 3 call} insns. +(note 1 0 57 NOTE_INSN_DELETED) +(note 57 1 58 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 58 57 61 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(insn 61 58 7 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) -1 + (nil)) +(note 7 61 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 59 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(note 59 14 6 2 (var_location argc (entry_value:SI (reg:SI 5 di [ argc ]))) NOTE_INSN_VAR_LOCATION) +(insn:TI 6 59 53 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 53 6 12 2 conftest.c:49 NOTE_INSN_BEGIN_STMT) +(insn 12 53 60 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(note 60 12 10 2 (var_location argv (entry_value:DI (reg:DI 4 si [ argv ]))) NOTE_INSN_VAR_LOCATION) +(insn 10 60 54 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(note 54 10 17 2 conftest.c:50 NOTE_INSN_BEGIN_STMT) +(call_insn:TI 17 54 55 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_ARG_LOCATION (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 5 di) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) + (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 4 si) + (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0]))) + (nil))) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(note 55 17 20 2 conftest.c:51 NOTE_INSN_BEGIN_STMT) +(insn 20 55 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 56 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(note 56 21 28 2 conftest.c:52 NOTE_INSN_BEGIN_STMT) +(insn:TI 28 56 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 47 44 51) +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))))) + (nil)) +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.327r.shorten b/conftest-conftest.c.327r.shorten new file mode 100644 index 000000000000..3513667f43e0 --- /dev/null +++ b/conftest-conftest.c.327r.shorten @@ -0,0 +1,158 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 15{12 regular + 3 call} insns. +(note 1 0 57 NOTE_INSN_DELETED) +(note 57 1 58 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 58 57 61 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(insn 61 58 7 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 7 61 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 59 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(note 59 14 6 2 (var_location argc (entry_value:SI (reg:SI 5 di [ argc ]))) NOTE_INSN_VAR_LOCATION) +(insn:TI 6 59 53 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 53 6 12 2 conftest.c:49 NOTE_INSN_BEGIN_STMT) +(insn 12 53 60 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(note 60 12 10 2 (var_location argv (entry_value:DI (reg:DI 4 si [ argv ]))) NOTE_INSN_VAR_LOCATION) +(insn 10 60 54 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(note 54 10 17 2 conftest.c:50 NOTE_INSN_BEGIN_STMT) +(call_insn:TI 17 54 55 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_ARG_LOCATION (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 5 di) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) + (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 4 si) + (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0]))) + (nil))) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(note 55 17 20 2 conftest.c:51 NOTE_INSN_BEGIN_STMT) +(insn 20 55 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 56 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(note 56 21 28 2 conftest.c:52 NOTE_INSN_BEGIN_STMT) +(insn:TI 28 56 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 47 44 51) +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))))) + (nil)) +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.328r.nothrow b/conftest-conftest.c.328r.nothrow new file mode 100644 index 000000000000..3513667f43e0 --- /dev/null +++ b/conftest-conftest.c.328r.nothrow @@ -0,0 +1,158 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 15{12 regular + 3 call} insns. +(note 1 0 57 NOTE_INSN_DELETED) +(note 57 1 58 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 58 57 61 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(insn 61 58 7 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 7 61 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 59 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(note 59 14 6 2 (var_location argc (entry_value:SI (reg:SI 5 di [ argc ]))) NOTE_INSN_VAR_LOCATION) +(insn:TI 6 59 53 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 53 6 12 2 conftest.c:49 NOTE_INSN_BEGIN_STMT) +(insn 12 53 60 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(note 60 12 10 2 (var_location argv (entry_value:DI (reg:DI 4 si [ argv ]))) NOTE_INSN_VAR_LOCATION) +(insn 10 60 54 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(note 54 10 17 2 conftest.c:50 NOTE_INSN_BEGIN_STMT) +(call_insn:TI 17 54 55 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_ARG_LOCATION (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 5 di) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) + (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 4 si) + (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0]))) + (nil))) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(note 55 17 20 2 conftest.c:51 NOTE_INSN_BEGIN_STMT) +(insn 20 55 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 56 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(note 56 21 28 2 conftest.c:52 NOTE_INSN_BEGIN_STMT) +(insn:TI 28 56 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 47 44 51) +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))))) + (nil)) +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.329r.dwarf2 b/conftest-conftest.c.329r.dwarf2 new file mode 100644 index 000000000000..eefa4871050b --- /dev/null +++ b/conftest-conftest.c.329r.dwarf2 @@ -0,0 +1,186 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +Creating trace 0 : start at note 1 +Creating trace 1 : start at note 41 +Creating trace 2 : start at note 52 +Creating trace 3 : start at code_label 51 +Processing trace 0 : start at note 1 + saw edge from trace 0 to 1 (via fallthru 0) + push trace 1 to worklist +Processing trace 1 : start at note 41 + saw edge from trace 1 to 3 (via jump_insn 29) + push trace 3 to worklist + saw edge from trace 1 to 2 (via fallthru 0) + push trace 2 to worklist +Processing trace 2 : start at note 52 +Processing trace 3 : start at code_label 51 +Fixup between trace 2 and 3: + .cfi_restore_state + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 15{12 regular + 3 call} insns. +(note 1 0 57 NOTE_INSN_DELETED) +(note 57 1 58 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 58 57 61 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(insn 61 58 7 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 7 61 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 62 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 62 40 41 2 + .cfi_def_cfa_offset 32 + NOTE_INSN_CFI) +(note 41 62 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 59 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(note 59 14 6 2 (var_location argc (entry_value:SI (reg:SI 5 di [ argc ]))) NOTE_INSN_VAR_LOCATION) +(insn:TI 6 59 53 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 53 6 12 2 conftest.c:49 NOTE_INSN_BEGIN_STMT) +(insn 12 53 60 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(note 60 12 10 2 (var_location argv (entry_value:DI (reg:DI 4 si [ argv ]))) NOTE_INSN_VAR_LOCATION) +(insn 10 60 54 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(note 54 10 17 2 conftest.c:50 NOTE_INSN_BEGIN_STMT) +(call_insn:TI 17 54 55 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_ARG_LOCATION (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 5 di) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) + (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 4 si) + (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0]))) + (nil))) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(note 55 17 20 2 conftest.c:51 NOTE_INSN_BEGIN_STMT) +(insn 20 55 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 56 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(note 56 21 28 2 conftest.c:52 NOTE_INSN_BEGIN_STMT) +(insn:TI 28 56 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 64 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(note 64 43 63 3 + .cfi_remember_state + NOTE_INSN_CFI) +(note 63 64 34 3 + .cfi_def_cfa_offset 8 + NOTE_INSN_CFI) +(insn 34 63 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 47 44 51) +(code_label 51 47 65 4 5 (nil) [1 uses]) +(note 65 51 36 4 + .cfi_restore_state + NOTE_INSN_CFI) +(note 36 65 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))))) + (nil)) +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.330r.final b/conftest-conftest.c.330r.final new file mode 100644 index 000000000000..3513667f43e0 --- /dev/null +++ b/conftest-conftest.c.330r.final @@ -0,0 +1,158 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 4 [si] 5 [di] 7 [sp] 17 [flags] +;; ref usage r0={7d,3u} r1={4d} r2={4d} r4={5d,1u} r5={6d,2u} r7={3d,16u} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r17={8d,1u} r18={3d} r19={1e} r20={4d} r21={4d} r22={4d} r23={4d} r24={4d} r25={4d} r26={4d} r27={4d} r28={3d} r29={3d} r30={3d} r31={3d} r32={3d} r33={3d} r34={3d} r35={3d} r36={4d} r37={4d} r38={3d} r39={3d} r44={3d} r45={3d} r46={3d} r47={3d} r48={3d} r49={3d} r50={3d} r51={3d} r52={3d} r53={3d} r54={3d} r55={3d} r56={3d} r57={3d} r58={3d} r59={3d} r60={3d} r61={3d} r62={3d} r63={3d} r64={3d} r65={3d} r66={3d} r67={3d} r68={3d} r69={3d} r70={3d} r71={3d} r72={3d} r73={3d} r74={3d} r75={3d} +;; total ref usage 254{230d,23u,1e} in 15{12 regular + 3 call} insns. +(note 1 0 57 NOTE_INSN_DELETED) +(note 57 1 58 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 58 57 61 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(insn 61 58 7 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 7 61 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 59 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(note 59 14 6 2 (var_location argc (entry_value:SI (reg:SI 5 di [ argc ]))) NOTE_INSN_VAR_LOCATION) +(insn:TI 6 59 53 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 53 6 12 2 conftest.c:49 NOTE_INSN_BEGIN_STMT) +(insn 12 53 60 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(note 60 12 10 2 (var_location argv (entry_value:DI (reg:DI 4 si [ argv ]))) NOTE_INSN_VAR_LOCATION) +(insn 10 60 54 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(note 54 10 17 2 conftest.c:50 NOTE_INSN_BEGIN_STMT) +(call_insn:TI 17 54 55 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_ARG_LOCATION (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 5 di) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) + (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 4 si) + (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0]))) + (nil))) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(note 55 17 20 2 conftest.c:51 NOTE_INSN_BEGIN_STMT) +(insn 20 55 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 56 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(note 56 21 28 2 conftest.c:52 NOTE_INSN_BEGIN_STMT) +(insn:TI 28 56 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 47 44 51) +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))))) + (nil)) +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest-conftest.c.331r.dfinish b/conftest-conftest.c.331r.dfinish new file mode 100644 index 000000000000..0884ede1f36d --- /dev/null +++ b/conftest-conftest.c.331r.dfinish @@ -0,0 +1,144 @@ + +;; Function main (main, funcdef_no=46, decl_uid=3497, cgraph_uid=47, symbol_order=46) (executed once) + +(note 1 0 57 NOTE_INSN_DELETED) +(note 57 1 58 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 58 57 61 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(insn 61 58 7 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 7 61 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 7 40 2 NOTE_INSN_FUNCTION_BEG) +(insn/f:TI 40 4 41 2 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":48:82 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int -24 [0xffffffffffffffe8]))) + (nil)))) +(note 41 40 14 2 NOTE_INSN_PROLOGUE_END) +(insn 14 41 59 2 (set (reg/f:DI 5 di [88]) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (symbol_ref/f:DI ("*.LC0") [flags 0x2] ) + (nil))) +(note 59 14 6 2 (var_location argc (entry_value:SI (reg:SI 5 di [ argc ]))) NOTE_INSN_VAR_LOCATION) +(insn:TI 6 59 53 2 (parallel [ + (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (unspec:DI [ + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_SET)) + (set (reg:DI 0 ax [92]) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:82 1159 {stack_protect_set_1_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 53 6 12 2 conftest.c:49 NOTE_INSN_BEGIN_STMT) +(insn 12 53 60 2 (set (reg/f:DI 4 si [87]) + (reg/f:DI 7 sp)) "conftest.c":50:54 74 {*movdi_internal} + (expr_list:REG_EQUIV (plus:DI (reg/f:DI 19 frame) + (const_int -16 [0xfffffffffffffff0])) + (nil))) +(note 60 12 10 2 (var_location argv (entry_value:DI (reg:DI 4 si [ argv ]))) NOTE_INSN_VAR_LOCATION) +(insn 10 60 54 2 (set (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64]) + (const_int 0 [0])) "conftest.c":49:60 74 {*movdi_internal} + (nil)) +(note 54 10 17 2 conftest.c:50 NOTE_INSN_BEGIN_STMT) +(call_insn:TI 17 54 55 2 (set (reg:SI 0 ax) + (call (mem:QI (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) [0 __builtin_scanf S1 A8]) + (const_int 0 [0]))) "conftest.c":50:54 824 {*call_value} + (expr_list:REG_CALL_ARG_LOCATION (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 5 di) + (symbol_ref/f:DI ("*.LC0") [flags 0x2] )) + (expr_list:REG_DEP_TRUE (concat:DI (reg:DI 4 si) + (plus:DI (reg/f:DI 16 argp) + (const_int -32 [0xffffffffffffffe0]))) + (nil))) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_DEAD (reg:DI 4 si) + (expr_list:REG_UNUSED (reg:SI 0 ax) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("*__isoc99_scanf") [flags 0x41] ) + (nil)))))) + (expr_list (use (reg:QI 0 ax)) + (expr_list:DI (use (reg:DI 5 di)) + (expr_list:DI (use (reg:DI 4 si)) + (nil))))) +(note 55 17 20 2 conftest.c:51 NOTE_INSN_BEGIN_STMT) +(insn 20 55 21 2 (set (reg:DI 5 di) + (mem/f/c:DI (reg/f:DI 7 sp) [1 p+0 S8 A64])) "conftest.c":51:54 74 {*movdi_internal} + (nil)) +(call_insn:TI 21 20 56 2 (call (mem:QI (symbol_ref:DI ("free") [flags 0x41] ) [0 __builtin_free S1 A8]) + (const_int 0 [0])) "conftest.c":51:54 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_DEAD (reg:DI 5 di) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("free") [flags 0x41] ) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil))))) + (expr_list:DI (use (reg:DI 5 di)) + (nil))) +(note 56 21 28 2 conftest.c:52 NOTE_INSN_BEGIN_STMT) +(insn:TI 28 56 29 2 (parallel [ + (set (reg:CCZ 17 flags) + (unspec:CCZ [ + (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp) + (const_int 8 [0x8])) [2 D.3509+0 S8 A64]) + (mem/v/f:DI (const_int 40 [0x28]) [3 MEM[( long unsigned int *)40B]+0 S8 A64 AS1]) + ] UNSPEC_SP_TEST)) + (clobber (reg:DI 0 ax [93])) + ]) "conftest.c":53:50 1164 {stack_protect_test_1_di} + (expr_list:REG_UNUSED (reg:DI 0 ax [93]) + (nil))) +(jump_insn 29 28 37 2 (set (pc) + (if_then_else (ne (reg:CCZ 17 flags) + (const_int 0 [0])) + (label_ref:DI 51) + (pc))) "conftest.c":53:50 806 {*jcc} + (expr_list:REG_DEAD (reg:CCZ 17 flags) + (int_list:REG_BR_PROB 429500 (nil))) + -> 51) +(note 37 29 50 3 [bb 3] NOTE_INSN_BASIC_BLOCK) +(insn:TI 50 37 52 3 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":53:50 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(note 52 50 43 3 NOTE_INSN_EPILOGUE_BEG) +(insn/f 43 52 34 3 (parallel [ + (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (clobber (reg:CC 17 flags)) + (clobber (mem:BLK (scratch) [0 A8])) + ]) "conftest.c":53:50 1142 {pro_epilogue_adjust_stack_add_di} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) + (plus:DI (reg/f:DI 7 sp) + (const_int 24 [0x18]))) + (nil)))) +(insn 34 43 44 3 (use (reg/i:SI 0 ax)) "conftest.c":53:50 -1 + (nil)) +(jump_insn:TI 44 34 47 3 (simple_return) "conftest.c":53:50 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 47 44 51) +(code_label 51 47 36 4 5 (nil) [1 uses]) +(note 36 51 30 4 [bb 4] NOTE_INSN_BASIC_BLOCK) +(call_insn:TI 30 36 31 4 (call (mem:QI (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) [0 __stack_chk_fail S1 A8]) + (const_int 0 [0])) "conftest.c":53:50 813 {*call} + (expr_list:REG_CALL_ARG_LOCATION (nil) + (expr_list:REG_CALL_DECL (symbol_ref:DI ("__stack_chk_fail") [flags 0x41] ) + (expr_list:REG_ARGS_SIZE (const_int 0 [0]) + (expr_list:REG_NORETURN (const_int 0 [0]) + (expr_list:REG_EH_REGION (const_int 0 [0]) + (nil)))))) + (nil)) +(barrier 31 30 39) +(note 39 31 0 NOTE_INSN_DELETED) diff --git a/conftest.c.245r.expand b/conftest.c.245r.expand new file mode 100644 index 000000000000..e1acb282df51 --- /dev/null +++ b/conftest.c.245r.expand @@ -0,0 +1,246 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +int f () +{ +;; basic block 2, loop depth 0 +;; pred: ENTRY + # DEBUG BEGIN_STMT + return 0; +;; succ: EXIT + +} + + + +Partition map + +Partition 2 (_2(D) - 2 ) + + +Coalescible Partition map + +Partition 0, base 0 (_2(D) - 2 ) + + +Partition map + +Partition 0 (_2(D) - 2 ) + + +Conflict graph: + +After sorting: +Coalesce List: + +Partition map + +Partition 0 (_2(D) - 2 ) + +After Coalescing: + +Partition map + +Partition 0 (_2(D) - 2 ) + +int f () +{ + int _2(D); + +;; basic block 2, loop depth 0 +;; pred: ENTRY + # DEBUG BEGIN_STMT + return 0; +;; succ: EXIT + +} + + + +;; Generating RTL for gimple basic block 2 + +;; # DEBUG BEGIN_STMT + +(debug_insn 5 4 0 (debug_marker) "conftest.c":47:78 -1 + (nil)) +;; return 0; + +(insn 6 5 7 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":47:85 -1 + (nil)) + +(jump_insn 7 6 8 (set (pc) + (label_ref 0)) "conftest.c":47:85 -1 + (nil)) + +(barrier 8 7 0) + + +try_optimize_cfg iteration 1 + +Merging block 3 into block 2... +Merged blocks 2 and 3. +Merged 2 and 3 without moving. +Removing jump 7. +Merging block 4 into block 2... +Merged blocks 2 and 4. +Merged 2 and 4 without moving. + + +try_optimize_cfg iteration 2 + +fix_loop_structure: fixing up loops for function + + +;; +;; Full RTL generated for this function: +;; +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (NEW, REACHABLE, RTL, VISITED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 6 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 6 5 10 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":47:85 -1 + (nil)) +(insn 10 6 11 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":47:88 -1 + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +int main (int argc, char * * argv) +{ +;; basic block 2, loop depth 0 +;; pred: ENTRY + # DEBUG BEGIN_STMT + return 0; +;; succ: EXIT + +} + + + +Partition map + +Partition 2 (argc_2(D) - 2 ) +Partition 3 (argv_3(D) - 3 ) +Partition 4 (_4(D) - 4 ) + + +Coalescible Partition map + +Partition 0, base 0 (argc_2(D) - 2 ) +Partition 1, base 1 (argv_3(D) - 3 ) +Partition 2, base 2 (_4(D) - 4 ) + + +Partition map + +Partition 0 (argc_2(D) - 2 ) +Partition 1 (argv_3(D) - 3 ) +Partition 2 (_4(D) - 4 ) + + +Conflict graph: + +After sorting: +Coalesce List: + +Partition map + +Partition 0 (argc_2(D) - 2 ) +Partition 1 (argv_3(D) - 3 ) +Partition 2 (_4(D) - 4 ) + +After Coalescing: + +Partition map + +Partition 0 (argc_2(D) - 2 ) +Partition 1 (argv_3(D) - 3 ) +Partition 2 (_4(D) - 4 ) + +int main (int argc, char * * argv) +{ + int _4(D); + +;; basic block 2, loop depth 0 +;; pred: ENTRY + # DEBUG BEGIN_STMT + return 0; +;; succ: EXIT + +} + + + +;; Generating RTL for gimple basic block 2 + +;; # DEBUG BEGIN_STMT + +(debug_insn 7 6 0 (debug_marker) "conftest.c":48:69 -1 + (nil)) +;; return 0; + +(insn 8 7 9 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":48:81 -1 + (nil)) + +(jump_insn 9 8 10 (set (pc) + (label_ref 0)) "conftest.c":48:81 -1 + (nil)) + +(barrier 10 9 0) + + +try_optimize_cfg iteration 1 + +Merging block 3 into block 2... +Merged blocks 2 and 3. +Merged 2 and 3 without moving. +Removing jump 9. +Merging block 4 into block 2... +Merged blocks 2 and 4. +Merged 2 and 4 without moving. + + +try_optimize_cfg iteration 2 + +fix_loop_structure: fixing up loops for function + + +;; +;; Full RTL generated for this function: +;; +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (NEW, REACHABLE, RTL, VISITED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 5 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn 2 5 3 2 (set (reg/v:SI 83 [ argc ]) + (reg:SI 5 di [ argc ])) "conftest.c":48:67 -1 + (nil)) +(insn 3 2 4 2 (set (reg/v/f:DI 84 [ argv ]) + (reg:DI 4 si [ argv ])) "conftest.c":48:67 -1 + (nil)) +(note 4 3 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 8 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 8 7 12 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":48:81 -1 + (nil)) +(insn 12 8 13 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":48:81 -1 + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + diff --git a/conftest.c.246r.vregs b/conftest.c.246r.vregs new file mode 100644 index 000000000000..397d05728783 --- /dev/null +++ b/conftest.c.246r.vregs @@ -0,0 +1,48 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (NEW, REACHABLE, RTL, VISITED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 6 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 6 5 10 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":47:85 75 {*movsi_internal} + (nil)) +(insn 10 6 11 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (NEW, REACHABLE, RTL, VISITED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 5 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn 2 5 3 2 (set (reg/v:SI 83 [ argc ]) + (reg:SI 5 di [ argc ])) "conftest.c":48:67 75 {*movsi_internal} + (nil)) +(insn 3 2 4 2 (set (reg/v/f:DI 84 [ argv ]) + (reg:DI 4 si [ argv ])) "conftest.c":48:67 74 {*movdi_internal} + (nil)) +(note 4 3 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 8 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 8 7 12 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 12 8 13 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + diff --git a/conftest.c.247r.into_cfglayout b/conftest.c.247r.into_cfglayout new file mode 100644 index 000000000000..6c948c86d734 --- /dev/null +++ b/conftest.c.247r.into_cfglayout @@ -0,0 +1,54 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +try_optimize_cfg iteration 1 + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (NEW, REACHABLE, RTL, VISITED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 6 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 6 5 10 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":47:85 75 {*movsi_internal} + (nil)) +(insn 10 6 11 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +try_optimize_cfg iteration 1 + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (NEW, REACHABLE, RTL, VISITED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 5 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn 2 5 3 2 (set (reg/v:SI 83 [ argc ]) + (reg:SI 5 di [ argc ])) "conftest.c":48:67 75 {*movsi_internal} + (nil)) +(insn 3 2 4 2 (set (reg/v/f:DI 84 [ argv ]) + (reg:DI 4 si [ argv ])) "conftest.c":48:67 74 {*movdi_internal} + (nil)) +(note 4 3 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 8 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 8 7 12 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 12 8 13 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + diff --git a/conftest.c.248r.jump b/conftest.c.248r.jump new file mode 100644 index 000000000000..5caa7bdf89f9 --- /dev/null +++ b/conftest.c.248r.jump @@ -0,0 +1,109 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, VISITED) +;; pred: +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (NEW, REACHABLE, RTL, VISITED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 6 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 6 5 10 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":47:85 75 {*movsi_internal} + (nil)) +(insn 10 6 11 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (REACHABLE, RTL, VISITED) +;; pred: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) +;; succ: + + + + +try_optimize_cfg iteration 1 + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 6 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 6 5 10 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":47:85 75 {*movsi_internal} + (nil)) +(insn 10 6 11 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +Deleted 2 trivially dead insns + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, VISITED) +;; pred: +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (NEW, REACHABLE, RTL, VISITED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 8 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 8 7 12 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 12 8 13 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (REACHABLE, RTL, VISITED) +;; pred: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) +;; succ: + + + + +try_optimize_cfg iteration 1 + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 8 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 8 7 12 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 12 8 13 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + diff --git a/conftest.c.249r.subreg1 b/conftest.c.249r.subreg1 new file mode 100644 index 000000000000..01ce6e87e1c3 --- /dev/null +++ b/conftest.c.249r.subreg1 @@ -0,0 +1,294 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +Choices when optimizing for size: + Splitting mode TI for copy lowering. + Splitting mode OI for copy lowering. + Splitting mode XI for copy lowering. + Splitting mode POI for copy lowering. + Splitting mode TQ for copy lowering. + Splitting mode UTQ for copy lowering. + Splitting mode TA for copy lowering. + Splitting mode UTA for copy lowering. + Skipping mode XF for copy lowering. + Skipping mode TF for copy lowering. + Splitting mode TD for copy lowering. + Splitting mode CDI for copy lowering. + Splitting mode CTI for copy lowering. + Splitting mode CPOI for copy lowering. + Splitting mode COI for copy lowering. + Splitting mode CXI for copy lowering. + Skipping mode DC for copy lowering. + Skipping mode XC for copy lowering. + Skipping mode TC for copy lowering. + Splitting mode V12QI for copy lowering. + Splitting mode V6HI for copy lowering. + Splitting mode V14QI for copy lowering. + Skipping mode V16QI for copy lowering. + Skipping mode V8HI for copy lowering. + Skipping mode V4SI for copy lowering. + Skipping mode V2DI for copy lowering. + Skipping mode V1TI for copy lowering. + Splitting mode V32QI for copy lowering. + Splitting mode V16HI for copy lowering. + Splitting mode V8SI for copy lowering. + Splitting mode V4DI for copy lowering. + Splitting mode V2TI for copy lowering. + Splitting mode V64QI for copy lowering. + Splitting mode V32HI for copy lowering. + Splitting mode V16SI for copy lowering. + Splitting mode V8DI for copy lowering. + Splitting mode V4TI for copy lowering. + Splitting mode V128QI for copy lowering. + Splitting mode V64HI for copy lowering. + Splitting mode V32SI for copy lowering. + Splitting mode V16DI for copy lowering. + Splitting mode V8TI for copy lowering. + Splitting mode V64SI for copy lowering. + Skipping mode V4SF for copy lowering. + Skipping mode V2DF for copy lowering. + Splitting mode V8SF for copy lowering. + Splitting mode V4DF for copy lowering. + Splitting mode V2TF for copy lowering. + Splitting mode V16SF for copy lowering. + Splitting mode V8DF for copy lowering. + Splitting mode V4TF for copy lowering. + Splitting mode V32SF for copy lowering. + Splitting mode V16DF for copy lowering. + Splitting mode V8TF for copy lowering. + Splitting mode V64SF for copy lowering. + Splitting mode V32DF for copy lowering. + Splitting mode V16TF for copy lowering. + Skipping mode TI for zero_extend lowering. + Splitting mode TI for ashift lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for lshiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for ashiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + +Choices when optimizing for speed: + Splitting mode TI for copy lowering. + Splitting mode OI for copy lowering. + Splitting mode XI for copy lowering. + Splitting mode POI for copy lowering. + Splitting mode TQ for copy lowering. + Splitting mode UTQ for copy lowering. + Splitting mode TA for copy lowering. + Splitting mode UTA for copy lowering. + Skipping mode XF for copy lowering. + Skipping mode TF for copy lowering. + Splitting mode TD for copy lowering. + Splitting mode CDI for copy lowering. + Splitting mode CTI for copy lowering. + Splitting mode CPOI for copy lowering. + Splitting mode COI for copy lowering. + Splitting mode CXI for copy lowering. + Skipping mode DC for copy lowering. + Skipping mode XC for copy lowering. + Skipping mode TC for copy lowering. + Splitting mode V12QI for copy lowering. + Splitting mode V6HI for copy lowering. + Splitting mode V14QI for copy lowering. + Skipping mode V16QI for copy lowering. + Skipping mode V8HI for copy lowering. + Skipping mode V4SI for copy lowering. + Skipping mode V2DI for copy lowering. + Skipping mode V1TI for copy lowering. + Splitting mode V32QI for copy lowering. + Splitting mode V16HI for copy lowering. + Splitting mode V8SI for copy lowering. + Splitting mode V4DI for copy lowering. + Splitting mode V2TI for copy lowering. + Splitting mode V64QI for copy lowering. + Splitting mode V32HI for copy lowering. + Splitting mode V16SI for copy lowering. + Splitting mode V8DI for copy lowering. + Splitting mode V4TI for copy lowering. + Splitting mode V128QI for copy lowering. + Splitting mode V64HI for copy lowering. + Splitting mode V32SI for copy lowering. + Splitting mode V16DI for copy lowering. + Splitting mode V8TI for copy lowering. + Splitting mode V64SI for copy lowering. + Skipping mode V4SF for copy lowering. + Skipping mode V2DF for copy lowering. + Splitting mode V8SF for copy lowering. + Splitting mode V4DF for copy lowering. + Splitting mode V2TF for copy lowering. + Splitting mode V16SF for copy lowering. + Splitting mode V8DF for copy lowering. + Splitting mode V4TF for copy lowering. + Splitting mode V32SF for copy lowering. + Splitting mode V16DF for copy lowering. + Splitting mode V8TF for copy lowering. + Splitting mode V64SF for copy lowering. + Splitting mode V32DF for copy lowering. + Splitting mode V16TF for copy lowering. + Skipping mode TI for zero_extend lowering. + Splitting mode TI for ashift lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for lshiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for ashiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + +Nothing to lower in this function. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 6 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 6 5 10 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":47:85 75 {*movsi_internal} + (nil)) +(insn 10 6 11 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +Choices when optimizing for size: + Splitting mode TI for copy lowering. + Splitting mode OI for copy lowering. + Splitting mode XI for copy lowering. + Splitting mode POI for copy lowering. + Splitting mode TQ for copy lowering. + Splitting mode UTQ for copy lowering. + Splitting mode TA for copy lowering. + Splitting mode UTA for copy lowering. + Skipping mode XF for copy lowering. + Skipping mode TF for copy lowering. + Splitting mode TD for copy lowering. + Splitting mode CDI for copy lowering. + Splitting mode CTI for copy lowering. + Splitting mode CPOI for copy lowering. + Splitting mode COI for copy lowering. + Splitting mode CXI for copy lowering. + Skipping mode DC for copy lowering. + Skipping mode XC for copy lowering. + Skipping mode TC for copy lowering. + Splitting mode V12QI for copy lowering. + Splitting mode V6HI for copy lowering. + Splitting mode V14QI for copy lowering. + Skipping mode V16QI for copy lowering. + Skipping mode V8HI for copy lowering. + Skipping mode V4SI for copy lowering. + Skipping mode V2DI for copy lowering. + Skipping mode V1TI for copy lowering. + Splitting mode V32QI for copy lowering. + Splitting mode V16HI for copy lowering. + Splitting mode V8SI for copy lowering. + Splitting mode V4DI for copy lowering. + Splitting mode V2TI for copy lowering. + Splitting mode V64QI for copy lowering. + Splitting mode V32HI for copy lowering. + Splitting mode V16SI for copy lowering. + Splitting mode V8DI for copy lowering. + Splitting mode V4TI for copy lowering. + Splitting mode V128QI for copy lowering. + Splitting mode V64HI for copy lowering. + Splitting mode V32SI for copy lowering. + Splitting mode V16DI for copy lowering. + Splitting mode V8TI for copy lowering. + Splitting mode V64SI for copy lowering. + Skipping mode V4SF for copy lowering. + Skipping mode V2DF for copy lowering. + Splitting mode V8SF for copy lowering. + Splitting mode V4DF for copy lowering. + Splitting mode V2TF for copy lowering. + Splitting mode V16SF for copy lowering. + Splitting mode V8DF for copy lowering. + Splitting mode V4TF for copy lowering. + Splitting mode V32SF for copy lowering. + Splitting mode V16DF for copy lowering. + Splitting mode V8TF for copy lowering. + Splitting mode V64SF for copy lowering. + Splitting mode V32DF for copy lowering. + Splitting mode V16TF for copy lowering. + Skipping mode TI for zero_extend lowering. + Splitting mode TI for ashift lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for lshiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for ashiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + +Choices when optimizing for speed: + Splitting mode TI for copy lowering. + Splitting mode OI for copy lowering. + Splitting mode XI for copy lowering. + Splitting mode POI for copy lowering. + Splitting mode TQ for copy lowering. + Splitting mode UTQ for copy lowering. + Splitting mode TA for copy lowering. + Splitting mode UTA for copy lowering. + Skipping mode XF for copy lowering. + Skipping mode TF for copy lowering. + Splitting mode TD for copy lowering. + Splitting mode CDI for copy lowering. + Splitting mode CTI for copy lowering. + Splitting mode CPOI for copy lowering. + Splitting mode COI for copy lowering. + Splitting mode CXI for copy lowering. + Skipping mode DC for copy lowering. + Skipping mode XC for copy lowering. + Skipping mode TC for copy lowering. + Splitting mode V12QI for copy lowering. + Splitting mode V6HI for copy lowering. + Splitting mode V14QI for copy lowering. + Skipping mode V16QI for copy lowering. + Skipping mode V8HI for copy lowering. + Skipping mode V4SI for copy lowering. + Skipping mode V2DI for copy lowering. + Skipping mode V1TI for copy lowering. + Splitting mode V32QI for copy lowering. + Splitting mode V16HI for copy lowering. + Splitting mode V8SI for copy lowering. + Splitting mode V4DI for copy lowering. + Splitting mode V2TI for copy lowering. + Splitting mode V64QI for copy lowering. + Splitting mode V32HI for copy lowering. + Splitting mode V16SI for copy lowering. + Splitting mode V8DI for copy lowering. + Splitting mode V4TI for copy lowering. + Splitting mode V128QI for copy lowering. + Splitting mode V64HI for copy lowering. + Splitting mode V32SI for copy lowering. + Splitting mode V16DI for copy lowering. + Splitting mode V8TI for copy lowering. + Splitting mode V64SI for copy lowering. + Skipping mode V4SF for copy lowering. + Skipping mode V2DF for copy lowering. + Splitting mode V8SF for copy lowering. + Splitting mode V4DF for copy lowering. + Splitting mode V2TF for copy lowering. + Splitting mode V16SF for copy lowering. + Splitting mode V8DF for copy lowering. + Splitting mode V4TF for copy lowering. + Splitting mode V32SF for copy lowering. + Splitting mode V16DF for copy lowering. + Splitting mode V8TF for copy lowering. + Splitting mode V64SF for copy lowering. + Splitting mode V32DF for copy lowering. + Splitting mode V16TF for copy lowering. + Skipping mode TI for zero_extend lowering. + Splitting mode TI for ashift lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for lshiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for ashiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + +Nothing to lower in this function. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 8 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 8 7 12 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 12 8 13 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + diff --git a/conftest.c.250r.dfinit b/conftest.c.250r.dfinit new file mode 100644 index 000000000000..6867f877f8e4 --- /dev/null +++ b/conftest.c.250r.dfinit @@ -0,0 +1,72 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} r82={1d,1u} +;; total ref usage 31{21d,10u,0e} in 4{4 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 6 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 6 5 10 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":47:85 75 {*movsi_internal} + (nil)) +(insn 10 6 11 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} r82={1d,1u} +;; total ref usage 31{21d,10u,0e} in 4{4 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 8 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 8 7 12 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 12 8 13 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + diff --git a/conftest.c.251r.cse1 b/conftest.c.251r.cse1 new file mode 100644 index 000000000000..7e446e8324b8 --- /dev/null +++ b/conftest.c.251r.cse1 @@ -0,0 +1,270 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } + + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} + +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 6 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 6 5 10 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":47:85 75 {*movsi_internal} + (nil)) +(insn 10 6 11 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) + +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (RTL, MODIFIED) +;; pred: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} + + +;; succ: + + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +f + +Dataflow summary: +def_info->table_size = 0, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} r82={1d,1u} +;; total ref usage 31{21d,10u,0e} in 4{4 regular + 0 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } + +( 0 )->[2]->( 1 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} + +( 2 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} + +Finding needed instructions: + Adding insn 11 to worklist +Finished finding needed instructions: +processing block 2 lr out = 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + Adding insn 10 to worklist + Adding insn 6 to worklist +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +;; Following path with 4 sets: 2 +deferring rescan insn with uid = 10. + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +rescanning insn with uid = 10. +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} r82={1d} +;; total ref usage 30{21d,9u,0e} in 4{4 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 82 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 82 +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 6 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 6 5 10 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":47:85 75 {*movsi_internal} + (nil)) +(insn 10 6 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } + + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} + +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 8 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 8 7 12 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 12 8 13 2 (set (reg/i:SI 0 ax) + (reg:SI 82 [ ])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) + +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (RTL, MODIFIED) +;; pred: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} + + +;; succ: + + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +main + +Dataflow summary: +def_info->table_size = 0, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} r82={1d,1u} +;; total ref usage 31{21d,10u,0e} in 4{4 regular + 0 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } + +( 0 )->[2]->( 1 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} + +( 2 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} + +Finding needed instructions: + Adding insn 13 to worklist +Finished finding needed instructions: +processing block 2 lr out = 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + Adding insn 12 to worklist + Adding insn 8 to worklist +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +;; Following path with 4 sets: 2 +deferring rescan insn with uid = 12. + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +rescanning insn with uid = 12. +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} r82={1d} +;; total ref usage 30{21d,9u,0e} in 4{4 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 82 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 82 +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 8 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 8 7 12 2 (set (reg:SI 82 [ ]) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 12 8 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.252r.fwprop1 b/conftest.c.252r.fwprop1 new file mode 100644 index 000000000000..0e2a5fe0657d --- /dev/null +++ b/conftest.c.252r.fwprop1 @@ -0,0 +1,130 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +try_optimize_cfg iteration 1 + +deleting insn with uid = 6. +Deleted 1 trivially dead insns + +Number of successful forward propagations: 0 + +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 82 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 82 +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +try_optimize_cfg iteration 1 + +deleting insn with uid = 8. +Deleted 1 trivially dead insns + +Number of successful forward propagations: 0 + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] 82 +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 82 +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.253r.cprop1 b/conftest.c.253r.cprop1 new file mode 100644 index 000000000000..091b6f98bd0c --- /dev/null +++ b/conftest.c.253r.cprop1 @@ -0,0 +1,212 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +f + +Dataflow summary: +def_info->table_size = 0, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 0 )->[2]->( 1 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 82 +;; live kill +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 2 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 11 to worklist +Finished finding needed instructions: +processing block 2 lr out = 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + Adding insn 10 to worklist +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +main + +Dataflow summary: +def_info->table_size = 0, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 0 )->[2]->( 1 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] 82 +;; live kill +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +( 2 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 13 to worklist +Finished finding needed instructions: +processing block 2 lr out = 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + Adding insn 12 to worklist +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.254r.pre b/conftest.c.254r.pre new file mode 100644 index 000000000000..d13b94390c22 --- /dev/null +++ b/conftest.c.254r.pre @@ -0,0 +1,94 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.256r.cprop2 b/conftest.c.256r.cprop2 new file mode 100644 index 000000000000..d13b94390c22 --- /dev/null +++ b/conftest.c.256r.cprop2 @@ -0,0 +1,94 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.259r.ce1 b/conftest.c.259r.ce1 new file mode 100644 index 000000000000..f058db6bee78 --- /dev/null +++ b/conftest.c.259r.ce1 @@ -0,0 +1,260 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +0 registers. + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill + +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + + + +try_optimize_cfg iteration 1 + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + + +========== no more changes + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +0 registers. + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill + +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + + + +try_optimize_cfg iteration 1 + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + + +========== no more changes + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.260r.reginfo b/conftest.c.260r.reginfo new file mode 100644 index 000000000000..913f9f610514 --- /dev/null +++ b/conftest.c.260r.reginfo @@ -0,0 +1,84 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.261r.loop2 b/conftest.c.261r.loop2 new file mode 100644 index 000000000000..913f9f610514 --- /dev/null +++ b/conftest.c.261r.loop2 @@ -0,0 +1,84 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.262r.loop2_init b/conftest.c.262r.loop2_init new file mode 100644 index 000000000000..62f1b20e4b42 --- /dev/null +++ b/conftest.c.262r.loop2_init @@ -0,0 +1,228 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +0 registers. + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill + +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +0 registers. + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill + +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.263r.loop2_invariant b/conftest.c.263r.loop2_invariant new file mode 100644 index 000000000000..0be969e1b558 --- /dev/null +++ b/conftest.c.263r.loop2_invariant @@ -0,0 +1,88 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.266r.loop2_done b/conftest.c.266r.loop2_done new file mode 100644 index 000000000000..9d0bd3ff6c55 --- /dev/null +++ b/conftest.c.266r.loop2_done @@ -0,0 +1,222 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +try_optimize_cfg iteration 1 + +0 registers. + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill + +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +try_optimize_cfg iteration 1 + +0 registers. + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d-1(0){ }d-1(1){ }d-1(2){ }d-1(4){ }d-1(5){ }d-1(6){ }d-1(7){ }d-1(16){ }d-1(19){ }d-1(20){ }d-1(21){ }d-1(22){ }d-1(23){ }d-1(24){ }d-1(25){ }d-1(26){ }d-1(27){ }d-1(36){ }d-1(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill + +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.269r.cprop3 b/conftest.c.269r.cprop3 new file mode 100644 index 000000000000..d13b94390c22 --- /dev/null +++ b/conftest.c.269r.cprop3 @@ -0,0 +1,94 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.270r.stv1 b/conftest.c.270r.stv1 new file mode 100644 index 000000000000..dc89c4bec9ee --- /dev/null +++ b/conftest.c.270r.stv1 @@ -0,0 +1,106 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +Searching for mode conversion candidates... +There are no candidates for optimization. +Total insns converted: 0 +starting the processing of deferred insns +ending the processing of deferred insns +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +Searching for mode conversion candidates... +There are no candidates for optimization. +Total insns converted: 0 +starting the processing of deferred insns +ending the processing of deferred insns +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.271r.cse2 b/conftest.c.271r.cse2 new file mode 100644 index 000000000000..0f77bfff4984 --- /dev/null +++ b/conftest.c.271r.cse2 @@ -0,0 +1,222 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d1(0){ }d2(1){ }d3(2){ }d4(4){ }d5(5){ }d6(6){ }d7(7){ }d8(16){ }d9(19){ }d10(20){ }d11(21){ }d12(22){ }d13(23){ }d14(24){ }d15(25){ }d16(26){ }d17(27){ }d18(36){ }d19(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill + +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +;; Following path with 3 sets: 2 +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL, MODIFIED) +;; pred: +;; bb 0 artificial_defs: { d1(0){ }d2(1){ }d3(2){ }d4(4){ }d5(5){ }d6(6){ }d7(7){ }d8(16){ }d9(19){ }d10(20){ }d11(21){ }d12(22){ }d13(23){ }d14(24){ }d15(25){ }d16(26){ }d17(27){ }d18(36){ }d19(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill + +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (expr_list:REG_DEAD (reg:SI 82 [ ]) + (nil))) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (REACHABLE, RTL, MODIFIED) +;; pred: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(6){ }u-1(7){ }u-1(19){ }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +;; Following path with 3 sets: 2 +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.272r.dse1 b/conftest.c.272r.dse1 new file mode 100644 index 000000000000..4afcf3ad50a1 --- /dev/null +++ b/conftest.c.272r.dse1 @@ -0,0 +1,110 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + +**scanning insn=5 + +**scanning insn=10 +mems_found = 0, cannot_delete = true + +**scanning insn=11 +mems_found = 0, cannot_delete = false +dse: local deletions = 0, global deletions = 0 +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + +**scanning insn=7 + +**scanning insn=12 +mems_found = 0, cannot_delete = true + +**scanning insn=13 +mems_found = 0, cannot_delete = false +dse: local deletions = 0, global deletions = 0 +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.273r.fwprop2 b/conftest.c.273r.fwprop2 new file mode 100644 index 000000000000..d4e941516c32 --- /dev/null +++ b/conftest.c.273r.fwprop2 @@ -0,0 +1,120 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + + +try_optimize_cfg iteration 1 + + +Number of successful forward propagations: 0 + +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + + +try_optimize_cfg iteration 1 + + +Number of successful forward propagations: 0 + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.275r.init-regs b/conftest.c.275r.init-regs new file mode 100644 index 000000000000..b7f10d6d02a6 --- /dev/null +++ b/conftest.c.275r.init-regs @@ -0,0 +1,92 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.276r.ud_dce b/conftest.c.276r.ud_dce new file mode 100644 index 000000000000..385d5f09e3f8 --- /dev/null +++ b/conftest.c.276r.ud_dce @@ -0,0 +1,266 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; Reaching defs: +;; sparse invalidated +;; dense invalidated 0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 +;; reg->defs[] map: 0[0,1] 1[2,2] 2[3,3] 4[4,4] 5[5,5] 6[6,6] 7[7,7] 16[8,8] 19[9,9] 20[10,10] 21[11,11] 22[12,12] 23[13,13] 24[14,14] 25[15,15] 26[16,16] 27[17,17] 36[18,18] 37[19,19] + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d1(0){ }d2(1){ }d3(2){ }d4(4){ }d5(5){ }d6(6){ }d7(7){ }d8(16){ }d9(19){ }d10(20){ }d11(21){ }d12(22){ }d13(23){ }d14(24){ }d15(25){ }d16(26){ }d17(27){ }d18(36){ }d19(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; rd in (0) +;; rd gen (19) 0[1],1[2],2[3],4[4],5[5],6[6],7[7],16[8],19[9],20[10],21[11],22[12],23[13],24[14],25[15],26[16],27[17],36[18],37[19] +;; rd kill (20) 0[0,1],1[2],2[3],4[4],5[5],6[6],7[7],16[8],19[9],20[10],21[11],22[12],23[13],24[14],25[15],26[16],27[17],36[18],37[19] +;; UD chains for artificial uses at top +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; rd out (4) 6[6],7[7],16[8],19[9] +;; UD chains for artificial uses at bottom + +( 0 )->[2]->( 1 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ d6(bb 0 insn -1) }u-1(7){ d7(bb 0 insn -1) }u-1(16){ d8(bb 0 insn -1) }u-1(19){ d9(bb 0 insn -1) }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +;; rd in (4) 6[6],7[7],16[8],19[9] +;; rd gen (1) 0[0] +;; rd kill (2) 0[0,1] +;; UD chains for artificial uses at top +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; rd out (5) 0[0],6[6],7[7],16[8],19[9] +;; UD chains for artificial uses at bottom +;; reg 6 { d6(bb 0 insn -1) } +;; reg 7 { d7(bb 0 insn -1) } +;; reg 16 { d8(bb 0 insn -1) } +;; reg 19 { d9(bb 0 insn -1) } + +( 2 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ d0(bb 2 insn 10) }u-1(6){ d6(bb 0 insn -1) }u-1(7){ d7(bb 0 insn -1) }u-1(19){ d9(bb 0 insn -1) }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill +;; rd in (5) 0[0],6[6],7[7],16[8],19[9] +;; rd gen (0) +;; rd kill (0) +;; UD chains for artificial uses at top +;; lr out +;; live out +;; rd out (0) +;; UD chains for artificial uses at bottom +;; reg 0 { d0(bb 2 insn 10) } +;; reg 6 { d6(bb 0 insn -1) } +;; reg 7 { d7(bb 0 insn -1) } +;; reg 19 { d9(bb 0 insn -1) } + +Finding needed instructions: + Adding insn 11 to worklist +Finished finding needed instructions: + Adding insn 10 to worklist +Processing use of (reg 0 ax) in insn 11: +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; Reaching defs: +;; sparse invalidated +;; dense invalidated 0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 +;; reg->defs[] map: 0[0,1] 1[2,2] 2[3,3] 4[4,4] 5[5,5] 6[6,6] 7[7,7] 16[8,8] 19[9,9] 20[10,10] 21[11,11] 22[12,12] 23[13,13] 24[14,14] 25[15,15] 26[16,16] 27[17,17] 36[18,18] 37[19,19] + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d1(0){ }d2(1){ }d3(2){ }d4(4){ }d5(5){ }d6(6){ }d7(7){ }d8(16){ }d9(19){ }d10(20){ }d11(21){ }d12(22){ }d13(23){ }d14(24){ }d15(25){ }d16(26){ }d17(27){ }d18(36){ }d19(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; rd in (0) +;; rd gen (19) 0[1],1[2],2[3],4[4],5[5],6[6],7[7],16[8],19[9],20[10],21[11],22[12],23[13],24[14],25[15],26[16],27[17],36[18],37[19] +;; rd kill (20) 0[0,1],1[2],2[3],4[4],5[5],6[6],7[7],16[8],19[9],20[10],21[11],22[12],23[13],24[14],25[15],26[16],27[17],36[18],37[19] +;; UD chains for artificial uses at top +;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; rd out (4) 6[6],7[7],16[8],19[9] +;; UD chains for artificial uses at bottom + +( 0 )->[2]->( 1 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ d6(bb 0 insn -1) }u-1(7){ d7(bb 0 insn -1) }u-1(16){ d8(bb 0 insn -1) }u-1(19){ d9(bb 0 insn -1) }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +;; rd in (4) 6[6],7[7],16[8],19[9] +;; rd gen (1) 0[0] +;; rd kill (2) 0[0,1] +;; UD chains for artificial uses at top +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; rd out (5) 0[0],6[6],7[7],16[8],19[9] +;; UD chains for artificial uses at bottom +;; reg 6 { d6(bb 0 insn -1) } +;; reg 7 { d7(bb 0 insn -1) } +;; reg 16 { d8(bb 0 insn -1) } +;; reg 19 { d9(bb 0 insn -1) } + +( 2 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ d0(bb 2 insn 12) }u-1(6){ d6(bb 0 insn -1) }u-1(7){ d7(bb 0 insn -1) }u-1(19){ d9(bb 0 insn -1) }} +;; lr in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr use 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; lr def +;; live in 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; live gen +;; live kill +;; rd in (5) 0[0],6[6],7[7],16[8],19[9] +;; rd gen (0) +;; rd kill (0) +;; UD chains for artificial uses at top +;; lr out +;; live out +;; rd out (0) +;; UD chains for artificial uses at bottom +;; reg 0 { d0(bb 2 insn 12) } +;; reg 6 { d6(bb 0 insn -1) } +;; reg 7 { d7(bb 0 insn -1) } +;; reg 19 { d9(bb 0 insn -1) } + +Finding needed instructions: + Adding insn 13 to worklist +Finished finding needed instructions: + Adding insn 12 to worklist +Processing use of (reg 0 ax) in insn 13: +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.277r.combine b/conftest.c.277r.combine new file mode 100644 index 000000000000..4282fca926b5 --- /dev/null +++ b/conftest.c.277r.combine @@ -0,0 +1,133 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +insn_cost 0 for 5: debug begin stmt marker +insn_cost 4 for 10: ax:SI=0 +insn_cost 0 for 11: use ax:SI + +Trying 10 -> 11: + 10: ax:SI=0 + 11: use ax:SI +Failed to match this instruction: +(parallel [ + (use (const_int 0 [0])) + (set (reg/i:SI 0 ax) + (const_int 0 [0])) + ]) +Failed to match this instruction: +(parallel [ + (use (const_int 0 [0])) + (set (reg/i:SI 0 ax) + (const_int 0 [0])) + ]) +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +insn_cost 0 for 7: debug begin stmt marker +insn_cost 4 for 12: ax:SI=0 +insn_cost 0 for 13: use ax:SI + +Trying 12 -> 13: + 12: ax:SI=0 + 13: use ax:SI +Failed to match this instruction: +(parallel [ + (use (const_int 0 [0])) + (set (reg/i:SI 0 ax) + (const_int 0 [0])) + ]) +Failed to match this instruction: +(parallel [ + (use (const_int 0 [0])) + (set (reg/i:SI 0 ax) + (const_int 0 [0])) + ]) +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Combiner totals: 2 attempts, 2 substitutions (2 requiring new space), +;; 0 successes. diff --git a/conftest.c.280r.stv2 b/conftest.c.280r.stv2 new file mode 100644 index 000000000000..3212bac19e70 --- /dev/null +++ b/conftest.c.280r.stv2 @@ -0,0 +1,104 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +Searching for mode conversion candidates... +There are no candidates for optimization. +Total insns converted: 0 +starting the processing of deferred insns +ending the processing of deferred insns +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +Searching for mode conversion candidates... +There are no candidates for optimization. +Total insns converted: 0 +starting the processing of deferred insns +ending the processing of deferred insns +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.281r.ce2 b/conftest.c.281r.ce2 new file mode 100644 index 000000000000..937325c81325 --- /dev/null +++ b/conftest.c.281r.ce2 @@ -0,0 +1,112 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + + +========== no more changes +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + + +========== no more changes +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.282r.jump_after_combine b/conftest.c.282r.jump_after_combine new file mode 100644 index 000000000000..f110dd523c18 --- /dev/null +++ b/conftest.c.282r.jump_after_combine @@ -0,0 +1,90 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +try_optimize_cfg iteration 1 + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +try_optimize_cfg iteration 1 + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.283r.bbpart b/conftest.c.283r.bbpart new file mode 100644 index 000000000000..d7c6161264de --- /dev/null +++ b/conftest.c.283r.bbpart @@ -0,0 +1,82 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 0 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.284r.outof_cfglayout b/conftest.c.284r.outof_cfglayout new file mode 100644 index 000000000000..730cfe304161 --- /dev/null +++ b/conftest.c.284r.outof_cfglayout @@ -0,0 +1,88 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +Reordered sequence: + 2 bb 2 + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +Reordered sequence: + 2 bb 2 + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.285r.split1 b/conftest.c.285r.split1 new file mode 100644 index 000000000000..72129e32f02e --- /dev/null +++ b/conftest.c.285r.split1 @@ -0,0 +1,84 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.286r.subreg3 b/conftest.c.286r.subreg3 new file mode 100644 index 000000000000..2dac14d720a2 --- /dev/null +++ b/conftest.c.286r.subreg3 @@ -0,0 +1,342 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +Choices when optimizing for size: + Splitting mode TI for copy lowering. + Splitting mode OI for copy lowering. + Splitting mode XI for copy lowering. + Splitting mode POI for copy lowering. + Splitting mode TQ for copy lowering. + Splitting mode UTQ for copy lowering. + Splitting mode TA for copy lowering. + Splitting mode UTA for copy lowering. + Skipping mode XF for copy lowering. + Skipping mode TF for copy lowering. + Splitting mode TD for copy lowering. + Splitting mode CDI for copy lowering. + Splitting mode CTI for copy lowering. + Splitting mode CPOI for copy lowering. + Splitting mode COI for copy lowering. + Splitting mode CXI for copy lowering. + Skipping mode DC for copy lowering. + Skipping mode XC for copy lowering. + Skipping mode TC for copy lowering. + Splitting mode V12QI for copy lowering. + Splitting mode V6HI for copy lowering. + Splitting mode V14QI for copy lowering. + Skipping mode V16QI for copy lowering. + Skipping mode V8HI for copy lowering. + Skipping mode V4SI for copy lowering. + Skipping mode V2DI for copy lowering. + Skipping mode V1TI for copy lowering. + Splitting mode V32QI for copy lowering. + Splitting mode V16HI for copy lowering. + Splitting mode V8SI for copy lowering. + Splitting mode V4DI for copy lowering. + Splitting mode V2TI for copy lowering. + Splitting mode V64QI for copy lowering. + Splitting mode V32HI for copy lowering. + Splitting mode V16SI for copy lowering. + Splitting mode V8DI for copy lowering. + Splitting mode V4TI for copy lowering. + Splitting mode V128QI for copy lowering. + Splitting mode V64HI for copy lowering. + Splitting mode V32SI for copy lowering. + Splitting mode V16DI for copy lowering. + Splitting mode V8TI for copy lowering. + Splitting mode V64SI for copy lowering. + Skipping mode V4SF for copy lowering. + Skipping mode V2DF for copy lowering. + Splitting mode V8SF for copy lowering. + Splitting mode V4DF for copy lowering. + Splitting mode V2TF for copy lowering. + Splitting mode V16SF for copy lowering. + Splitting mode V8DF for copy lowering. + Splitting mode V4TF for copy lowering. + Splitting mode V32SF for copy lowering. + Splitting mode V16DF for copy lowering. + Splitting mode V8TF for copy lowering. + Splitting mode V64SF for copy lowering. + Splitting mode V32DF for copy lowering. + Splitting mode V16TF for copy lowering. + Skipping mode TI for zero_extend lowering. + Splitting mode TI for ashift lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for lshiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for ashiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + +Choices when optimizing for speed: + Splitting mode TI for copy lowering. + Splitting mode OI for copy lowering. + Splitting mode XI for copy lowering. + Splitting mode POI for copy lowering. + Splitting mode TQ for copy lowering. + Splitting mode UTQ for copy lowering. + Splitting mode TA for copy lowering. + Splitting mode UTA for copy lowering. + Skipping mode XF for copy lowering. + Skipping mode TF for copy lowering. + Splitting mode TD for copy lowering. + Splitting mode CDI for copy lowering. + Splitting mode CTI for copy lowering. + Splitting mode CPOI for copy lowering. + Splitting mode COI for copy lowering. + Splitting mode CXI for copy lowering. + Skipping mode DC for copy lowering. + Skipping mode XC for copy lowering. + Skipping mode TC for copy lowering. + Splitting mode V12QI for copy lowering. + Splitting mode V6HI for copy lowering. + Splitting mode V14QI for copy lowering. + Skipping mode V16QI for copy lowering. + Skipping mode V8HI for copy lowering. + Skipping mode V4SI for copy lowering. + Skipping mode V2DI for copy lowering. + Skipping mode V1TI for copy lowering. + Splitting mode V32QI for copy lowering. + Splitting mode V16HI for copy lowering. + Splitting mode V8SI for copy lowering. + Splitting mode V4DI for copy lowering. + Splitting mode V2TI for copy lowering. + Splitting mode V64QI for copy lowering. + Splitting mode V32HI for copy lowering. + Splitting mode V16SI for copy lowering. + Splitting mode V8DI for copy lowering. + Splitting mode V4TI for copy lowering. + Splitting mode V128QI for copy lowering. + Splitting mode V64HI for copy lowering. + Splitting mode V32SI for copy lowering. + Splitting mode V16DI for copy lowering. + Splitting mode V8TI for copy lowering. + Splitting mode V64SI for copy lowering. + Skipping mode V4SF for copy lowering. + Skipping mode V2DF for copy lowering. + Splitting mode V8SF for copy lowering. + Splitting mode V4DF for copy lowering. + Splitting mode V2TF for copy lowering. + Splitting mode V16SF for copy lowering. + Splitting mode V8DF for copy lowering. + Splitting mode V4TF for copy lowering. + Splitting mode V32SF for copy lowering. + Splitting mode V16DF for copy lowering. + Splitting mode V8TF for copy lowering. + Splitting mode V64SF for copy lowering. + Splitting mode V32DF for copy lowering. + Splitting mode V16TF for copy lowering. + Skipping mode TI for zero_extend lowering. + Splitting mode TI for ashift lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for lshiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for ashiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + +Nothing to lower in this function. +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +Choices when optimizing for size: + Splitting mode TI for copy lowering. + Splitting mode OI for copy lowering. + Splitting mode XI for copy lowering. + Splitting mode POI for copy lowering. + Splitting mode TQ for copy lowering. + Splitting mode UTQ for copy lowering. + Splitting mode TA for copy lowering. + Splitting mode UTA for copy lowering. + Skipping mode XF for copy lowering. + Skipping mode TF for copy lowering. + Splitting mode TD for copy lowering. + Splitting mode CDI for copy lowering. + Splitting mode CTI for copy lowering. + Splitting mode CPOI for copy lowering. + Splitting mode COI for copy lowering. + Splitting mode CXI for copy lowering. + Skipping mode DC for copy lowering. + Skipping mode XC for copy lowering. + Skipping mode TC for copy lowering. + Splitting mode V12QI for copy lowering. + Splitting mode V6HI for copy lowering. + Splitting mode V14QI for copy lowering. + Skipping mode V16QI for copy lowering. + Skipping mode V8HI for copy lowering. + Skipping mode V4SI for copy lowering. + Skipping mode V2DI for copy lowering. + Skipping mode V1TI for copy lowering. + Splitting mode V32QI for copy lowering. + Splitting mode V16HI for copy lowering. + Splitting mode V8SI for copy lowering. + Splitting mode V4DI for copy lowering. + Splitting mode V2TI for copy lowering. + Splitting mode V64QI for copy lowering. + Splitting mode V32HI for copy lowering. + Splitting mode V16SI for copy lowering. + Splitting mode V8DI for copy lowering. + Splitting mode V4TI for copy lowering. + Splitting mode V128QI for copy lowering. + Splitting mode V64HI for copy lowering. + Splitting mode V32SI for copy lowering. + Splitting mode V16DI for copy lowering. + Splitting mode V8TI for copy lowering. + Splitting mode V64SI for copy lowering. + Skipping mode V4SF for copy lowering. + Skipping mode V2DF for copy lowering. + Splitting mode V8SF for copy lowering. + Splitting mode V4DF for copy lowering. + Splitting mode V2TF for copy lowering. + Splitting mode V16SF for copy lowering. + Splitting mode V8DF for copy lowering. + Splitting mode V4TF for copy lowering. + Splitting mode V32SF for copy lowering. + Splitting mode V16DF for copy lowering. + Splitting mode V8TF for copy lowering. + Splitting mode V64SF for copy lowering. + Splitting mode V32DF for copy lowering. + Splitting mode V16TF for copy lowering. + Skipping mode TI for zero_extend lowering. + Splitting mode TI for ashift lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for lshiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for ashiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + +Choices when optimizing for speed: + Splitting mode TI for copy lowering. + Splitting mode OI for copy lowering. + Splitting mode XI for copy lowering. + Splitting mode POI for copy lowering. + Splitting mode TQ for copy lowering. + Splitting mode UTQ for copy lowering. + Splitting mode TA for copy lowering. + Splitting mode UTA for copy lowering. + Skipping mode XF for copy lowering. + Skipping mode TF for copy lowering. + Splitting mode TD for copy lowering. + Splitting mode CDI for copy lowering. + Splitting mode CTI for copy lowering. + Splitting mode CPOI for copy lowering. + Splitting mode COI for copy lowering. + Splitting mode CXI for copy lowering. + Skipping mode DC for copy lowering. + Skipping mode XC for copy lowering. + Skipping mode TC for copy lowering. + Splitting mode V12QI for copy lowering. + Splitting mode V6HI for copy lowering. + Splitting mode V14QI for copy lowering. + Skipping mode V16QI for copy lowering. + Skipping mode V8HI for copy lowering. + Skipping mode V4SI for copy lowering. + Skipping mode V2DI for copy lowering. + Skipping mode V1TI for copy lowering. + Splitting mode V32QI for copy lowering. + Splitting mode V16HI for copy lowering. + Splitting mode V8SI for copy lowering. + Splitting mode V4DI for copy lowering. + Splitting mode V2TI for copy lowering. + Splitting mode V64QI for copy lowering. + Splitting mode V32HI for copy lowering. + Splitting mode V16SI for copy lowering. + Splitting mode V8DI for copy lowering. + Splitting mode V4TI for copy lowering. + Splitting mode V128QI for copy lowering. + Splitting mode V64HI for copy lowering. + Splitting mode V32SI for copy lowering. + Splitting mode V16DI for copy lowering. + Splitting mode V8TI for copy lowering. + Splitting mode V64SI for copy lowering. + Skipping mode V4SF for copy lowering. + Skipping mode V2DF for copy lowering. + Splitting mode V8SF for copy lowering. + Splitting mode V4DF for copy lowering. + Splitting mode V2TF for copy lowering. + Splitting mode V16SF for copy lowering. + Splitting mode V8DF for copy lowering. + Splitting mode V4TF for copy lowering. + Splitting mode V32SF for copy lowering. + Splitting mode V16DF for copy lowering. + Splitting mode V8TF for copy lowering. + Splitting mode V64SF for copy lowering. + Splitting mode V32DF for copy lowering. + Splitting mode V16TF for copy lowering. + Skipping mode TI for zero_extend lowering. + Splitting mode TI for ashift lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for lshiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + Splitting mode TI for ashiftrt lowering with shift amounts = 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 + +Nothing to lower in this function. +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.288r.mode_sw b/conftest.c.288r.mode_sw new file mode 100644 index 000000000000..302ed583eb3f --- /dev/null +++ b/conftest.c.288r.mode_sw @@ -0,0 +1,88 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.289r.asmcons b/conftest.c.289r.asmcons new file mode 100644 index 000000000000..72129e32f02e --- /dev/null +++ b/conftest.c.289r.asmcons @@ -0,0 +1,84 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +;; live in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live gen 0 [ax] +;; live kill +(note 5 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; live out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.294r.ira b/conftest.c.294r.ira new file mode 100644 index 000000000000..93b4b791b5f7 --- /dev/null +++ b/conftest.c.294r.ira @@ -0,0 +1,196 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +Starting decreasing number of live ranges... +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +Building IRA IR +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + +Pass 0 for finding pseudo/allocno costs + + + + +Pass 1 for finding pseudo/allocno costs + + + + Insn 11(l0): point = 0 + Insn 10(l0): point = 2 +Compressing live ranges: from 5 to 0 - 0% +Ranges after the compression: ++++Allocating 0 bytes for conflict table (uncompressed size 0) + + regions=1, blocks=3, points=0 + allocnos=0 (big 0), copies=0, conflicts=0, ranges=0 + +**** Allocnos coloring: + + + Loop 0 (parent -1, header bb2, depth 0) + bbs: 2 + all: + modified regnos: + border: + Pressure: GENERAL_REGS=1 + Hard reg set forest: + 0:( 0-6 8-15 20-51)@0 + Forming thread from colorable bucket: +Disposition: +New iteration of spill/restore move ++++Costs: overall 0, reg 0, mem 0, ld 0, st 0, move 0 ++++ move loops 0, new jumps 0 + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 0 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +Starting decreasing number of live ranges... +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +Building IRA IR +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + +Pass 0 for finding pseudo/allocno costs + + + + +Pass 1 for finding pseudo/allocno costs + + + + Insn 13(l0): point = 0 + Insn 12(l0): point = 2 +Compressing live ranges: from 5 to 0 - 0% +Ranges after the compression: ++++Allocating 0 bytes for conflict table (uncompressed size 0) + + regions=1, blocks=3, points=0 + allocnos=0 (big 0), copies=0, conflicts=0, ranges=0 + +**** Allocnos coloring: + + + Loop 0 (parent -1, header bb2, depth 0) + bbs: 2 + all: + modified regnos: + border: + Pressure: GENERAL_REGS=1 + Hard reg set forest: + 0:( 0-6 8-15 20-51)@0 + Forming thread from colorable bucket: +Disposition: +New iteration of spill/restore move ++++Costs: overall 0, reg 0, mem 0, ld 0, st 0, move 0 ++++ move loops 0, new jumps 0 + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] 16 [argp] 19 [frame] +;; regular block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; eh block artificial uses 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7 [sp] 16 [argp] 19 [frame] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 6 [bp] 7 [sp] 19 [frame] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u} r7={1d,2u} r16={1d,1u} r19={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 29{20d,9u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(6){ }u-1(7){ }u-1(16){ }u-1(19){ }} +;; lr in 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr use 6 [bp] 7 [sp] 16 [argp] 19 [frame] +;; lr def 0 [ax] +(note 5 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 0 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 19 [frame] + diff --git a/conftest.c.295r.reload b/conftest.c.295r.reload new file mode 100644 index 000000000000..5cc3c7f742b7 --- /dev/null +++ b/conftest.c.295r.reload @@ -0,0 +1,178 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + +********** Local #1: ********** + + Spilling non-eliminable hard regs: 7 +New elimination table: +Can eliminate 16 to 7 (offset=8, prev_offset=0) +Can eliminate 16 to 6 (offset=8, prev_offset=0) +Can eliminate 19 to 7 (offset=0, prev_offset=0) +Can eliminate 19 to 6 (offset=0, prev_offset=0) + alt=0,overall=0,losers=0,rld_nregs=0 + Choosing alt 0 in insn 10: (0) =r (1) g {*movsi_internal} + Spilling non-eliminable hard regs: 7 + +********** Inheritance #1: ********** + +EBB 2 + +********** Pseudo live ranges #1: ********** + + +********** Assignment #1: ********** + + +********** Undoing inheritance #1: ********** + + +********** Local #2: ********** + + Spilling non-eliminable hard regs: 7 + Spilling non-eliminable hard regs: 7 +New elimination table: +Can eliminate 16 to 7 (offset=8, prev_offset=8) +Can eliminate 16 to 6 (offset=8, prev_offset=0) +Can eliminate 19 to 7 (offset=0, prev_offset=0) +Can eliminate 19 to 6 (offset=0, prev_offset=0) + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +ending the processing of deferred insns +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 13 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 13 11 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + +********** Local #1: ********** + + Spilling non-eliminable hard regs: 7 +New elimination table: +Can eliminate 16 to 7 (offset=8, prev_offset=0) +Can eliminate 16 to 6 (offset=8, prev_offset=0) +Can eliminate 19 to 7 (offset=0, prev_offset=0) +Can eliminate 19 to 6 (offset=0, prev_offset=0) + alt=0,overall=0,losers=0,rld_nregs=0 + Choosing alt 0 in insn 12: (0) =r (1) g {*movsi_internal} + Spilling non-eliminable hard regs: 7 + +********** Inheritance #1: ********** + +EBB 2 + +********** Pseudo live ranges #1: ********** + + +********** Assignment #1: ********** + + +********** Undoing inheritance #1: ********** + + +********** Local #2: ********** + + Spilling non-eliminable hard regs: 7 + Spilling non-eliminable hard regs: 7 +New elimination table: +Can eliminate 16 to 7 (offset=8, prev_offset=8) +Can eliminate 16 to 6 (offset=8, prev_offset=0) +Can eliminate 19 to 7 (offset=0, prev_offset=0) +Can eliminate 19 to 6 (offset=0, prev_offset=0) + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +ending the processing of deferred insns +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 5 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 15 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 15 13 0 NOTE_INSN_DELETED) diff --git a/conftest.c.297r.postreload b/conftest.c.297r.postreload new file mode 100644 index 000000000000..4c35e1734bf5 --- /dev/null +++ b/conftest.c.297r.postreload @@ -0,0 +1,90 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 13 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 13 11 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 5 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 15 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 15 13 0 NOTE_INSN_DELETED) diff --git a/conftest.c.298r.gcse2 b/conftest.c.298r.gcse2 new file mode 100644 index 000000000000..162129c1ef4b --- /dev/null +++ b/conftest.c.298r.gcse2 @@ -0,0 +1,96 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +expression hash table +size 13, 0 elements, 0.000000 collision/search ratio + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 13 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 13 11 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +expression hash table +size 13, 0 elements, 0.000000 collision/search ratio + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 5 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 15 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 15 13 0 NOTE_INSN_DELETED) diff --git a/conftest.c.299r.split2 b/conftest.c.299r.split2 new file mode 100644 index 000000000000..f78752ad495b --- /dev/null +++ b/conftest.c.299r.split2 @@ -0,0 +1,86 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 13 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 13 11 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 5 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 15 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 15 13 0 NOTE_INSN_DELETED) diff --git a/conftest.c.300r.ree b/conftest.c.300r.ree new file mode 100644 index 000000000000..0eeda3d19b6b --- /dev/null +++ b/conftest.c.300r.ree @@ -0,0 +1,100 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 13 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 13 11 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 5 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 15 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 15 13 0 NOTE_INSN_DELETED) diff --git a/conftest.c.301r.cmpelim b/conftest.c.301r.cmpelim new file mode 100644 index 000000000000..e648ecda8e77 --- /dev/null +++ b/conftest.c.301r.cmpelim @@ -0,0 +1,96 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 13 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 13 11 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 5 1 4 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 4 5 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 15 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +;; succ: EXIT [always] count:1073741824 (estimated locally) (FALLTHRU) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(note 15 13 0 NOTE_INSN_DELETED) diff --git a/conftest.c.302r.pro_and_epilogue b/conftest.c.302r.pro_and_epilogue new file mode 100644 index 000000000000..fa90ed66bda2 --- /dev/null +++ b/conftest.c.302r.pro_and_epilogue @@ -0,0 +1,134 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +Stack clash no probe no stack adjustment in prologue. +Stack clash no residual allocation in prologue. +Stack clash no frame pointer needed. +Stack clash not noreturn prologue. +scanning new insn with uid = 16. + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 15 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 15 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 16 15 17 2 (simple_return) "conftest.c":47:88 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +Stack clash no probe no stack adjustment in prologue. +Stack clash no residual allocation in prologue. +Stack clash no frame pointer needed. +Stack clash not noreturn prologue. +scanning new insn with uid = 18. + + +try_optimize_cfg iteration 1 + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 17 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 17 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 18 17 19 2 (simple_return) "conftest.c":48:81 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.303r.dse2 b/conftest.c.303r.dse2 new file mode 100644 index 000000000000..b088ec35cfe5 --- /dev/null +++ b/conftest.c.303r.dse2 @@ -0,0 +1,136 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + +**scanning insn=5 + +**scanning insn=10 +mems_found = 0, cannot_delete = true + +**scanning insn=11 +mems_found = 0, cannot_delete = false + +**scanning insn=16 +mems_found = 0, cannot_delete = false +dse: local deletions = 0, global deletions = 0 +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 15 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 15 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 16 15 17 2 (simple_return) "conftest.c":47:88 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + +**scanning insn=7 + +**scanning insn=12 +mems_found = 0, cannot_delete = true + +**scanning insn=13 +mems_found = 0, cannot_delete = false + +**scanning insn=18 +mems_found = 0, cannot_delete = false +dse: local deletions = 0, global deletions = 0 +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 17 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 17 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 18 17 19 2 (simple_return) "conftest.c":48:81 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.304r.csa b/conftest.c.304r.csa new file mode 100644 index 000000000000..cd90ff9ddc58 --- /dev/null +++ b/conftest.c.304r.csa @@ -0,0 +1,108 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 15 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 15 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 16 15 17 2 (simple_return) "conftest.c":47:88 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 17 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 17 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 18 17 19 2 (simple_return) "conftest.c":48:81 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.305r.jump2 b/conftest.c.305r.jump2 new file mode 100644 index 000000000000..7e3ff63ea60b --- /dev/null +++ b/conftest.c.305r.jump2 @@ -0,0 +1,106 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +try_optimize_cfg iteration 1 + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 15 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 15 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 16 15 17 2 (simple_return) "conftest.c":47:88 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +try_optimize_cfg iteration 1 + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 17 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 17 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 18 17 19 2 (simple_return) "conftest.c":48:81 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.306r.compgotos b/conftest.c.306r.compgotos new file mode 100644 index 000000000000..849598f2cae3 --- /dev/null +++ b/conftest.c.306r.compgotos @@ -0,0 +1,98 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 10 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 10 5 11 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":47:88 75 {*movsi_internal} + (nil)) +(insn 11 10 15 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 15 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 16 15 17 2 (simple_return) "conftest.c":47:88 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 21{17d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 12 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 12 7 13 2 (set (reg/i:SI 0 ax) + (const_int 0 [0])) "conftest.c":48:81 75 {*movsi_internal} + (nil)) +(insn 13 12 17 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 17 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 18 17 19 2 (simple_return) "conftest.c":48:81 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.308r.peephole2 b/conftest.c.308r.peephole2 new file mode 100644 index 000000000000..0850da2bab9a --- /dev/null +++ b/conftest.c.308r.peephole2 @@ -0,0 +1,122 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +Splitting with gen_peephole2_171 (i386.md:20322) +scanning new insn with uid = 20. +deleting insn with uid = 10. +verify found no changes in insn with uid = 20. +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 20 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 20 5 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 -1 + (nil)) +(insn 11 20 15 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 15 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 16 15 17 2 (simple_return) "conftest.c":47:88 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +Splitting with gen_peephole2_171 (i386.md:20322) +scanning new insn with uid = 20. +deleting insn with uid = 12. +verify found no changes in insn with uid = 20. +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 20 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 20 7 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 -1 + (nil)) +(insn 13 20 17 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 17 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 18 17 19 2 (simple_return) "conftest.c":48:81 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.309r.ce3 b/conftest.c.309r.ce3 new file mode 100644 index 000000000000..74d43352bb7e --- /dev/null +++ b/conftest.c.309r.ce3 @@ -0,0 +1,254 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +f + +Dataflow summary: +def_info->table_size = 17, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d1(0){ }d2(1){ }d3(2){ }d4(4){ }d5(5){ }d6(7){ }d7(20){ }d8(21){ }d9(22){ }d10(23){ }d11(24){ }d12(25){ }d13(26){ }d14(27){ }d15(36){ }d16(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 7 [sp] +;; live out 7 [sp] + +( 0 )->[2]->( 1 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +( 2 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 16 to worklist + Adding insn 11 to worklist +Finished finding needed instructions: +processing block 2 lr out = 0 [ax] 7 [sp] + Adding insn 20 to worklist +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +========== no more changes +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 20 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 20 5 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 -1 + (nil)) +(insn 11 20 15 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 15 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 16 15 17 2 (simple_return) "conftest.c":47:88 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +main + +Dataflow summary: +def_info->table_size = 17, use_info->table_size = 0 +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d1(0){ }d2(1){ }d3(2){ }d4(4){ }d5(5){ }d6(7){ }d7(20){ }d8(21){ }d9(22){ }d10(23){ }d11(24){ }d12(25){ }d13(26){ }d14(27){ }d15(36){ }d16(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 7 [sp] +;; live out 7 [sp] + +( 0 )->[2]->( 1 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +( 2 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 18 to worklist + Adding insn 13 to worklist +Finished finding needed instructions: +processing block 2 lr out = 0 [ax] 7 [sp] + Adding insn 20 to worklist +df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1) + + +========== no more changes +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 20 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 20 7 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 -1 + (nil)) +(insn 13 20 17 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 17 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 18 17 19 2 (simple_return) "conftest.c":48:81 -1 + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.311r.cprop_hardreg b/conftest.c.311r.cprop_hardreg new file mode 100644 index 000000000000..1766d4d4a0bc --- /dev/null +++ b/conftest.c.311r.cprop_hardreg @@ -0,0 +1,122 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 20 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 20 5 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 15 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 15 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 16 15 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 20 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 20 7 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 17 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 17 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 18 17 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.312r.rtl_dce b/conftest.c.312r.rtl_dce new file mode 100644 index 000000000000..7110ef811d67 --- /dev/null +++ b/conftest.c.312r.rtl_dce @@ -0,0 +1,230 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d1(0){ }d2(1){ }d3(2){ }d4(4){ }d5(5){ }d6(7){ }d7(20){ }d8(21){ }d9(22){ }d10(23){ }d11(24){ }d12(25){ }d13(26){ }d14(27){ }d15(36){ }d16(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 7 [sp] +;; live out 7 [sp] + +( 0 )->[2]->( 1 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +( 2 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 16 to worklist + Adding insn 11 to worklist +Finished finding needed instructions: +processing block 2 lr out = 0 [ax] 7 [sp] + Adding insn 20 to worklist +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 20 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 20 5 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 15 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 15 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 16 15 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. + +( )->[0]->( 2 ) +;; bb 0 artificial_defs: { d1(0){ }d2(1){ }d3(2){ }d4(4){ }d5(5){ }d6(7){ }d7(20){ }d8(21){ }d9(22){ }d10(23){ }d11(24){ }d12(25){ }d13(26){ }d14(27){ }d15(36){ }d16(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill +;; lr out 7 [sp] +;; live out 7 [sp] + +( 0 )->[2]->( 1 ) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +( 2 )->[1]->( ) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill +;; lr out +;; live out + +Finding needed instructions: + Adding insn 18 to worklist + Adding insn 13 to worklist +Finished finding needed instructions: +processing block 2 lr out = 0 [ax] 7 [sp] + Adding insn 20 to worklist +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 20 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 20 7 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 17 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 17 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 18 17 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.313r.bbro b/conftest.c.313r.bbro new file mode 100644 index 000000000000..fbdd05d851ac --- /dev/null +++ b/conftest.c.313r.bbro @@ -0,0 +1,126 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +try_optimize_cfg iteration 1 + + + +try_optimize_cfg iteration 1 + +Reordered sequence: + 2 bb 2 + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 20 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 20 5 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 15 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 15 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 16 15 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +try_optimize_cfg iteration 1 + + + +try_optimize_cfg iteration 1 + +Reordered sequence: + 2 bb 2 + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 20 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 20 7 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 17 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 17 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 18 17 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.314r.split3 b/conftest.c.314r.split3 new file mode 100644 index 000000000000..002f817d4706 --- /dev/null +++ b/conftest.c.314r.split3 @@ -0,0 +1,106 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 20 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn 20 5 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 15 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 15 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 16 15 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 20 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn 20 7 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 17 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 17 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn 18 17 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.315r.sched2 b/conftest.c.315r.sched2 new file mode 100644 index 000000000000..347e204ee2e8 --- /dev/null +++ b/conftest.c.315r.sched2 @@ -0,0 +1,146 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +;; ====================================================== +;; -- basic block 2 from 5 to 16 -- after reload +;; ====================================================== + +;; 0--> b 0: i 5 debug_marker :nothing +;; 0--> b 0: i 20 {ax=0;clobber flags;} :hsw_decodern,hsw_p0156 +;; 0--> b 0: i 11 use ax :nothing +;; 1--> b 0: i 16 simple_return :hsw_decoder0 +;; Ready list (final): +;; total time = 1 +;; new head = 5 +;; new tail = 16 + + + +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 20 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn:TI 20 5 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns +df_analyze called +;; ====================================================== +;; -- basic block 2 from 7 to 18 -- after reload +;; ====================================================== + +;; 0--> b 0: i 7 debug_marker :nothing +;; 0--> b 0: i 20 {ax=0;clobber flags;} :hsw_decodern,hsw_p0156 +;; 0--> b 0: i 13 use ax :nothing +;; 1--> b 0: i 18 simple_return :hsw_decoder0 +;; Ready list (final): +;; total time = 1 +;; new head = 7 +;; new tail = 18 + + + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 20 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn:TI 20 7 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.317r.stack b/conftest.c.317r.stack new file mode 100644 index 000000000000..58a004dd0ec2 --- /dev/null +++ b/conftest.c.317r.stack @@ -0,0 +1,110 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +starting the processing of deferred insns +ending the processing of deferred insns + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 20 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn:TI 20 5 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +starting the processing of deferred insns +ending the processing of deferred insns + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 20 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn:TI 20 7 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.318r.zero_call_used_regs b/conftest.c.318r.zero_call_used_regs new file mode 100644 index 000000000000..3d2f7044cd79 --- /dev/null +++ b/conftest.c.318r.zero_call_used_regs @@ -0,0 +1,106 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 20 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn:TI 20 5 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 20 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn:TI 20 7 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.319r.alignments b/conftest.c.319r.alignments new file mode 100644 index 000000000000..e61988f649c8 --- /dev/null +++ b/conftest.c.319r.alignments @@ -0,0 +1,244 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + +3 basic blocks, 2 edges. +;; bb 0 artificial_defs: { d1(0){ }d2(1){ }d3(2){ }d4(4){ }d5(5){ }d6(7){ }d7(20){ }d8(21){ }d9(22){ }d10(23){ }d11(24){ }d12(25){ }d13(26){ }d14(27){ }d15(36){ }d16(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 7 [sp] +;; live out 7 [sp] + + +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] + +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 20 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn:TI 20 5 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + + +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill + +;; lr out +;; live out + + + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +count_max: 1073741824 (estimated locally) +BB 2 loop 0 loop_depth 0 skipped. + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 5 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 5 2 20 2 (debug_marker) "conftest.c":47:78 -1 + (nil)) +(insn:TI 20 5 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + +3 basic blocks, 2 edges. +;; bb 0 artificial_defs: { d1(0){ }d2(1){ }d3(2){ }d4(4){ }d5(5){ }d6(7){ }d7(20){ }d8(21){ }d9(22){ }d10(23){ }d11(24){ }d12(25){ }d13(26){ }d14(27){ }d15(36){ }d16(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 7 [sp] +;; live out 7 [sp] + + +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] + +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 20 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn:TI 20 7 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + + +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill + +;; lr out +;; live out + + + +;; 1 loops found +;; +;; Loop 0 +;; header 0, latch 1 +;; depth 0, outer -1 +;; nodes: 0 1 2 +;; 2 succs { 1 } +count_max: 1073741824 (estimated locally) +BB 2 loop 0 loop_depth 0 skipped. + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 4{4 regular + 0 call} insns. +(note 1 0 5 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 7 2 NOTE_INSN_FUNCTION_BEG) +(debug_insn 7 4 20 2 (debug_marker) "conftest.c":48:69 -1 + (nil)) +(insn:TI 20 7 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.320r.vartrack b/conftest.c.320r.vartrack new file mode 100644 index 000000000000..32410c2bfe96 --- /dev/null +++ b/conftest.c.320r.vartrack @@ -0,0 +1,678 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +first value: 5 +deleting insn with uid = 5. +bb 2 op 0 insn 20 MO_CLOBBER (reg:CC 17 flags) +bb 2 op 1 insn 20 MO_VAL_SET (concat/u:DI (value/u:DI 5:4257 @0x3f3baa8/0x3dfce28) + (set (reg:DI 0 ax) + (const_int 0 [0]))) +(insn:TI 20 22 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +cselib hash table: +(value/u:DI 1:1 @0x3f3ba68/0x3dfcd88) + locs: + from insn 1 (value/u:DI 4:4339 @0x3f3ba98/0x3dfce00) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x3f3ba78/0x3dfcdb0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x3f3ba78/0x3dfcdb0) + locs: + from insn 1 (value/u:DI 3:4322 @0x3f3ba88/0x3dfcdd8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x3f3ba68/0x3dfcd88) + (const_int -8 [0xfffffffffffffff8])) + from insn 1 (reg/f:DI 7 sp) + no addrs +(value/u:DI 5:4257 @0x3f3baa8/0x3dfce28) + locs: + from insn 20 (reg:DI 0 ax) + from insn 20 (const_int 0 [0]) + no addrs +(value/u:DI 3:4322 @0x3f3ba88/0x3dfcdd8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x3f3ba78/0x3dfcdb0) + no addrs +(value/u:DI 4:4339 @0x3f3ba98/0x3dfce00) + locs: + from insn 1 (value/u:DI 1:1 @0x3f3ba68/0x3dfcd88) + no addrs +cselib preserved hash table: +next uid 6 +bb 2 op 2 insn 11 MO_USE_NO_VAR (reg/i:SI 0 ax) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +cselib hash table: +(value/u:DI 1:1 @0x3f3ba68/0x3dfcd88) + locs: + from insn 1 (value/u:DI 4:4339 @0x3f3ba98/0x3dfce00) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x3f3ba78/0x3dfcdb0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x3f3ba78/0x3dfcdb0) + locs: + from insn 1 (value/u:DI 3:4322 @0x3f3ba88/0x3dfcdd8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x3f3ba68/0x3dfcd88) + (const_int -8 [0xfffffffffffffff8])) + from insn 1 (reg/f:DI 7 sp) + no addrs +(value/u:DI 5:4257 @0x3f3baa8/0x3dfce28) + locs: + from insn 20 (reg:DI 0 ax) + from insn 20 (const_int 0 [0]) + no addrs +(value/u:DI 3:4322 @0x3f3ba88/0x3dfcdd8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x3f3ba78/0x3dfcdb0) + no addrs +(value/u:DI 4:4339 @0x3f3ba98/0x3dfce00) + locs: + from insn 1 (value/u:DI 1:1 @0x3f3ba68/0x3dfcd88) + no addrs +cselib preserved hash table: +next uid 6 +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +cselib hash table: +(value/u:DI 1:1 @0x3f3ba68/0x3dfcd88) + locs: + from insn 1 (value/u:DI 4:4339 @0x3f3ba98/0x3dfce00) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x3f3ba78/0x3dfcdb0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x3f3ba78/0x3dfcdb0) + locs: + from insn 1 (value/u:DI 3:4322 @0x3f3ba88/0x3dfcdd8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x3f3ba68/0x3dfcd88) + (const_int -8 [0xfffffffffffffff8])) + from insn 1 (reg/f:DI 7 sp) + no addrs +(value/u:DI 5:4257 @0x3f3baa8/0x3dfce28) + locs: + from insn 20 (reg:DI 0 ax) + from insn 20 (const_int 0 [0]) + no addrs +(value/u:DI 3:4322 @0x3f3ba88/0x3dfcdd8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x3f3ba78/0x3dfcdb0) + no addrs +(value/u:DI 4:4339 @0x3f3ba98/0x3dfce00) + locs: + from insn 1 (value/u:DI 1:1 @0x3f3ba68/0x3dfcd88) + no addrs +cselib preserved hash table: +next uid 6 +20: (reg:DI 0 ax) evaluates to (value/u:DI 5:4257 @0x3f3baa8/0x3dfce28) +20: (const_int 0 [0]) +dataflow difference found: addition of: + (value/u:DI 5:4257 @0x3f3baa8/0x3dfce28) + offset 0 + (reg:DI 0 ax) +BB 2: in 7 (was 0), out 7 (was 0), rem 0 + 0, tsz 0 +BB 2 IN: +Stack adjustment: 8 + +BB 2 OUT: +Stack adjustment: 8 +Reg 0:(value/u:DI 5:4257 @0x3f3baa8/0x3dfce28) ++0 +Variables: + (value/u:DI 5:4257 @0x3f3baa8/0x3dfce28) + offset 0 + (reg:DI 0 ax) + + +Basic block 2: +IN: +Stack adjustment: 8 + +OUT: +Stack adjustment: 8 +Reg 0:(value/u:DI 5:4257 @0x3f3baa8/0x3dfce28) ++0 +Variables: + (value/u:DI 5:4257 @0x3f3baa8/0x3dfce28) + offset 0 + (reg:DI 0 ax) + + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL) +;; pred: +;; bb 0 artificial_defs: { d1(0){ }d2(1){ }d3(2){ }d4(4){ }d5(5){ }d6(7){ }d7(20){ }d8(21){ }d9(22){ }d10(23){ }d11(24){ }d12(25){ }d13(26){ }d14(27){ }d15(36){ }d16(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 7 [sp] +;; live out 7 [sp] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] + +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 2 20 2 conftest.c:47 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +;; succ: EXIT [always] count:1073741824 (estimated locally) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (REACHABLE, RTL) +;; pred: 2 [always] count:1073741824 (estimated locally) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + +20: (reg:DI 0 ax) evaluates to (value/u:DI 5:4257 @0x3f3baa8/0x3dfce28) +20: (const_int 0 [0]) + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 2 20 2 conftest.c:47 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +first value: 9 +deleting insn with uid = 7. +bb 2 op 0 insn 20 MO_CLOBBER (reg:CC 17 flags) +bb 2 op 1 insn 20 MO_VAL_SET (concat/u:DI (value/u:DI 9:4257 @0x3f4c8a8/0x3e0ced8) + (set (reg:DI 0 ax) + (const_int 0 [0]))) +(insn:TI 20 22 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +cselib hash table: +(value/u:DI 1:1 @0x3f4c828/0x3e0cd98) + locs: + from insn 1 (value/u:DI 4:4339 @0x3f4c858/0x3e0ce10) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x3f4c838/0x3e0cdc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x3f4c838/0x3e0cdc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x3f4c848/0x3e0cde8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x3f4c828/0x3e0cd98) + (const_int -8 [0xfffffffffffffff8])) + from insn 1 (reg/f:DI 7 sp) + no addrs +(value/u:DI 9:4257 @0x3f4c8a8/0x3e0ced8) + locs: + from insn 20 (reg:DI 0 ax) + from insn 20 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + locs: + from insn 1 (value/u:SI 6:229 @0x3f4c878/0x3e0ce60) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + from insn 1 (reg:SI 5 di [ argc ]) + no addrs +(value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + locs: + from insn 1 (value/u:DI 8:230 @0x3f4c898/0x3e0ceb0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + from insn 1 (reg:DI 4 si [ argv ]) + no addrs +(value/u:DI 8:230 @0x3f4c898/0x3e0ceb0) + locs: + from insn 1 (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + no addrs +(value/u:SI 6:229 @0x3f4c878/0x3e0ce60) + locs: + from insn 1 (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + no addrs +(value/u:DI 3:4322 @0x3f4c848/0x3e0cde8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x3f4c838/0x3e0cdc0) + no addrs +(value/u:DI 4:4339 @0x3f4c858/0x3e0ce10) + locs: + from insn 1 (value/u:DI 1:1 @0x3f4c828/0x3e0cd98) + no addrs +cselib preserved hash table: +next uid 10 +bb 2 op 2 insn 13 MO_USE_NO_VAR (reg/i:SI 0 ax) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +cselib hash table: +(value/u:DI 1:1 @0x3f4c828/0x3e0cd98) + locs: + from insn 1 (value/u:DI 4:4339 @0x3f4c858/0x3e0ce10) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x3f4c838/0x3e0cdc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x3f4c838/0x3e0cdc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x3f4c848/0x3e0cde8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x3f4c828/0x3e0cd98) + (const_int -8 [0xfffffffffffffff8])) + from insn 1 (reg/f:DI 7 sp) + no addrs +(value/u:DI 9:4257 @0x3f4c8a8/0x3e0ced8) + locs: + from insn 20 (reg:DI 0 ax) + from insn 20 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + locs: + from insn 1 (value/u:SI 6:229 @0x3f4c878/0x3e0ce60) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + from insn 1 (reg:SI 5 di [ argc ]) + no addrs +(value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + locs: + from insn 1 (value/u:DI 8:230 @0x3f4c898/0x3e0ceb0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + from insn 1 (reg:DI 4 si [ argv ]) + no addrs +(value/u:DI 8:230 @0x3f4c898/0x3e0ceb0) + locs: + from insn 1 (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + no addrs +(value/u:SI 6:229 @0x3f4c878/0x3e0ce60) + locs: + from insn 1 (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + no addrs +(value/u:DI 3:4322 @0x3f4c848/0x3e0cde8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x3f4c838/0x3e0cdc0) + no addrs +(value/u:DI 4:4339 @0x3f4c858/0x3e0ce10) + locs: + from insn 1 (value/u:DI 1:1 @0x3f4c828/0x3e0cd98) + no addrs +cselib preserved hash table: +next uid 10 +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +cselib hash table: +(value/u:DI 1:1 @0x3f4c828/0x3e0cd98) + locs: + from insn 1 (value/u:DI 4:4339 @0x3f4c858/0x3e0ce10) + from insn 1 (plus:DI (value/u/c:DI 2:2 @0x3f4c838/0x3e0cdc0) + (const_int 8 [0x8])) + from insn 1 (reg/f:DI 16 argp) + no addrs +(value/u/c:DI 2:2 @0x3f4c838/0x3e0cdc0) + locs: + from insn 1 (value/u:DI 3:4322 @0x3f4c848/0x3e0cde8) + from insn 1 (plus:DI (value/u:DI 1:1 @0x3f4c828/0x3e0cd98) + (const_int -8 [0xfffffffffffffff8])) + from insn 1 (reg/f:DI 7 sp) + no addrs +(value/u:DI 9:4257 @0x3f4c8a8/0x3e0ced8) + locs: + from insn 20 (reg:DI 0 ax) + from insn 20 (const_int 0 [0]) + no addrs +(value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + locs: + from insn 1 (value/u:SI 6:229 @0x3f4c878/0x3e0ce60) + from insn 1 (entry_value:SI (reg:SI 5 di [ argc ])) + from insn 1 (reg:SI 5 di [ argc ]) + no addrs +(value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + locs: + from insn 1 (value/u:DI 8:230 @0x3f4c898/0x3e0ceb0) + from insn 1 (entry_value:DI (reg:DI 4 si [ argv ])) + from insn 1 (reg:DI 4 si [ argv ]) + no addrs +(value/u:DI 8:230 @0x3f4c898/0x3e0ceb0) + locs: + from insn 1 (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + no addrs +(value/u:SI 6:229 @0x3f4c878/0x3e0ce60) + locs: + from insn 1 (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + no addrs +(value/u:DI 3:4322 @0x3f4c848/0x3e0cde8) + locs: + from insn 1 (value/u/c:DI 2:2 @0x3f4c838/0x3e0cdc0) + no addrs +(value/u:DI 4:4339 @0x3f4c858/0x3e0ce10) + locs: + from insn 1 (value/u:DI 1:1 @0x3f4c828/0x3e0cd98) + no addrs +cselib preserved hash table: +next uid 10 +20: (reg:DI 0 ax) evaluates to (value/u:DI 9:4257 @0x3f4c8a8/0x3e0ced8) +20: (const_int 0 [0]) +dataflow difference found: addition of: + (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + offset 0 + (reg:DI 4 si [ argv ]) +dataflow difference found: addition of: + (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + offset 0 + (reg:SI 5 di [ argc ]) +dataflow difference found: addition of: + (value/u:DI 9:4257 @0x3f4c8a8/0x3e0ced8) + offset 0 + (reg:DI 0 ax) +dataflow difference found: addition of: + name: argc + offset 0 + (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) +dataflow difference found: addition of: + name: argv + offset 0 + (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) +BB 2: in 7 (was 0), out 7 (was 0), rem 0 + 0, tsz 0 +BB 2 IN: +Stack adjustment: 8 +Reg 4:(value/u:DI 7:7 @0x3f4c888/0x3e0ce88) ++0 +Reg 5:(value/u:SI 5:5 @0x3f4c868/0x3e0ce38) ++0 +Variables: + name: argv + offset 0 + (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + offset 0 + (reg:DI 4 si [ argv ]) + name: argc + offset 0 + (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + offset 0 + (reg:SI 5 di [ argc ]) + +BB 2 OUT: +Stack adjustment: 8 +Reg 0:(value/u:DI 9:4257 @0x3f4c8a8/0x3e0ced8) ++0 +Reg 4:(value/u:DI 7:7 @0x3f4c888/0x3e0ce88) ++0 +Reg 5:(value/u:SI 5:5 @0x3f4c868/0x3e0ce38) ++0 +Variables: + (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + offset 0 + (reg:DI 4 si [ argv ]) + (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + offset 0 + (reg:SI 5 di [ argc ]) + (value/u:DI 9:4257 @0x3f4c8a8/0x3e0ced8) + offset 0 + (reg:DI 0 ax) + name: argc + offset 0 + (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + name: argv + offset 0 + (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + + +Basic block 2: +IN: +Stack adjustment: 8 +Reg 4:(value/u:DI 7:7 @0x3f4c888/0x3e0ce88) ++0 +Reg 5:(value/u:SI 5:5 @0x3f4c868/0x3e0ce38) ++0 +Variables: + name: argv + offset 0 + (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + offset 0 + (reg:DI 4 si [ argv ]) + name: argc + offset 0 + (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + offset 0 + (reg:SI 5 di [ argc ]) + +OUT: +Stack adjustment: 8 +Reg 0:(value/u:DI 9:4257 @0x3f4c8a8/0x3e0ced8) ++0 +Reg 4:(value/u:DI 7:7 @0x3f4c888/0x3e0ce88) ++0 +Reg 5:(value/u:SI 5:5 @0x3f4c868/0x3e0ce38) ++0 +Variables: + (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + offset 0 + (reg:DI 4 si [ argv ]) + (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + offset 0 + (reg:SI 5 di [ argc ]) + (value/u:DI 9:4257 @0x3f4c8a8/0x3e0ced8) + offset 0 + (reg:DI 0 ax) + name: argc + offset 0 + (value/u:SI 5:5 @0x3f4c868/0x3e0ce38) + name: argv + offset 0 + (value/u:DI 7:7 @0x3f4c888/0x3e0ce88) + + +3 basic blocks, 2 edges. +;; basic block 0, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block (nil), next block 2, flags: (RTL) +;; pred: +;; bb 0 artificial_defs: { d1(0){ }d2(1){ }d3(2){ }d4(4){ }d5(5){ }d6(7){ }d7(20){ }d8(21){ }d9(22){ }d10(23){ }d11(24){ }d12(25){ }d13(26){ }d14(27){ }d15(36){ }d16(37){ }} +;; bb 0 artificial_uses: { } +;; lr in +;; lr use +;; lr def 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live in +;; live gen 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; live kill + +;; lr out 7 [sp] +;; live out 7 [sp] + +;; succ: 2 [always] count:1073741824 (estimated locally) (FALLTHRU) + +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] + +(note 5 1 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 4 20 2 conftest.c:48 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +;; succ: EXIT [always] count:1073741824 (estimated locally) + +;; basic block 1, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 2, next block (nil), flags: (REACHABLE, RTL) +;; pred: 2 [always] count:1073741824 (estimated locally) +;; bb 1 artificial_defs: { } +;; bb 1 artificial_uses: { u-1(0){ }u-1(7){ }} +;; lr in 0 [ax] 7 [sp] +;; lr use 0 [ax] 7 [sp] +;; lr def +;; live in 0 [ax] 7 [sp] +;; live gen +;; live kill + +;; lr out +;; live out + +;; succ: + + +20: (reg:DI 0 ax) evaluates to (value/u:DI 9:4257 @0x3f4c8a8/0x3e0ced8) +20: (const_int 0 [0]) + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(note 23 1 24 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 24 23 5 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +;; basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe hot +;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED) +;; pred: ENTRY [always] count:1073741824 (estimated locally) (FALLTHRU) +;; bb 2 artificial_defs: { } +;; bb 2 artificial_uses: { u-1(7){ }} +;; lr in 7 [sp] +;; lr use 7 [sp] +;; lr def 0 [ax] 17 [flags] +;; live in 7 [sp] +;; live gen 0 [ax] +;; live kill 17 [flags] +(note 5 24 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 4 20 2 conftest.c:48 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +;; succ: EXIT [always] count:1073741824 (estimated locally) +;; lr out 0 [ax] 7 [sp] +;; live out 0 [ax] 7 [sp] + +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.321r.mach b/conftest.c.321r.mach new file mode 100644 index 000000000000..062afe6e46d4 --- /dev/null +++ b/conftest.c.321r.mach @@ -0,0 +1,76 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 2 20 2 conftest.c:47 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(note 23 1 24 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 24 23 5 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(note 5 24 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 4 20 2 conftest.c:48 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.322r.barriers b/conftest.c.322r.barriers new file mode 100644 index 000000000000..062afe6e46d4 --- /dev/null +++ b/conftest.c.322r.barriers @@ -0,0 +1,76 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 3 NOTE_INSN_DELETED) +(note 3 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 2 20 2 conftest.c:47 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(note 23 1 24 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 24 23 5 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(note 5 24 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 4 20 2 conftest.c:48 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.326r.endbr_and_patchable_area b/conftest.c.326r.endbr_and_patchable_area new file mode 100644 index 000000000000..6b74742ae0d5 --- /dev/null +++ b/conftest.c.326r.endbr_and_patchable_area @@ -0,0 +1,86 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +scanning new insn with uid = 23. + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(insn 23 1 3 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) -1 + (nil)) +(note 3 23 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 2 20 2 conftest.c:47 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +scanning new insn with uid = 25. + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(note 23 1 24 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 24 23 25 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(insn 25 24 5 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) -1 + (nil)) +(note 5 25 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 4 20 2 conftest.c:48 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.327r.shorten b/conftest.c.327r.shorten new file mode 100644 index 000000000000..81f6615e4fb8 --- /dev/null +++ b/conftest.c.327r.shorten @@ -0,0 +1,84 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(insn 23 1 3 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 3 23 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 2 20 2 conftest.c:47 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(note 23 1 24 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 24 23 25 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(insn 25 24 5 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 5 25 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 4 20 2 conftest.c:48 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.328r.nothrow b/conftest.c.328r.nothrow new file mode 100644 index 000000000000..81f6615e4fb8 --- /dev/null +++ b/conftest.c.328r.nothrow @@ -0,0 +1,84 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(insn 23 1 3 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 3 23 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 2 20 2 conftest.c:47 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(note 23 1 24 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 24 23 25 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(insn 25 24 5 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 5 25 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 4 20 2 conftest.c:48 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.329r.dwarf2 b/conftest.c.329r.dwarf2 new file mode 100644 index 000000000000..7e6ea61996c3 --- /dev/null +++ b/conftest.c.329r.dwarf2 @@ -0,0 +1,104 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +Creating trace 0 : start at note 1 +Creating trace 1 : start at note 14 +Creating trace 2 : start at note 21 +Processing trace 0 : start at note 1 + saw edge from trace 0 to 1 (via fallthru 0) + push trace 1 to worklist +Processing trace 1 : start at note 14 + saw edge from trace 1 to 2 (via fallthru 0) + push trace 2 to worklist +Processing trace 2 : start at note 21 + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(insn 23 1 3 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 3 23 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 2 20 2 conftest.c:47 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +Creating trace 0 : start at note 1 +Creating trace 1 : start at note 16 +Creating trace 2 : start at note 21 +Processing trace 0 : start at note 1 + saw edge from trace 0 to 1 (via fallthru 0) + push trace 1 to worklist +Processing trace 1 : start at note 16 + saw edge from trace 1 to 2 (via fallthru 0) + push trace 2 to worklist +Processing trace 2 : start at note 21 + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(note 23 1 24 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 24 23 25 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(insn 25 24 5 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 5 25 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 4 20 2 conftest.c:48 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.330r.final b/conftest.c.330r.final new file mode 100644 index 000000000000..81f6615e4fb8 --- /dev/null +++ b/conftest.c.330r.final @@ -0,0 +1,84 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + + + +f + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(insn 23 1 3 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 3 23 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 2 20 2 conftest.c:47 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + + + +main + +Dataflow summary: +;; fully invalidated by EH 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 28 [mm0] 29 [mm1] 30 [mm2] 31 [mm3] 32 [mm4] 33 [mm5] 34 [mm6] 35 [mm7] 36 [r8] 37 [r9] 38 [r10] 39 [r11] 44 [xmm8] 45 [xmm9] 46 [xmm10] 47 [xmm11] 48 [xmm12] 49 [xmm13] 50 [xmm14] 51 [xmm15] 52 [xmm16] 53 [xmm17] 54 [xmm18] 55 [xmm19] 56 [xmm20] 57 [xmm21] 58 [xmm22] 59 [xmm23] 60 [xmm24] 61 [xmm25] 62 [xmm26] 63 [xmm27] 64 [xmm28] 65 [xmm29] 66 [xmm30] 67 [xmm31] 68 [k0] 69 [k1] 70 [k2] 71 [k3] 72 [k4] 73 [k5] 74 [k6] 75 [k7] +;; hardware regs used 7 [sp] +;; regular block artificial uses 7 [sp] +;; eh block artificial uses 7 [sp] 16 [argp] +;; entry block defs 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 7 [sp] 20 [xmm0] 21 [xmm1] 22 [xmm2] 23 [xmm3] 24 [xmm4] 25 [xmm5] 26 [xmm6] 27 [xmm7] 36 [r8] 37 [r9] +;; exit block uses 0 [ax] 7 [sp] +;; regs ever live 0 [ax] 17 [flags] +;; ref usage r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r7={1d,2u} r17={1d} r20={1d} r21={1d} r22={1d} r23={1d} r24={1d} r25={1d} r26={1d} r27={1d} r36={1d} r37={1d} +;; total ref usage 22{18d,4u,0e} in 3{3 regular + 0 call} insns. +(note 1 0 23 NOTE_INSN_DELETED) +(note 23 1 24 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 24 23 25 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(insn 25 24 5 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 5 25 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 4 20 2 conftest.c:48 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/conftest.c.331r.dfinish b/conftest.c.331r.dfinish new file mode 100644 index 000000000000..6ebfddd2516e --- /dev/null +++ b/conftest.c.331r.dfinish @@ -0,0 +1,56 @@ + +;; Function f (f, funcdef_no=0, decl_uid=1942, cgraph_uid=1, symbol_order=0) + +(note 1 0 23 NOTE_INSN_DELETED) +(insn 23 1 3 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 3 23 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 14 3 2 2 NOTE_INSN_PROLOGUE_END) +(note 2 14 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 2 20 2 conftest.c:47 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 11 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":47:88 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 11 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":47:88 -1 + (nil)) +(note 21 11 16 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 16 21 17 2 (simple_return) "conftest.c":47:88 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 17 16 13) +(note 13 17 0 NOTE_INSN_DELETED) + +;; Function main (main, funcdef_no=1, decl_uid=1946, cgraph_uid=2, symbol_order=1) (executed once) + +(note 1 0 23 NOTE_INSN_DELETED) +(note 23 1 24 (var_location argc (reg:SI 5 di [ argc ])) NOTE_INSN_VAR_LOCATION) +(note 24 23 25 (var_location argv (reg:DI 4 si [ argv ])) NOTE_INSN_VAR_LOCATION) +(insn 25 24 5 2 (unspec_volatile [ + (const_int 0 [0]) + ] UNSPECV_NOP_ENDBR) 1242 {nop_endbr} + (nil)) +(note 5 25 16 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(note 16 5 4 2 NOTE_INSN_PROLOGUE_END) +(note 4 16 22 2 NOTE_INSN_FUNCTION_BEG) +(note 22 4 20 2 conftest.c:48 NOTE_INSN_BEGIN_STMT) +(insn:TI 20 22 13 2 (parallel [ + (set (reg:DI 0 ax) + (const_int 0 [0])) + (clobber (reg:CC 17 flags)) + ]) "conftest.c":48:81 68 {*movdi_xor} + (expr_list:REG_UNUSED (reg:CC 17 flags) + (nil))) +(insn 13 20 21 2 (use (reg/i:SI 0 ax)) "conftest.c":48:81 -1 + (nil)) +(note 21 13 18 2 NOTE_INSN_EPILOGUE_BEG) +(jump_insn:TI 18 21 19 2 (simple_return) "conftest.c":48:81 837 {simple_return_internal} + (nil) + -> simple_return) +(barrier 19 18 15) +(note 15 19 0 NOTE_INSN_DELETED) diff --git a/debian/control.in b/debian/control.in index b620b13bdba3..f632e500532d 100644 --- a/debian/control.in +++ b/debian/control.in @@ -41,7 +41,7 @@ Package: ucx-gdrcopy Section: libs Depends: ${misc:Depends}, ${shlibs:Depends} Architecture: any -Build-Profiles: +Build-Profiles: Description: Unified Communication X - gdrcopy support UCX is a communication library implementing high-performance messaging. . diff --git a/ucx_1.14..dsc b/ucx_1.14..dsc new file mode 100644 index 000000000000..6158acea1ec6 --- /dev/null +++ b/ucx_1.14..dsc @@ -0,0 +1,19 @@ +Format: 3.0 (native) +Source: ucx +Binary: ucx, ucx-cuda, ucx-gdrcopy +Architecture: any +Version: 1.14. +Maintainer: ucx-group@elist.ornl.gov +Homepage: http://www.openucx.org +Standards-Version: 1.14 +Build-Depends: debhelper (>= 9.0), libibverbs-dev, librdmacm-dev, pkg-config +Package-List: + ucx deb libs extra arch=any + ucx-cuda deb libs extra arch=any profile=cuda + ucx-gdrcopy deb libs extra arch=any profile=gdrcopy +Checksums-Sha1: + cce9d9db897cdb643f4c7c3dd4145b5f4b83f50e 1905956 ucx_1.14..tar.xz +Checksums-Sha256: + 6b4e832a32cbfb3b2870f9da6fe95fdcb6aca0e71f24d6b539677e17193dd3a4 1905956 ucx_1.14..tar.xz +Files: + f60859f36266cb0bb9b0322ee442b5fe 1905956 ucx_1.14..tar.xz diff --git a/ucx_1.14..tar.xz b/ucx_1.14..tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..f3f12e697e875c45ff23a44b9903d6cf1400d217 GIT binary patch literal 1905956 zcmV(pK=8l)H+ooF000E$*0e?f03iVu0001VFXf};^fT}NT>v_m%X0h6t0w}mgzdEZ z1^ja8E3LLZwUO=lpxD9qkD-@rt5C#s{8Q1iB_&H#t>_l0!?45LYv zjcX^%s9K$pU@Cp*=kL{X5R-nCs{OhpK(n8@KV&p(@g1qjb&VbFa@CJ8|REH+ImbNk*kbGZI<*M?!15&Z#yPx+ZW|AJ`og{4Df43{~(9b(tm1rijJR6W}t4Zdn(;x-&@|6D~mktF#R}j$@s8 zI%Z74j|Hf^DhF0{56OwH)#H+^w(`_8nZ--iblrv+JJ=y!Y&Xf+0W7DJcAKiVG_Q51 z#w!Np=P#tdrSKn%XN4m%Y1NXz>Hn}4xUE??d=nhrlY=KFqMp{)^HNN6DoQYIu$|rT zr<-^4qPiUc`NdnURYyJ3nrsb?M~>#&n|4J-q|FH8Haj?8Q6l;;;asqz1K}2A6u-mD zQY8gH8gr*a$prTFN%yQs;m1_m$8t^Y6saU3>{%eD$6@p@1N^c`aWMZvdOJ#N=VZwk z{g4k(M|R!xsQ9kN9aY@7+`OzBe1USgQyrZ3SbQ`I&EncQR2hayO(hqr)s7k2(O)^5 z=HqU}``el{p?9jIS*Bw6zwMRXFZyRCmQ9RG#xc&hesAW>vPswTrH%u$xA3wqt^#?m zX@OR*SLn_@w|9HJJ^9|(mYP^anvkNiY7K%cpS4H&5vJFBw>yVr8kfl{(H~CQz~4Ll z%Wr;GiM1z$cf_Vn+Dumx&96c|w^kI$YaJ1K9sbp5x^Y5tnd?A^V%}e}Xm}fx1xl)- zg)$mwUmEX%CXVC6Fre)u>F73l={Bpk_JH_=EW3oC}pp$EXr0$&`uKkSJdh zUea1-f2N$b2*r0;A;Ld=FnOXSotH^V><)Dy)UvD_89~sf3-vL+d5A^7oiX=gXVpEl**2*W?Mlg-i6keO(PtnSdOo@R+`&h#-GP$JmuG| zr%BLxow$B!%9H+fMw8ZjMh2QxwUJhwQ)%F;W&=_Z=q`MFlX>H2;KeRJ;CT}YA?7re zEc}n-#H(PV6m4l`Y*lZ+2nE6NFYGypy(07O8ZKPIb2q#7)fk}@s8AQ_-spFbcUFP( z!dfsj9tJt$0H^CL?zte>TGKkNo^W0PyTt;I7h6#osNhBLdTH~Unpl0YwLKDr`2t@W z102N~a??26LtlHuK%_oWq#Y~1&_D`M{$opv+WHJ!82Wj6hd1~KwptX?H}^+ky(Vp?~%|(1M7yv*Ll2FM3?&=eERORJD9(xNK_;VU)Z{TJk5-U z4Ff`f8cHu<)$oR1|G%b!nIMLkJc30nm@%kFWAb}@@YgA--z)n{7wWGL*G||BK`y_; zO9^Ph+Qaq52*9xLT>Hq)OTnoLFjDU=j{dScuS-um4Fy(`>Ur$khYec62sOALInkRYN?H8PA+!e;PyfO4^_`wsCleJruDc8hWri&HS_GLd&yl<_~)F=JXUefjs;B{y1I{8McV3)^j1&t>(?<5$k+;vVFvZ`y3Ht%EAtFI^E?jG0 z4%$gQyDrXmY+ffIyP)`Y_`zv8Um#zhj8%Pxm44M2Vl?*M95f?8f4EO#&@wlZAXu3` zTT3k-WGacuA>tfq$m>99{Mzc|s7!M|7zB|0S1tY$)P#>v2#zZFQr-!KBN%50*Y&@j zTA0C{S5MPvZFrf*_hA9{5l-B7Px~ema&o@KWLv`BJ*p$Yn{ZQ&u}&jiA^nEnoI<-^ z2-a2;{<5W^Nd60M%4D1v0)1NVEs}OBW3~K=7v+t=dkk3Tgy6HC_mD>Ppch@f#XXWe zUl$Ox z{IegWdwezxmlunhZf4-A)I)#n^n*ajSqJ$c!5ddoO6i1nE7EfcQ%_! zLQE5)#{a2&i^jq|cv1C{(Nld?90nnWsjLTn_a0)ssh5buv**$IC9~GE#f{M{HW(8B z$Ft31=;f>>MdY>*IGkKBi5F>1Tz^qvC7B-L=>xewRS=3}#p)7Q4Oj9oM)}{JcDDTT z+NxM~DgqiBSa2N15gf)a44Vf!?_TDjD}gMJegM`2oPij-Bz{B3zoQ^03;V5C6Xh%C zw7|<}LiYQA3saywP|FlN9=~mj2ZgG`!kA+P2CCl;0N;Yru7+_9qA%_eh)J|h$P*Z$ z3JR*>S$m>kw177mx#5tX6;p~Xp21+~i$l_@(B{?>JpR%Z*_Lcpbx1*mqWM35asI2J zVo!~Gm$6E9mn&e;7Fu|V8u=`xxZozhAasp8Us_EGZ%wxajK4LN9|DI&or0Anb3#<{ zQDu0!p7`XhBKrCU^^NeY_bw$DFSufo!q5G?<@tM;LR`DDUdMx73FR~51+bd#)eRvX zM}92Re{?)$2p>vAC^qek@h9L$O)-+Q6Ys-ceDj@tq1?sU{Z{kar73~=v2=;`dFeFnvqL~N`j|v+zK$u znYf3>k4YCh?Svtm(1Hb6iWo@fQ{)v0Yn7LH)|(nL^bg+a`v;y7$oZfJi2Y8C& zS)4hw*gsQ4GU){Y{VyKH6XVCH;BdT5#VYz&fPj$6s^)kZ`J6Y786al)a2tk|7^WY4ItHRZu zdC`L@Tm>{@r05Sa*WY42GW@GJ)v;!=tB&*R%*#@poxK;GD+oS%s}75CCz8U%>`%@M z`r(n#PLt*K?O;qaKFWxpBJN=x8I{c)E3^iYTtxo9{v9!oUoQM(@OAC2Rxzx)%av|z zJapyeOsIqX zsC+EF#wc9BI=II2!qK*Sv)3jcMwfSXj3$Xl=9W3lXlSE~RA7^9+CATMNbHMk(v)b7 zSqhhYo2H7d^ltSpd(95G=+PY))(A6yx1Yt_)|>d|z`;4Jq;F~g%A{{mLh?VcOL3w? ze57Xg)y1v)c1yxNsEOBzYy?)WocH{KiM#s6|}8u32~%Ww)fm#QEWXgXd$o z?9|er>9k)nAj7snv(JGQ)9zGcMxG1lIov)#6~7#)OVg18Vj_13*hCv_qk}rh`>{DU znA5nZB_lhbCm3B?5abw{b3hU_$z%B7xMQwo!*Ewo9>!<>OS?!fS-St>{5ar>&n34m zSM-t6+r+y%hM#t*J}W``|2=^&*C;Z@G%?3dd#U1UA;grsuQVH{_o8YH57ng8w?!&F zSnbmS?r@fX4PT~0Eg*`~inTR3du#6~oHeE2h8 zL6KK1?E`1)gAbb!+Tt|DudL`q%EuNYpK#|*>Hy6K|4#yH_9Xl?BCE6UYRJ>fZOz)- zNp=Oa^3VZPpiEHaHPW4j0g0_m1h+!E_>fZk#Mirb?`qCaVAJhM`BL;N>l6(xt6Y1! z&j}#xcjdGC1-DebmU7=PsHYE2_Cc2`%?$2=vA3bLok8=Qq(2`vuP&hirS~CvQq|a} zNLIV^(E->sWLkk1qpuXy^@Lr{-8%dAZiUPy#90E_o!+}M5a(xcASA9QLEAkhVWJGL zJx>Yg{!(mX%Ur(9bOZ;>;3=XcYS22ceMVOn`pt!|p+h%_R}mLm2?ykRf< zuHG(nk|xhE}7vVJ$ z_?Xs{es(xl+5~hPKN{Y$<78gPEbT_Ocn;3VPSs&(iipVQm*HA&ASc}MFM7(SP99y7 zWe{EOgQ+UTw7Z%dP#pAl_K5PT#VNa@g9KJ8-pIYxxa``=``L!ad99Snvx)t{bdaYL zL-Iz|J8XA|LCL8GH$2ac7zJlM-k)>^;mQ}NKv63?q0E34BFu>P!>MOxD|&?obGt_^ z>-6v~D1Zi_G*5FMr_=gcuX&eXk5&oZWa*v|E98!la2@LKvH~*;t~jn!_V=g_aN`M%MITRjVuhY>&#b{E0;vy_U~LYILYl59&P8zSx?;btDR?i8fw zWAO{WO_+m0N!BpuMF$fCEUIe5V`Ya1_hS{2VF*rfD+ozlLR^b$e+%pk>>I0gxW#Hf zZ|H;mI<^#BK66i41a3x5$B8Xna5gVzLcj*9c%ue8;7xq&nVCuqn|rhWlhQjZRSg%v z5UEseSuDby}lIYJ~MV7x-faHpnKun%z))^%YwfW@7B1cti=hWXEg$ zt)bib2nvcEQ{i@%Y~;pOOxQ4m-4D29-+U8{FWm=VL6wP5c21i94OXam+sQ`t!+}Y0vd;Ky09B zEGY^nv;6*axGPH{tW8^uynQ=!P^p7KhR`8}mRk#cXjVkF2lD?9y^kENAzh-uh)C;d z``K_@=xdF2^fUyQE+9c38=C9#rE)(v375*SxC?s8`YI%OwZnk=?%cox#jhhLwLRky zh+BSosR4Uh)>j1J^PVR62moK`*$WLQZ!(3-EP`1ttX*>D2nTcTv!rcn6g0y1EhrJH zq@WVcKbCGuA+k5Mf#1+e>C3GDA%ipxeL3$OPjqNVw{toMrw zZZWuc1OwykI(JZUaIxugI%1YJTJkCQAl9s%NV@S6cui87pm)?u!qH-}czKIJ8g0lv z*wZ=kM}<=UoD>S|E~`tA(@)JnPC93UwqO$nOUOY9zTW=VtRo2I6lSO-4R^^XkGw|5 z9?xW}ifK#PkQRA3rt(N~F=v81AkX0E51J`d%#AWj@~rKtGqF*#sDPzyrqlet8OR%y zLF@b&`uec>5olmsbgYWj_c9}{A}kK)=yN+7pNB}^4nW}#Zoh5)^t2Nu$Bpy5UuA|i zE9psA6QlB>${5&g3Gdr=6^n~sHXNe6`E&C%xUIEAWSiYMBs{iR}4v*(hI7HBW0p*QYZRCvV{rJV5h?%h-woSgCSvmM9(-B$qB!dXwA@V%R))%LPi%pAr1bK+LL_KR_so_KjqU zk)xK|Njnv0XWqj&M=gv8EeqM+xMfQ{|sCqahhsu!{Lo z`(38FZ!66;;d`=N`-&rhot21Y%W^mQ-S7L9x0GmO`xKxRtg)*jXuEk8*i^V}$_g`b zT%G~i>{ZT##-N!mvP_L!%M16_MBi@uDDRyF50-9mL|0LbtzIN!>& zMNhG_V)tl(M`Z(sa=allDyqXaVJbg*yprwUl~#14PWP}qvVh@Q`oc>xY`GV_89{7+PX?lo*g>^kDSDH_tbrH zO;B7kgt~y?4TL00SIve+$OYi1c~=KSX(rhSJq)x9g}r#B_%37ZGUFY`Y%{z*j~D!Q)>|x0iSm*js3kF>1fP zDo_IjbaKp)K^DAykBvjmM6(JV9hSJ)7|H78WNU)bliLFgl+ESx7#O6Fn&;J$NY!bL zqA0WyGMpJ!i+lG@EiS|nb$<>TCXE}jpy~3#qS5`47M%LUD5#x7jg}T>R%Tl%0=PCg zK@YsvGGN(5Qgs~2!y*9>lJ3Viu>C@xADbg8%FDJqYZ-0 z9G5o5dvB9Tq>oJBbHi(K!5*1r&^=ELxr8vTd(wDwRC6xC4k z*^OV%1-0wV7>$6nn1q#n|Mb(F-2?3|;0b(%0jLMBE>J43XFie}4ipe6CXVj=y?&#^ zHTn^sKxraR-rHxLv(hXKJE#@)s}=D3x=g;s&m)R7KKEf&}V!*fY1A40Rk(p zVY58JD$jjB$Xi}^c{4~6h$&b|R>{tdKVHauCIsC$AQ!W2fGg`&`lbO*{mQ@@e$|Y@ z982j)xxp0B%%{R(gvMGxp4y>}eUHp=%wW@x&-^=I4mPB~obHXA4`^vxnW)Bh_{zWQ-8A*wJ zFMm;a_OFC?{&}gg!HFR;o$NGGOa`IIY4~uFyBTer>0PW8k=H2+AS3!RXt0|6^~9fA zzs#yN2(Y^b{(a<%8^I_|o2L0ve9bgD8m#jvf3xAAoDdx8FfXqdL`qtaY0=8bvb!yQ zg~`*fE=gCHK)#UOd}apCf92kd##!pdZ%MZQa=ok~EHuO6V=jG1*7yOYHXsuy=cw`fZJg$dtNfpOBzDr%zt*PJ;2KOH-G0w%M9TUr7np2QQD`!Q{$I;9U4#PdSl zG)8)PNLo?rksrvR=BGdgJpkzG!fWg=b* z0i``+l`%Lubo;!_++vZH^XA6u6OWS42)hFBM@lh|7}1XmP;!0Dxsg=d%tchf!(cf)<#>{t`t#5xFD z34Hz9!g3Ic@$OgEnq4fjgGe|`N0Jy**MHoLko%xV=$B$>w0Rr?IC6n2?wl{HpGAxv zQOgUqgZLqLZ`H=n#y)-O@ZQ%qw$jflIG@ycZ7T)PB`q3!-`O)Ar?BEuviZ#wP}DEb z(7V-_($?^J2U@qOe#De9j5v=rX96So!^R_|>^{~&cCRn9gG1h2yiuf)G>doFgikYWgt|>?kSf+brKpi zIDHaYYi&p2t<*Oy!Qqs{>hzx!VhsNpIfyNrB0$w@8Xf3ez4JKtQY`Ewcco$&zAh_-{Iwi^@3%>aCf1 zt1Upa&su0Pjsnn4ZRIr9dZa2FVU3+g5^A^f1}&=zI9P39HxpmKXdPrj?54upT;2ZI zb$AM=2e}Ze;}8D%e>7y6pe_uVqs1vML+d^#q2S9y3|>XM8w-cEKtoWezlBMf_vaPM zXXl62m|0%YE7!Z<-Pg>WHs>`MQ1r9@P6B2E?av4bpshUX=I=RLS%#_2ePZJzT@AN} z9TCwRr&{~YGB(%Kf}=?E;vpUBv4@;^)RT5Iu7Z><*y}}mBHorA6A-+nNSLkace45s zcy2$d@)kd@4CUbl-=c2f#*Iv<)7PSZ-3p$1k)yhX2zE4bG#vg$1V~Q+T{ldM7q|To z%j#~QLm4W_LIB`D;@=@J0Xm&9Qci#ifW9_TxCqrkXq6A9G_k;L>8y2h8&FqGGgG$b zrDtQjjMh$@e`4;>J&b>MOT?l2i9~$CO!3V=%G?Y; zVwfk_#sm(&_}DAMDvI@4(>Eub&fbk3Wp`Os#^hPvcS)mKyOe!&av3LUZ0TmI%CN%G zo8`kJKuj02_ZvQ&-g66EqfsGKGHeikd~|kCB)++8G#HpX=xs?Q`#KfBZw>(G63_YR zn&?c|j47KS`>SZ*?LT!CLC9SxJT`>0FGOg1wE*vTk-1){VKsl|rau4>U9!h|CT}fn`2O5H{zkn`<|JL4#7i^gY`#k0nlDA$@@TXHT8; zb7_MglwDtAE`y;cNE)YHySAftO*g+AMe?SCEr{>7YR}N z(pXd7*>G)mRwqNsY)6WH9aH#2%+JC`dt-qV5&oHFZOHRHjc10?5_XC{70_cL3idjI zjXEV*J&dMldtX8mv)4}%beg*2J_$~YkKOv*pJHC08&p2M&PVSzkr=e!HOeRRG>mlQ z?yijk$|)iV&^g3ZW~?%kSSps^SJcLmPm>E1!ZTpzH~eACPQ({01#hM(1R6ZXZY#zy zFU=PuSYIz`O4N^?z-wE`KA30gUN4*zx`d9UH+6%*wkQIu^8aF2m%Y%Q`#Cyr9FU{h zn=Lyl@Z%QPsjE4Yj>H|r=w)Z>l3Vp2+4pj0-`Qvp>RIgwxYW`BV6_MTj5ex-)68ZDh`%Ac>V~u|EuJlu`WR$fYhb)I znmv)r5BHyir;j3jv9O8s@_jWzXu`9i#AEjvBZZk#`|AG0WtKbp`zg|UXgzouYS3ce z(WV_&(A9G6jAsP|VTy({dGx)82mBbW;I64IWgNwB=OgZNCI!SiKO{F+gV&=zsD_N~ z#O$wWFEX^TVwW3$*0qpyvpYEbLNc1G&T`Tl-aqjMBVd&;rp_gQdi|YN8kG-nFYR-_ zP~MbcnHoRGBlcI@b8e$eqbMXQTrC*(w{Bn-)3f;&jsiGUtm%Z!tmW$T!tH#3PjKGi z%NRsQei+5xPsG3}C4F#lB8cN^K&3RY56uL%2@3#HpUvHwV(KkmFw8$jxV$`H0YfD< z#`_s3R0IH8u2t_xy^N1 zQ@TtRYxbxo+@-a97yEL$BF;7K=z3;E05&cQ%NK!;8D#-pPZQErPayB+nb<<_K4sN! zenK*+NbhziwK9@eCx-eGUy|};-@`YYxcnd=I&VjXBODzJhHV|rG$@tXFU1sepsse(Yt8BR(p^B3P8z6RhD3V2b+Si>k`{0 zByA`jsP+q(>(*$N%t^P*s*ZD73Km7S2Zb!HVNZ1Xy!Ag;X{|}DMxShTn zSCp*J!*oUzgj~*M^fi2}rG&eY5`_TnG#(Gr9HLQnM z=Kbh!Y7Cij)&3CbOPe4YtKBYcV+`=g=6oL{AVa}ejj)n)jMTL;(5^Y?WQ*qo)bP#G z^3j+0LrG#HRi}u%DN8r|MDIwmTJL8h$*hOY6Rk0mJO zoT@+^l#A{4F&_gcx35^Y4>#O5kb+%tm&|nxHfC@-dHxz8U~{48Hz)Oks(Pj%fQF7$ zm-49W4@bT_-ht_Z)BiKD3)0c1gHlGJE+%)XKgaehjhme&gaUrk?tl(IG#d|V3L7}& zh4Kzas1|nT_Dj}d1@0RLcHq?ebOcw^6|>OjJ9Pln3JB!X^e70VZ}@MmynM%$4!DdV+pLQ zLq6Vofg?kf7em=hMjyHD{CdS(uMdsfI;?vThgh!P7^C}TW3%ms}{^EMwjOj zG%^VR2SIoSRQXk&ZZ=>^!%OHpN0k6pfv1GavurA;?@qDgx=PjhlT;|T$OB~NauIMd zG9&;UO^Ekry__iZiqcG{Z2d(~nFSYW!qmivT)~T7@!iB>HAS#pwgoT>SDR;&qV01c zsJq}X&dtobzj1mmK6IG=18}69!Ju8ifuNOF0#s8qA}O___U^$-R)TqAyr=TSm_tH3&Y^L(Ag;G*N@xoQThD4lSc!6 zPE~1`>010t6P0z=FK|gL#J>Zaq!Fk-ti-i3J-vR=zw(QRh{N`2AjRFh^LIQp(e_Yt zATo38>f%?OH2&fwhm=RImmF5K)VIFX5jW0oOP1+MY)iSGF8onMa%T;W78VJj#1enl zT5A2Mu8ZT3MH?uVXM+ZdAt2cSyH>!_ZD1_hUU4-6yGSj%qC zZxmne-6ZgQJ_fS-o(5GnfIey8t!=lVs`Id_xD?qJPk|m>WQ`%o0k7c5!QVu)L#r91 z*uk8G+vs^xW$(r?d3VEKOTe>Lj(4N zjO3g!4O}V!FDssLNn|gW#7*Myi}bHSF9)i6PePB#5fGF%Yqv~ylWrSmKgVsP70(D| zbvXGh%k0B-qBH=4r5FZE`z~)P9Fw$_Kvog40icFyezR9tRps~FGYAN5@2_(Z8MK}2 zUQbB(-RrP2AxZ3qF|m-XiaF-9at);^YK^iY)6{m4u-e88=JXiDmF{>J#zVpe(o*uF zYrJg}rutxwx4kes*jPE)iH&v|uzR=!-f4BBAYk_F5#?cL&L{=`Fh8Yu1@=A1?RpZu+DT`waLfH zfV@0$@je3S(t0@YhL&GYe8BeYD9Y8%7W*?dQ900P;wRe+=;zYARSy$`0I|Gy#eHmR z7-WG|LdiR+k8iL*2U|ue6Di^vHNPissh-3$E!RPg4Km%ajcQW4_c}#AH^MLxM6MAF zIfl-=X{}fg9!4awv#+QKZx(lA(1uRSr^)D}sf8BV0F@=d(!_eZp5SMJMGAU`mvRAv zF$x{A9wp!>cJ`p(gx8LOpVR4BFV$87M9Jl$q z9q_?~2>J7ae4%og20P;O#6Z_81P+xb)2LUOZy5X)0o$m32u-Ix&-#`ks96_l63)=d zPA|U(la>h^0TVO;eo>gLax|JM$|B;En3p24#8<<|^d zTkJ4b++r&GyAlws$|kJV3pi_Zw7TA^KhLKS_T8h@kN|VIU_)*;#~pU5gNunim3WBA zp9@KosWSr@wFLkFHJx7&3U%U*&0LSh-32G5^Q2?VB5LHz!t)Lx?Qy}X3Qs!@ZdiuG zHD_1qbJ=%7GrLnv)Sb2aaRm2FkXjdESm<%8r9vH(u|X{pq=*kW$48S8|3dc3Q*jXL zdT-mt)Tw8lBO;M)y92zDRdb2PyWmltv@q<&V9LS`T{)ljgkPw=G_O+5FDKtFP!=U4 zUd=_6@YBe@qKL*e$VnhSY7#&8I;w7`ypoIG!TfeGmt8QsFr&CowmRNEjol**MQUd5 zso&!dC4A6!8&bD$YkBTce{Im_P3vDcvY|Bc{@-LgrDNy|1Ot6mx_7ZArL{r3`^(m8 zt^Fl=Dva5m$eKr&0+Df2WzID#?zjB8At1G;RKle>2O(_V)CThde*R+X3Dy^uwmBmc{zd^4$|;hq=<8=C`O6Wn!cbx!WV|S9P{1u*L{g z+4y`)Ss#6ofldmhHKe4!=~JBf9vX^_8TaV>CLty`p7RWK0!0iFFKv{Se4B~fAB3>) zt?JBGGTO)3+~Zx53ArWToYkK}P9AoK?%@6HfYtR7BM9!QBIl}H;j=gs{qX(lPCe)| z-B$BBNVD7yjzxJ6oLCPKWV^D%gpCQ&h((LEn#A&rA^5v+cpKYY%|xd&Aq@pFPG=b+ zRbz;o;I-=S5sD+aQ;tcRfk{&jyL$vz=1=7@hVUiLqR|tY9N)#JOI@b&4~!C0N|UYoWz|q>pYKQ1Y@?F zC&cZxFA3TicKp87zN|V8)e!MBAr)toOk{|Y#H5?PZ{#{?$XCs0wi&iwcXvk_&=(|F zBB5ikEm?*IyqYK#{mx{(s3`?aRY<{qRBw$FSy;vtHRbC^ar&ke&YYG|jY(;H0Ww|9 z;y~p$^_?qBmuig#4;6zgm@yVV@Jl)cQIZjsgp*n1D_sk7TiBpxl+WKFZh!-wucS)m zNBIvNZ-LE9cUEg_Zk&I#@G?h&@_T|YU#Q)4#GG`()+x+Nv z?`3*9=-%Uw$O9-NGEbaIbNeUltJF30FJ@1fT#p)eor(Ej_hpnZz4X=qxs1RlSGVhK zX>rPOoL%AwIS;#m&WSk`ii|k_H>l{MBhG~jMp6S7OJR9G-k@=V2A9;SLGhUQ2Y;63 zztPHS6EM(4HrR9B6xTREB)ZNj#e5V37>y8ouQ^GcN;9j&}vV(flVH;8C5B)_ZwFx)0)SoQK zK>%kKNC>p>x;E-513F1V3?$9e>Vn|}ppmuhonk5hh%(PjgNDYZcIaoEOQ{U)g$yf4 z|5SZfd%TMq)7!_{y0{SbAeZZ0_2CPdx(^y|&z39>L8Iqj_|(hxgQ@hn@sE}2EbThi1-YPAY?+^eA(!=d=Ybf8@DLWuIf%yppC~n3O|wx9Ca-Zg=q`65 zc4PuLOxh&53!gb0>zJzLo``^tMXWGkDPlFpv@#gbv|&zeHs<cLoan#k} zOn+p#aMhF!j1qCma7ffVVmw6-P3rtjB6`1aI#^8KXYpfZK4MPmRV;&?u}K-I_~D`v zp@}JtyzZ*69|cG4-kC?Myn!_!V#jU4J<?wE=CiB8a8@<*&8}$tIK|SRZ+c6>-O{HgN{hM;K48 zLDOK}bK9!w!Z8B&5~h+P^)YLpBPqAJ*j-F7p;oJmqeJh(ZD7lT6)?MoXiMG!#%lcu z^v|IVCgM34j@zxv`T$DtL|gJGcpLtewMZaA94IV(*ohLWFnr{mYFOVAIz=PzRE^dEw7d`;W~^HHTJbV~ z?TTwrf=}UqC)UZ%I5n``lN$+uC%&3Rsk`g(G=)9k!59_|F<$)|^w!MNB9>p#NYBY1 z)Y3GoZ=)#a0OyBQ2;+JSHltrX)FnTI5NFwfQ?g$Lz&%}y!&HY55#rIOb~`stk3^9* z32G!0M!v&t_XH@WbNofux|PSHn2x~O62p{CP>nDa`f@I*;Ij4lXv8&PffvbP#wy|t ztFe5}Wp)0tw~Dn@RTB0R*_*;XE5^$tNbLZu*wsfVtH@S6D(EN*L>D~0uhCRJ!bo_* zY^VFF=TI6dw$ptn7dl4Xy*mG@({F@*VdW zE=QxEUqw(6!2h*jPbC$OkR(keshK~=F)!lB#RPBlVwATrBvb6;=?`}?$hiEmRI29a za~~qjGhlJ=uHyD}PFQP+s>B`l`CTOnuLbX7k$!k>iLxgRf(|k=3XkIe^~&T0UUM&a9ptWh6Z~CDmO!?mex8nsA0%U*0A7rv8HFV?7(bjmF2x|(Lg*v?1 zV5vu>szB2byIKa$q!QzB7rmK8a zJUb*T@cmom;w(o0kndUjj52vZUlJao9rc``G#h*5a znNyCa6)c|C)aKg7O~`_>YMx(um*#(aQhMvnot=o18GdRhx=y=%53L|-m({+rPdl&m z(%6tR_X+mXpYk||Qu6;sNt;xqiARFz*>U6~;IDg5-NXgzJ`NKH>5`YOM~7)-hA z=WgzQ%wbl^Z)Sb6x6=fS`}1%a6ebYOU9QAim_cLD#!LW?(thC5T>t7+NEin>f(>RZ z?;SE5&BfQ*T>K|}w)9&MJbia*MKx&j1dzOY1R%AAh6 zyL%}%Fd>g&-JEyy-o6L2AOh4r5-99y(ZvH`6=93hrXW^T<3$Tg11Q$r5IM^5(ZtuVz(tF zh>brk>ka4asuI}|#e7RCy>^njFnlYO*Ihmy2OR0QpWs_#JQm$zBWysX(W*oLrmt2P zWw$gm3lWh&HOuCkyf&BZi|$H8)!7RmFa|3beAgvT;eA?VPQ?xhTWD?K%UfZpp29*FvU(M!*JX)MJS}$(b+A7uI5@DetjXs>y+@KB5||@vmpdJ9AXDu~&%`9401s(mtmbtGL^tt-$EYrMSP~ zSdy1e0V{{LbBD>JuLjTZU$duTe-!H%VV*F;V zB3sujVeZx>37)B!R}Tm_Ku%bZ6-?hSzafh{ovUXzOLeQzi3%S!TqBM9i~pT4V4A}I z^69=>DrZOqBEZK-lTEj8rgp{{###qHbBA0we9hTN&5ViNue@pW>eglCQ&uiq@oDQi z;tgwh9)wSyUqK8RBmg<$9H*pR$j<9^4+V$PzS5#-oYGb4rp0H_Ey$Lv(|Af_>O{yQ z9D#E{MNXKnTi&kCQzRC)^2x4u?0{1{|=R= zV!>2auopSdjX0wE3HnnZA8Y%&W#?^)oneUKikh*+ZsxBed~*8-D$BkRB7X7%A9ti zzT*1@cQD7^7z1*Mq=DJ;o&Ph0H~y8vD^$k4vCP%qeoxhy@FP}@PwQb1(t~4)4>l=* z7kGB1X)(ySE@RikH>yX4z`P-p$VYiI(_XE!&zPSWSS1_j;s+>+)=(k!`Z;*U`Uox-~k!!lau`!DxL#z^Mn36JST-3DCGHq+%NB+EtfLyURSuU{zO!?E zx=8c`lX*;BSZrdy?g}Z0^jWHKTj&JT#p5|m!+Pt6lQ#SC^piei>ez@gyMWY&)Nb40 zn5(xWCZL*7?hNQd0~k*{mgHw?mQe>-fS^0Udvj$vK;S55;h#Nj1pS<-uoJY5sS@9c zHQmh}*wk$`zCB?rbXzm;msNoPkFIB~Ff_e*UQ2M@?6ngEQ8ajc3cPt6gyu;&Bod*g%uofuwB&7wHbT)6DL+8|4oNd@j1P z(_ODCGXAlFV*~J*`aa^`PI;O|feLfM-_2V`!OdsxZI1i}4RB^t_I84nZnnK$Bn*Ns zQrG)ZxwTMbE8z)&dg#?%DgYAvGZFd>^|*d2SGj466KLU z=UG~($Nr6rP;`5tR1#N>umRYe|6<1m6%c-grIh)F!8m*I>R&>6)UudE!Mb?f zt&cH)YJ?=r?G5|I!nK|rLguiK5{juXx*GcT8NF}P;OYBA;bdcp>R(TI4uIV8c8DCm z-DAt2;nL}M@tIluoM=?>anbFE!k4T~NzcdkYt@6=Pf#gUtkhlhVqItirLRA=;aQ-r?Fod?tdhxW|*OV&Gc2F!60n`Ej!ljUO;%HRq$UlE@W+^I6R zw{Eny`ofhq;b3(=)?+}eskvrJ$Lm*pj6p2rqy%j!E_BqMeJ^m0`s0A&(B$eUCw7?& z1A7BN4j`(OQk(y=?`X@@(AkdQc~j)IsA447>74rs46%i*Izwk;4qP$wnD*%ePZ3pa zu8Z}Y77lyK$sLO{^Ps8Q2r>JbYEE5u^d9AnX&aOHV}q%=rZlNh2ct z85E>nHdIeA7n&nGNC$(`Z1`2z6d4;Hf}AfH)3Nt|r}xF;_n~1rr(3Ym)|eXU1t-11 zX_OVvaxa;Ka(eVIt}%5sB0DQJs=HV@G#H`-=_$HWF{Cv4S2=^p->sg$92tyci#{7P zoj*}L$}cIlR>zgtSncby^Prm{xag|hT(TOx$)h#0V~JMJr8i3OFUAsTm3) z@^W*&4;xSUWf%fd+_9o6MGBx^8&Y3^m@m7jR(BbrL)XKGgF=ai)u-NuWkt?ES760Y z+;bUkAX1|p#4+LV=&;ZkNmj~~QrJ1fok>tFU86kCCxoH0RwCImY4JTJrsXP{DZys^ zmJhX>eMO!8yED$^=anM8txhriCJ0q?!xgue8G!m>Y^V=adUBcVNq9-c`IO&tgF7=+ z>%-weq;31!ot(?zTg39{Di~tDw}6I+$WAQ$1OhT;PRPNn56&uYU?29Pd7xy8ev(ir zT~&NXpm}D~tS1n`a<||V3xcb*=`4LGJ&+@v!nHi2peCn>md%ct?!WrQhJc#LKonwd zew$7&PVFc7N)I)En#_wg?&tWUh{VsQcJkC|jdRmvYy(!Z$WUd>0g)2t#ilX8b3kW7 zP}T2}o@27E+ej>W3hLLJIG>t%o>TBX(eKu#HrQ;rr+cZAe}; zC%LP+`*9J=G2?m@cx>Yq$#4eVLYayXUJ?cfu9_~6tbZeMbZFdht{iS}!n44nI@3fc zTZ0XdI~!R@mH65sP1~A#Nm^M+lj}{PW|2H35op`pZEG)QStk;lvbs$h^4l~YNbh$b z1tv=#tI=|b%A^ky_bbyOFLhPj2uqh4t3X&1-+-qwKcEQKsp)!Xa`SP(VzV7=%lrVk zXI?S`bqgK-BBdjkyq*<9flS_4m}!Htq1BLcgK*9h0+#wTgGL9xmo{U0=dIoNv>w9a z-S73%i=A*FK?-L;ww4^4R;cUzJLxs(3iL+Z;xIhW!Hpg(;pNxEpk$IHg?%?VC@hB0 zFPRLbI<`?POTs-+?x#LKAmmC>*@4Lg_FPX)%jX;%bJsSu`tOZUCBJ7fj51a4ebAlg zfVM=a-9vOiPkwmbfK11d1{eusN4ZrQ>Qz2*6`w85fQCdwHNBDV&rtEpe}${EAvsxM4{=lS&wQO>MM z+qTUkVsPYBm)raT{Ib)9STQfrqKBFI15gW&c%LhuB|OCV@g)AnM5CyI+rao}Oiiv^ zLXFCE4(31j*Jn+wote;-$}%rjkbB|M8N>pJQZZ_1#;JQRiQ`7SUH*&1abJ1Jb%oaZ zeUD?~&yYy=m*h(DT1wpT`m)|iQX429iVgGCt8cVqGhH*Ou*7cG@Bg#N`;IU+e8gBJ zOlt?x>Cqq%AT`~UKO(zvVErtOq+CB?#5S+$VYUbv{*FkF6DJkfP~QGiN+q$yT}b3g zxS&!9{xdq~ifdB`8ZJwwd}8K5=hwKsc(VWSriu&e;hTrIgX}uUXH`b30Nvq`O6C1r z7v8p*epAqLs8Fv)<{8h3!vEC1d3yKHyXcX-W^1G6zv{F!_?<+jdIJ0?hwcDHa>$&z zI`r>k8K7OMXL5Hj0m{~u8g7VH%U3*NugLOr!*8Wxb1Rnank=)p{e0xVU0YiH&EZ$| zA-1(xTd15h%>+T=H{%c|)KS7I^D};%t0v;2uZ^n!;!Z?E`6Eta7#``G7&CK7-=@>7 z#P>cx&Vz5dC9=v+HaupC^t5aifqu)*U-8fd{I|v+Op8G>UWmRwf01 z_#1vhsg7fF5X-r650-U@Etz6AW=(K;^t#w0CgvE7AsTL4&+Iur zuO(#ztMvsE7-g{&RwY-gP2=eI7z7Ldah+1qZWas*>2wT?s~w|^_BM6*2bWUGKH4aP zphv4DrXhb9S>_D3^71-4AvDHkmcMVvYFDke!fOa{F7GLKjF6$6KLBmOo0_#V+E*{fZQiatPEO%9YAzh-H2Rz>oL;O=#ZkA6rr2`z`t7&=a8{^!t`5^H8G-;BNSS# zoY!6MUMTNn;#Gtw3g7Jx`U1WL3Sig z8S@>Nnx{dr!D(yY;(cD&hnI~rA${QlyCG`NpjJXJM12VRGGXROG!(?8(2Mb0_*r75 zaes-{ZOi@3_dDW{WN3-eQ#WvIFD>d&z*XbZ-FQ9&IYGU+OCgM>3vRN!`YxA8dC1z8El*);Bc4|r<4W% zZY<23=5t@q-i(}tw3=8|F(`O21&!Oc4)OQNXO^TY27u2$z{KKc!AI<6rSO{s+B0RU zzpO=v{ob)k0(!N~BL0#oq{Pd(qB>2Pt50v(m+D0^02>Jj0Po{qqHcJEELjRvTvb>s z_C%8ii>XhO3D_i%n;j#HX^3D7(os7%q8MtJ#w?5Uv;rwoHyXq!%y4mT_ob;@gXaCg#cv9d9ej*(W$3f)w`3I1b zmi5_xKU7>3xQ}M8xhr;HFk||Cd0_LkGMveYkFyH1e&ZbTdh#kS8mfxuc*VCqb{?Rq z6>Sr`aMIL$CCbX5wP%FQe z{*80$8qM+#ip5#k{spR;KAq&*K_iHKE;FgbHs5nvVWp{Q=?+?Lu_Xp_5+?c-k6Ib0 zaDZ$u;X_T(NN zz{_GU-Ih2srOGOJcT;&lYMGtfdR=Zm=`lmZ6q3e|xP%>gWRnFDY_U82qT7yAim!a2 z!=$|~JZTJ10dAm%k-H&(Nz&q}tPwAD++2G=u*)vR-3j2Tu^x<9K4_z9QN5D6D z^_98ey~(6l;=-u1;G7qVM}rm*C{7C#Blth|M`J~5|pL09ghv^YA>B)`Y*Bn3E5 zTyyhU5VVbKF`de5@j`F?$l+o%^a3bVjB>#yq^*_hTMBlO@LpGv5|u?L*}f2!ydok1 z?ktA5h`TpVW`LmdcW@-C)pW=-D)j0|!j{b)&#ZE!qp^Qrj7-2M-qYY?2w zos4J;Dh&2+-;uxL#>c2Z z&{gdmZU>tM^{RadKfS(f6Hi5Z$A!!i2p;YnUwiCHr7Vby0qlax0FRYBl0T``wQ1y} z{MokR{^jA9Di6A=5jfX3m$+iY{{lJ+bP&2U7O1?V6mr?&c_-GRvA{B;^T6PZhBW)W z;zC*j&aGwdJUu>l9@@dpGi*pza}589s0z>*ww~kgw9U7+w8)a~=4$_3a$gz?tGa(h z@X*2O_8wdy8u~Pu$VGP8qS7r&UjIz87>4sVNpd}jzCP_8qEtRSoNJHtaArh|Akp_M zE-Ss-_zy&8`u^ANl)X2W!wB?4T{A~lO*?NjVXg_66Z%wR6sU5e!Gt`&P8H7a0}sHY zX*~4u*GT~(VVGa>36Y)GqMxdAD&OEo0vXR#;%^hHg|W!$eeQijvqa){{OLLbWoED0nS#&39@GTe*{UIyyMy= zl8fAXtT7B$yUOUvQna#_ZWAUSS?&^68aPbBE6bU>xt{Zd*Z;$_5YIo$B!5?mlPDk; z6!~BcYLA8|9>&-YPRglEr_b2nQC+=pA9AM?(fAfDa2?`IkYXDZ$pkp%MXz(goIuK3 zy`L}(jb1J>ZSS>hz#T^VK|eoc_in9u=*{GTF64tp0Gr$RliD=%Z4|5z>}Gb*HrsQX zNlc|>4mt!E(mBQVcpoEWT7eUt%^xQ?gTh*~{ssIYr)wj6eXt-)|0pU1@+JFUKV3<3 z&&#Q$gUQp)JYH<+2qD3P)CQ5!Sy`(cE@Lh49u+DS3($fS={85)!xtlSIn&79>gnl= zH9xhhVO`PG(<#zd!B6s|vM5U7b-}Ga=Huxq8@yg6O{%+1SgGQs$9BZdZVcG_AiGcg zJxfX;St`*4uY&@CV^W*w1*YR z--EE}obE@tGs{m5_Ddx8VHwAL@)w1N*DpOWAICDSsyOXBZcC=p$3Md$O+Uw3rN*Y#J>Y1>SD26IG{Ct5({fGY93SpKCnX_UBLowv~l ziJM;@BbD@ zbqg!7Fzc#09HGht!YnDWmLhtTZaC&}Nh#I~sN+I;4t?rl)us;1S^$4N?44(J=&s~L zwM*^;V4-wY3xL$VY+C7Y;DWfUIOl$<~u@Q;2Xu<(?u{2uGu zPC<;1FRdN^;aJENV`jg5r*smY4Ryts3!neAO_6|A-j6_2(YJNfaBRmem-Gy3H_>kS z$t|50KfVgbp)|lYwmz>JF$$*LFcfte=^F2i%cpnG&x+a=ANvpzYOh+Ch{Rra=E0RG zJOLk+-^$;CQ(y#L@RZ2pvNP0!s4c7Jx7xKB3Oe$`#7U-7=Cd?RdoKLEl}so6!6Fi| zf?smFL5Fb{6@QyU+*OEN2C5k{!p76wf;(*s}Xb|0_$zvi8@=s<- zUC|^xD?UX_yp_U{Z07-X)kXw-6m_FF=z9HgxOHuCq7$tB?ehgUd&^a3RExla;yM`t zAoNUTk-Wd6UJ?{Xr=%Gf-+g$KVt;zO-;}-L+{8BB3c$9ga1^XP(V6xD^IW}3>sw_b zAmWx}O@34E9!&IDx50>g+cSv`A{tjLf=1>5fra{&H6Dbik4b+wIAHW`tKX2EgMu5+ zGCE2#TL+BwSZ0F5#$i9eC@Mtt-MV)*aK%m#6-gAfM0P^!usG>p{Or}T>2{7lV!hhG z5Xpgx5o<{;balmj4<^z~;RPMw71wW&(stX^^IgD}tUFv>c8k(p;cA^Jc@PBWIBaS^ zXb0`(>*Tt!sb54eaA3Eh0o*#e!<~n^L{`5|c`=+%&t6kgaVSsH;c%y<@6T^r8Ct4l z7PGK+*w8Kwz29t#bkx?xhLE`Op-dVp%{1Ab1jBS8vHOybm>Iz?lA&es*qVwE5g#fk z1h-q_eq=94>R;BQ$&hSV9R9t);y!6C7}@lsV6gt?2keSciDWloP`gbB9VJ_2DZBOq zmXt+BjeNQ!3O}+TP0NIQyCV8e`nOi~ZoAJDxfX|^H5hX1iy)13qpX*>jJ`aGC5LAW zce;e#p|JcqR)rjLs453Q&ce~;Pc3_@^h^ipCVXplgJOKhj~`a2xB<}gH!=E-y!##< zhb6yX35;|&EIr0-xPKt9+2Pd`QxX)B&L#05r{cG2adoS{H*CEF{jR>U!GZ9(61_4> zcurBWqm9>;^Y(qxFuqcmKUJ=v1wb~2vMnAB5q_UJ1+eJ)&+WQD?G(8rP{-;?kS_MK2dza$q#-kTs_yQGWk&?xB!K^BJbZp{pyQd zN2LTPTJW3dM$4&et=4j}swKi_4ZBB_fhl@>$#w#ik(Fv_)fX!ae1sfxo5l|;<=WGy z(*w>A_}3hz?(pg626f2L{fq_)ZMHp^@>X`xkIu|cq(2RgourdrUX04}nJCI_+TP`C zHC$09B~Ct2T!9-o)~!$;vYKim3mp-G-pm0X0yz(MezW6WuyUjuO7`+^8BY$K6rl;N z1Ptr~izKRYR+K{#n4Yx(vb_dCMR_2fTpI^)eOY4l?u*$o9~%#)Vmk*P_NqO<0c{F* zcJ$P0uB3Kn2^{?^RxcwpAUyojqy&5pHvnh#A$4f~rDYH|$dC*yFaw_~7=O(GFd z0-G=eFprc@W{*hB!`ZF-6~msiKOQ??Pt!)a?vgzqL(8gk?#apg03rlg%LNW*RGCu< zU*)EjxX_?t$9t2WG4(VP&$EX@9{WZO8$c=*;_awc>B(IQdXg$7;Rgpi-<>8_qZ4kf z_(>&#JH{x3p_kM%t}QaxQwgJHMQ4dV01P$s&Bx{hyx~RCsNdaZG`vgsT`AFnn~Ds%H>^rUhxQDQM4}~XAN@#qK{U;E0tNY` zUF?n1@&xY1g{Iay);y-_egc`Ll*)J`pLI@h%xi=Hh=XsCpE{erW0u*K?wyK^CcMomyG` ziA3eH+QgSJ3)vK7!uwJw@x}+l{|ph52}Luke(8vXNRF;OF(IA83gDjmJ0YIjHR5Bx zt!BUU8M8?I8ToyC-Qh9avGnAgZ!O5VXn^lcIDsy4#t4$&VP#o-YbC{GfwgdTi3tG z%>?r{`l6&zZXB9GonYlzIqIN4Cqzg3UUEO9YSN`K1{kU=Ldc>9j_LWEn)=pramQNt z|Es!~A(&*XG>p%wU>qQdzM+qQ>{`i2Urzd7mG-E*S%1(fX1owPWY4L#Fzdr98a6JO zvp~oV5$;982kqz%gE|Od7=L6!X`=nzZ|cvaYA$r ze#y%eCa2GbXID-^37PYZEBZ!b-okZf7$ZYDBTpSADP45fBztj&oTx;``5pZ&U=0M8uL5#DMTw@bEKF9DLc{6I^Rfaty*Gm3A zxeW}ka|M;=T0Ri}@3x^=mfpaCz7VJ{gSJ`rh=8Y%<4=2nl- zCIr`N#tP-8xhQFW3c_gpJM}nH|vZT_>&GgezY@2l%|xg|@r+ zV(e<2fY3aIn=tJ4Qtbb~CUr>SiGUehKuIB2^7HR3uOg((*On8QhULk^dEECR zqmbb@AGAv(@ATA#FB+mbJ@+l%k*wasBBO#l-11uz=~94)(*cH%p=q9aDQh~q?5c!( zKR{iE?1ys+@vOimyScmdsL!pCU;?e;2OqPtwkDrY}QOt%%|~{ z`!HHL3(xe6{Ri!bZ>KE#Et9VynZEh2!O6~ZfNo!Ti6*eyws1*JeYsF})!(-6FqOdf ztE$;7j$kuFqZJh0*Y_)YFT?Tm2*yXW#`*mRR~++mUc&N;>@zO{`+qBVE0lW#aA%+F zEdUzvhxAG;yt8;${8yQu{-pp-I!nH65KS~bx8!S#Kl7%rGuLU-j}9N4KUj3ENeEXx zwN><#`|;K2dvVub+b*h0)<^UfN{+gyxThhOD_tmbeB~Xw6Ms5ppybqn&rCR8m%){i zbVGAF6zxp|pdsRAs~)kHE!QMGycca{31D-Ggz_8}r=triC_x&@d!)9@82<|Cb8;}I zm!1ZolEU8`O@e-E@_Tcu`E2y}Czc^2){9Istf9r6t=RA^)2AENu2vuP**Sv_$Tia;EvD2bO_uX|ta zMeMA|Y%X|9zl{a$D_a^~0O@b+#+SLMJMu*~QyEp@tp{3-f%+O18#hc;QSi3Mk@W`0 z6{QAIs@#&OsuP)e0n8dN2GIUE5)+1n;G3Z%8W^&db~Lwtr)T3X94dhUZuFnp&VjAM zOg5qBH+bstRPNxnhra1{t_`~L!!MVp`+NL#UR-}Mha^Rko|l+er}muh%u z@J0jgCrnm9=A@o0Iw*VUkO-=n0dN_JtO@4*pK1&!4aJi;*p)N-QE@)lxdl< z0R5%-XayVpSLcwYTLyUx5El@{IpjZjvyeG2kC7ej)gD49l{*?Rk1>YWkH zPC!v9!^+c#^ehAAaI`f`g_FVF30zXGwLT^zBg*C6p`1{-Fm2jg2U9dfy@vbk zf*pt<`%WS{@48yBV2H&iD;pR&f9*0ua^Ro@W<}}1z1M#Fv3q`)(e~*?LX=2Hz`@v_ zUJF-|63|dfIGUnJ8y5_uIThTYw$h-^q6j?$=;t-0z}Gx4r-bm}`LTivz>E^*(Jks((*g!-?7(4z&Poyv)Cv-^x2z+08jziXi4{W_Lt0+`v999A^TEw@{-Z)(<@z>o z;|on=rDW7vi}jV8EE!!JY@Cd2NX5tKjL{3!=Hkj4?rNweWcLH~c7&kdD943RhOfmR zizFE6eC{NX%B-c~XmoIk!-Uwty@ES>0lF}Nua?*~%W9d!YY*P@qHL(`PhHs2jkvKJ zA4WUk#%LwDEk1lS!^3wDu)_3BOGhF|fWpIg-+*ArXlZ@L7ZnN+Uu3wrKx{PB)ffxe zSSCr7U7cq(^%zeN=pAt$*>6-A2i1t^tIN^l<8(XJ<9oie2FQZ8qm*OF7`T)pm7o1X zYiY%}XGKEMxUTeXlOjYjF-1ZOLs1h~p-%z1I_xfuTXC?Dfj7?jek(=BdCyb869pk- zeE*BJ-H$p7s9X6K!_QQ?j`T!r7LTt>)$QS0?Zf6xo*tve9e>v&!fYIcejXU$XDo=O z?y4kJ%^^)`ulaaq%Yti*9mbJw5zDWABdfzk5R-4#nB?m+AqT*Ay3QMAudda?ZYP=NM0SXO^Gv#B3PiJBj)@g-SaJ*Lv4T%0z zq!wfRD$ye;{H863taKar+XV52Z`b>0fl_+4mqmXF_uh*RGOWq|X+e~$6_s$@b$4kZ z1o0q_<$&(qo37~WmlNjzG#k_uM&__*uTkE&EX?_-;S-hx0*}u11w*#aa2Q6>*z0zj z&z%9?QZV(s^+ahp5B((cU((6*CH(dhrY%70YbfG8NO8yqAgSKx>VgmZ+twPpi?}$u zG>uTD&eRO6+mMehWzi7=Rqt1)lor{YAxO8a)kgW5lo%EL76MeTC8^|EsW>}SZWi=u zRMXep=*9ovrxhLJ`~il^5b|*8__5&5lx1gyZ>GpZIFK8a10X}(-=j%#bZd-i3U6C{ zy+jQ}FJp;(=&+af2LZ@1K}#reZ&+#Hot1@Mzc?&Pyb9M0lLVy4E%sJbQuJ!9kfTj? zu!lV+NaIc2gcs-jmV#$aCqD*B%_a*G>nXNbP9#tj$ zC7F2CS~6W8nL3PnWAf#Gu1F+Q!V6xKCgk#OR(DRLDfVbR0?#n$GzaxOdGm?dq8v6a zDTmd<@y*;%t=y@?a$kfQ&o*j#zZGU8ZQU%#YgUU2mIH!3+`}FhVnhbfr>UGJ&U{P;ySZg3ZJrG))#vs!j^XIRU^3u zKU*YRF_^&}P;q5=ozq|A+@-(jZHc$-9WX(s5A-`B3^ca;ng}TklZe-BhW>1?^8*xa z(qw%RSbI29mrty%&srgxMk?GP|HgI_vygkMVX@XaE=pg+%K~O<#B(y79DO5`$ly&- z)s;G0`Y$U7G{&E9`bFZ8VlNF3P3o^M1#N(v54T)~6l}F^)VF5EnaR)B{J|p}#>FE@ z3JWaW1aD?Z?b_+msu`ub0o;O&3&=IzzN(oj$XERqN;kdL&y;~l(PSAlyjE}Q@_W~9 z0?_bc(w$B6-1--Ikqz8kT^2y?+Lz?}^;yO98a&7vr=_ph zkN7$+b20|;+wyQ=51}G|0Nmw^ZB8d__S8dwp*e?Ik6}^v?uI$LIkKQd^2awU+`!Rb zntE{Jwpr>OaTul5q83<{0UQ-(C4)*L4%3rT@ z6|)?$h1%e!b*(^fYNWXC(K=r|&gcw~NDQzdplb5^QHDFJ;vhHs00hS5)0QD0e8B!u z^&!7G{#yJ6x1zKI{n0?aG`e|FE(QPvL^@$K`)H!ZpTuYz4A^r(A4ax#)r8x$t4RK; z>K8VwZdNhd?`l{4ui`pez`b9sj^3eYq!6cFlHqa}7ZlyMGe~XC0!` zBXqAlh$rAGe){~<5dDazc;XI85#Qrkc4|kItye&4>{0d3{^f=h^GQ!+rZ0944Q^&NKuS%QrZ2@TK3V z&fa;kUx|NAFsRzyrWNTSIanmFL3J@N#Xyr;)#L;gSN)@>h0kaCHeT8j+G5>DG62fLNR+r__d6p7KX&(wNR2*5oET-6Kzt&34l3#kS5KDFAw!wva#j zKXgiQ4cUH$J^}O{x29l5`;+Kslo%->%YXwJ1gAW$RxGog z6ePrgY8q(uR&YOrHwjNV&Y6nRJV8=dW6U^aE$_{3%GCY}Lvv{GUL5^dul|zKeA3=3 z-nzC%rd&u@@M^_T0PbZES14eD{_7Xl!S$I*<}d4MSPjBmf2P{WM5+GX9+c_=v7<5g&tt=Z)^zmFpMx%UTDjxEb%%!yVz6_55_W(0s>yG$ zLVndY#GU50z*5H%$4|m^zx#~&@EH>-l(`%fXohpyg%Rl)&cXHz-Y#>2aXdrnIw^|u z>e!#W(fm>BByo5T>Ye(EaqNgyF8!1qQNhQl;Fih~u}`*L5$;?N1zpyX+5-yYAHZ@ zn}5m$c*t^MwO-N%ZLVCtNWRqAT;1TG=;BX z<#3fYJU6(qK*`qEvSjo%dvx6ir3j)Jw@2$xn-4y$K>ola{9NZ8h-o>967xzxuZQjn zM9hO>mDxFYUcz3zhLfV zmVPC-`Mrl51&=Te{A7j~7OWMILX?mE=hznn%*Nk?Mvht#&V>3CPn$)$A<65n_m%FH zNg*q$)|*sERrMNfZJLW?dU(UT`w3AMTx|wM)IYe1kq3YZ*v4}P9{Ov?X8AEyOXboq zsAU#w{in6Z;*I_hG$#nWH6^KHnq9z>b~Hgd$Vb(&3_|A^gr2X6?)0 zPON$#h#411JoT_r64OQ~Xf?Z#OiIk>&K3mXdXfOs?@y#dLYh35xUN8@K>Dq5HWn@yPICsSsWa|2e%mj$rGov^u7SJ*;#rwxe21Bk)S4W)rUY z9xpgs1e|a;N^OG)G!`WNm)r(+VRVDwHv|-`vtE|!16X;o6JHa!h5v*>p12+1}>$@PREzTiHcn9Qn*i`X7UFJAUp z&W#j_e`k~6GAeni%GdL4_&RwIE)p~(7Or59gAH|Q37*1u9q0iCo)?R?`dGO(OJV4e zt#NZMeyhi0VbbXZ1%!*;K(cUe5m?drg~UoN>f&q=iXyHtR}|J|zGr`=ea%~H%&nLNky;B&fObdo5Q><^H=wCS7YwDGrqmNPj ztl1k8NvUV-y4||*!UbUn5PLaf^(ubSlSb$B@e^9==>6>?h}yF=$5xo8yqjtQ`%i7^ z&X(hF;2u(m3qu4gu?gwfO^u+UR?m#;1i*{cVW3V5GLYWvu!Qw=+Cq1{Ef!}L{pQdB z-1o-8#E46hYmklvPc(}*MkLjO$K)YcyD0bS%gf^=XWV!iQsF5O<1*OgxFYgOKs zyChMkl$Jj{DMm6;{)50{FfM0l+5E2)Yq?do)m-$#o3Q>t_q`$mtgPsyid**GRGp1s zEo0L-w_Chzk@rfz!7WH;kF9z(LJ*wH9f9KER90s?3^pCnM^suE-RoaVhIY-~Cu1HF z{u3W6*{pXO&TMY#Ck#S^@a($m!Unh^Z7kCJ*#5$&Ayip`B%`Ap+wS;)9tp*^YBvFw zU@2`5DhT)s&9MeV-zB2OHaI~}5e4hreP}B*WJt7V7evM?%%|$CZ}I`gBg_GrqZ#$H zt5(nAGi^)D-Bw^AxaYIpyujn1Fztg-K9-dtVf=oa<(4OnfiSklEiAUOo}XwaHT0o% zqkEPqR^+@V?a-SpcjN{EYqd&`96oc4DBxxNrLts2B9p6r;!7tg4+S3M7)-KQXx1TK zb}qTA2^73#c9xi~V$?sYl`$>hccJ4F5Za)*(m0?C4VyA6b1c94sfUWzxIK=*BwD`w zKVID!u2%!2n#7=+;yrZE)rLoxr83Uj^yqjB;6qW4R52<_QKximOMGlbvF`OooVU(t*7X366 zvJj7^`CXH2CtHQA>Q#{;y=6E&d4LlmJs2VadC1+WZKl_RI716r)11*J%JxQlU{8bW zdb8Y9bYjDWE~Gt;l#db0A-uLk0Ut17e%>7`_aJx<=SfbHk9S@_Fm*k~U(6{U&MAQ% ztz@Z*CJ(|wex!0wg6X|QTN4l|-cU#Kq7rP*zbixw^ge&ogjC)gcTf7oB3+7z z2jvPh%g{RQzk4=&$HMj+OJ?}_6be%cx6$qL%K6b0bcS$knRO8d@2}Pp0l{PUff<}I zKM%xDYxp*erVOmC_e3!aX=rD9Uc`RJF2U~b)nD|mn8i{)KV}5dpqMWht3H+@-5X9H zH27Hx(XpwSMB(cm+%$OAMDra*LL3c>3rp45uxwecwEhPXK=M}EFmUQ;3|P^g@GoXP zS?6G1b(VR-jp~on_ff2fEt@ys%;&DAqe9UTsyNFnT@4i^jC+JTdeb`Xm&Q~e?Xsnm z-On#wmvRc;C!k7k%|jv(sSHKxu3Z9!SvT@Ih;UNHKAJ~@XeY_P*Y zcQQNg#cBik`X%1&L-hF-)X!Cl`8__lbRi2nhy&06T54S6P5}sG{q6zG@+Hcwn|JKr z{25R5!~MrjsHUof9xx)pfV;2N%KPx+S^E@Rdptuv`in{h1fEDH{pf22W=z@LI>zS4 zFh!BIuQ@Ln0Mpc2eKlg~S5&Iswu0xSIt_#J)JZ{KoR#_KWwKWM_((EQmL6_i4F$?= z+2jIX`ct>sBR!3pdlBfCVa1w#ttkT^8g>wr@nc9B*1S$LVx7N5xGnRW7r;BBMiAI} zHTh`d{SA@1CmGZXj3Q%?DM@Li@NHjAg9WUw994+bu*-^0)Fd#kOxDz$v@o(2N+A zU_OWsCy6}ecSrY@ir3EL(#Ff#!$Fnm46j!G(p0=?~_1L}dyhE9-kfuQvba|qyFmJUrQoKP?!&&^kO zjqW2diu{91InWP6`FPU&!@*Mf*|!g7lH+*trOXhWv3_81B{Z%aXiqjl)pI#nAk0sr z+iNgDDy6E*`jZp+@~c0WaJHv4mXjrj(e?g??32YKzUyq?HX}_Kg{$hjdtkhN@C*6p zr&m#1yW&kbC80wz7&I5D+W$mCOt{ZahAH)Q=?L35OB*0sunYuFr?$Yk=e0ZAD}A^$ zuWv?|j0f(U;f69T{_LB1lI|K)w?k5{aURwr2a9u1g%`j`J$ZvFvu^NwG zTW`f=y_y)~x9Ha<&1`sV@^l)^z7UU`h?cl49%u7M9V47xqd;gk?l@ECky_>MYpBKT zr*&D0cU58jML6)yoa*as0qQejnNnym_M_7TUw@S@9)yxuESl0{Ta!C0)JnCI5cZ(N z#Ecss+mB#qnWES}QJJ-iK3%VNCaBswQI~u-06Rd$zn?&a(Ms~4HyeBXpWSr(p9d47 zqXO|;{2_)ch{uyv;Pjd6P#XVmUSgpI0hT9&@?xf?d!_fRrYRYc!-g!Mbs0twD2e(= z&>t|`(O!X6-#Ti*A`=06eCvmj#s@3i_>Gg*(tL}BE+_jKq8rdDqJ zzTRil=S!Y5MnJV!bwwa8-?BAiyF#nnONDy{rIv~7^By8g(%!{H^eimmp5HM4^fGoM)1q(?3!;V1Nx;V=Q&?)S-aGa<~=Y70)1) ztmh@T8iO%PEGKAWC&B0xui~k4#SuJ56T@M@3&};Sw6j)?XQDhP!P!%wqx1F8y!_#1 zs4!jaI1xpErDiC<_SY zXt>xnE)!JVeK7i|4v^e*ZhyTYcB;TU72H3SfI@o+^a_GI$oZ{|+r3vAoqR+v|5L*(ssPea93L5i9g9$*i_ zHBePn(l zW3fFT@R4cbMXxx^+0B@_0efD#>V%prSrRjvY;+!!cJbTNzuFlDRr|iSW|m>#P|B5J zX;EkI+J^abs9`EN(m>!g6{ghDi9s6RKR`OD+$#cP8A=EOq)z)2u5==vFY7105s~@@ zhxtLigN9Ee-BFZL4&axWI3HsY|6(;^eZmJzDrv(BMd5-P4I! zVwnFZP|yw6Y-_-_VbEJ}ju!wfIeyC=;i7xrMuBU>xV3VRop!YiEd?JOU>yiV^fm23 z7;us&7e8}xmez=&Mm1gcYdB2PQ88e_MjBWyV?oE}pMhA$8rhz;-tA3dC@N;sGjp{e$&VJ2J<1>sRp562Bg&;GXnB>D-Pbzn zZlsQ^X2|gEr1YxrO^|l)d;1jiJO$^>kThqJk^xb`9}rzD)T;pK)Z@QbiHuRUSRHQ~ zoOVXEn^YDl{IG@TF^f=(pl@AZF;sYdtnEwIC#*It++d~|2@tD;#Hkoy{^O*crfvG# z2{_JPw6x)W{0C)vQ-P_3)CrJI1wB2p?k`)q78j1PRXo7ga<#*si#{Fs;mQgZzUKLO z4*LPRNG??A7R^IKih-MwKVkr<4EBrQ(7O6TrTYsqzew}oEjjm~DS;d;@n7qrX ztnPLa6O4;%s9|f(lVlaEHhJI<`&TnwknTe5i636s`SC0G{27S6(a#?Tkc9x3J4U@Z zO$BO}IZ4J1jiQ<3i>=vv(GQRolp*}>>}so84qqKkpACMPfVHxZl7*M}hq4;2f?Ocj<&5WsGG&>MAHs_qYF*QmSKI=xMT zuD#S*YX7R?i2)45X`Z?Ny^`HDN(ga^M;HP_4&b4{PsG4vHz9g9R)ou^X)g8eBLZ!? z@*UDQ0MH>_+lwMf4gj*yw%B{F47b&5!z!7sL-d7V?x^sRC?k%79j5N9w|nT4_Qk)W zF2v^#3mYP%PP&X{^mbon1OMA(KP{9fm_uJbC3RF=OZ2Gfw9l^cr7&;O@-xzNx=pXz zt$Jkz-f(Ab3As&cJ2hC5^6XSrI^`YpkFy_M1n$uR^Har~p-Xa4ATxLC9~FVw=f$~k5#O=PeU@Eyh1QC9pot&`<=uofWYgex z)Ojm&%(`5p!2_1{74lZnY3oV8cJRM_W`E)gyoBnbnQQp`JO2#|(C+L~4_3#IwqR|} zje3`p?KTNWbypoJ07kg?nvlYKzwM8p%~xe=kB#{#-zWPhJZ92WML2TOO@w01G3B?z$2h?7+?P(8L4MpaSMjvk?UT zC|Y)fHkZr0K;@)Ot&G$@WqkM3v{5>*42ckl=$)F+zN76eFF0azmYmkLffX(R{o+40 zyh#NF2AZ-JX{b=>ODId?bUI1x%kqjmLGJ3ne>z6nbYJI6h_fQ9D~qWBlJ0H;qTg)| zO3!jZ-^}fyT;JZ#GFu5txkQz68IW~kX!pxc`~s+xt(Wenait1>E1!-i8mB+W-qhj8 zhhkCFjQE$8Ii=QA;E?gplNk=TG$hU%uY!r9%#g?A|Jp_Np$upb2TZY`;NBG`+nHFB<$pJ5tEvJXX|EdUV^9OKxgPgBG) z5vSMh<94g3{8If{1?0euxG$qlXDe&+ip?Fkk0z>C=kYsKZ$d5RD&Lg;I@he zv+-yKorANe-zjFX@+*o> zulrtaNZY9FtELvIaoSq>Owk^GGNpEK7-LvMLjlNlzq40GTi}MT?W;3HdnSK2k*u1Q zpr!_x9ta8$A(`?Hi2GMWVSE-f98%( z(};{&YFj5ML8uCVE@$|rccGoOBR!#yua>rVOh<#6RYCuDo0K~~@e1pJJee0PgKaNE|I<4=oc9onylZ+(iJMm@l#&f76+IoG? zE*=&6nG1S7V3I?(8W8emk0rG)`iIc1%_GLZ&iP?IJX*sIYKt_nC3BmSJ^D%=O3S6F zKAH88s$^?zdvx<~V5TJAw>gQpU z@R(DwAVP)9YEcgG4c#dcS>U3gCa>%0xF=IYo5vsD0{0?=9hxVjL=`|&;UVZV&wPN; zhG3>RiW^_b=swjA!K%QibAR896O~L916(#c@f&Ma+cooOgV??r8AYk9r@Qy zqV1i|&oF%h5sf0>StCkXV(}FGX*mlRy;s zdjcfGVk)d=V!}&CXaKYq4*+OoY$E{yAeh0py&=S+K9*#yZD(t_3xpHe@sAQF$sWR3x8Y`{h-s9MHc4<^yD1(y2wcL$Sv8n&tX|9ubx1)+h z9g-m0je$9oGtR7p0YB=a{7YT>TyMA|IfcX^$xS#^=i+^ORjF-AL%S!`{QC$=eRS{i9*5ho!K5KtI%~eC6w5z z_@x+5*SpEvO~D-rABIS%i3C~0%%#s0lGy0o)P^Or)^*7R%*t+_o3oK;SLse&XDHOw zx~~+wrP7_Utt9Yna@(VOH-QF+k`9xSx%tQT)xzNMS<`A2DP9FFztFtuJAjbX;7f%fM%Vu$YRa@gSAEB9c)y zk`eSAJ$X&v;@OQm66hupDF^r9CQ3ietLlw+2PBwaE7O}pGCx5w>v&0qBak)Yi4wRt*GYXK1V1j@(jC-E9qpIP#{T2A*bVPmRH#x6C~VC_z`scCiN(QVvq&W*Q7@aJ7(3I4U1ZxZ9YKCyySvV--j zczQ}V_&;T8wf&{aK?nF7ddi#wr)^L70V!n4oWwdI0?PQcEvdh_n;IRb5s$9@0rZ)| zT&9WI4h;#sd6e|i7@uZ7*wnDAwh^KhG zlVYu^k*}x-?XfLxv1UqY2;&Y*HV=~dx0#e2J;K4*;Rn-CZKY!5)%>6E8@lHeT1wJQ z5-3z97pBB4&sr}JAPILWi3QhF=T7#s(_ucg{E%4wdj8tfrCPTfU$bp$hKMnq9>d0v zD5;dcRs_aWn)^9EKUEeF$!>N4eDkZaUxYLL^Q1xmjgRGj|BW*tur{%*R{IC%G-JN| zag88T?L3>e@w%@i7!|7~n+G(&KM2q^JzNqj8Ww8J3^9^rAGP!R?i~EDJ{zVr;;_()=MEt;myT?AL22`q|^dZKSOyc z$(4j%?HA$nB?69J?oc4S3iBh0`OCb>Q?N2wcbiNHFlKP|=f%Y+LI~qA%Xs}=t=p`j z{oT^=rXhgmYWP=!4IYyKb)R3*m(pFtB+Bc6s3O|Tu6nOKKU3Llr*4)&e2!~?@o zmPM;WUu>sLo+4hXSCliynb~Nfv>yBpg;w+S^s8)>6|K3Kxz9?4y9A!@TaqmIbdzk- zVeMDr(Tmogcn=bQP}FfhVHS#6y46TqUO@iKXLar;M!EjRaUY>Rh61 z6Y==pk!#Ss4mdIifRuh3K@Hc{aV~f+!8?OD#4&-ATzqb`@%yyjfr@XIcMMYLCG%eq z*|!mjLfsD_=|W3~1EFR-ku>J9FF)yW?oX!DOnC&Awg}TP7j)S!xC}0fV;un>jd!&y@H)_3N_B z2T+GyxWDt!SeMSL=7Diy4^Tgv&9yMtC+PUIvVIHWa)xd@N#Na3eH<2- zAH0frvZSRr$9*{^QFLL*duDI=gKL1&-4KM}O!IRY0$~8U{Qk*1s*my0&Rqce)L7Pc ztfEeHk?fmnF6?A2sT0irC>!6V(e$V-nQPwm>y2X2t2rR}Ltecv7U7%K&|mKLQ(1fs zPi+mWGxJAcL=tgx*&26ABU{EAAs1HK*?r2Xq^fP#uu)QdGJVupomkpemFfFRohPKW zY{m=K+wQuV8#4qr@32tafpqkBaoOq9uLS*}V?K8Wi_~e8FOCXywQNM-OHSQLYuD`Q zz|I=hKneBC7g~1W@17A}pu>lGio-BwlE5=?9NygR<0giFj<$u}I8CZ0;Ur{xNm1G}=$h0G9Cp(^*NS2T3A?Vwf{IF>*YFaj+`b$REJii%J;j_i#hl zrom~j4@}3VRJ{X8Du4c8F|x5%PpYW<#cF8vl9}=$n|tNB8zyMhq+1uld?cPu|1dg& z6`ROz2z|7WFiZ#c7m&tYqN)#WUV%QEI{MjS_#bqbm?`u8?Pdaecme3|b5+n* zDh0U1C;OW+*uNU^Db^!XcC(5NI!(7MU9KMivDV=e#T-oyg<z#z=fvxGv zS*9oSk+6}3a2J`&V|$R%`^+*`7+|s~oBl?-jj;M+JU0iIhTk2T5_WZ22LK2MBS@x7sEMm};W;4xV4-D(#}G7NX>L zw(OXnDl=AMxW|I=YY!Am{tjBMw8YrLPiSjUDOiHT0HE8Qh{+t=Kn8vx{);#8)PhaP zMRXR5=B!iy3A#!J%a#+3)_yNa<+-Ro1%1k%uGuw+Gz~~8c3Jm(2IvSh-mI@X2{ISC zd-j;iW$5hh!lSq)+;T=vk$_?#o8GEDIl#p8s)r>6dC)(a0MpKw0@Ji%s~Tu4smR&v zHp8eqbVGR%;dw@Zy&Cjv#_8M)^sNI=0M2bovV>GjgOI`PE&6SLF{Svjy&y}q%m9+I zhLeb>3SxL%XoXa?#V-jnP0ceaU5-QK$EX|ZbbtQAnYA*Xx$;3TCFyn|_UG;1*2bd; z*ump(&=F`+lfISX_=uqq7Ku|DuxX=7be_Q?&{*OG)>Yr680}v)m%I*W#Kzqt!f(O7Ggty6C=s8pXd7yl4usjQv9X1g3({+%i$*8X-HN z#Sfb_J)*Y`KPH53{-sy%x$hkJ*t#1PsDhHt{k*su@XYyUYamcl4#wQRov2ohbviZ7b`$@7;({^sH=(Ib7;fPF*t<;Amby8C^ zWs{7vkjYt>jIQe8W;Hhu{(_10BP%!umEs>?n;jB>_v{5b8S+VI7!<`FG*Djx$E2Wi zkXe*=ePLB5NUw2*2vkpfqT0&}SpRGjtyqKitfT4%bGJ$j?f8JFM2(N(m9)-|*9YVIJ4k;w+UJZqx;H zS=M2amKn-?W|vAR;4E4Kpvf?;V#A%r=?$=aX>*oyEW?!w>ArhX)&J&|bQ}%k5uP>B z;R|_ZkxqE}?T5ReDQODRI?#2E`bH;rziN<%+>U*Xz zY#iY5ODg*fan_KVlNre<<}&Xn9LrJ%M&{+Igtw{$K;gss1C92nqS9mZs;Au;CZdd4 zU6NLWs%O@O5Jbv24`x0FYN=pVTxI9lN5Yug$iS*_S)(Y(ZN(Zg-ILP4bpvZJp?HN9 zS_;8H5zx|_no;>i5H?UXdSiiqxWe<8ByQhf*$xQs-SoOLX;vCC`LG}7A5HzrIy zpxTK@o1cf7VT)~Vzu{ETcY&7!?sf`x1XXAiHIddN-(0Ps=7u$Q3xDYdVSlx8VAB+4 zgXUIv>sRZ*7U|H42$E#M3lQrirSBj*SxVa8O`p>Eo|ppB<%hP1HT%RZZ(k;cBjqu% z=V^Uw@IIh+bxOeOY6goIzmXx$@9j;{mMfLv@or6y^Et?Z|m8rSkM7u*2 z4TFQXRz0LZc;Ebd*;$uDHcNh6fe0==-~}G_ZsLK7Ti@of*xi899N77Dvb}f}F?+q97fe7_`oc)Ptwk;i*`v0qNiR=)e3;ZE zVW@@8)7{slsX0ae98OrJ`AS|;>~ioK5vT^!%y33lipU^VX`u3 zj1CzgkjgTQ?3IUk#=vn4-2S-l97Y69{1EPG_azzBhTL94>cg<9VZ zDf7d>Q+OFWnAMGG=eq|nW6zc!0v9|UMPlrO9xuqcA!b^j676> zx95YZ);E#~L!Z}gdfTDpn2d!Mnc1m>xzTZ?HF&{HKA)NvIAtKg`A#Ep7PW~Th8mW_ zW5m;ir|=b_N;}81xy6P>p+VoP$yV8@%zr?Nt%S=CXYSkiCC$qw5hxI0f50hvn z3;n)CSgOto*K3Y@$EyqfHEO)C{JX74^$(o$DqI^H;iH~%M0o{g#=XBE}Ywt|!1oi@*q`{t#r`VLT&NNiT3|7^m?8(5zxKikGA_*Nb z;-jPHhkV+q!=NQmwA>naFA$C7(W5TwTta<%V!_r{vsR$)A zQ@df442-Bp(W-sY;0axOgyCL&j87n|YDp8F=^+nN7zz-Z*#gI@Nr33*NO%&4>6lvK zLjF?i1XBk+S-tL1@3q+?Rp|W33=o!%u>8>hFOtmwfDPp|rn+ow@JBi&$ewt-bSaVi z{QL-Q?HSZE1zuJi><6##I?S;HNN9F?q0NZ*mP2MCZ@%&vEx4Bcnp{RQB6oDzA04n0 zx$_rSrU-chuMN!2oP(9}Kb#xctOMax#++b_glhbSFEi(%mk%%7o!)re7ao*W9ju9?rn zC4PD02abbK#^e;YKyqf|eSllR1g2!XGbBOZu_DFM&Afk@utEV{&LVOIjK_SAwgLhP zw^FG?YKW%NZ34V`=CriZO({*o%xYuI&5YOYj}s=8)(le9CZ|CvnLcEV&nT|RT;u+ZoL0w;*F?%DN2le;W?)-r+r*EqEI*qCWy zFnCI9Ed$d3-I4-Y$c+?ztvVumSRO=I6cJB+Pc)KR{F1w~hj8T2fCnO~gw*cpQZ(fT z?VYD2y~Xdt58lA|$qU$zn>fCF2??Cf&8Uy(T$A zN8KC(ku9Pq4w~i45cStxz45v-^gxTu{Vp_ZKIehnv{FEqE^k^7|C7Tk8@z#X%L`qL zp=D+NTnK+G(AWG zhjIfvjub!*BqFUHL>?{cj&i+-ne!v~7~Vg~7Zf9D)wjXdUvZ5FS}3kKkH3sYfGqs+ z(G|rf;B;I8$j%tMaav-0OKqK_ND#@y=itVc_+g6xW!I&>f#xU4Wk0F3~u0Uk!mEm6|` z@Ie9N3%#Vt;j1n< zNvWU)2EA^_bYu1IufhsNeZ!hQZ1R05^+WM5k&-|E-{RLV$J+p)aO)=q?cNYh`AHl1 zf+Je$z?(yUL~V&)Ze(Q^=OA;MA3;gU*z($#r3XYtEE31ym>g8~gV5EqiP+jV7dhVs5U~sEhE?x;a6Qd!{$%d%B`hiVA3r=o6ysz`@>xjaiANepQahPGB+! zloF&|gAWG#L3sYsynI=cs?sYt{R91E)3izgKn#x*R#)6bQRh|x^s@lkSwQZWrTkdp z1UdAfe&IJxYckZe&?99|7MF_13@qpE#J3~C9~ZrhhWTK!7u z26k*UUjO`bS*Qde)KWNn_uyOM`M4n#hvF)HH-8+R(ODm!&W>vzCUa)Z$E*ah(x#G^ zEEqLeY!{v214Pr)j2mDP5@6*aJ_5i3VyjxR=Yi*&KA$Z}Q|Sq2XQ#qGVI)G_Ch8*q z68+zAImN4$Hnow3_yugQLD5?Z-_>8Y;>$Bl!G2|kJWbNTzBO2gbDeC#iQF+`gko_`YhbA?vlgHW%4LHL9Fc@KC$ zWVZexoGj3|GLyn{vLASN9GLEp)61}o^*PQizL&4 z$56@tsRvVD4uPuit{e6lkzDiizWeCXMjZQ#R1~m?WUIT|6(snUU6tl@-uIO-f!Q9{ zooduEe+e&gDWms38(1tAnP3{tFg~&{H@@LRsEDI&!ry7Uk5O|EvYC^gCFVx*0D#nN zALX6_eb!%56gE=^hhW&^l}aKv6`|+A^*q>P772;jTa!P~c>D-5-mnRn0&U(vLT}ED z{siHYEq-zevR)+dP$F%Kj6$npjY59(2?;F?%;6kl8nJE;F+X@5SXYH#ygezfC5=^M zzVh+9V(RY-d&-kT2a%WwVGfG6(u{S`?h7C%u9Df*hw~!+5iFFrLHDUwnj|9%yW2mU z(DGU>!^V*2fhM%HPN7;LV+F9}(Y(>~DYGr+KEnU^Nckg7NDHd$Ulyb>xw!{1ZHim^ zAtAp`I%dQKhM6EQw+dr(}fAt1*)0j*0qk#Pd z9E5kY?J^bK%)Z^Htd_{DIgzgC1qmCNord!!wj~p}Q`>uZ9aJ!^@F)-pFbLe&swnvlU|;ZgfNb zxK7oZ9wLe-xf9vqX1^&H1YlVMiyWhnC+KFcj&pDb`UoK_dBwhs#Vt*UZhDfNVQRXH z5Ezu0F$dKz2)q>%`cfHQuhsgW_X8N@EM|}j6?Du(<(h~iu~Ql03UB+i&s8N;&Gr3| z>@0l!5G^0GBTkSys^jT=0jtwujrTbJh~Ko0Wac#*TT^-uCCX-@V@xQ=(v68%zxC+} z;yf>-0(XwkNn3M4QeQ)8o1RXT{*P)jH?(xRz7R$&Y7U|j5U2nwsy>78{lEgceDP*t zBB!;6Qy0GXxG?E3 z`Q*L(-!v+&-BA#%0A3o*v0%x#iud>wW!1(5C$#HkaCkG#+SD(kP@nHudj@M9 zvBo8$Vysla^xU~(YqpIQ>!r)f)K|Wv{byyLqwig3LE#06fwr$gr#>COI^r)dFARJv zGOa#fDjpSe3lc)fcsJ3@gn#J8P=zpZ?u8J2$4$IugdSkG<_D15abb-0;77NtO~JrC zv3T_Xf!w|e6!#bB$;$IblMOI80Y0SKo>w|VQ*9st4+5-Vx zO_0wklVmI*`jETOa-}m9Ku4JuxPPqRMf|I{1qn5yFHEpxd~JRwQ`OJ>_bSwr<}g+! zh5sS=VOBV+VmKvSt};&1M)-fx{BLOwe(0ddklDwbvFgu|z<$Utv81EGyiIi%V^3XU zcE+GtDq^m!yTGrzo$%L!Sg!3hpa;EuQ773esv+Ky%IgNxBeAk#8hZeGF z`UDw0ktuPjZf^KLBbwHe_n@NEev+c6^x_Th3W;YF!rviu;NKxRa)G)VA!DrQ5_)I0 zPiYbL?w*8P?lUB-H$V_i&pRH1+AL3n@$ieYVhnY-4~PGu$)H8bHJ1%wC4{o0hhw&s zu;40dBCSf;c93=fBF*rll%vRe)5r~|0UH|e`IrX{khI5%!tqqlIjsSVCU&6#Ieh8q z&u#MATBn2UFUoxUkaW@VJ9jRE;DOT48ryjJp+70e&{EswOj-UUDY2AG3Q?N{%4rPN z5xUy_$p2T}47ENX&7C-6y*KKhjt??>37V&~D3v1P-+A@q^vHlBlOz6d*zC+m5*VD=&ow8)cax1f=M0M(7&s-RXrWj!3SxFy14K;}TjWpEjbb70d#BXI{7+zk;o z_4qa>nf;Wj7L-}2Q@4+QO$DO{P_Rec2|V%0@;Ov8j^@ZC*#|$kqai;vEDD(Cs#FpN znpVr=GDBNCJY35k*)k|S_qWZx{Y;uW%q)g~AmlqGi0dkNjwHy2^eHIDqoh)=mEFJR z|N48kecNo!!l0wnJ>uvOex;gpl+}#FbVXDNb@GX`QhalN!@FS-W6eU}hONFjeH7}2 z&~r_+Vl*=Ejn{S4acYsjXrPR&PlWJHl61=&E3L19cKOqaytnMjmuY<)b!Lc9XTN6a z5fG06FlF7#vd%t9B9!ZX$ZQu=O;Lv-+(o9ySZcjhQt=${SWgy9U6Q7B)pbFDaiOsQ`W$2hb!Jz?vu^j3C^`tIweF@B_vDFaC+)eiv1f5GnJUThFnMDcl;{ktvAj{Z}v{l#A;!OZ`8Hhz$rMgU`E zcN}t6r2i0rm`lc@y=5Di32+{xJ!Kvd+%Lmp!CSb1I6t0I74>CKobuo8(O;BI!0xtgcDzoq6BM^*#(mMgy(B@?=m&12j4?QzHwH zKvn8&SUN?r=uVbW)*1>Bg<24ltgv!VF;>b?4J9TrJ0`Dm$&!d^I%jU)pWclci%3&K zetPg>W)H$SA|0w!vhk1fms@~T?yRUlX&!j?x z3BuTdoXEI4wb6-S&jKk*aK19HQ>@Uw#sU?<7GK27{!W`wM{aD@Y8;Lr$*RHsX-A%qSiu2;M6d z%ee7urs^v8$2)D8TTo~gi4Q+c5hslbi*$T@i@;!MC!zZm@aQEe~HO5r|PR;{HRQ_P^Wa3_LeqaH{_rSsc>>+4K3qV{PXkeAg;@kPigBFw{ zUHT9NPve*(j06dz_uIgFhZ_EoM^PvvQw+Ouc8o6ZuZ{S9zw)>Hv$?f&TTWr{d)p*d zASNhY;5Bb-85EH`C>QtjPj>lBEfGDuy&}5+or9qI$|#H;w9xJ$kSB zL{gTuvsD=wFRYlP2lNkqYEUR_-kE%|(+6$&$R*VY z6jIg1;q7!Y_EJq0S^A_0O{tRGFTYeqjqne`lsCtwp}K;w?0`q0@munZ83ljcyf>?c zdR@J@*XFe7vH8vuXpi+2fYF@IG5@PYkXk5vOT~UccxTnegqwDPihqXuNEMVjzF3n4 zor8NLz_yBYRLeH~|4~gfo7ryEcixH!8tEIZBlI3i;n7^xq?vjtq(H=%Cg=if1nifS zJkpCG5xhHsm5|%r`_5XSK-BUq-*=cP!IgU(``1_nxhWSe{#FB(nbiSEFRq3m1dGjZ zeyyQ8T1!@?L&)h&;2srpp{9VV8yCdp+SG%wZz-^Ye6aCfPATc%nhUcnY?n9H!$;Ks z{jHLXpjP!4Lww z=;_DhSYSZOw-9@~?u%64suA$*3lPgHc?9GsxN!N+1dhwIU$rK5X*s0tsuhnf$EM4A zgogd#zF^<8=!nNotEoRG*iKXE(3l#fP?uj>oe}|rd(gnKk%1S>zC|e!rAaRQ^&8{L z7v8?E8e%CjlSk)s|BeOAv}S(PC-q;Rk9Jgyzn|uvILl5pD%T!Z4Th#AWY%m(Nd=V| zRh-=D(=S}GlZTtNt>RTt{q|y2!TahVB%SXewZ_qygQ)v9#^Op|WfG772oPx2ey6!A z)~vWCcDD{D=38Vq0H3xk_2Z#8^dk5R5RBiJMhnjM12tMw%dJbFE;%>Li;ol5OTL2~Jd}G?K%rQx*a9KPv@4 zxVqy*w$2*?#-6#g1p;&=r#^)R7UWp56&+J8-!UdvOtJz?@2TmcR$Q`bIp*>$Dd+y7 zEE)xb=SM8R%7~B9X;{46;+T=spF}XS8bG}D`+O{#A*fkSKhO+9Nn-s_WvMHkQGw+C zh;`4#10H%Z;0Oxr{BBynEse@heJ@_D39&`%|Fon}f=N;iGI$pfys;Lj0h)f-5;Z;y ze3%lmC9m$b49+9S(k9(w>{9OwoY%QQ63zAOviUd^0bIh)X0i1DNazu1uCzEKG%bWi8xoeEAWs*+*c~e@0>Z~ z`2?;=Y_cHIz(C{HPRUhmcqFE56ss_J;#FY=5Lg*pZj(j5_WqEh5v5>Nymsv=^jjN0Bj@Bq&)Aml*0pXHG|NwGgvWd==`^8D1fFVCPdwuXfY zTbW=R-niI#%3O8y?igpLx7Z+)&p8;FnSvnfov11TF7jFQ;s*)oTM{CZMD22y9CrP0D)5XOX~~MAAQKJ<4Qi-=GNc> z@|3$z-6jA3e+c2m=c&KAb&RO|^!cYKx!0Im+FLU`Q~UfovPlSfVy{nBbBa6OCK(Cq zdk{3H^?ywd7*h_V5A|~Nc-}3Qt46=^61r6YzfR9V zd<9|^jo^+O$Xl(vQ?;e`;|D1)An+xhO;t^Y^Ksw1OW~`r(U()s>nU-*k0GJFF-wo^ zA7w51#b1o%pYB(Kt2;^do5KlVxt|2~M~p3xeUd^mkJ9@3Nn3Gep!efw{ghRrM6C&e zWczPjsTkg_uW5QxfVVhdvLL+PrbO5>(zA-vA7I8%7qJEl0x6F_xIp>iydGKtL+t>% zU)y|xJpj+LH4Jd$Do^nJ+F(xuKmcRwA@|o-3N6D@CE$BRehVrZu8e4`h;D(ut<1l- zkeh`iKQ)#qH}297-Mjq%c^6iw_1jxK)?cZ<5Vd#643Aq<+RoNT~z)_O%f}gADEV zXsu5vn@mp!fI-%0gX!qSEY0g}(6_skd>}vR{BSD7#D?Q1O$b2S_MWAj1`=-5%$hDSD$)iDf#cwqx%~;c85!5{dB>F#A66wG7Ws!w5iOB)9w%KN zo<)4v(hABe3~c~%-*163pEVgL1E4CBTfHAf2=KUp`^XT)Q3a@K_H z@QtEuCAvei3JfQYo~UXG1WQw@i2VAA8y%T8xZv;2Dfh9Wrx*$(f$upI1KIpo{Lt-K zNw@&{2DUV@SOD0WVHCKyxs@>Uc%f{>H<$xCr1 z5MzDfGA1MrX!9O@?ti)!PkUsV#=isT6hr>_8`|O8n_DCc#7VcRc@_|Toprg5IPi(C zfiXme?-Q>d%iTLte*l!DTI zrk%-FR9wQ~9dEJRl6!f^{}25n|S z%_F6l*I2IEGq#6p`xa?~@#Q5@-UQCCmNjvK1)tFv`71H;32_H@%kwG@;n$Gcv+{S! z8@X#O(=bDaIy%Zj|-JWRd&R91+(MZtR`s7^)M;Gfw{fcqa=0k7Db_)_bdAd zgA`XSvW8kGS)vECjcbL|4%ox46W&Wutt-O~{Jb+_71~!$ zdU9*tk$!Q2h|e>Q0SpaX5c?&^a8q%n5kiNXy6rTFc1_}JehU`5wtqt9;%9@I2TDB< zzw9Kb#`@qDDqx{=oGiA*Gv;b5m@l#E@CGmadit)czEr@Z8plqvid#|f^6U31vfK3}rLvw9d)25UEykGe8|q*M>!^c1=+eme;tTKQqt_%y){r}}tlcaVpo z_-|-*j)nAMN`2 zw=BAT!O|Rik(i%BPz1;^Qj`dh1eL+ipU$7>S6 zgW&*s+cuz!Ves?#!fbh#Tex;U-2S>{oXao+-+C`R)*bCmlqql>cd3LDU`gMtMpkM; zst`&44a|Fr6P1~n!l`AKG>cO6C*7;^B2701*`u|{_Da|YAB8Zg20`(GGRDe(Ll*w; z#+rM~S65^$&WmmyI5vkLqP%^=X%kx~(9D801$)tDL~0b^#JLe1SY`ZI+S{o;?U6&; z+l3y2^ZpI1&1h(V`7OBb8_s0D10EL*Z^Q|pWErj_s>>Ny&;%#~rl#{491`_|g_i|~&N+SxVf$voo?p329+A$E6EPAAG;K1Pf z4T!;r_6=_d9Vwz3!Ae|$9;HPFS@Kj=tXHC zr=1$6VD#PmT%pYnCG;bqb(UPyC15kc3KX|j6(1o!$djKq2Rcw^(Vs{OI6~^f8UBN@j`*s64P^% z=qVgll1xG*OP-8r#@uIF3FF1ceH0ZmD+|1iqO26FHy4l86D^n|hG89hlJX%@4|Cm>8L1`i&b==`_kPhgJFHzg+5?ApZS>xPTL(uB9IH z>{qRo67x<3pfI=;x?SR#f&Ws>{GdBO{_b*6O=2id_sh?NU;S~E@h#QYWOuRY^;!6) z3XbFM_5<_gq>J}i{i;5^g?=5lG-dP_FOa3I+~xn_TR6BXk>52$U$n*nJ|N`JK;N>l zV;H@ujiBRh%;J<3;l0jRJo(!pLAcNewB=kOt20Ny!pyg_~fX zY6EWB&Fq!7@qTn%_@^7RaQ+h&^lld&hgOxor5eJ#58S5=Gsh)mDmIAwsOsyDdnLn4 zql?0%R-r=wEQCSZx*LXQqKN;F%4kd-j?;O5@;0x5w8X8x!QB9=h+!RDf*gEY)mfn6 zw-qXJcH(_t*BY|)S~aNRlJt}J(D6pAhAVe7p^pp;=nseUB5IEBJZU;DX|u-8;l)}a z4{*6Vi2UFqacL}Mu+$D#ZhLibS{-f*dkWxRUOvb(W(GYKyfvCPh>XCi&Rfr|C^huN zkw4nS?0RNQefBP;mn#0nFj<6wE98KEXN3XnMFrxQN?}mgJlY=a{PDvjc36h4;pBLi z^L1=&C$=inO*=7G2&IIL4h#X@9ETweRgCP+3Cds1laht# z8My|YH#O*fu+lrVi`CI@Clu_|8LMpvL55BEgdtR*yS{Hih^&!0R)~goITS1dyE&nn zuY=Z~P&TI()pBNeMZ@&_+23z;IojW!i~mHMdW$U%mTx<{o?xK*XvipF0Cy%CK`8^D z2C$~>)NtnwWm{uXzG>_MvmRI?WAKWm={06MD;Ul0lvoN{DQuYj#N>J}nE`h-^-%{8 zspf1J+=DPEG`+R89&M}k$k+y6?6D2$wI(rp#*>2Ms|K88C!Y_ULZCF@cvGcscB zGRbvXerVZpUf$lfzcwFGeO?x-NFbBZ^&Vz(7YfbSX$ zY|DJ5d%3y~U7wvwBAHw|p6FW{U{4oZ29`MYx)=HDQK=`QRA-0!@*&C`)-Yfi*sj>9 z%QGUDF5gc$RZL)x_)J)Xvly6I1R;r|^$zuCoi$(38&7e58IV0!m78&>a|w#4ZJbyF zN%>5s-)ylXw4>K%;D#rE0Fi8ucSwncsBrL&MD%_0kHGRza4E`HWfx~F>oV$LT`9!R3aFw9j;bI@TQnxLom! zL{~n;2?NNIq~!bi5#r_(xef+Q!G@U+1S?M>mc0RrfKmP7wJJ91J1>-HHZURg!ZpeBM>=m14QT{qSXDMe*cmt}0=u zZg?$-9?U{tyW8iWAyVQz8auKx8DBQzSi@o{RXo<))ZJ5pak73~;ocIYLF`3?kSztr z-mWBof`@dPL)m1DtnPAFgz4vC3;!+D_=`S{>L!`1u{BWg z(6Fp}ebkuF^nPc+fIi%H+A@u{nD5gaXJxm8jPlB?vCr>UuMmq*s1b^sFm!Uv)Po$Z*AV8rYVb~}{B4V&*n#P+2 zTLY4X8WK<};*h@izpw+Uv%S#5K6(T7h2;I%o>Xka)QJim;xQkN9Jab&x>Ou4o)4vC z7WYlDXgVH>MFM4?lcgVP-;|S{(%ua4Vn2Hc9+d6|s&^WcR5AKhT-ouYV%D}@a{uMr zKnsm02R(Fs%jYA`Epx@^<8Uw@(=tBJ-aQoPD+rLdYrq!wW3=HmV%4_FWCLT}@I(-( zI=-{dR`fwa-853ObER*iWuuyJuz^to=piPb5Rop|Ni?6IkM>yYzbL4$acN#S_|sH4 zgrVpHl?^0lYxpxroW2FeQuD8fA<{(S{dwC!&f8~{yRV~m&5^$er4M>f*4(_6^j@(O z_}RssHDzwG>1eCF1I`LSX3B(01ZLEsrGL7IZcCUD?g;XgB+e1`7zxzg@ka|O*IZUh zII{CTug2|N$J*r*-vUj*@(G~PcPTBGb0YOajD;2^LPK$*MT}MQi`3ccP9&OYjQ+XK zVfo6*><~}jL`UY7OiU=D|ADnuQj5YFcZEN?Mwy?@S&53_L8ZUQgsI_Ng^ zJ{Q-zWS#G&C9YgzZuLoE)ZZg}7Mn+dnxJ>F;0<{i!Rgf2IZ5wZO69q@eU@-KP?G4@ zO-MhP4-<|~iSYziGx2bK3gCJQ+vrt%xA@I^-5w6Nz?d!TZ^N6y)|uWFLUb7yg+@xjKXbmbM4m9cV97geL=#JDf0W3Qe)jIn-&*H z=!01Ca{71@b%aq+ybzIVc7+NO;%xw}t(u`QrJbn8k-ciC11*n3`y5~h?FUX41tNCt zvF60U-$N7`DyRTCv-h}xY*a4-Thd{Zp}0EHV71<_Bck~ zgwq89r;16mWs@i&e_PvYUthlSgwWwlPkTfo91v*IE+&6LC__SVIySJqwlHT?T!`hR zQ}1nu;*i(cGdKlCIaD_*7xB)Pa#7ml{o&6ZbP#^8wgY<5_XM_jvHvb#dIVI~`1jAu zPWDr#pOX@J4shIK26pj!X7-~=mzfx#hik341R1T(66evnzvnyKr0-46 z<|%=7Sj>5mfkS+_)ux(w6f#=ELb%51;&R)rudEaKsPN^YxWG0$2!KW@v*N(bp?y z(cJf_MO8E(*f9VfE(gqGnrzeU$OFDd$ju2Ol^oD zlS&PIrJKQb&xB z?)!=jt(5^Gj?uI@wgPD0gPjssVi_qcvq9%k9Aak>x{b@kaOiF$#y%?EzdrDtxSCuN ztCQEakKj~cEa#3AUj0OxJ}{IU>{yZ|$8$anW81XDR_HI?58bY9o7No{tr@L36|G$T zm)-Md2R$-L!-v#StH3NjZ#-`j)qfs_A9{T$e$?yWQfh<%PRX2ep%5UQJ!3TqYZzZ3gI`_+~RNZiq{ z^J=|6ub69hLR61={+314F_gzyG{}hGGu@EA89z{3;8ZeUk7fTRj&#k<$_S=xSq!yZ z;X=%z;Qn4;3m#shS?C{6_}5A31v!j#S&Jxo0yeD;lB2n2Hh0X@br3+w?<nzwpKBMKyCI<-WzYV5#wE1k~97=;7UmV4*_Tz>(Es>z6L^?q}^XVmdX(4Q&H z22cW-IP8n?MKp$5&$!7H7=(vW=>8NpsEwq}VeRPog~~eZl!0uNIy&DZf=eymtj;Z_ zXV3)^4HBbVxNt8aQj*ApRH|`Gb7pqG3y2FarHY%EbR%hw2x#0Wj4f7?8+DD5_>FVe ztPGdy#^*IAkXL*~Op(Yc6cXTbf0E$M+kB{!U0Q=MRVSF14h^U7UUM9%#q3YTDI2ht z_@Sd+sN`{+x`Rxb^xvng^M^YfK%+IBWa?Ia$K(I^m^XUdV{Q{wq>5ahAinOkRY=vY zhog|VH@y9K!bUX20E2S#;Ot7FAhUmNU+o2@ahC_s!7wqzFEfJ;>2mRun8yc!xeXO$ zz_R6B%6XOicgqPO&nr<7l8Zo~0C}FdTox1}0j>?JnzvbNyk)e`9+(yu<=ivWK|U>* z=k*`KZLI=%gm=P^HMff1Rm7*mhmcB|SD}F>wYWA$dw~dA@IcV4hY1?`iQghsFcl-` z{j~JM_&t$AhxH*Zo3U*Kc)Yv=AFbbmyL%2fZgZb5c_L3=T0toK+(YVM=|)Tj@?RXd7Syky<@9&@x>Rv-)Drz(krfahQXr$jX@ zn=>C$ASnVe=Or+I)7tzH_w`87b&&8raZIHJAfK3o{0?xnIExsTiVYJ{>K#Y@C5z<$r%yXuk9mL^9lUkW0d z!^5v^+o8q}*kvMC=>AdEE%W&(4yY2JP+zO3qSxh|w1$1;<1qyGcPO|uu_888lX25o zhdC=47>B-u0&G`mA&~pDbAJpzQkZP@BV5uQ#*BvMWIN8($loxWX+Oi;yBhF7l$B`D zVvv&wD9y^?&yAErF(Z@lF5t6?j|#<O zA$TOJ37Tg{WlUoSi&s?!f9>en&DC@A7Eha(EYnKX6&BS@I35}6Ebe?cIeK0_FwK&a zcGstX^ZEL8I;;FRbP3Yl`&cT3I8HF}z) zi`L7vv^V9D%&TQo-^o#%=0!hhHqIFa)A6k`y2kl0L)ewLV2_&$zAkSS*%rzxt*PzW486zoI`zMcT1j-Z3TuC<(QrX*!#kYrQBhvsG09jc=3v z(gW_;YcVtkQy1D%jnBK}doPXrWwarM|Cu>I&$uP@G20YXu(zyD`C}%(XhrnwMVWr> zko8Cmv=zvpJq%@mCPAEL@_0{8JFm)##m9TSYvJMIRnqvBfzZ$wcO6AY316f@QM33z zW}^7(6nmVQPn~M-r`H7L(mL4)Dx&z*m#F-45r#<9<4tvesNJ0jJ9UVMd-ftO62l(G zhRX@=EHTczg%HvXJ>L+@<<@4qploC>RnMd zHM}X`lnh_LAK@c9nnf1b!_Vgu;E-mG(q3-$lZ068e&h?M?3BbR0Eg!yx#CKz0?`c0NeIm zo>o`Sn_46__?I7InmQf70#e>37H|sE8aV&>zrg~jIeYx6H1OOefkCm08^&zvyqi%J z+0Oe^f4XtDf@fGacuZe$v$&G!e{$F_R37`7QK2W4hf;OFNrOU+ohETcnpMoNHA zw1W?4;#Qn;sXyE>BmxzzMMnE?De}OuXIsJVG=%(XVe6uC>$OG!-5Y0pQVT~L)ag=@ zcE~62AwSEGRy@}mRAVs8IBi!?B;9nzym^ZurH};Vw8!@V<4xGF{52S&ktpJ&A=BFo zoxMUpk}OIF^jx%#r$=xtHhm)Pa3W(5f$DqE$r8YjcIow%J%z^LsY3i)FjfWq$d25? zl61Uy69>D$(uFQm9AH%uj@xK$Qi<&h%t1l*@2O;)X;~^={ey)t*VIn?s!fkjnP(_i zz?J8vhi|r;;?9K%kfxY0@QW*Z`#gE+LOZ8|Tm6QS!p9{qo%j+(T-3?#wp)z?#EL!l zvR7tAO>C%f$?)?cpv{3wHqxFQwjeSIB@kTiayC8YikfUpp2>q=gzfd)<|hA6MvGSi zNIv^c4*^1H&;28QBO6TrJmR110H+DUR0QU_9XZq18LvE%IkDNG+QoKn+?qZQa8zTU zJDWn&J?w`JF)NNE>A4_&ed45`<8ri(ao?gj{$^dLoWh(vOj75FTWzLdTR@aAhQ%}= zxOm`EEoC2Gk*BC1-1RC1)&@_@M$7MKyI_`s9k;!WN5dIg{ab< zwTNKM6$YW{WNu3Bs{+KIR3|gSNVx?*F%T{qbqQo$_rc-#HnP^^Yv6@))csej=Kdt8 zu=#=g{<7R>gAXO!5=Ij$b}{V~kO2TUro=|M^s?hi-y@s#?bM^9x$7> zkT&A0sERsTz3Zj_sDE*5FVKBAAJ-rPl>`sBD<&!4`1HdP^Lok2=!)2^%`q_7ui_eK zOv|7{aD30h{v4HbYv!>XNj{(6j;*4U$L%LWkZe1BAd`Hod-wZz3da=9e6}5F$*&_d zisZh_YZ0GONd%dX^k1=6bSB$HAX=VmoJbTS-16=udyS9r`WkgGq<}_RYM69YzH9>O z#504*sirTz{_WAl|4AWO62OGlJL63Spwv8umVMP^N%7QIz z4ez{t$5Vfy>Kifznjfp8g`kTX0?qu~#oC4CjN`?2&C-jr-Rk$*~iu8oL z+&Xghoa)VA4M(#1rRgg=Q+D7!R8DP=O#nr{BDoW45o9YP6aoJ-CxzgQ6V83yk!W0V zJsS}zI{exHxN;e&a`*w5RvB!&edvL5=0nurnd`qW(?u7L_+rbT5+P@j><}tSAieIK zI0qT=qXsN2TeY#<$Y~`{VBR15ZWs3CZHwJ8XB;JtUF%D*B1gzlQy;CZp7;mg1(NSB zv2^lT_Gq=@WcMNnMEucm@sTsD7l(X|Hubsd${awe?%Zb;;P3>!2V1V#K*kSQLE;}4 z`~zXwd{YtAn1hPg?G>wC#Q->wf3o=$80MmeCCBU0bXOA%+@D124kS)6F3c8%L{z)2 zPC6_V@lJzmpaV995)nAo@sK@<;2Zlq|unUV=eAapT(ErCH%e}E>Jt-_(MUR zZn`{#3|35*eM+#Kh6({VQ(lM79V-_Z1xDiqUG&ofSZg~cz{ua;_NgRW?uns8s0Y3- z^B-9;^UC{_@KQ1Z*{FHWJ7VurB?3$i9@@1)P?AsXn9t9p<_WaP^Utbf&iLcHjy7ZZ zq9IeIi>2qX+7s0MmI7JY4^LlCv)N}OF#0No62J7t%CiZuxjaNn(F?Y+U~S0ks7e{# z=ss{wwhkZ=HrO^VE?ft}3a|l@HOUDGkTtj`zn!DyM;DC>>iqV4Hl%yy9VM2=qT2LI zi2as#y5cAPV&NUAWk0yOgnW<@WMIf3e@!G_kZG3whhFE6fJCc(X#J_O4jg?`qE`!_ z%E|9VTqf7!d1tQ$QqOLwfr-wy&zldtvZ#5~qBA)2s^NRp8W@jC#+c6j)$>+WxjfW; znFCn=dz}(P`tQWyc}+QwYR(VJ zI1cm9EFzBWNv$;FNLeE{PS)7R(FAH_z$h&mVRhvjN$Jc-UBE$C)I2a7bOB7!9;w%- z?CCN`A64XW@B2dkZ}5kdyM09K>(y~3az51tOV|8cg3}N0g2xW!)0dSX;#Qc`w^=Jx zkjgLTpSEI_9@wt`t9Z@z;c|N824h!n(vYvkZUv_qn--%o7kmS3BD~RT{nm%~beC2d za7@wEu3XQ^w}ZWA;pMMAexn{+A`Lmp^jL&7FowYvOm&eD4JZ#h^?r$=Czi8sOkDVR zwyL309OS}D5V4k4h9Nik`UgK6r0%3_@ny+dr*%6y7;r!__2^HsN%9usL85^Rd9+Ii zY>4p$DnEu7&fjaqzl6JeMS8S|IQ1Y_vtO7ush!#ivESTXE|>>MYI1C-KBugTxcx!j zX&fb1LNIF;_=E2nQo^TEb0f>iI*?$^>jC1WM2Mx7(j8M)-eh*7&u(KW$EWUsH+Baf zGQy0k<;P4j?5EB~NY@+GkO}4TTF`ukdZM06^jx=C zuN5%M@plV7#0(F>W7F#odAJo0vEyK#=Cj+AYUu?ZK3}J;b5tfsng$}d z;1|unYAHXM?81A%B^xqOZCZQ$Fr@Mz4Xp}N*OIhki9ck|zy^8R1xL~M0W~<92Oz-}5ji*cCssNxRArOee?Nv!zMF=&N zMTVEdJ90dg_jBiM$T9OPG}@x%$OI+4avLN zwhNn~>XvnTj z3f*S7SsR)s1NH?C?)|zo+^kP$#c!fQQT&+}9%huJv5mS|%Z@ub#UHrixG?98*Fve$ zjmv_4XDS5Xx**M-ZPqC8+D9};>0jB6&cJgRCKqP_mkxObRY>D>JQ&aQaMRn4JUgF` z_^aZRsp%xu@qIAWp%lQG!uxWT+0YIj?XNCXiN2aELCvCWoLXtUPZy-uj=j30r_UrD z<0~2sSQ&lj@i9q&5S_d{cfn#CYoKV$cGQw#6|e#lsF|=zCiHTwPrN1dg)M~YwWRWb zihdrBv5beHz;4qKQAt;Qh^ETBGy7a!Vj+5Cte%TdbN$0!*)y&ecqPf;&u@MeYllmf z0IELCz!z*FzRD>AwN%Pl(%*AHGVp zl*nT~kt**sit-rJuC>_-*w5@0>L!2|ZzPN@%XfJXZudkvRpwP8z249sbgRPLXLi28 za&uKxT5b=~uU)dDUOV6jE&Y7zAxpu z^N?6HiBsj@Seq>BNaeZ-dJIJiXCfgCsU9w0fS_Y5CIOiy+C&QZHJP~?=L#8u#oDMhf|lq2ui zy(D*aq*;l@eTGKKuD;AnS@H^2_x2`!&*-iCZ+kdRPvrwFPzQ_XXhoyLf; zPeMOXUY{^LUa&UiOps;6Z*bqJvV4Xr=wi~1ZN^W3X z*T&(KmT-YWq6ScGy2ugnA1zvOr5Ubvb>3n!=w0f@kJNtut#D=~%kl$5mO<7!!#gJ7&psd?AucAUCAebBxwpq_I z1N4-0dzob^TC5+w=MZ;kr+rbc%vY=WQeAw#m}1Thl%pT(EJd;XDBMfUEVk{T;`sg7zcU3D<@gpFlH!tiK<#lz#@zhiip z{?`NCg5(o;OG!(ZmzbJ}>ZlqFJPk`P{tm&G-}2xbm~_9av8b5L`cgCDyE%^L|8S=? zB3Jz=6N$EP;QAR^@qTUo85n~i_gB*9rhqX_b$oP&*LjS%bx0wpA9^IYJ|sl-W~9E! zwT^*6d7M6!!Aw&hg+AtH%d7(4kPa(l7!{pO+d;2| zEKEaq&+zL!x2}?6JnVyD|`t4kAK8@m&tN8Fkf^qAWE67-w<9yuxiKMU0 zCf)5YgUOS#t__7UB~r$;w6TOkZ!gW)==KDSukx;P_*CFNI*D<6 zc5<&_b>KhOERH>l9Bt`_FIK1ceUgto}c+;|rh*nToMzLxnmAT+8qYOp0JPeYds z2KjYt!M0T;s<>9sRFV2D;|})T*I0;U)?lwMG^1#z;iKWzY>fG}zqk4G%^Q8izKq=d zb9rQQS5?A)_;b(!#~pg?<}<|{lBUzf@IJdSqRP}`qJ~c9t4n{|4;Ww~u7$6TQ`PGe zkRuqk2tjFKr=ID-`o51yXpupF7v*_X=q*-`>jBEO)`EL5$dmwKu}wxS^q7dubiYq; z^O^m8tR_<0zC~}<0M_BVkdMb3T;2+xJ3Y#PltK*}kLz`E2qN|-5av1xf_rKbM3vds zJPO1r_(jzZC#XT+;@3_C_9sI%(=QA2>hWWB=`x`Wd;pH2UGzcl0)d|Hu_)9YQM;{s z7)rD$_)gq(I2_V9WB`Lf-i4CALh0u3LaKG4aO)ADl#h_t+d^ zCyorfANI0$KTZl~v@80z<=vtoB=X=22^!4HDQNodgbGS*7QjR-GMuu-XV9XT1?=+PMB5%Pkr{xUBHHr<#5_4b1EY81V99$XqY)Y+UWVgkKwXSnnFkrLa~sf zSsywkB`p)u^yJ0iP{k~)sOFoFuL|3<`O?5L!EG0g;x_02Zc#V{sq=FFT1-}Bg4^Svs;Gp@;Z=^x($Sf-bDC4AY!X-$k9%KD!4(V5qf{6?frKi|D_yRQ>?{93t+`CUlixQsm=(;cm zukxPV<;C*g0KN#@{@t3~h*?h_gmALHt{hF&K>{hdd+7kxgf4jrWvR3?{R)OpNdHx| z%F~^6t$D`P|1*sWrtII_KIW=xunC_vGLQeb8RTBg((bri)hm~kx7vx8cRB$lWP2Z; z(7E_&F2&O8F+E767}JLgR@x*48vE4vkKd9j=?JwWdkWspv!AZhb||jVKJ>cNNK=qy z>29@wj%J&DFBu~W;bOilbP7CKWhafBNwaD}3EDG=Q--`K@b7NL&IEc??S8y{@IgBR zTb~$lcu58`h4g(S2?A?1_jnIFChJYx-K}ShU4P>Clj3lI3X{V(u+p6 z1s6J&e<-lMYOouva5BW|4_b+~46u?wyi@brL4SQ)OB900^x(im(XZpd#0N$O-+EA?L{6Wp_7|onj>INhb)piUAME zt0i7&G$Kk_`{!mwPIb^8+4}+OLXoxW?NiU~zTg3u6<{u-XVTSDQd^~XWHXcifrdXS zua42DO#z_09xgJ(1G5?AIaPO7(xEV7uW`^)GCYYDCqo8{_#6quU^LKD!H$D86GZp; zbcfnvbIGI5Of$&HiOB6vSsSx}1_LBXiS((>LW)k;a&5 z^?q`3fxfFbW}yc8k}T;4yU=>19x25PkjllVs)RE_&N_zbV}nL>Y9SH^b6}`IatAi1 zzs||6Ec&3cklrcZt5}Czra8uG{x*iS2KQY0PT#F_%AF=c>V6g*gn*EN_@t-s{^(;kNcY(4$zB7y0OLj{ zt1s1{RSGY`;+hOx7le>bzRhKG+ezOf4BjhRkn_^w_H?ggiJ<(X3y5R!snJ6VVotXe z+dU@f3x$?%cd0od6=0fcOq>Pe$`yxrHjUxnIMEw6{#PK+ilrH>prnzT$l4_w=F{pt zeM-*0dak%TE)R1p%ZIyFLmwuzP8X>Yq7F`RlJHYF@VfK$YZI6I+|s2ui$E9 z+dsLA4kr9gkJ+@o`6Q`6z#&&F^T}q>uCtNXiG5`6Rm4SP zczBIEz*T^4)l3;tIPYJk)yPrXM90Y>QttA5NALwObo&qevL`SlkWdol6AE~@FBN6bFD{gSAV@yAoXOpZB+3*bcF`f2W zIx6JgiN2;Li?~kft6WDy9QFgiRt1xSNh$42w{FFr*;ti$Cx}CF7$`B(+~oaJ#aUp= z`5?T>xO%6IGuzkEy3Vzg7aQ)LPQE-Z6I48d%N|J1ZPTRfwezK%(z8&)QD-1Kp{{%3 zmX=hS_=w4Hkh<`6|Jh3W)GV+r! zg8F&E5HH3N5#=BP#4_ZM#`d++iXI&-{u8~7@Oq{0?5-WIl}W5a>~&#hp|H@8_KB%G z>l1dg-Z;cr0%Lv%d9Lc?gQnbG0*L= z@jO&vR2N#PB;7iE!K47xB6A`Xzz%B@D@y5xt1s{V09G_piG4$zj5Uvr@aODMSULet zE3c=3f$zKeuj82!+ePzOsgUk}>R~Q61%1@Ec4AN_dwO>B>`*XL0v?B6E@*c_2J?E{ za6mLff4YEBq1>L39KBtHa<)0SC%x)OshjzEofJCZsAT6VjRs4bBEBslhnso;APPLr zwD^@(A0SEDg7Z6o46(p`nc760_+D42Pi2_0+hh8UnShU2vB7}Lt}P{7uWd+y@u}y@ zv6)Dxf5ZV);?m}tUr}?dTAD_ixgA<-bw?$%GPHqAKFll#8&zhEe#m(&Dn3aG?97KA zxnjU!UxJ@?-6$+zZD(U^VghocaN~SwKkTx2OhP-k);b>wBuUN~771l?g&FKWkRS;A z^MYxLuR3A-2{{D~WpW2@5!|3v^2WhUSB`4=>E_tUdE_~Zbv06qysoGt@`X6M5CWugqBg09td|C>-ZxS|@noPDO!J2G*!MQZX#23>B%kRy zEDSV=fbvssD{namigqM5wI;k^6QAI3BZR?yiUYM>lDL{0Dx%1bd!Y`pgM?%;TRHQehQ1@0LXAC0*hn2Iq^ zu1A7cuO7371zuPtZ#w%c6%?@o^-xsu+N#BKTtI zjFWi?FkPnmFuF>%gYINQ#!!3+F9(Jmg>iU*|dyI_Bo!hbxYnRbjr6}J?C_W>Rs7SBC?R&L3J`OQQt83q@CZWFoDY38*x!u3Gx_hYCScG*DJ+4s>U_gJRp&(ZcoAgAiPBOH$ot<^Zyl&eu{=mYi_rPo z7!s;OybU2p=Bb(?TUa1=JO1krkZ-X3b_Ox&}%X zRB)Uy*(jkb*QNU$IT-7-7*@ZUVOQXCFeT@z82it?zmm6zi4nBRExnH70i5*QO7(Eu z+93_NPv6|``@UvAR3N49nAj~JLfqnIS@ZP_-HSOz;e*`%h=dWP{b)YB@?l;>FlvB; zJt3wMGGZxVaK$JsiP;#^*|NpB!xV%c&%#&Rrp|LsS;i!9VpRK(MpzSGkrdbf{j3mr zPHUX2aOBijOhoiA#Fz|gS1hB3H2)iWwvx>R>XMif;4Qo3o>!oq=&TJEAPA zX6a$MJpd~6uZSH53nl6bHmq2+mVz5@>2ZHv5S98eae+2v<>nnkEJ0uliNoe0;(;HJ z*k~Yn#9<#~`x)M9F`PUkV1K&58)F>b-T03P$n+C!OIvgf+zo$Uw!89X!GV7F zR5P9Gt_sFQvCZEm9QEmhfzE7_s?kUVs~SE)CLv_RVTp*>;$kz2jD%)^HTW03ePo13 zALS?#=3YT^Xpg)>5^l+jTOZ}d`2vB(0M6Mw6I1wf&v)#eT;zq?P31<>tlbU>J1BiA zY!K2zTAojCGrz1kAUTOZRoOHk@5hYIWv+L3D^&Q391)r@s6xZe;vfiG?W?TTNI)TT zxIMnj&LE{q=bS?{5!(e#8f)7r%Hx>z?=Stq;_EKZs5ZuVu}8{K5YDpH?yO7q5WK`; zPH;?rP=e1V902skJlZ0X1);4mk*&oMFp6VQ1Wu3OU@J(qf;&BDt+`vX+Ma-2(xv{7 zPyvO7;7I13w>sg{l*!&PrLE$slpKOIawhr$QU0|KfgE-(I~eMkLyv}Pf?K4Fv21MyW*<>5?*Hn|Qb zo8)lz@R#sOVQlT_S#_7zaFLjIooNbUe)FOVgTGBfmi_0I#sA!IxD-_e2CYnvKrzdw z(7u0LEZ*jsL=_l2L&7p^BP_isLU(6Wz4`@SMcUR_fhQ;dAKt?foU=*&&K>Dw|hc%ak{9~Qa$*VD+?4_j75!tUj?sab^m(zr)FEsIT z2-}H|c&2(29nMq}PIqY+(9}emxRk}*925xm%SZD%cqj-vMhkvNUcSUURUTXVhpsyH zJW9`J`EW1b42x?(7g3Qq?Gu*UV9yBvp<~TzT9~C5^7si&D1d4pl4JpsyAsBBLJR*+ z5Jq--lHQJEtIN7&O>x>{85BL=F7_8-tAb9!;RD2jOl8+k7^ewwk-_v*@%>n}o9S~s z4$JZP&b9^W*6(i(pQ@ix>r8iD*t}{l=O{ftqm?_w{c)HFUC-zUp1)-wdh(p!sU$nA zi$~1=#5--+#cQPn5K>mxgNCNrcH|G_fUG@jVZ(&=HD8q^lUREFdbI^U=ut|X5HRj0)rkb4W$LotZ5 z|Ke+y5d7yMmdI9$1F;+i+S@V}NZh%oBUGtf=pc8e!6fUji901@8D#R5`VLHNTCR6D z-Q$Fw1sJu91wZ^%!CWfY>|v}6a(mYHzTOWP-us}Oa1r1GlV1EU*@^JgML(v|2X?Z$ zt7x&vd)jH&xHYjG2&yhvf_WhMP#0XALn*eKd*>^4l>>5V7m++ipGP$OCT|60Sknp7 zvHutGAbK1rY=);IcqDktf4s{Dh3RHKa9qWguxv0g=g$qQRbGwid5`rz&&ur<-1S+( zj+PZ43v2z))lVDv{2@aDLQ7}f7jMo|PKe)>)V3m6#9R}~Qt?=i#FlJKv83)W-%MPw z$IWhSz1(KsyaR>MbBUxu+-l|kd*>1YY^qoP5>EIg&`%82x{Tg?9!=^~mY~p;Qo_{c zKK9!RDQCjzH#sQ_r*)1OG7(9d_HNX%RJ>@(TzI__BgaemGO%;C_)O!GJ%6wKk99mf zkg6bcYo8wYM;a#i;T;mJ@_=r(USb#z;yLDE*sW?XEkS;ZLI5ZvZN#n5eNm+de&5yo z+`$RbUq;s3X+?pPUcz!@;~{ffjbSjt6mgS4N@JjNF(pZg$VMre40MKNf%y|AWTKSL zmy>1L)_WpxJ6RyFOyewgNx9~7`*s%dbr7_W{tj+M>6gILl`l!d_i?k&rD_9M-HuPKYbi_S4;|x+XrXi1NI3LK8GC!2x6QjkTSB^v= zP8n1*Uel*M6PMEu9TAdoDie+*!y8dSClZ8+$~YEveGYh*7=>O8hYQdLY(x($p#5ND z2Z1uReMvbz@7FcWSTLV)mQYF}7|b^aBg3nXC7!r8BOH8L(=LqR3nBNY`9B*y+lnx# z#Bp}rH16kwxzx<+SNg8Mv%thllk!~NS>HG=bdT*v|CLg~<=Fu^j^~ega)X`?FG2D&A@9)m zo<*k~C>TBe8OZ$EyOj=!vJl@#W|LscAY~Q+y#HqFLbApgy9Z6?LWKnh6Yn#06ggO?0dZ_az(XD*rt?fl={a!0M{J5Ll=v#xjb& z=~kPc;hZlN4DJJVF+D4W7k$4=v9na`S52R7n>Bg|PHovnm0B>Y8C*^7Uumslo_N;~ zeK#kmAbPNL&G0eTjbl;Ay?GQRTjgUr4N>qK>}Zv|9oUO22nDj{0&Z#Yn3D< zKB~ZeofRCF>#US=2w_Yg6;(@#URAzV(IlH)_x!vPS`~Vy*u2ARey7AxS;%pQ3L4d~ zk(&E(`a$C0Go%J<57d_`t#5oPQy;G5!EZWHnZuG}9|VSB;(Yj<;D%%Ub10lTi(A6C zoC5aIhz-VcWW|N%m#B1aPYa>skzb4fyHo4vbuU4yX8x1A_Y}8E_=(7{#isLPiGfq@ zYfxQrL0fTr3vqUn)Iabl)er_F6-V552Hmx3SeuO@BEVB!@FLGp1%e>E+p06r36|8M z7D3m`J20m({9r`g?X%GgLae=2X0Lp@0sUi^SxLa16ihatB?(yUYggOP4kbbSGXb(X zD&`l#;Xk7i=6iv>9`#*&?oR+{A|KK?;hoVOy;`Ru@>Ho+djYAttD#lJoEA0*YFq8a zPySZOIOwOt++AM;9b^(KL)RV^r1%`8Pfz);Q$|G2J?Bp1+0IZ==?Tc0e=-x+6Sro& z>m<7?UqY}*^AtQdhO(_&w>Qcg6n=DUG$K6}V(iU|E>@Livd`wwh)T^1vYrorgCpy; zX6WHXm8%c^?R42Db22`KUC_EU|KD9n1G|i0YgUmOzeQfKfvL`OmKR(2#&on+6@^hM zPDseIfEiWF)hEO)v^Hr+{vqy#aoU1e#Ig-K?NmSTJCa=Th~PK?w{oIZH{-Jn{Sj2j z{Y#kTLy|!XO?dmgBL(ZnQ#vqMU0>|4BZBmP2&R@Yv$j=&KsOjP80Gw0==9@uPKD}% z-RX;}7*9H9hKLb@`&3H*67S((CW*jDXt2L%Ws|;n&3ZktTd8Q>6pDz!e`O%1-IB!X zE1+S8Fv1M)#UOwIfclt2JM$doAV=`kHy6@2H>UTmDR!?$X0_T&c*0(KWwfylL|riC zfi;9Xz31eEeP$}a%lu$=d04H5uRcbe{zAC8k)umYO<=pBa%wez3z)~h;uN?kTO@Q+ zSSXiidnN89blvf-2hGC(NkF#0?3x&|uBRReM-7q`;F1nPKiw9cPCI>0P|oP$APLmY zK>Lj=65(MvDwBI>(ZqU?0QqZ3lI@s`Zh~|11#O2BB1{cCSk@stcV(fhhW3}R`;~=o zN&hIFo1$J7l>I`}X)eF)qDHBe20rO z>KJb3);e90`}F;luGP@Kaz^=ODYE@s$a^3hY#=4ez!hPuL#)PXQxRIkvH!n$z_VE} z>~()F!fA#g)F`lg}t; z(#dK$hGLW$Gg9a*VG%;?<-qbIY&W)k@7XZGkLSQGZkmsLb|~oQpLGvtvrzIS>)ORT zBo-dZpk1UUAZxMM;$(O<2+sXsh#{J98!-LWdGHU1O1nea^8 zT1181f&tI){pSQghep`>=E|ScY@IQSYXsqgb??0#%X{!36p^jE&?q5)=G+pQSLDXG z)>@L0TAVDod4*q!gz$FY^9KLFeJ}?0PCi(RT$_;dUf9CIXvir`yjePh3Pbc)sRz@J3%oyaPsH!(CYz8w3ux2uP{P}OOwJKFPWa;tl9{J3roNI6O%Num|YaUgoMQA~A1fX&c zU%m~0cAqEr$8HGt?#2)3e3WS@h$j&<3d&uyIc38Q`ryk^PQxwSsTc>6P0o=~^-zi$ z9lM34cFu*`S8hBeSYa2$kIc=`1AYiiHVRa%)khJe z{|8-j|Du1#qrG?HxI#(9Hu)sD6${GoJ#I^s>kfDKqMB<+N>lZgln%nxPKMEBGMUFG zW~Qp6i7X2*eIB+vWtpw<5#GC#S>868<|{{m7pMIAK%Eocv?v>u4tPqzHYue3ip-(2 z=6j4{ZO$w#pftl}^Rl@vq#fDU9Y=dIQKft5q~S@VgewYuMegZ4K#{v68AazHlDRuS zy>Z8Z^TR3ZB0PYIk|2rmO--~*>Nuhr`x+E z=K%-fVJHm$TKq{z@OPB-VK(8*`3&(l{9bmz8F0p~G05 z8qrTAc>Z$InOg7TP3Dt@;qlnXV`mxMnDz38{2<+`auQbxoL)uX8|U5? zu!-muP{fU)bH|4^L8=;_6^c`kzHyc#jlD2?pOEAno%na-oq9CJ4A`hsbYg^fomft&F>g+FNh* zcRuRx$IhwSNmlTHNoi4I@WGwR-3KG_5NdfKZ{zC7^_6=8)W%sxTmaukV02Krd{XQH z8A`@i2Q0JaN7`OaDAeHm!!lw!Vv{jyI$*#2@=HhVGw=Y9bv?1QhtAG%Fj-b~dVu|^ zccF?oJ53e+z1Bog>KBTFgO1y~J-Dxpi*TdsRug^r1~waA{U+soVUrqF?SV9ntX)C3 zR>j;rH*g9K>eeK7%Bax4r4DAw6{4;&&dv^;Ib@dEJ1Lx}lu6K#1AutFmX^iwj}0*` zV}2`SwUAQj(k=nXQiJ`PY%C#*-qLh#&C+?EOROkMX~X&Sow$sn|_AR>4%1``o6vJs~_WMHyNIN8r=ZQ$Zt z6%wXGE?hIfHf;FJ!h5qFhkFQXe;!Ov2>&x0n}fHT3m8h=lLpoT7Yl}vs8Fe%R8hCT zfkk;9U1?D5!B1+}O$wj7av~qn^t>^l@`4K<4Sv*!OhyD)n}gcag^W^Lhrc+I-H;3g#v5>vFceH^7h(L0 z_#2quyN|rvg*iFx5f)dPJ)b4lq711DamEDg?=#IKJ)#TE%d3pd%O(xHO{FS}f3R7b zGysVI<#CYwNcQl#9g({~unNNIsLb|7Oll)()K8tgnoM;zhL!FwRt~$Bh8? zbL5nkaK+`Cp`Z+mUGjRA(;i&cfW!lmg5iD-Hm1V_ zYs5i5wNf|AB~A^k){1gf?X|v{*1R*o?@C{sKmwlrnn)JMUOuIkiyuL7CZM+{#LFY~ zA96^rr5=ox--!M_L9hed{WoBxe{3CZF|LieR9~Bs!$-k%>u_-N1-5qD!YCFMiRp%c zDg{Pv;&4PzZF_Kfb(U4gmUT_9vXu23j|G2(7c3vw7B-Ht8Oia~ADMR3at99*G2=_n zz7sNP*i1^Ho1(pgth{Ms&`^-xpsE@+$VUzt+L~w{oK+!C5qNOd2&~#U63EJ!*U*?o zTPdNjK|i(np*swP$idCTDAGw014(#cE*afo9W~QKU5k1t-63(ek3^u02fT`R z)_59foo5{e&gvV!ymqN3fmuNeMxK=S^A$;!nr?eLJhwbz@D2mXtf%X8ZAK1vwhS@42|X-2W!z8-z*!OBqU zH0)qcvF|If&y2fZWO8~Vz>s-a3=MR*s;u%|kR*BXnp@0iG?8pHb3)w89^9Sh z4GWI=Ybm7EYWqN$%JQ1)?&^;n@n+VTe3qXrevM#Zf}}J1DP4n8CLV1nD;mucCuYJs zBa>~{kLvV$o!j1I?xN)+HZK0hI}`~nmA`>fJq{aJ(#^X;7R+BJG2HZ2X)B@az_fQy zR}9r6U}=+d9v>&MUC4sq~CsLW5LVYN{$vH43I0Q_#L@zXznyzn21DhG z2aDKN@K1>aoqepN2dH6R?(SHv)!`oXh%yU*FP9h4I3vQmgF~kcO{D!K7XCIQVQl1D z_tVHXBDbP#Z52v!&(9V_FLRPI-{g5?&(bYeMG(@lzZ%eaa(9g#q%9Tgt-p2MUY!Gy zoo{_WFi>OD5XKV|UeS^vh_`7T-1lpKFU_waYRi!nX-#ZT&EDe>~r3 z!t|*4LQB8SIAC1nzsaV!LU?A1IT2U?}P-j7E6|2)?H&YMQNv~C6IoDC@O>2N_z3r=^q`Kh0*Bief zfqV~jM2sCE9v7X*WHBd}7XrJh${fBl9h3XHBFv{c8&!)2ragh1lJw)061uXmWTiLS zWEO3(sG07sJD_}(MvjGohIZL8X&mTbK&wuy?f?6MMq=Uu1qzE4=U6Ab2G2!AgP3}YWF5oiM~04)1dR!l{FO^6(xus;6m zDG8cnO1qM??FMrwiRB5*phX4vL$~=<*4C2+T>xebB}0uUg9)&lk*eyXwn2Ln8>0q* zw3ST3tbNx=p4`iH*LbI~l+*7?c z?O|g&Xj7rlXXG5|T4?%fGK82F-S2{SNc}VnWuN9sBQ|HLianHaj?M+dj-~r{z@Z>p z3#bD^lpPip)J1BrdfCK~qRJ%X@vw8B~LW*mX$+wlYP$gDIe!AD3QR#JBpZ1OdBS0dZ}n*EYhJmuJS7*I!RHZgr(5%PYf zmA<{Qn&q&Q)4dhuj70hUB#dLo9GehAIvy-Yyv|%kArpBbwNe>>4peX%h#zAN$T4T+ z3#~KR1DZSp`md)j01-}RC>N%hcuf%7m_%hQH8(SqBcF@h`R}7njE?}rcY=gP&q6Y< zA2l!20l@?Wm$S|H!2%2vLhe7XLG&F;Tj(ONu;mbQZeJE`97L0r5!=P6e>Os_V)t? z8Wvw=)t9gDJNg%@^)%EAhzC_X4ZhYx_!?j0klyPw`9}_>-JC;oK*vNC0Rik)TVfD@ z98StyNi~C5I2LloQ{FOOD%{sTn@Hq_D71TG_-2HPg>TNRo1>;u|ej_rsfZ++#lC z<2%v~HVC6MyXULiJ|E2uDRj-AB-pHRcROo$1q8vNz2-j+V&&EjxZV-nQi2RYRrVuf z6{t@BDbUsY{VG*{UWR=NGoj9kU7v$t z(;78SE4D!ogx6yyZ0+gCX92;(*nLfEIUXsGQvrYhdISa~B=WIHFg;GT=&ToIIshF!Fe-Bl71x~F2 zL|>f7T_7x;E6&$j7G;kx7tcVXUXSyS2(42EOJMU@|3EadT8LwT0cop)EL)`#Cx=cd zW+|aHUZGids6%-eW9@84_HIGEZfFLgr+nt}p|@M4R|};Po~7d%r|E4_MT$ zuBU6~^5LnM`Fs|&B0(n_o;Q(uK$(qvHMrbDW)gzgTVqfqG*g|Gy)nKE5S1aQc1lzs z=X-`8y|0Orwl%nP;7YG>xmC(!tNrF?l{*a@b_Id>i)p~y(ubW2JU5V+jTn&tN7gAD zE+>z!k9B0|==g>17b|)K3FW-Nl3UoBO; zrVWaVI271n8sYQx3XUT}0$zn&)HvmnWTfAdFll#?`ONiv6e{78cl@4~97jrx_u)34 z-t!>0Qx;>xjAY*%A50F(UkJ7=e*SE4$1hE?Na?>E{J^Bwl0R`zHH@CT(@4K57T3DgohcC2rYuk?E@=W*H$g1l?OuL3-dab^He6bem5N?R{f9yboMlMtc&M)$IHVn z*0hE=zDT8=rdE4Q8G0f{N`9Fk3Tv>`dM6)0O22My&yC zP73Mr-BE9G#G1>tjJToxPFHqfY5ufyUQyUR8mEM~d&C#s8e6M4AP=p|BzDA0?+udg zN)FB>uFr5AI6Kfj3Ug_1xw@%|%)K?NnNuVE%QU)qPlOVc8q9%z;`$LxNnPQZM{9#S z5#yISH&v|;&!4ysag%W=T(ueqz}4G2#O_M>l_#1XA-ZlOe~8s`C_W;*w*(M|qFezx zVOpK9tkTyK2$V7NU%GH5NF&|7M@29s3v2ZpzG~B)M!%+5|55hBtd5nATPo<0hXZ63 zI9ciAm-2@Wec$n!vS<{;FL+U9Ibn7M6Ih=1Q5pl? z@igVi44kIJ^BkB3+~)?vx6>5oR$S?`xq;DwAtXPXGSunsLBqwuwM^cm3avReemvbx z3;@>39p|EbEa=T^tY(SEKXJn)Ck3aqgER#cX}A{qV@QJvB!w`>M>``DA%UCfDdTnj zJn4hYwi+<8s*hPtxW$G)@aP%L=1DDaETi4v7#~lO;+ihWmH|aB6RSfK}}hSwUI3S8n1QH?{i%FHe7*Iw=qv8=6Lu5 zVYJ?~V)ms)5OZe?A_^GJi2m>?(YoD{$EnUTLRW{)VnNE^R#-3`!#5t#t>`8%Ry!#5 zv4c*m7{pmk5SMc?`hIz=p^{?o;(8lpJDc#!YAqhtTFn?CX!H8t(&%J;=9L5tzN$^_ zow>P!B9MLzdBAN4%_Y9Zupoa#giiKs zldIUo(q~f}8i)Ib>8zC}maJR}?ynaST~j-V-o(iu$d_W>%zlx4^IhemBQwrCf?i3U zrJt@et7WG1r7nRZD)0HUI=^D+QvINJy1D8D23`A2Pl!&CGxWXO|4v$YI?Ckj zGw%wn`^7=Pv9&PGdQNOL@16UWNe49S#v+H+oaH%Y5GBZE?)5leh$f&BC%W<4!sG0v z$g-t;6tiToY?+N5hPt-_l31f~&HDuzSACjxDvilNgK`hPivtnf>g%oR{{ozWQmh0Z zg-q^s0WdO@j}H4{MuS$S#9fs>KfY{ti88#>lg{qwEkxmL%ELUhVsCyS@5P9L+t}3YHG$U}8Cdhyb9w z@YY4E{}C^y`N_jL{DiDZU*}0negMTUOY*g%)TRIxr^os@GQhX-y*gANn#4SW(D$

ukZ=<uCB?b8-{VH(E&XI-bHO5_t~_kiy4~ zQ*PjE%v6jmm5fTdG(ZI5KIINOf~}mgsZm!6i}(Qs8TzXhs`l`&HSNrdnvr)>e&rT+ z#yv>lZelaoY0jG?GwzxdYFR>G7$?h<3J6=33xf^ghgedGnFyndXzLJ3vie~CwsV+{ zR(Xfic(2-;xua~|7aJizG*j5o!AysTuu?F$s)-yRx$ZF;S<6E8s9GuHFCp{+y05Gq z)_I^aOL(uUVHvGNvgA9GMs2y7Y+B|1@}jELQs~vJl0|%QS1DsoO`^y1|D2j9FGwzu%iuw;p)L zTv|M`%^`^x2#ABR#Y>=Rg+XR&@H;HwM~(pcB+%Guv98aX^cP3)Low2&Oez9HJyt?( zWuDB=^)FX|NsevHaEl?Kf%t3%b_5%P*(OngVze@1QK*dQHcnBUCC5lZ@~?Qh-Ihc+ zE*1LL4Co`vSAsG`!4||yn6dsC| zfZhK z4axSw^RY4qwkbz6b_v1kXS4O!q3qQ{nu?Sz$LgR3=F<8Yep86!Ji~y^=nY)2AB}nq zti#4)3Dq-Tv9HVg&iq$UOJRxJ>uNL5gH9>)O)*VQLe%a0WIH~ru;_(a750 zkERcq&CIZOOV{LH|0$39(s#GR>_iax>}#B#MTX@-W7-2j@UXM<2fmB%SHw+?{0OQ= zS?K}0iR)_jNnGGV7!mjnQJwv|ccbY*e8>eK*Vedx+H0ldFTw+LG^t5)-QIFvR!Uwl#75 z^RQayPj_ZXDA(z$VkrOaTRjkBcO*X|N=+x(v{H1>ztyS*zjwlwEYTwrb9lS3;P+Gm zlEzY8gzxOarSQ1F&1r+Cz~di~Q(vJBWhZ@K@*t=9X*Y_7V)eG{7uk-3R+;g=-d^-m zpegi`-d7xL?9fXzfUy3o4zfmsTol4eNgLP*D!Zq2CRD_CWQvF6aSj8@r7}k;ylgR0 z%Ua}*>w!ATzh2J69U|K$J6u)Bnrv3XrJ~ENUtE+Q+96&&Yg>-51DNyrx7z=N=(qj)Z&-YQi zc9eY!GbrQD&0+x#-&g<9xHb+U6droO`@?8-W#1B=Ks1GYRQ3NVbbIMml{%9 zN-MUu@x=HeKL&B$k|md*QkJQli)dR6&NWmTAqJ;&&@D7ml2$C<0WasC9Oqz-(Ir}k z$ZZbzY>X_db)xuu+$67Dvospo$z|A(+$4S`=TB*u&S5)DYOR$!S4=xde!FwxTHYTS0oxY<8Q?3gb+g~@bCwX)tAI#efYF+oH&Zgh3RYWB#{+z(oX33@ z77UM8R+ExM!Q=z;gPzcepO#?`ut?t(`Yv=CzDN>4mPpy!XH#o0{kgS2-!4MLLKHhg z!rF>}x|A1xO1W$4D_ze-EN)oTt?O*F7a0@JC##1^*W$kyVdVRHji7R41<A(FDn9yWu%+dBBxof? z04UgYeZv>tkEHpdOlnHNClN_RG((I0ExtKr>R4|2KqQ>gB+AhV=XBN*Fc!xyYwt2W zLYUQncBtB@mx%#nGi2&_nk|ob`aGw=J{({q-F?PDa&d&wa+M9~mmWjq$=QPDF8?+9 zh?cd_>Nt_qNc2^;(EW(a31VdRnQ0sWqrV8%4;VPt5vM1Kk7C+Y%UIFbx~TTNlD$xE z^?YIHip)9`rv8A}-Iaa5%SOep+EG}EW?HaeQ8Dm9Po32Vt8X6Ef=focU^b<;p~y+F z;j3+L0YYij()L!WeAATLK`F%3)eIePCuH-BDR;FvC2BiWql0W)QEcj|sO2osB^jTy z9)eiRE75om`v+yClgwfAR)jHMp2;*Ak&ePYo_Ph4(%Io_!~d@Sx~I-0N!gogh1PA- z@`WPaZ?ekPILpI9-8V-teR1%05n>Btm}`VM>(|F?*iYZb-yf&}wizIS7|h-~JbC6K znCL;W8>xXoK~rZ!<*4yzhx|jQm^Q5-?Zkrb_ZgGo=Wz^0R{<9}_D&IT3F*5gT0VPH zdhTo5JXt5z!A9N{;bNYx6K}i!^|#&9*#&dZ;Y}CoABWNnM~icMH_cQ54gpV5CtT$x zl@R>#MahH4jafIu$B_jEW!W~E=L42FG(UHtBmI7?(2xsN5c9s_sVR4nSQD_SwjdS$ zx0hFRy0Xxw`u>Y&tLX)8y&|{YB6>yv5TZRWY3b5*EOQ_@K5Iy18V8Zg>s1Qidlh{Q zrbz)p$CSMlf`Jry~@>uA|tX388NKP(rKcm7m)K`;8WgTPv4~+vrg{` zleFg5%Z3VBBk}Eg6CqA%L+YOiKtq(@i2B-a?Zxf%dm3=|#M z9S-f!SEPCBSD3!`2c^m)ov*EmKzp1?c#<3Tne*tuWDJznuGHSz6 zjyU}(B@L^`($P4J0Bl-RZQNnS^$X%47mvTMZd6HPO23iToy_E%QcVBWLBoWkBw^?5 zZc@&?CAk1ihH+en4JfOoG*4dR#vK~0n&n^%Zw~+r;P^bpJ=2e)P^*uQ>J!b~{?mRK zSm{PHASeL))g1>mWBu(&mm0wdo#10*Cr@KTY4mv^PQvY!Z0))!X@Bq8NhDw{deFBX zLP`IN+@x0VZckNMe@9E9#LY7bqb{@Q{O+C99g=2pFcdzAU2QQ(_)&w!Fk$Vh$Kild za0VwOC{%f|?)?kX9+~wA#7{P`#7{@>3umcUShZ{Do>h2uuV{zPm@4*MNuHe^Iy0X? zu6zac?qag1->mU+)ZFn!4^>ulg6@#cO>9ZURJxg2&3aXt{o5dB^^)%+Q3d#o1QCR} z(#joG+Oh0Z#U+t;n8}D8DFkuX?w$GnAs*b7x|^JnA-1L5dp6P8jmCN&m0_1|YDfZe z<9VY*#v@2f&@6CRPZp*M3qlUCYE~Jt;Ey zH>e7q=V^Zox$KJcXi>q5zX6$NeEQVjJ=Nicl;#=kkz@AtWi;NvZwgpkHZEX~$C;F` z88qO&i~hM^{{}8wYQ0OPwD+(vcr(>ZJV4X%Ywzkd1HH4)B|;EGA(4l+ak3*)&_DAk zO&GZ@4cVI|$PPRLA@`IiP%Vi+BBH?kYu=?^?O4T66=zu-x2JcrO)3GAYyJfq%#&;q z6@3|iT8k&HMC;ghuXlgR>m#PfXGRS{R;|(Y87&k?S&xyZw(JiwL-I*erY{)M zs`TaJi?~4iRNdm;ko&+&VzkIm7k{5Itr|0PMwxof0`=b|=nI);5h2?MO+f4MqhP%B%38HRy!oZvsvrwlQs*Aqs;FEb=kam=8rx)}X$_6<@Z}_$@ktTo6c827ouFatb_x#rI^!&;ojW*;Zi_k$8X8T1=N?BT-A({;!&UKE} zf9)M(D5WJE;{$r-y2c+wrlowSfe1(dhG3fYE&P%LX5h4r^eGnNlc zapRH~yDOkN3{h>f#{ASfvx7Chl(2_gwPk;@P+((d_47&nCt(s}oUQe^2FYK)5H|PO z+NN(8bk|FtZC)fwB3>vZ^AvW2z2~I|%Se@>9T(E;W7e-^h@^=X4iU}}O<-W93FI=b z08F?gwLGu0B)1I5sRmb5 zx6?ss^4pvbUgMFWlPmgOnkxvk@!z!{!&v?#8W~;67Rv4K`2|C*se%^#eZy z=bE;eKE4x@Ter5Fk48V3I`8HXV|LrUTa0AIz49KJ=cmE>j|7~_VZfcC8zwHjqFh3< zYQ|k#sw>5oltnWQD?$B>s~*{6$164J@nTd}k#Lxqz4aR59iupd-oCzVF;}O~Vuy-m zVIn-n{HuS=&Gs($p~85vZcLcxn)`X)*t;4xU(i{j$Z@N}Gu;ASkby5*OUA^hlGi{sXBAFT&5++prC3h;(vZ7mxS&(_oU7NmYRi z%}Z(4U(04UFXS4JxWXVi8dCr>a5EpQDm!hxe8gTx2Wg@t53V+tKqB@~W=VVoL*FagJIeVFO zyhe_G3ni**Wo+GwRaSv3d2c$~2Ki6sFk<;Z1MI^fRh8w5y)o=`Sv;(cMvBLLKQSZfv? z6grpV`CDS-Zv(gJj;1PjO+CYj-EZjShR&v=3xL>QD(-)L$%cFG6J3lHT6SW8R%i%5h zRzzPf7jl-h;<9rfMsPG%*r|yZE5Sz3eFT8c0cMC)K!`9`LtpgT2%?!M#o=>Hh zul-;sj7?iPMG49mvtk0JnUG$rL0Zbv3k|Ve)jv9t@AiZRDaq|CLiEMuLm#bU_N^j$ zI4mbNdbcez>Zuu5{5>w{;|K15(a8(6vtJKYfpnoQdYgahj2WViY8aW!5!sXa0X@FGYmZ-{p}`piK~F>T{P9jmZGPtx zU^*N>y)A&%W87yNA>3k*Tw1m9OM!#}iY0C6duIH7_#LSHM~x-a7jls@YMgLgcJbI| z2U_wE%a}+j!ej7+#4` ze?w7z)`UlH`89fVAaoVCOR;f<G+jl}WdKp?P6W$DTjFuZI>|#JOS};Q%RqMHFSk2vf%<+W#-WHQeqGcNEKw@ zY=9o6S#c*SHR@(uWRy%>b)x|OQ1ulP`E7y)w4NCcvPWDVzqr}V%9K2sV1Ip&ue(!+S^gR*RkQ#6!i$2?B|2;Xp?MC(h0G%DJ4{_d6|5MxV0}bsAg9Jcv2r_`xcz zt^n+m^9hhCf?RPQPgCIzm^nGOzvmpYY9M)DxB{Hd_NSG=PeciFkRMRI5Zb0M-;j=V z)9ZaWf*HWe8x%5n=*eyy%|4=r_%jOH5UQqRHlAm%%ix5sFy{rIK3vGevuJP9LRF*E zUW#{@3W$cKgyH@<-LQd+Nb(bDoHVH#_z;*DNyzyKmke`YouD$jv5A;Myx{!j%tf5{ z2&3F}=Ga(<83EeclM<0X2=3QKiGAZy0a*X z0b!+4ZY{O9bnd31Uu5BQpFfAenXjO-CN6|F1H{Pz&vv<<7?uMvwyGn&Wz!mZ;6p z+z9d8Rc_HXUar@8&&4Ry%)T6k-f!Zg+!|>JQ`J{JUuG7ZyS&zD=xUM#^pPMK$tpY7+MB)`5ToEav+^r^IEpCw>^owSsxEc&aR+Ul=e zx#_czB~A-sOb&Ocr9f(5S#Wt<#{LXplmHZw4!vU(oGPC9d<)@&L9xbf@XdpGegNcP zwoRLcNax7({S8{XMX9fx#_N!T4jjhGR>UV@6yTXXF_zmVkCypZ7)1`4?%3CKt3&zT zIGSQFz>ztOojPa`3O7$q}F2snF1O0UyDLFIqif@R92&Bxi;`u^rO$W3uAYqel z{Hu9k_QGt@{POnb*`HQTc%r6hvGx*Xy0dS&oEZ*f`ua?=8>)0HtwTcu^JEZBXkr~_ywbjjM~^t ze^sKb;De2=j$n0K-$9Sysm!7;ByK?74I@2Utpbvcx*O|-mA5SeQZdhjAf#HJ1kNJf!mbyS5ik;^JpepzAo- zAEZX>$ZfIb+d>H3GwKaq51}jc8#KecUUaUtB(}8y+|?jI$X%`ugn$e$%CT1%hKDUt z3!-gP5v%=yJfbFR;><9qlMFEQ^2;!o#|;tS{KkCTm_Iy%0f{~a{bFcOtdTir)+O`r zwy9T=Dt#mbq}T3WL^-N?1+&FCgsKbYrsz%5nYFG>F|Y~k1joivQ6_!8iM@7-{%`mo zjL2PT<*(c>L1w}#`BT#UTz%YXt^IdE)y9@sHSOT6Xpc|EeZ;}$pH@HzF&1zbCBWV= zr|C*QV{Nj5HW#vOr$JkX_U3EIi;<2CMggOYtU)!ZX7Zl2)}ct=f71Bcg8RAc`u3s( z&B}SA@d9}>Td0&v#+=JGZE|$bFusRP!zZzM1t~zb7y2l*upLPGZ~x!f5HPQ<(4Y4= zyuw0%na`=V!ce4`-SnI}(D<8c7OLL&$86+g6ozz=wm*V?q?dg_ne0=n&{!7bIUeVO zDq#9n#2?2Rh8ul1*%5^f1(si3i@f{#F*RYF3-SfSLv(5&O&42I9e{Nlp%uMKLB`Btx)aBW|hINF~<~8JffJb>UzMw6Aj54RPoASuw(bbDii}qX> zHXAT2S(6j_BeQX)=VL;XPwobbV`L661{|yJA818(n~1H4;;U$D!HA%TmrSi|3H26_&i#&i=K0;;HY@_YSP&>RPih;i5vj>(~~kye-ie!5|>abZ7G|LecR8W zuIk4=O|!suPk0f9s_qZn1sb=6thX{BOB`q_q zQLvD(U;~Y~!Pm<0C99=Lj~hk$bK8q*`X&7M7fXgJh($ED#=y0$EBfJ;iU{Q+y$3pt z-Sx`Nphd-P9M8i5MSRjuBd|r8k?-HIg7$SjExeauvm~!*&N#@;!ziZ1j2p?Om+lzy zH3y(-lvUd9VR?W5J+9C&cZRCmw@2rNp~3f)A>w0q(s9$lBl39Oci?lkeB%TS^ae}K z0uEx0Q*vzB!UQCaE-a>zoBAxT(u{)<+&ph;D)-LW<*fxB&yTRBwK?&nQhEk)={xLI zA$+gc=+SQDXmjRzqR!!Huq( z6$OgEbfX`iTg-(WJ)^Ux_b{@FF57bL8$3!mcqRq=XffZRO7*IOOouf}Kma*F#=jAS z^2IBH@Iagh2=LWns}<;!jI0c>B%?$d5pi3(zi(uQna%X%O`vWJB6n%kZoWG=j2MUd={M_?17FcqVaa`O+h~~c% zRb#u9B<^4m&H%abo}jC7nt6_y8@zA3d{VW>`WarH#8E2NvwEIaq;3BN;NY;pNQuDa z1%WK8pLMYThbrQP4+~d>;SzUuNoz>xk8aQ&{nZSW7kcMn+?KkS{@z0H zHQXW>_kLu-e9mpu`Q={JJsOByp2G4zm_l+7h3p7Y!$o_#+io~(Nc^5MO{)#S(+@Fn zk8cpoCB~-WjB{BLnm;S-Rjdp3*z)E%Y%!wEQDJroAcjKzl#JXnQ4Yldzt`1jcGcw_ zi83T0+FAQsaXK4t9kv9Ub|`m-tXw?DjGw1lR@g3u+c`#`+R`qQym8p(tPp;~k+^O8 z|3RlYmn>H`jYkAt+y9(UH~~$H6NaSu67=XYCnmG%s8lakwY^hhuZm?$0}lL~%&R

^8;Qor`qB1vd$m>phC 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

~h7uKSEw=wGa!(S!vpWw*0&LG+gWw%(H~i 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≫ktRLU(qE8E-FG*(xe za{I04NloPB!;|o0c{Z=qtma0repCLdYDoF5Bg@h|s4wfl)z^g9Akub%K)yS*0N+pj&VT+?JH*Ke1 zyRz`L1mnSLqb))#4M_q!`0q|aiIX{4NYrQ$~bON@7U8U8HL``6UTfgU~qB?XJ7WIZ^x~<8u zo_nbP5Ie)7c_Du@USL!=i2D7MO>MW|c=__7D{>!UZ;ibQq@Zq~l1-((9LLO68_7d! z#6L6wRdpg7%p2wmC?b_60rz(O!x4N3nPB7+e0T&rUIpE`%Ipz$2L2c->iZ=TNHj8R zm(^5AJja@7AOT6kUSZ*&P`5mLtk|7w5$w@JDE98+*l3SCHKJXkM|Jw%GgZ~GT#H%Q z(MS@3byVC~um)u?(rRLIWG~e)^pvahUx=%KrBYVgo!<2Qz2gqETWbxU)T@J;%CgMQ z4`*LT4L}G&5_mf}=^No=yb}W%6E=LRL0ILcodA~34aL39`l>mn+@!<8^g6AIeW-6N zR!A^MtbryJXp_P#V|oKvz_-fI@<3NSr%Sx-yvLlC!%-qu`3qKy<>E!n+6R+~ zsT%>0B3xEyxXf1t56&uat|&UIB+d|?0B zzeBZ#emTC)V7YjC(vU;fLhgE@ff)9J8~$2j_0K|eOEsom6sS=PLj{;>NCY&I|5 za)=aqlHW}K;sZ98--CO>lkLW9!#1Qx*ka3u;7dj=UN<0alFz?vbr^xz&<3pLZa^Xl zGYHpz3$KB5@q9#^X*_e=Gfi+Z&zy;9JH-#i1Dkb~@%&Xh56TojIvxFUnJ~olM{fbU zqk1zz!sb8;--CZ@&aH3^A%+}AnzdrV&#b|+c_fR?VqNZ>RhEAU8rTl>ut93a!Updb8n{Y%*Ia}RZt9~G{s;*#WnjXiv@6)Jx!OkWOL7> zGU)_@<#t0UB*nUNCb`Llx9Sw{7*XzbJKI&iXNc%&nRBY%aQ=l1t97>=PTgkEDxGsW7^kbaE(MW+RcncZ19rUnX zY`xUOMqTF>)i&Lny^Rx8xWLPWOLaOq$Gsf9(Jr2=tGJZX^v6U$yvQi0dO@|M(WUM4FbZRdoY z^Y6xxMtZLe)6cU)2yBgybdN1R`>R*UFz`)&nTJR^=&%(24xfPf0&UEF@rj598se<_o7c+rzV2U=A5%JWUr=-19qhO_uLU2+=jX-M3*20?CheZ2s?A zBs66J!zgXNDXUqXFCH=k&@zFC7VV>F$q2_uQq>v0PZv$szfCrtFfUvoboVrFH%C4| z5E?Bghiz}kSu3!vk9Tl;?4&!ffL(%0g5OYr=mhabisj$N>K_7v&mLao&b69eawzpI zWZ=9kQr&8lRG0igk00rpF@LM87gV?tQ?_$|;OZRM?uMKhbRPk{l)|&eNOb!IAMwf~1hvH-8vI3c5SqvT^+axA0xEHq#AVDRpTD zjFGio2P%RsWC^{hhx~}V&@j43cSX=qZ&IHNk9Ms0*;Bd?k%SBkWEQZk#16(~h6J|2 z_6dY;u0-Lm8JxSxGbir(+aj09_kVzH8IVozu@yp(&KA9$a57+rV=R&Yz|GovEM2b1*a2G`xjBM?O9+fO^8P1b}9AzP0=e+ep zd&pR{U#IzDFu~*;y+&Z{|(Tw}!#ITh!99%Hv)O%+w|VEJDbPKidS>af)m%oV-Kt zjP&qGkdsk$Ax}GOz&O5shEhr%@j_^d@nYxr7F*>pA+U$O=Afx$MlGGdxv_2$7pamB z37)fc-A23cWl~@ACe%NaPa>8LK&M_cNvqpi6pQ>C7ndnv@1GFKt}=lE!Khv!II%;C z`RvJamrs&I@u|m}4QMH;ZD)9XS-?8Aa;F=CLO}?r zy+G7xO;;XGVwOcwdw??LWb~dakxsPttM{8VvxuKxT(|Au#%u%%)z=fY&ryWkPHX>% zEq#SiV%W@P83=wNOwgN_f;!J6c5q({Vz%)dnqSHEb5y=)=wF#*WTg3==_zQYP~4(2 z)(F_X{Lo*ViE@7ei?|;0{)+`6nP7Jmw|x(4Y;6ioi~rHu1#sY{0%K!X8*!>gz}|}P z5e}Ndh70_hjO2)uO?ep(n2-4BE?reG-@DG=*9Y`(x%zTlSAsC8H5XbOwJ> zn#41#19}Kv`CGckNb?*@(Cx1Ux-dDwzVUsCb&RKH9H5F^?8eEZq4NGTV!ZWLXvQK;0-kvm4oB9fo*EjO+cR2_%!IFwMEw z=k|cVR~*-Y6>@z3-pK<{X@i!|5EO3oqm@tpjE7jM^uDPD=ijMsAUT(m)Bg(Vmvhc> zdRifEFn{F9aM~c@cPEF-`30N^hl02sM(`?zd}Pul_iAo`tcw3V_l@M@dVaBlL9D)A zH8!Lxt=k&2m!;2PE(HzPp@6;_tzwl@m<+EZUOWCp)8;tNccbG3vI6Ig@h~Ju;Sx=S z+><+VeN$`Ok|?$&C)56)$AO;}e|?$OT%JC0)U;pLJhgSGJCbEhTD_p+F9PA_(Wf#x zPF!54UX}h?_ZQaRHX|vfvOyz^@#AYWbH47UWI6U-vR1~xBE)FiJ_qoB1lnex_T%gG zl83{$FCXk^+Lo$Fdp7O-`gVvmFG-4>J9P6rnXQ9|XLLaGyyZC=D_zL&>coV#1Gi4& z<@?~m{+h|@$#P5nAk_;0a{6ZJwA`0f`WU+UO=U4v6v)B)sb)?HGXH>%m$Dofb@{QU zoN1)7Tf?)X=8))Apen6o*%$0TH0lQ1q{@W;33jkIca|f-@9)^2dx$zJ?r5;b*BmjG zB6UFlxo%zpm1^)X&i8{i=X~gdURD3-%~Hv;`wN_Sw-}b1BN#GTaj@XOou)x8<3Di2 z38)4etA7-dv5NQQQCaui>n#B4HaF5MzKS z@7qDIp}W7fK0S~X{eI1d9~HwDW~=*{q^@Tv7te%BaigsJ7xyCd?}c@9#7{~ZPvx$ z^$b^9V-0)Ium=FVKBt*UiC{;|NfwI+zAtE^n6*+ zHU$+IDfSW%^fAP1cZIV{a5f=Oy5#sqKe|vrGk?!(E!3)kO#ZEL1SPNoD+Q%f-=SWk z;otQeb~5q5=|x=Q4#=H%!^9SgCqOO*>**E8?AuAUts6%0xy>4N!vj)2hyBsH{pjn# z$gxqK8_z*xXU$&3s-Dh!J##p$(R_i_8}z<*U0L2lAB}~W9fWM-Ae0M4hOfvxT*AnU za|8)|)3BgC3M++Ag31-5?&j@$*6irjQn#D@X@r$NEg}*CABw_ghKJaGh`x_04T!Kd zNPVw(?)>TRV8qeLhaa*6_8upIIFpiMQD#+@Ig|mS8}zFIlCqoL3;Hi`6t$o^F}RT& zEj#3ZDE9?GnA4ir`uF zJ4cSV%he2t9h-IisXL3SD(s_RPZx0Kvg&6-ma4|B?-`WzmjF7Y;e&>F{6^1{(*Zq~ zD!&)QT`X{5T5}ZdSANDJE$69x>C3Bq|Xgye76dF8Xzs7qQI*8^Q` zE_QWK*w*_*V#77Wcetr<;_-k!KuX9FMO~SXTSHZDtEZI~4O|eIy%l0jqmzO_H*|Mg z9q?Wi2Pi;=BbqiJWo))6Wus;1*S#kd)Utk1gu4omT~zM`t$p66?{Dm(?88fa3$Os+ zX~_@T4p>lc`K!}(3X+O-Hv@Lq7y^8FKdEU#N~tDV%%6XF#RsG*p$gC-joamGXZ55} z0j7q)0hqNyfaD;G{P|l|cT3?UK~F2;+Px=0k#VKw1cHt31_2-~r)_+gAXNoN-~(i5 zGOtP$O4sz9C8N9`l-^bz>D4F7J-;0&goEYsn)g*V-sBRP>mg!JosaoDq`6^fclgJk z?*YZpuYdSP#L9V9e$R3#X{I{LvP~`g-FstOA`X;zW<)M#s9p|oW4rcYjw!C3&UFoU zA7REyVq4g%O?~7%u$!NABAbA8G{S32vOCr$G7%nEIp+=4mOp?fO9{U{1Y9A}rGl`! z^34D0a6fGtQS!0aeU;Rs-cnc=gbmYxZ9(=a{Y=sE+1(7geSyS^kY-eT?wszb`dIco zCr8>6LeJQX;*gX1MP}1K>t8+#TO@<=N<`?aBkt1hfC_pf%3)m9J4k(%H?Zae1?XSN zk$T)xTj<@;ikGN#AKWju-BMnQB^zIICl_YZi4l_F3yA!G5;8t)z_x#-*X&y(&1bM4 z>Of|>K56>w0pqCx&1`S6LUIe=BHeDSPSlYWd_vHtEGG^+%p@vxWpY*@)P7VuLEQGA z_e$C6>tt=e!{wKEzaPj!=KtT*TY7_SHC(Qd_k4@SR?oWG>k=SB=YC$<0Wf2e-+2B* zA|qYVQ8L)}G<~6CS=vjRpG9lKbqb>fJ;_pW1s0IQH=4qnV-hL6JmOTr{*;FwVG~)e z-amc5Fuw$|=WLgr&>aHw5|J{~1ENwv#Lj@4;obs=awC@Y=o}%la!PG4 z%m$BA(GW~&hoHoF{08FnQ&_#K9~$SJBVU>UH9)f$(ZkGXUv$?WqNdxd1^irYVIdeh zGAFlc2b{fUV(fRwe{l4C=E8d4=W2c~rdr6+sz|bIZt%ks&_G()KZ;+4!OiAqv9ZU9 zyiD?wkVWrS;LV-_wMwE##cA1_`*$$vkS)5dBw;+(SdoQA_zG+^RfbQ@~sHE5h0x0I3aujXkctxjxBzbd}TNVuMc(de#+g#y(6b2>Xgq6vCNCRR}-NN-C>+TxNhl@%d%`s*d z=u!#A?2Osofh;0&J8WZ5mH=Vxp?ZBbVjWPGJi6cCeOlvO=~>Rv`dO|nvTBnZ0$jmo zSV92#jjxLaeq0o0`Lwtk3WTpm#-A%Kcs}4&L*WP|i|y8zQ459BrO@hbi@LY_Y7*_- z!;)CJi^7%a6#YqRY-&;>7}#1<)uVj)-IaGf^*}YLOt@F?h>TvXS2bIaet_2V4KBi% z6@v^p@$^YDo}z970oCIqxR#UwYB_ryff9cI_huYM>q@47=q&;G)OKYh$o=ROxm^Y= z_xcNq3+1doYfI@=vV1%kja7s^k@-er&7mZff9HV{1r`dOvVEbI=Z21`kM1>WuO6`| zIj$ucxE%=1JJ&I_@G6&byUu8W3UGGpnz2o(8eaov?YRfA;=x-2Zxn1n_Yo1PYv*aL z*yEsIL-tmdHS%X?KmcfY1ic}uXY#<|5Q#QVT-C)=@fC0;$_ZY{*jtXCM`(X(V&tmTiO zZ$nKt~5yB=v4$L;X%sZFLdfB4Ic(xZ=U5FjD_mAj|MZXk_6OA;PGa^_c0LUf&>HfIClDPJ)RlN=++=lW>;%x4Bf;nqm` za{j&BhK|(>P09$Ny zvl>{y!7+yVm+(`!38J3Ci7uLhP3DU7193Tt&VKr{a?k|J@IimmND)ht*LWZ(pD}P{ zA{U;RpOtLIab^wjj2$DIJSsZA`#>qG$z9yk3mB^dmC{N{twbCZi*41YFu}0PBLBf-cVQz59wa^Q z3-ZK&3@4J&li zdH_ZBAW}x3C76?Dy7^?nb!xJ`1VjLUKs&L)Q04<}5KUQi~ic`nCh z{Nsmm5V14=fS!2*cs+Wpme+!+pTn=V%Rr0MdKudPF`Qf{n5nAF*N(KL0Dc-U)HO#n zkicg-CEmRIh5%T%bDZfJ0$1&tanN~+DI@Ry0G#XKKZv;viZPM{DRfy!<;g^%Y!%b^ z%PeqbLH@Y09C7M7;4|^P_Zr4}is7HKOPx2z+oPIFAx)4SbQG`de+TQ@TG$e2gPKPD zjzHyt)Z8?&PCzY$BK!U4{D@~`W@m=`PFm^pBp_o>URG=1C@~!Q%H<<|-W$N$j^vTI z_ROTR2+q!7)*mXBWzXJyD%VUJCDkm_*OcEColDiNjkr*N=eP|lRFn3piG&DdKgz>6 zw>1>A>hoXdYx#t(a9)?B0*}u!8SyA?D^WxI+bd;!HGi<;_~w4QeiDEH`${An3^}-`;u6ZxY^p0(4KNt9 z^JNqD(_Kzwv>thaHa5#(eS39Rcp`TN=HPxclw98j)G-Mq0btcxMXnkQ(y{0DH5N=f z`$PX!HUvA+6`4CgQ6!oBlnxdt7_35zMFU4ig9y%c6Y`Aen<|Ly2ycVLTyq zr`^oAP;ASZ{gpeZUd$m;UeW4HC^+oXi`^V80+P32C#y+Lvxb{PS$@*L@Qft%JO!Zw zkV`AVM|Lgiu*$)3OIhlW{XLgaEjw#zfl~t;~JK=6BDE4!Z#eRcx0E zFM2>~zw@j+35CH7Un5bcS4_ucK3`6c{(swU*FE9_A-cG2F4!q_W{yB*RtsX_tdIg> zvYK=|>KwLJs{A)+uN9}y{d^&S9I0id4f-acu7 zY@771XfpY-^fqC+P8im;0Oks$Xo-w)O~Yl~FG3VvRn6Ch{?ai^xgQ^!CzS5X> zhJ^>t{wJCxRrJ0OoA~C1$(G0v%ALN=#g&7Iq+2AVcA1F(<)s_}dO=I@>*Y4YeZJ`N z8U8?{g$qAedsvx->*&R&x=KKar{{rD3NI@L<7= zOec~PRIc|UB-XmP&2X_xnq!tHvy<5U`0ZskW>Uu^!bHsJj7Q1X6wH+-$pmp%8@SpO z$(Q%IDk2c@p^Ogv-((nsIxY~&3}l{Oo2o1(E{uW}z{Dv1$e6pPDBt$0fFFQ^Lrf1R z#Gb8izyTs+E$?!G)rU44)_9elu7}1^F@IeTyy^`Zvfo2m@?E$kK4^T62m}$d6 z1#&YQ#cwE)6=+Sy{}{EX-^cQ!kj{K6NSvLAfrfHUEm1m_p z%L&T2Xp~t0bfP<6#Wg42?@*^q+DR6;xT!vw@yC9V*_3}Zqip6;|HyR1%LXc;241XL zZ3cQ`et+I7A<~M5LIX;(hi=J~AR;}#k0G9GaG_^8sy+ zznAE-8&piZ@JQ8h*#R?#!>@d$@_}A6HcajPXJU&~ zE7eGRav#eVRj87A>%?c1DbsA_P$(DM1(PBWn(D3x$*V(oszkCT?819#s=j*{P`XK6 zTCY6?5uA75yj)IgY6FJ|somn6pNRIsHa4|unmWk>G}?Htd*v?w0a^y|jFR$Z!4P^5 zg=L9v#_A@|5H;G6nLQ#=0!P&DYF<;KPd@Y7K{3ISZ&Qie$1c4XKKay;wURLV>ear( z_tL}9@^tiZr&`bFSop-G6rwvl&o2bbtH??8&?DkelkEb1H)UKovmP*K#<2-^@nWQb z=!db-Ob@w>mzsj6&BOc)V&QrO1=YtvS!bO>LN|*VsiT$Vs&3WZdWF(AR3fVi&h62t zB%>b8Rw3y(io@#vAp=pIYtBj*k}32fueu6F@IB=Ke~j0<>Gym7rl0l3cDjE7pf@=r zaGSQSNfGPQ`hA^%z0~e%2);PXEv*BH+Br7-o^c;WmsJDcj&lX7~&J4;&s8 z`f^cqZC2KX$ir9}Y7t_m+S9pR@(Mweb_q<$TmUw7=s-`L>NN~$>6`&{Uul;OVbpw! zdDR(z4X7zqTG^iht*450MZ&J)Q#$$dQVYv=VCY@3-Q{_#ejh3*xiW^&H)oQNxP8EQyf8rp zcspkA0M^I18%Dp{PSX2z;ftI{?G0rE8w#9WIfc6KDFF)Qk(FEf#r63Maw9eu-eXDf zpd9|RK^9RDcN<<^%Po4=pmR zsd7`0>}MnmIlUc+ZL*anxq}vMFSUd^|4MYF=eav&CUn+gAFPkBF2@F>_F`zii#dO* z-A^{`VY6ajK{bCj_BX@rZTrK{rH-E5zl^JrjC^hy-|N|Y{suIR_>#vQ3#i;jKl0GK z9gjzd=(^*;EPA9edU(-SJjh`F5tg;%>Avm9Ks>Cgpk|AlXiU0Vf6HJ=4$rdi`5g4C z@_h)cxNQ;_5v*=pMxGQ(O}6W*ci_%f547{*RL*Ws>8J^$JJ$;D z;-dhPkfYO3Ms@~K+5<*2m%jQ%{YOOulmRjZ9sbVHx7E`;%jONiqfLb!d4&>dFr;w+ zWwRUviWKzpNg>KWj|SXPy}>hxRx|__&QHwWB5G}9tRBqj7%nHq)nqFICV$`dl8sAG z>y%uo@~!v~2pS&63S7L2qiRTKd(2@Hsu3pz@j)#=(;+JvXdZ{Me zn+t*v*iQhlFtdVk*kc?;?U#sJqhZ5<88$kRJL$tGK%Pn5+?StSXz@L~ zdM{!5PB{Z8Q@kS@zFURovr_E+yre5a6SZ`?b342>b^8oOX8HwE2bjGsQSpN&dr>9S zbDyu+sY~u+SXmnM3bB_UWK94RT4t9tvPM~WK@X&B;_J1EnH+@+D!_{35@(0pwbf5( zDF}c%`dB-Akt@BXD%%)5Dlz3=<^L8~8b-{dyhIfxZ-^xeoZW_OR4%QKNXTDjaw{a2 zwmDNYq3lm9#vmz+A_=n{iY`jWQ(d-2Yju&{EHYi3YxM|V&Q7QES$Onmu+wTWEI-pR z75ZPpzQmwB%fgl3Q@&Ihn|iZbJ>)9!(AISJh`5sI7pcCZ10t-BY`sm}d&wS7WD2zu z0YroE64k@&57pN{tw$SA8&~p@8{@ZUv4^>Atd@x#p)hlamXm!}c-@YFi=Hw^++!{P z$haky(j2UZ58hsD;-?>}BW!}^fkRpzmu>h!BzAL`gT4jwwR9F_rV zj(}_MMZScvQ6^;XRsuM%CTxFSzs10J3hn+kHCk6>){_4tc%$t+$0Yb z1|;C_bj_om|8#b_bRRteuvx+%-#7L|PiR(z4VJQAT#>Bkhug;y4Vf1};PdhSftX{PBh)=tDR4bz-y>`!CiP>6ygNvPTOhe5H4n@`gk8PnY6v{S#ck2?ZHN$gGz; z+)E6(Qd=Osszu~1G88m7dmfk4j?A*SSuBCiIL$W0_Rmrzi|=j5Fp z9ev4c#i+SQK4ZS|ad@}K3e{^*U+J6Mim+CU9ycU34DcOtZC<*ard494Yn&uAXmuf>lmvMq+$UYY@8X zysZjHfOJ*l4K|KvNpJ90f>|C_%LvL&@$yC1gx>E=%vMX&T;^JabGEI$t0tGp0)zS7+BOzLcMi%k6&}0Nzk4 zIIMmlKBIdwttV%9uA>LBdpK&rv*A<)E%4N34-uVsV8-d(V9#lul|T=EXt(g+1s@`9 zP3&#g@E6G_D46gc%S_=>^fcB6i*K6?w~DxAMbOH>foL?4|IOR&Ch__3cGVLW_;dNB zWZ*?{%345ixL9qU>-_V|M`P1cEi(&`Xiu_-$|KL_ry^r%BQ8H`%s%9twQ%ZEkzoB} zD3L^v{_ZKM6GNn^6V%vW^%3f$E@+c~|N0_wJ;##0l19(sa|fwl3?g$~+GhyPFDDF!3ZI>*W z_^^0=bW8;&o%I@XJq)}9&V-+yuGw{h*Zj?zGJn9H;WcHi6wls^V8lWFx-Ezrv8JQO z2BTkCrEwH%|Ul@!l(*i?YGrt#GAr60md zE2oZut#YdBG-p%~Z7mciCBSq2bS@5Pibz?Vy_I#!h+03;V=0Tqk%R)_-v>xG#Z-Uorw*1CGa&I|9F8^_nUR^Z9+>tW9}f0A&mx# zfTE|}u6UzJjoHQ?k8g@d!?5&hV@qn(a`|hQ*CS6-;C)TzM5IjXAZhx1SL8h0b0yux z3jGXSEtS`|AWUEc^o#aZqPgA3sgKeiGk&Feyc|ljZ4Kir(NM{C)w=Wtt*JE%TjtPJhz|4H+nvxlP zr^rLzNEnSq#WJ)wx_N$4kc^zjrNBUQJ@)3mvu7{0CB>3Mh8R@cyC_uB1rjc1GANwF ze}Y;<``G(bVdJvf`^MR3?Y!gFY42dW$r zw0}k4z|$aRU*XDPqgoJRj2trZzrKBaB5w{^CeU}tYes(1Zv3O1d#Krh_>?c&5-%wc zpm6N;TxnKq{`6us9VaW95P$Ta0Mz5!RfJ@T|Jf^?vfG+{(Se=#XMWmC59ubAc>Kip zTAs#pXB2hgPhNuAJoYMN3q*w9RpIZ8k8e~!2D>|hN%}Ohr~Umti6VC_`R8FbC(=+P za+TpDU0?f!aSns)FF!*_f2MX08xq|Syo#uDV_(_ogFOX3i#;6NkU`ogcMh7l((`A2 zP0lkIYJ|!R;krLqv-CH6@m54)U5fDRj;b#S5TcL{H(v-jtf-KK5kLVgu>8ZSHm76) z=#C^n{XI%$Sg|SWW;~p6hCpjD7r}vzrLUGXyH2Dr0k3?uzJf=B@^122KJ4K{X;rMM(I6%x+HbAFFe4~sA}9lTM#E@@0~J)+CMEsz&H%iwR#2oVf) zxJ7e7m9$9#Y0)T{pIYj<7v7Qq*<07qZ%`EpFc-g{Lw}IOWTs>T4Pj<-dlmona@Dwz z0>KI<$3IYQ0PW01dWJ%Hmef_|HZBn2#hE4bk8Lz8#RhCJ1bZSJwA92jJZLS3G=<#t z2Pf_{LvRb?zA^fh@q85Vg(HBm-hpCrxYggUOl z{a|Vg@q25D z0abzb|MGY=BJGKmOO53NtuP<)WqsR7B)?UFm;%L8(i7qC$FaZkG~>z|?P%x!OU3rp zX>0@{1#><}qPkK)S7J0e6b2qsxNBvF|dYVv> z#Rl?qdEyi2_1#g<6qOSy6OX7lW;`FU)pB{>^DxY-`k(W>d3IsoSXc78y)4b7R6W#A zOc1g^A04s(DcY4{h7kT}bTE|KTS*gBI|dG=RDRqQy0Zp%O#r7^yK6pLi6U$4!+?J3 z@olSK02`ns*XB5uxbSpS4=wtprL0!6d1HVX!9BrwkMQ*_Vpzpu1C=Vc9If!`SOi8R z1wLfpGsD?dZVOwN0-|thQs<}p%5!)M^G9zDMu`=Qyo22l!u&XY`%sU3kSnk68aFPV z3Ydc})SWRzPRKRV2OQ)Ndti@U;3U}Q~&aCHzm-`KT00RwRM~3J)Pp;6WVM5{1(1u%zMhdf&O;32hL4g@d`tYKZW?@hY zG-0j>lk#i0==}lT+?H|v-Xbx-K{GTM@q%2r+S&cIFSLqI{f{j~8@t3AVS2=U`rsT& z-GL-4IoJm>0v*RY9odQt(|g04EbaE{?*E*imSXD3f+mNP;aX0koCu!9RMm0=)kEH% z;6d5l#{d)a{|$N)mS)6}B&8e&=`mW_mJ}BhK(WNJB(e5azkQkd+SN6~Hz(}CeL9D* z$B|!zdXAMDJdK0{VOo!&{ap-4z!%??PNB`09OGM(63iiN!BUo=;1=BBP2fI>eqa;4 z)Lc^`4vfsqZc@oN&PyXe>?XPrgxI0Er!&sYGIa>@8D>{CP9hz34bKS7dOJaSF{>&z ztHCk15%I69qL0Vko|5ZbvN{cf+336+frg)as!FuC2YTq+x*TzNIfi8yr&~2Q@?R;N zA(mtvELrNVNwaqYLNhvt37<16C7>QL#^Ojz;1*qHzB}o2PxCW4_M0%DxyqI4Js#=J z8^4+^Mzw`BNp5?%+_cC`rR7oovhVVQSg(Nl~Zw}Q`K zHUT4j+6lOp0U3P;QbF(4#Ts2GGU!yh@;sx~dr66onVNKZCZ9xtB=zm={luI83TDV< zKCcWcTHFhu=8x39)WhP7CD1g2t01Zm8FdQS4*nbLoI668TNdoOEs1HLxyNYI zzs00`27kF0G8-*Ix@tBQiqEGCasNZ4B<|;hf3!XS>fJ>FbD2JNwSukDjL}{rUGt5Y z55++rCrAYTi?AcOth-TTMs7mx2K;3j2XbOu=|IRNsyikleZr=`Gh;5F1N>ICGN|eg zkO_;OQ_9`CGxCj3=u*{@$(NMe2q`zwHDwU^PrTgE4S1kz|hz18vewE+mA>jr_0U(A-=`BKov2#J$xPZ7H^lL?ksj z0%1(wtu3-(#-tmx5coo^Nu7a#f5t}LOdUv~A}jj|7*Ei^gII}3K9ZW_o$dwbg@E`_ z_-ZUg6Z-*iL2zC}xG(lcO62d%Sv!`99~=hx}tb+8%BB|pWdtt-6Gp7dR(+0}j^qx{CLCrP4tV=|XF$dzx*Jf~t* zQ%VcU);QZ_dRlmfEAuC&aFdhKp;BEQghG0*b5kIhmpR{O3FmmpxT(}5Uk(Aq zZ6Po%Mvyd0M=2voBnhkhwsRvP9At_jawAd*}SiC^xKQy##H?o4u zf{Tp&lCI;~Cn-YPjCqWHAG-Pr77NF>Xz%N>h15 z1wb&gy8@r^`ntNZlRMXnYt4pW#c;_|H3FMvuSQ+Y&Y$N)V|p`#$}Y{cdTH#YT><#t zaPo;B2_QqdfN|vnckhmoBbIG0=8D#yv8`v^{+ z$i*K%B$^11GyIhxxI8J7;k4n3Q?rl7LW1r#cH4Ef5-4?LpqD@(hi@hdgl}nt%Y9P+ zMKAb9x^}036rs5vQivSIc9L;s@wsu>uYEd~vBm)#odVPz68UO5&?Fvvl}ZU8YO?_S zm3-MPGUlFOSMAO4h!xaph}b5TlTU^O_&A>5;+ZYPsmT9UtpW}z`8p@8LEMzne(xhA zVUR-5UFFyQ-*LQ#OYXFqpjd?v#$L!%kO%Y=9ne$HZy41!R03pKGL!uly`}L<;43hT z=q-x}<=&UTFr8;YA#17^jZ^*Th1s#_j|QY%)w>Zw^2Q`fv-o+;Oew}a9B5_C$}LCY z!Az{EDt}8vyT&^c(TY2)Y|F-S_%ao!FmBy2`8j@Y2<73CxZgdlDe^QQ|LZS&o_E$~ zVN36gL*KJHj41SOdm)-j2nNX{^mdb9`-zuypn~ItV@#aLDtpTh?K&YYRY1`B2e% zp&v|!HpP421>THD&&fu{vV}3f1cp5jU3k`Ut81@MsA>rLRZ&tg*wgtlQ{;a6t(sW% zAQl3YLmd2wD5_aI`Wn0mR+EZ+Yt5YsZPGgh130~sQ?5I zl_^9hTL(P!Fpbf|cg47EaC^lc1~68GFMjm|^9oGVWLFq=U)T;vS%T%3MpM@NS5`Q- z5|Wk@4JWM_UKc`eCZ@u=s{0xv;HSI-MDNfs5Q15Y8f-cSD4Ll7rD zy1fxRec&^2hF1{g)B?SQfGh-ClG?J#Yo44JlhD>Vk6wd;?a^ppb9|>t@PPNzt<7;J z;#4BGRy#D}=F9C9FrpDPeXF7+ha{Flw6G``vfJAS3XXtSag~|8P)c(h3{A-CLUwW} z5|7Q&2^6C)$Uj5F?OJ7_tm4Ga=Q^gk{WF3kECTCs&OcIyh6(-(hmrhM$X|zIsch`E zCPr&X|NIEim}X~#-5KVP0BKlpN#t@&vW_-c#f5=)$>d($c4j-MWUdmB&AVWmPu+6y z+~bzZ)6Vw}vq+_q8I$U-G+^Gb&*hIU)rm#`eey}TQ%B(V+}gEuNg>BRT^B}ipn=1? zX*WC+ZOd2URE@Y!1)`R339E29<}2$oQou(&Ed)^s>gm`H#9$~nJ0_n4xP>yd@)3c) zG2}zGt*-y2k~~FAZ!h6MGUN|=FNEf$zb*hpWuvQLiL9Z~<-0)o-dy}o=p9n%W=)H6 zuQDF5Cf44CE}PHjidY7_V74b9C2#}ZDI4XlA*g#1Mi{VxwgdR9^SahUTvDd#GMelX zE?$nQhY5ca=*sja;c+tA>k|N~j?wZ_f^(}gnLxG13v#Q-*mWvyd0abMM-Qc>3cN{t zcxK_`W$75C81CR!@H<;vV}1&>>cSpCIkcleDlyUTW*`ndu3pI!GMx;t$W^JiKJ78| zEREX+Kr0R37qm8Ul^<0AZd^jdvQ*|vNgqgI%bi7u-c0dk(imn{vaqjm!?6UK93AoI zF%z)uFIQ$R2UFF{$moagGZg8-h_x3I1W9xp*9s>m3IC> z)o!00Qjrf5y4QKIhv!^la!#N2+8qJk4diJp)S7HM|8FB4%m%eXJ&K%zB57CTVKcZG z%e0VptPaX@871EHob7l9wc&_yXm>$aJe^b;&jNcOU0Uw-3~aq`tLPIVaK$^JU7mKD zh1*%8X--Au2Imymb*cF3Wu|R=T&h!ULbSCiDOI#vsBq1Omr9qijBQ+i`qEqx`ZhdW z_Ov5WV&)!r)T#gUEeohc9{eV^`{4ihscD-w4`dS&WLdLMTfoH%p0hEG|v4=huKaJUSux6`^-C)tW%-R6pihsT0J)Er}Ltp zmN(q9-6YN2gS(TZ)T z7#~yqDA5c`%#=P=236sF*dv+0E8-YyuV3C99w-H=IX}oVF_Aj8%xv`Z$ZKi6rTjBN z^84olX~;l4kPK3gjlGFxw6|qsi6#4TQ&;|RU#FWS5d(R+?E8J_HhQ5nWMlE6laIed zqWFm*htbr=gY>Q8hF0c%NDwXwycpn7b0ANx*N;ikzcSQrIZ%V{B(&-RicA)VQ*77j zFj?83b_fkZe#3MMM8ReaA)j@(AiVl17yO9Ae#f}Wm#EJ6PnacS@RARVk zHf@nu^WGIMvL%3N589o)uZk=S{HWIOI|I($X&q4oimplJ?j1-Fx&T2yzQ3p7fVi9b zpasH?h?YW`l`%UIQjG^9X=BS2OI;NdToXQD9;AzIwYUWVQ-Qgr*-$oim?D| z2n6^8zqJI@s?uC;m7mMMmU3D!+mS#73QRi8FarG8S3RruHr4$1j8hi~x|FhI-zx z{|i$7E4R@}J?E*zwGI*e$(7C828op17b9}=c;C5m<&E-!Ua;HE13%Hh*$!=l3sr#d z?HKwu8Q0)-{f==Gd3hGPWApn(&Y=D+KREDn2$P}Zm&e@hzV1M7X`gOf=Ju73x?P??e?@IMo8g{bgw=APb9H=%Zuxi~d z*nqGP!u!K6O936}M=v|R3ILu%Lcd`hc)-Atd{|s~;un_fQ}gQ#n*S(>olF6LClI&{ zs;RqVTBF>Me1*KmTx^xxO%E9`4Gmh?XTT7K18GpNOYzddh87>x@XKQz7o!6Du-x}_ zlWo%0f)H96W^M5tc~9QLFe5%MiDA{56v#3~Mf`*km-0in9d4K}cOyNCJ-H#lf(ZRpTWIucD=tr$IzH3T# z#97tmy!fs?4R2CK0%McPiYvqN(-~X7ST6>kC&moq;6XM>w1j1-hhed5%9__?D{nsp zz>*lD8;gc#c87yxWyC*)xPxvZaj48V!6v@{Csf;jg!y_lbUX;SK$$n;y9}@By#tms9h#JaazSqcuB`~h~ zhsW4gg>#~&aJ#o2yL~=emPC0}v_WT4>@4k4U3+OQYDP%Aaz~!Dy_sG#3p>vBLNs9? zt|~r9>X3n$)_byZunZ7V-NU(EaxrD1Jl$Tcd3*7h(h*~O2fRnn6af_OuR3yE3=t}GE`4XcPj4a*GhN&`c4gC*kB(yc{7$<%b$<0Y^SCeWxv*j z*j%AhAjfDoRu)A+`W$pG`G7F9%R&WA8Za^PpLU~%M#b?V54Ng#KlPi3|K-mlav!kP z!O|`7QBomQWUM zE9k0V;SKAgXcgi@%&X@F`EdXSyuEq2TkJCP3T|4P&S|MkqzIzdVdfBCDoT`T5qHLI zgm)ilKmx^`LW0*@{ zVL3OsT7CSH;>Ojdv^E99sTHFZoT`jlV>1}$Ljji*3Y(dno`rTAhI4V%;BlZ$K;(qt zqH}Te(I5qJi))G^$a>j+2PY<*tzw?C1>Ex~vNgu4Up^Otl`DE$|KM$4QR19SU8#4t zQBbklB&uTGR0HUI6VD8ZN|+mdG-pg_gbp_9zROm6zn~=fd){)~n+u)zCV=d|&x9Px z9v4oRz2s}CYA%h94ZS@PTkd07+yfPEjf@ZTH-qe)gDq8nl2RVb*8jC_C?LHh@B&I9 zpx@#_GUjJW7_p{ed?XE6O(`DEB~w#AF;+!xKj~@TfL1mcNvS>4@O#9QGyEPKnkTlu z{Z!@Bb2K=SL9uv>QfyhpWSL{|xWJ!~@d>_-%u>|J8729fe=K%IT0@gVU)|h>^>kSQe{EZz!;LE=Zib-qVOjdu^I@inUPxY0g9y(0rJ9ff4jnA{=+`nW>;|-IAkg>RX^M2@{U^Cr-fD zV);L$aiv}mHE0OF5Mr{QUKKAi>O8%2HcK1qJk}5tk!zgrHK;0bGQJ7-E;*qqD|VIl zaqx9h0~zP-AqNBpm)sfBq{f$3O+0@wW#-^QHVG)XW*x<_0;An=-u(mAbbazB`Hyq> zLWGS)ZAGx9Dd!;$Z)~KT3 zfyUa*w$QF11j0i6CRviFb}ki3ib?jvb5iMSQWc=`-plu0D*&8w9x5IUXt`a-CUWeG zL;{Ke%evC z905S*rJnpCRb{g0_%)goJV@Zf)cv}IS6ORzuD0C)&4oT}ASLOod>}8WwTB@p{kDF< zxhO}GL>5eqt3i0mZd{fV_mILM`Xv#>)*Nz0l0+^GF80WglDZZr>8C#3xvL%#4o{)6 zB`$G00-XXgjr-uJ8w#)M0xp>qe3+j@g1&p4zya6yH~;+Ehp^XP7t=%xW&X7%3bl1^ zc{}q|{z>u>W0edc;Re`z6Era0bvOL7_33>(u{`;5(g?XVoiN3JvH-Qs!koPA9&0*G z2m*=XR^{?%mCS3WkiBz{Z%_y`OO#~hRJ2rgi}z3RZ1@*|p+bzU^gm1a7;+p$P;MLP z1*rA!FK=)&Aqn(35Q@$K%7DBX%&tL1YV7luo9`^Uw#GO>iQ_TjU)EHTv;H%jCR>__ zgEO-6sy4~3*U`Z#`?r5l`PPOK?*f4IlsL5_ta8u4`jvKj!LR2uhY|CM=2i+p?5ao` zHp;kp{jZ38@F=`E^q2E$j}ry)i!D@j{IPmXv=l3er2tN<4v$*xGXehb zb$z;n{9cdU1NZ{>`iDORSzgjOU>t@%019k_#Q>-B9L*Fb#K5AUhK2Y3m&gisMt-~B z%^6}*+aYN)ztVx(N1+oB4mCtvc64{+n$`)X-Z_w_xfkhC-Wm6RT-tq!35^K;>IW)? z0AFt|x6X+T%vi$i2?H={{1j6t!=yVAKd$)=w!4$*lUJtJ5+*(Zsf4Dp!Uz4#IjHBq zZY7LrU4|Psui=|TcW(PCR!GsK;;|s~gLkgJ+a}-dpF57`T=S2yFN;lBNzM%T$FFqM zyYiX%RT@mi5ZkZpBrX+~LeE)fR|AEETXo2&+o~J7wiy~Bo(0QeU2iAe>Br%JdLfk- ziuEacG5+4+gZz?Cx0o5bU`LY0fGYyRefUjV@yP3JbM+v0nH&d6ZSgwJSn{9rm+}ji z)Ps(g_M3#)*1Txj-)7K%Z@wRW_O{@9M_^`Me<&1pk7Zf(j_JTfu(lc0Dv@gjkY18j z1xxy$H{GfVJNWc(T$0@Gj9)2Dw1f`|dQ)Y^k=gOq>N)ESS_Y!Y$nC#u^}vEJJSPYx zfPTz%V@i9mQ^9F%QvpitB|AUL84gl{7o)z zedFF0;)WqjW$#GezLN^YIhvm{Aw+ESak9cUBz*G#{kYDzFEx0a7qZ3@oHurE(iK^q&u0pTNy0G4(;FcWdzC>{eQ+ z$#w=cb+oiJyxZY00po)=Bw2^;JhkCr{X>;yo+uj-d+Umx8(trM$y21rtmTr2T=?XSrv1~QJ`6tvBpI=UZ0z^S!#Jp1XWYW3Bz zj#r!t{EoVp9Zu{_awr*qr=5n6EjQ{DL;7UF=!iQ{NX?G9hY-X@dB0Saf8+9d8 zAb0zeAC~FsknWmO0<`$T`tSjtb!R=f(`mLr1~lmTVDbN%y@`HnQozf1-=tCQPJ|f* zlXi!PgsOWsVYCE%um_wo-)o-e*7jW`UuH4M1m!NMnTF-b6y+TiE!Ec|ymOhP#|lLD zXT5T+KkcT6Z6zep(Q7LCJO`!*x5#?sEfKvtFdRp)&c;>1{iI#cj=MM2vf_^dx0?lTG}oJD~+CLN9`kTfi6DRvAI$2 z6cW4#THp>}uqLz)F#BeES+h7!X6zP_E^6$)pho|lDx1k-c@fRPT2ki`Rq^vy@PLOP zZc+{JN=GpgRj>+3zh6@cG$^-TC9S5m=WmtvLprHGZAHsv&pe!PU*LTudqu(9@?qF`=EZ-98{(JF4 zBbqaT!e7y+`|O?bHtrEW4bUoHn&(!` zFf7wK))LN1V)TTz5{ErN>+kHS;V()2tHr5G&8lzqkMPH>lpw^C`TAK(fRa1u>!}sj-oGl0mdp8oaAonev<%-*lnn^QNt$a={#! z&rl70yN{r15hBwKY*rEYOv}D~p6zrNI+09fv*YinPstt?oGB}5g|k2AkiiC8d@XtH zXXO)wYU;4c^`Ct5LQ%FDDW{dnesLi(UmVu-bJsT{nX7;3sv#HQhrDY@IN`+cP0kB8 z5X|^Q3Q4;?lI?FdN=X8$SiBBM^q$T7^F8nd!X(1)O5{yc(x|`Z4iOdFxeKu6NC~gyP8j==k!2Of2^QTLI zMce(fRRiVn6e$F1kW!F>S>=bQKoNgJJ*8J1@&X3o-L_$dw+h)sM+JA>7vWA54s`@p zQ7OKf)}m;}TY8a}?yb_1NpjFOxP9Q?Q&1$hX}ANa9TGQ3hefvWi{sVP3Kfr)DBO*C zenN7}7s{As5P$IOPw9$hQx2Gpyw%^TO(u0uNxAi4v*EJtXiHYKhj5C zF0>(#Tu&Y9;OI3w3Q{8SWZ46(@ab@enDxouOQ@KPf?#6GdvB_vhNGWjtcMsQzM_%w zPA>IalAg5Q*5|4moo=jr?6Oqsgj!oZ*zlgLKOq3cl*>h$HVXWTlp-v34*jFriT`vh z&H7fN;tB}|k!{2}#sz!A6Fs@7iInj${GuXR*^76@ijYcU84Sj5y4J9J$CWaeIt{;F z77E6R3v>DDB67#i>2G=Up$@ZXN_c{39bqF=b2r^GQ_r2A~ zQ+1{C`1m2+G{TPRb)HlVQWC!@c9Mu71F9@~n;eT#R30m32`*ya`<3mg-y!FT|;t>q!9JhSm_ptkA-OOQ-1Kyw6gTYVLU7J z{a^tjPVAXT1S_UJEVWn$l_DmNp}L_TP>WB5@g}Xm4r?gs9_W{i>1i5b(z^I9y0-or zp`;k&v!;KaU>cz@x9{&^eH$Nq7Lnv<@V$2`EdLwm!A0A*E2d(3b&NY zd5Ax8ojXRE4|(=3XJqY>knSP>ql(Fqv#O*;8t%E|0H4A0!85Jq*(uX_v(XGx+1^oCyx|& zvr&Y#`vh|Txd;l|6LPK3d76?7h@-*8fi+y0P!w81KJHx{`wl|eMtZ3LUzcOZ+q(#4 z=Ik|o)aHp{wu3MZBtH-aL?qI0vgj=r4P%X;ociLB=c~W*CFVmzDy=&-F&@wOqm1x2*g-5{^!&ftq}= z&-O9o*L=hJz7oe5`Rzbjd5h9u0ELn5M`X};JTW%UFV7zwxB%e_?CUX{Tr({Wa_4XW z-jJzAx6BbPW~*V@Xzoedn$CIt!MyFgg=bTRzQ0M*bXMBOOe5S$C``RpxV5Kl)l;^F=p zkQYqpmmvP8y!p0#PllGW8OWB}+Hu-7_E=2rxKql<>>y`UjNc4d7z}sL|8bB&52&9x zb$Ilu;30Qtqm`LB_}9VWxtZEk#=Mp;Br^egBi1DYFP1^PQNiGuk4oF7Dk9E*J=`r) zi?){1NXw!X4V2KiN+$?LyQerQi56}nak<9+alVLQ2ePrDLB&G6Zr8~-!b8gVxhsck zV7Q(j4!z@G))2iIO*;;QvQU6t*zNrJayVv-Q;p-+h|$Rlz!1NeMbMosq5P&>Y0Pbb3hXOq#~mt-aw;u5pzyW z9`xyG>-)LQ!1}eTwI=qCuO2+-h`6BwzM|$Mh%iZ>GW;9|z7B}-lLm^9J(c(c8fci% z*5PUj@A|eD1O%c*ts+ayAOBqyXVc7ZO=;PhZ-(M$8O$KEoa;!^TyUNI2)8rh)vY~A zhTygxJJ23+FG;KQ50T4S1k}Mn%Roq0+Avo920Uwb)ESB5w>t+K44hMbQkl}Z02;l7 zH4kgk_vPGDZ~>?)mxy-xP^fai0-ldmOJlF4IZpSdE_1frpBWn z@WH&X*RA^-X!p6TFx?gTg@p&5RWE5UPwDx@hkb85>MZq3pX?~Kk0&Yu2*?$MaqR?4 zfS?(u_a?HEoet2AKG}W%I2f(n$(hbpx1M?g)`F!976)OW?)Dqhn!p`I8%Kr$yUl73 z(yu*v!{2OUdnp=CNKVEmM&tr%7Y2?NPk)_qC>v$*RqFf$X9BRbL({k8CH#=U_ARiB+@oq5@zro<5E9|_KBou z+JE?-EG^_O2F8oE_isVL|9gPlT~!bndtzK zlW7Q?<<%u}!PH;E(a4}vyN{akUx6k^XS&ZS&LMBbMFLXTEAMRz5%>PVjz%QYH2__x z7B*{^Gd!j=+VN!Wgx?dYGOzZRF`HBmU>y9eZZ}- zd^bi6zJZvdrS_4y^UQ9n?NPR3=;^+TN)YAGBfyNjv4!UtsT_p9{w}4TE&}*l6la_B zb|js&FaNCt<q_rJV(-duS* zD22^TR9+ckDzvmUpy*m_8}A<|A0K#Qy`MKdoUQaSJc?WCLNGyo`kFdr%iEPzDnff* zdKzk8wfB{&^BdZ6)|Y#dzEh}#zoU7aWpM@e?OgN_ER!8qR`=9f7IX28(s%$9!<$}d z|EkPZ#;99S3d|M^1>yoE^YNR;*G26sV*fUz5S4@1$@>qiv=rZo&_=U|io_619#e*! zh~KFO{uHlP5o}1Q^*{ExD{cu=qKiA_3QUq{hue_2A1L}||No~JKfh62DMs`Y6mzYx zs09EDE-X>hkfvwhLXZ;z8*KaM+@Y%+C+-GI%4;T9spw~sTc*|pyj1!J_L#pJI$r-! z14!d8%{L*ABZcbJ;ZRRUA^00NF(s`$c$gA~MeiJw5GgZEG1fUP5&ji~FMOHWa=`t` zrR|_ggatC9Y#x%4%A;Y)Wr{y3r~4X~_9>^RS#!LTZ)289B06~{6EEYIF_PL5?E z+j>U2rF37k3&fA61i#`RUN;NZ1jHizii<*}47;#P<3zkO)1m%-c_8xURn(1(6PaJHYz0n? zLp)rd!9I*d2s@Rmc`U8U>vC=A&@rEF$)Ug)RE42U#^EnTdahMafy7Wmo;3bYl~p>) zo_j?Kx0}f)H*J@He^OX&2w;TUP?Qo(p`kT_&#f=*^{a0tw9KOdutKRhJCMx2?io70 zMB`3s)R^5ozM6RY&_=T;@M-5*#y^JPg8xuCOqJ8R-2Qv*Jo-qaFkY4n3K;+l_c+Cf z2gIIbQ5>GCl&%6P^0_OZ1j3K+LDHAeXrWc!S55_{_zFLXR-3u)Hd=np5OJ!(R#;rO zEAtMa;7kCd?ZK-nu}Exy!cE5d)2V3?&h}iOx+C|HgHJpui_?~Wbwnt^aE2&(2#6U? zZNmIU4C-|*_Zkxt+$(Jh^h7}7rA}S;!d&q>_^ik{+mVx5L{EDs&q~Of8ZZAbvQ|+~ z(x$x|j45@#Fir9oBUbY{5e;7XX2^tgV-9`zLJ8`i<1IBfy5ogLUHbosOshWuQMxAh zMY9&6F!8=mhZa)HE4)rEx7pV%N3t__1Uc^xB(kzdL0N2@_-VPP=QUhrpP{|sMTk&M zzUw-}|I|z2%LjKftW>7pAIv|1+tJJ)!V*V!ad|qAXSfhDN$;GwFn}*pFE>mlHCSkc z*pmBzqek#op&*bk2fFll__GY2=P~N^-;bb&QZwkhro%JEWP7$BEK`)TZ(5yKM#WCW z@p4NUx5F~*LO-kjXf?2TR0?G+ zO~&1rJB;3lu>&Vy+<4q00T_*Cqa&Xd=NBt9$%-9^?Y=WcNna8-@mbDu$(a>bSpI(k zvKIi~+1c0=I;qwJYXzTX5|3@RGlSH%q%RcUNVA}mIY0FR<8$Q!xB++#JPI>G0xi77 zn7i4XPnOLsrv$nNv0Jnf118T2yd(w=Y1;713(MnAY*dshzNxDnw!`J=yVlTtG)8cN zGsY*l9>UI#4Y!;@sY0O}d2zLha<)2>*6b`5&G`oN^jdfWMc}Di{}!YRiB>sR1WR?4 zUOi!ljOuCGc#nakTX}~DKgHt-=$el=(fddznqq4u<}<#SWGE5|nrhvtn%L>Jk_;{w zaWE?V2h?Y605N|UWP*LqgIG&H2jcZhr+inb#ya!VP+%l;P#3}(YH(Z{2w79SZISUJ zg)qi0>BqaL;&761$s@8GllMo0llK2OTySjPq1Yc1mLS&Xmc{TQL-N2qg<=aiIZyjtO7o*fSz8TvhHtdy!nJ0V5(1@KKaHo{S zl&o#GTCPdvZih-NE%nd_e8Yq6XQl;n{$X$S{p(Ac4v2~OuB`mcR>J8Y;|e`(xME=P zO7Cg9zeIy~)M}mRf{ax1TZ6hXGJqRG`~w2sx@M^p$5lLm=5F&kNy?9c(fH@JU3)SPrcEiraQT-+BakdS`_<4e`9IBJhU>8)0 z7f6v9lj441nqN8itz_y8FGDFmW_|DwUEY{|Py*;mHM7?miI0rfPw(H+jQA#L+inHA z@^oUe039Fv6_)LCdXVQ6W*7P#%3Yqnh4CVXq*t=7=Hi>4^<^mgvzky+wN3{o&cOf> zqNLKPYc-|7yPUxN8s6qp)SpE=0wksHUmV+=05PrcAH@>{MUJEsCg-jj)xX zIvUwV7JM&%S$Oc|N7hDt`00e?TmX$aBeu!4Ji<|G5CT)M{}q+4rVa95+aIM=T@$gT$CozZ02+i z(`e?=5F<+eVFj8wSty=%d#d@;&r?z6hyzqr2Ok;Dob%lg)c0SJ8b;Y6V5x6FdG;HP zLCFU+C0v224emIlL_8?!Bw0Z&FSX+LlPzpPA>HTC+x;C~G#J?w>=xP8xevu#^xN}J zqhbx!hByOk{+X=qY_c%OICCTC{pF^=4b!x;$Ia@J)teWGZ1NnM-!P0$KvjHRLsvSt zpfp*nwF8rIBW~&*Q=WPtv`h-Yt?zYaMzu@`^qp&)o$tv zmjb3J_N=-l<~%mvbN!oRikZK^Ra`(T7i%bvw@cq_aL07g!ikCwTEU)JKzMt#B8c4l zAw@+PUg!y|6l#xJdCk}1RL{%(IqfTfp>>>+uzF0J|Is(KOkA$BcJMGKST~r6(jo^8 z!p`y^_3HZ^OzFWCK-_nBQ3HOoc&mpJhrz|Aa)vjb`*D(`5G6$oT`V-(-M;*>%`ULN^McP z-izv#(U+oMikg;Zu83G`yO&fUgxLm6Qt@xASwj~C)3B2wD_+Bd!brlcff&s8Ig&y~ zkbUH@RO~3@eU(4ZeFKCw!^I)7nxwer#^jmag<#h|5f4#GZZOYWa(>iDiZ;pCe@R<67Ia`HszQn3D(dSoq8;r zL7KsyyTWz%4$&S3`4uS!H*le}x`&zX_EyBiO(JK0I64(Cq(r*`Bg?oVs;BTvz%~%g z((OQ62dua~&vr58;`n5wf`yY1(A!2NEl!b?;@q=KPwf6U#Jvy3Kp-4u6JYRWX{cy> z?`q~CeBd1UH&&~>BE)%#5S-`hzdeONy&vxscE!DTXvR7(BklxbN6hkc-MaYFyZAPD zGUR6KCg7i4&&$iNcnoWuc$4B|B7FE9v?Gb8dpJ`%r)QR5sK!x;=q}tWuueqS^nU=D2y6|h?gc!N$xi#z^-Eaa1%d_AWF}|$ zu{@wWnA!0IFLb@=RJ{)H4-+``22{+JVgPX|D5XC~<0c?-G?sT3%Vl`Bbbm0E_@Evu zB4{4#rveR*?&adb(j2wWAiJk8pc zz;a=1N3SJ1{2=WfPOy}^-go-s`fG}R{d#)sfl{T+#p-B~Idei& zXe_D>1B+CY|~E=LW-lZu$ea{0_%;q{K_M z;GT+M(tF703cT(oGfZ0t#JvV70KTidAzdX#vu=@37M-%y18n1aE=NxJl+&JY{MVQQ zb5=xXb?MdRWUEp3OJVw;vg zlses<%hfAXk-E9ati&!#N4FDqPDwnn& z@H%rXo61DZdwzdkCz`ICxc_edF+RY|`eZl?fQ zmrzpFwB`v}v<t2U(M{wls+y^E?2SVDteo9rsGN8D z0?gfoIhaQ(<*36$b3Rr$sUb%^KIv^m;I`Rwqk!RiOTjvt;!Kqknr-NA=M0fEk9~^+H4103R+P3AKZHQWfs$; zCFU`r*fU~Q$^$%)c;RxsD>Al@nI7!#pxNTbI6rf_D#4Icp^jIWPKjTjlPOl?C*{U^o)q% z<0OfXeUwO@SEUK&Qn9%n#-;>-=>s_h=nK?oR#w4AydJ5aa}#a688g-?GYc+|xt zvZ!y+7$$t;H5e@>-GE&k)-(FfCTxhUQDu4_mT=$VgR*9f25c4u9d0F2s|22S4K+8{ z(}Dtn>%?LY0z?Niph4xY^#+t^s?*_^O{_q}UU6Q@Ce@l{NN|+OIKFzFuM&gqnjIo0 zJ&Bj1fqmzjxD|!&0l;=B9hk;J;vh+)>%?Ek3mJ2iAk6X}RamhP#X*7|Yiw0VSqeyS z*X}4a4K?<+e21W!q^Pud!&Dg$*<6gdagl0^2JA{MxGAcLQ_%fx!j&2@ii&)}078Ei z_3lC?*?AKKiXuB_hws6a&wQr2L+&VwKbQ?U3SxZS)o+Fnk5VUUi=^q^8Sx&?}43n(U{^)UpP?ZhV=6RjIYV1;Eb#B0Vs>7 znWgEGhQaDC0F+>Ru@Qy2Q8R+R*e=k}tX?>6+q!ArF8^?$|10zwI0j2l>@qB%N>#T%e;rN_Y$ST zBwB%@3;fKFG^9z-A_q6L-wo*_L)*CPeUVH2nqgs8YJivuy~Fx>%It(~k-@S(svHan zs(kEc!Zf@ns@a3KA}a90h8j--;=JG&#y>fqn><9nc1!6_vbEcnrWSlejQtooVQjzP zPnl4*_GM}>kCa}0m{2#j0+eU$(yFG`p#vYf=L2)aq7tV7*4TC1?oNW&;1d_-%)lS1 z;0=0hM2Xy(HcQ!L>9x!@Ue_S(ooqj*~^tsO}cY{z)U;Tv##j|FgH z^}akue2hix9tUWLx}rzWk$B5G{x0-1vIwnBV?N~R{RB*13)Y?pmYxt6N6BfU*@U&w z%?BCKoo%2FIes0FldB>}qX19$VboIGBE{)d+@(S)wK9TiA#7VC?KYOo+VI6(=~oE_B9!T`;n|F>~(Q?uU_@ zH@z>P7=9Wb|5MQz-vMO^qi=-Aq-$njD@d5D%`v~MU6Rk=lft`^UKtZe1=&2Pcd;N|=5_#=EnqpJprLHQiC>AKSRseLrymVQvd?PXq;7yWp`ducNsUFM|ea5gk6P zS~k^H$43%iJasFQRG`}V-!ee6&9LCFq>K3$#hHs zc78ak>2d7E_1iheFI{Pi-E2u>v96MCTkGQK68U}3!7o^jDY?Y_88CdDwupZ$IF9oA zg?wOC{etFb7{FcN-2q=y!tqiim^OYrj2tu$MpB?|6Q(!UEexo5EY%#rdnZulmnYpM0`PH)y&XQ}jBU$g2n?#*{r;n(9FnrnuRv5nH|?`mCTj~1@tG-k zQC3FsDq!(LbQ}X^4vf~N1NDpBXXhLntzu*<>KAMz1c1Q4&}*fK+XZh$_t3?YN;NXw z*fXY|62L@?1^7!%XbB3`=Cmd`HYPk%+D{8;h0UW2A_E)2Co-VXEH+|RL@~jQ^AE=O zhSv1QePMi>f&0WfLoxr*_0T?VmPu>=nfQBWJv>vAu7gt2EtE>jY~KLh_Ln(tZNgi| z38_bCl0{%oiZ3b&-+E81>mHG+$azffJ$QRS8rHG5kCc4H+>@_thQZAWLNL+j+=UJb z)P`*-o5O!sNM}|zmQ$5ZC2Z2NDXWZQq$A0y{vYdsrAjV);jO2gSLx=6$E<&CDyeEr zn)XU(7GDcch-CFAS`|*Y%)HBglC>bSnt04{VrUe_9LkrumkXbeYz2BEgv!qj2NtOX z<7m~Gek_5{9Kd+sA^^mlca8BmT@R<|TC-uqZ_-ii8rm-NTnMo3_4%Nm%lM;{yr6OI ze6MK?8$JX0V|T-i5M-(x9(f*H#5a#nghB9^LU4hur8*BfDCePHfyO^hZ{?P-n+y@C z46zADNviocoyI0hij|GtIIKP8(p~1ouo~Hb4BI@?J(tH%i9LEqN#NFo2`4|J9UZsn zj@w&!v^sK;2Pe&asSBsBpzb~3Z?LY1Z_}jnG2{iKha}6wU7e_({Kd&7StSxol=_;3y`*?c#{%OmyM>VaHCvybi$QNE5hMo{G|2 zuPG01gW%1m$nXpyb@*ocvWGH|@>JCxerwS^h6!5>|NoQXPS6cLy)L#U`M4f}WO9{%AC zuXWcMqGum6vLmq&j}P?GwAk;MdPu`SKi_p1KtsLmEo{B0R44 zXeg3DqAN#mAP|x@`XCZmZ6FQ)d^ap^w{=L8rU5xp*=0C)!xOW7ugQOPnScp;Vaubp z3`sXN+EL3gfy>TVq0`$}2lDmy3zcNQLGgfnjw{Ev-NC2!N~CYxO}vhgW9=&C+m8bL zMKvE87p5fQ0V>5a2#WygyaF+GdAd?;#y7}XRU@)XfNVU}yRs)7=Zv>K7Mo3(DFVy5 zz)Pv-E`;|qvrGWIF4TmC3?z&$XxhlMJTxdw#&s1Q&aLLaD(f6=TAc?YCG(tS`#L0{{YeKcuu94K|g@j-Y1 zn0>8i)oOx1uEYBX;2Nj>Z=y%azve!n0q$Dq;9scsM$uxWPn$&e*#7QHLllfz7YCvq zXUSzAK{>Mr>>;#b(7;coUQ|(Q38hs~YM-N=;yz$(4w?b=zJ+9IF-a~(7-D+rP4iAS zEiw^4Ys|^BKN|$x$rDZ=HtosXqd3#c`N%v+WoxfuYEcot?cX;2fo;UE!v`zOXnX$e z8~KPGUa}rS8%66-;NX^H)C&TgUi2g%Vfk04zEV5(B|?!uUQ)lg*zXV!IP^TKWdYFp z`%?g=()uoBgz~;^#0HS|nd*cyxo7~mUlZ2BcDY_`;iScPBu?p)O9Bp*;J==W#!B3k z0=`<`6huY@U%4ZzA(6UDO@WK|{M|)qKq!08E~ub5dBM%}P5y|E+-8&0Nxz5kHa7|f zS@Fq55jM-j2bYg76l3ayA+9u))&L_`QNe*`H7By9UjK@x2^B0QpVqkh45V-vQ(r|B zLF@;fOmr^t)!w}xms9<8E!Tph{Tm==Z91vUs<7d z|3jbUpC5R@sy{D(+^Seft-Mp`C)`H`D{=^z5RfM5lXay5$CM$3^)7xl89}b6RulZu za&a~8;;VS{cMLhho89Xk+7cuyT|E$E5>&x%s>DSFO}Ds===QiZjMRurYjUn|c|jPP zSpJ#l>ybR;KcaYP&a>y#X|xMC;ugwULOAScF*xa`C*zTMbREb}!mdt(!O0H?^-jKz zFltK|{L6ma;hENu)xk2e=tK988&=SQ7VALucR|;tZ)SAskwSExsMQ`bXHF|mNJf{g zhky6icuXn;{U+f1qW?%X=H1wE{(gU|oweLgy2vJKjAl#aay8omtsnOR^RZE~uSx>R<|heCPBzyr%uG|eAg6dDu#HG`@U#8k@TKm^7rxViN`(t0cL17 zHU%qw_~;Q|VOWgDaZv3!G)`w(2daf5L&yVhltSNI{v~q3_IfHewdJn^8NVs zU#gj?WSMQrk$G3XQZ+9zn8WN$jrsEXBID;5BS!l=GPS$)BRI1Jg@9gJ^_YoV;fhR~ z<8UZe>~s9x!upDmC+CgH#0Fddfo_LrxlDb}oo>is0$!v!2B>8X3(!9r-F3K&x{S5F zn}=V~YHCGMaF8YAmkf*IUNL+UVTDOH9Yd!-w~mHSIx7QM=R8Q zMM@B^X~mdbOtMxbnY@r#1OjsUG$JR*3Etzn#P5b5cPg`FwOa1NNj=Q$m}9peJ`-$W?kWo;+n0p$B22L8s-RbS zgU;UGV|tP1Ev&qyE=P1~kr^QKU@9t_7Vz&Du(}|!}JxUe85kAM4u z!7RR%80VS-+YjMov2Vz!w-affrC?3Z#|aRIEU+53%)yfOKGKuU0LW0U4{^bu0!c8W z@XV>n6r(2;Fu7O-_dPqXTc3^(FKPg)C9#4lLK{R&R~{aaI`6}L5t@P5Iilahc{T;R z1;V}>a_53!bn44~r)Hqi1^ns_;6GV+NPHalV9ZvZ|K({-%u-f|qDdJ&kT3jSv~x}< zdjOk4b|*&Xjtk|Z0xz=;D$f2dx9p>%M7`5Rb#%0gk;qxAq zaW~TIPoDJk=NFBOs|NK_xvt_NQVsmhjA|R~^ZgCU-m{QAoOP~+C1drmB)r~2E6hXR~MgBaI<-(Y*4b42y*40~fe$c`+nK+%+^H-PhTnF}I=EoTJTV=!aj+Y7o-V)!*Wv7eW+59RG@3j|>ic5bXH? zOVCmm7+-&j4<^ve)@8M**c3tVCA?z!lGRvj`fEYMk=Vc_c1Hzku;u|>+&jD79{#Qq*R~ZntrB%pu>@aLqrc?CuKGhlbfJLKGDn263 zx^rL1C>tMX^<*FzOh=4?Y;&HwyJX31;mm-$yHS?cE8y~eS?p~%kreK_j}q zs_CLE8JDbvK&}c-u3pv2L7j`djeZ^`Ulv}_@O6N6^rQ>ThLyPNtIWDIYIDyIZGlud z9~}n0wfCUS_N6^(XG6nOpH}%QL=z17p(R&hJz1hRyW~@&^ZCz>7H`%Dp@&F!MW9JO0bh4if zq@S-s4)fAT8#A!44=&7Jp{E8-y}6(ydbhI+t=={$;4AZF@a1)iX!d5~r4I6yhLMTt zim9efu&rz|A~XF6Ey_cyZc^FZ$tlM}!Wg-FwR@EeMzkaipWI2uB6y;4eX70|(>94hDyv`lNigm`<~oY&&J&#p7&{&C8lk_-T)(EMD*N$O_njph6d>%X}*Py1jI#PbD^r* z>>o~vi;f5-afKpqD!^oToNXam&QOus%5^-Nw9#uX_29UYEYrsJb2FPN3Ozcdx{P3! z_|I&Amyd}txMXZHZ3vKGyt)~Nra`pH*Y85_CS^goTy`={a7K+F4d(c@fBRAH?wWh; zVI3np8zcZ#NjRI%AsHUV4885ccFeX6sRfH#Bo#0ZNv1 z=JMYSr zwf=@mVq9Rt>qah_=foo*zP->}^iS+h0@9UbgQfsno_)t;9h5o&IH`~a2s$-B9X>S3 zd>w|;XC}yWmGlH1kB_bc4&%W1tePdKey>r-%!HJ11;rYTYc-ucE;(pV>T<=&Hr29pDCyUyI8NCBMi(Yy7P30|^8uT{)%x4O$- z;YO({RTx+)s3a0;zNu;WqN57Qz6rmi(*aN!!6N=v{sU|SB)0KJn_wV->m`t8R_W3*I4jk|h z&NY5+^br8bmOq`U{J#Xne1FA_-JsLWeg2e-Yh$xgO-bkNGn@#l*gr@tKGBRej<~fR zrWy5|E4cm(Ynsvk;!}Ou)4VC*w?oy4LwR-NzS=Ztl^a#tz?P2bNL?0Dt{$7rn@MHz z*t3d!;lvKp&XY;?Gq`)YE{Qw){EmaSz}uZEJ5u9htxTt9T*D|v(}_lNbuyy(pVc`e z+~&9#yCTaClRg0(txVXd#Cp^OoqXtU{mzWB87Ls!XU+VBH5c_D>)Hef+2IS9wG=?c9jY$94L`K@*n?_DWG?&>dF;{hi!17BIJ$NJ&Sj zFa_&>D8X%so#`|RXLn^8O%G&`gBMXu+e~nPdhThOBU(|l(QM+O~ zWTw|nXPtL!s>IThezL6Pb6njdgLrG(ZOn-W9pzlvdx)&a&c_e`0My^E=li^-PzrDZSps zZBoQ#Uc$bv0&IeEyj(O*p^x81iS9SxEtqaw3r1WS*pez`5@gLgRtji?M$yq-nxjih zD4acjmO1u(j*I>QQ8?G8q@OYId`o6m8p2nB?iFyJzUU&cJVTSGLJ4iEP@M6bo)*Or zu9Io*#DiT#IHH`c@(Z|Eev-I?GM3u{VTo{S7C9t4)f)ZKd1ccvj23aLyTL*d%R5&a zL1&q|->KpMs*oExuE1eduQ>WXBdv9}8+_Nep=E(SdlQNnb-|=622Q~=DcnY@HjwU4 zPvKG)P}*9k4@+Z(W${gtjz(rD;~6-s)#WaxcI5NRL}aU=AVZW+byH68{vD+Mz}F#<1$xea>37bK3|-_^Lu z5g1dAlfHZhi6DVy3q0%+To2<-`J~oE;FTrd$~e=18%fLq7X)w;}=2W;O0 zVU}mS0!*l$wIllNP(9vwLQ(^1^tP7TXUVsL>{Mz^A0Sut^}^B?71QFrk~jG^*^z^v znF$v(2~TxF)jwOi==e#lS)KWf_DuAVx=%UQ#VT~j6wL5lP4;M1%tEt}S>xwkpWO_e z5@;*Uqg6huArb#c^Yr`uYhAF!z+m4T(X`fYgi^(Vj@HWZ!>I(6E)ql2=r{|jnBDpJ zg@#Bl##ukicC=2Kn86e6y8N5r)bR4FO;AtCAlaT=m@FscvMt5bKlZO!7zOSj>G_en zp?{qk^Jl|{zK(^FQ2P1e^7xC#lLK+0!`*;c)~`eMLq9r3k6Ui*<>=%1AespYeRDQ+ zQ9U{Idd#`~7-01VHT4pl?_%~>5j^VzM|WPrw2OUO+wCoVYbEu6H-Uksp22Npkx^ve zR@bPbeFI<1e5Qy-%3CHG^5fif!>}Qc;t@y2x?_5>N?oh;mTXu<+*6iVer7@(SKnns-8QaM7Hpqe^=ZH4CRDA`4sv^W2c5wix1ll0es4AJXcJW z(DA<@I!Mp&?UXcuk0TeGtpFw5OL&5yF+M@?0!`o>VLX8+jz@wA(K(&Zi;OCXa(=88 zh?XpA;ott2qRK6{4j#Y%2nU*iAG9s(^O;aR5PJEIPUptzkOOHFe`j6jiSZdO-aX0PT@c zTR#KpHkT05wg~7V4;s7&bxm$~M$-6VMVLp?)UqU)C#yJ_P`Q%P88-8E6$ypQd4*$5 zHo!WkD@U@tWW^nt{G}%FcH!s?6Ad};;(`WA+8*yaQIVz%jQIFKdCL74%0%ao1w zMh%D)zbWsas`70HMq2$K|MJEo`~cfIlq3i9LAPXP{oWzKtTw=AmVHBM!I9ztU9!Ji zFM=x^aZ;amuOC7hZa-vJZ@6NtHvlHBEyt#m=$axi>8rF4;-EvG8CtZ(D!R{QaAP-X~XjeK7+5T*xc~N`I@P;!Gj}`)8hIQ z9R4G9rpqBOvKJig{nEelxljevk@J91>Ueb4rBhg!_>^y=9dEK@JQ`7VjBr>Kk@7uB zAVObQL;x%cfJLyw^n3J$NzPf>H{*pU1_!{`xi7Fa=knhw(O!PFt}as?B9rjWHHF#$ zOZp8C6EFYpeeatH0?#7;*oT^q`f&1Uw0HS=uwv2gh%!@USFeeLHGgbX(jbGo(_jXc z)?q9VrM;XlmMLU%wSr`P1^%rPSwZ(5xQW0}pG&PEzmW0G-iejxxeWKo<#+2#%J zetPm6XIlYnY3>MB+FPUZzp(GN2=^8?mXW&@@DLyo(}xQ>PHlJ4K2|E2jny8K2J8uC zBLhqAh%5Kc zwTH6f!NGk{juPk*pYr<4T=yZ_VeNR}bfxkqtmY-n0QNj3R_m%=X4f(;- zz^`?nGy3*c(XKTRhj7&>Zw$7oUXULZ=!LpJ)jr`-7hAH%f6?HQeY3GDz7V~r+(LTt zC@83gck{e5ra*X!#!Hg_$-8)vf~z-k*o`7gH}c9y8y$rsn3k- zOj0KOoQ86Dl-=bI2j+EP0h+n{uSb__mBMYnk+X9HhN_=CYo_+UtfFNbA8h>~h9e#d z#Y!O80sh<931UIb_IOx+w2o4M6#H2%gPda?wo@?t)mF~j+dgpJimE7xx( zsuU`2W7u;^YDNSaY%!f*60;EaRC+H9)WY>k5oH~kbr)i0bHx^I>j_+yoG|FoiK)XHjp_6LU?=n(UrnDyM~`x+TtRt z>eI+P4yChHS&6`3af--X?;iX3RV&0dpNZE(zoF2)wzSmaJK(@`1uujHegLpQ$bjBz zFB8UEdoFLq6TeXGJLnw+>aQK)xaSaN(ol9S8p|t9+1M9;klg2h36Sv9g;97klFm$w zdkyLtrk5G;HU~8kgv*U@dGFg6oORIQ5zh|2{S?+a_Iki> zmW*M}Py<6&Z*mHTZ?-XYu}9z+6Xg@KxW7tIPF$2l3N5Nv$PxO@56f#Fw9E&vhcMf4 z^um>62QK;oLHyrEBW2esMgRDRSGXC zlu78+7^m!wI`Yz;w6z2F+|uv3`JW~qE<7j{n+QLHlm~Sz479%B5!+kuM6QUW#|TPn z4=-W$g=b|6v(pbz>}cA*wxecJ0%0GQ26b}S{QcDfh=Y1?udaMAOH_m)I*fJD5qa7D^mO{@wV-#JZMhM3KRTTOK5R7IIz~eDBx`KXk zB>mHeNp=ZCJA8pgU!q(rCW?R4iD9;~to2W;I96}<699J~C<9f2KC>3fLa_(yfal9f zC9H)u5Uybuw_u=OX|zE)A1#E4V7-rP-y>Cls?(&*R4MS?Cm6_FfD&aqqh!baqYxE> z@Y+v63wxA*HQ#f4^PfsRlybec{tc8e(=NGW^IyUhy>%KRbw#2O>uo-_rY3v}q$_9m zAffMZmV)ox=mJU)!cDZ2y8rPQd4-fr(@&E%$wRJ`ObMA3ff z@6r2qm13pVqnJiIa;jU9oCKU$Yz>G2C|32}dLNNz9Bwsnzny5i?$Qwh;?U(9PWU}q zAeQI*k@moo*(Gj@T1>y48@jzaas;D|n!33C)B8EqfdTiR59omZKF3nE<)mH)uq-QA z-Y05qb-Sz99{VCCcF;6KJ0)0jQn>D4wegln$o;VVB(_sj#GWyUQ1=()wM)d@)us00 zPE4ip!l#zVLI8yqdmc?AFtMYGAI?ub>W(g9O-HA0*^oH3G>(dJG7Tviq$YKff&t{I zi$3NJRO5<%6FXp`!9xD8yKpMna;%KbtH=DA3N=fBwQU6sB~)UTvMDM5g4n$$p|(7- zUkhkW=nMhJ+mt9Um-fM{0n`O% zr*kxg79CI@>8#~CV}i0J*L+S4*=+CNa}{<5V~$jb(nXrmej5($yXFVaI8eg`*0M>? z6ajF_U;LT|KAB1f6X)stYm8&iV-vxVdWv_T)8^+8&h7$rd>12dY=^Z?Hg&imyzKG9 zUMv!qgvn61S>XgYoFRqZVm8iq@}6MQ=0G}4c()_c*~(e_S83a$ij@)9=T}!4)6LJm z7ef}XiBy@Qy% a(KuUkcF}d;F$QJVCgZR_o*?1au=sFFH*z@9nARpF+$M~J^A zOP;<-=@Vf7Ol72TUz%bt!x5QeU$BYVXS+s*f;=;ISz3_wKl@#@5s!G5w<(s7Rc>2| zTz#hC96|)MWbJvB@q~X)jHI*95hmm| zOdwjnH_w<^!8g<*0p2OzaN_)V$Z`^LV5wAEHm??k*^U>uf$`Yp^Ko|pU}v*J@;w9Z zn9lPW0timEga-_rRHQ~1dTcBogcWb6+P~O!AI}e)(oY1WX6PVl{dc`%n$oA78!S}~ z4(vAlI3mYnhXBK_a6UE+iJ>z@9Q%ThC-)BP3s$o%AobqUiE~6?SSROq5E26fL2zf0Mim9S#DqDR}ArPX%3_8y4!o*^;y zya5VYKGu?H@8BAw1%^K*sb3WF1ibM}c!GP{sV;xTRsqi`Hu)*k6WaIhy>}fFn$IDr z2!=A6I^upXo9#tOhPtccZZc)R7ItUr7d8uf*P0>=j4Z8q_FNyuy$qo+dCItqAOvlNgnBhZ~bQ_l(yD^S6jui#lg>7CtAgsMt(O z3Fb+ve&a#{k(bmjDAD=xQUpiun2nO&bljV{kR(wKC~leo`QT#eB_7fVueC5tj$92` zzWg^vfb0h(AG@ta-(7Z~)sdNj=4Xu@k1m^?B$5`2O<8nz+jwH?U}e}aN$7mU%95cG z!Oo_!dbG1^<;vA@n-cBV(6}9)$$p zVGn7e21`^yvmi?qe}t;TB0t@fU%v^oku@$t>v*sge7m?V;X?swag`0SZbgt?Elavv zm?ohTeDOqm@Y5+3mgNUvds0Mjx!?r`VEneprvSpF=rUDe4s`5JVUkJgIyW(-Fl@pR z*8sIKNLB&|lKywM$P3ny#|_GzEr(BKkpxCG?k-*(U~gX;@J7Qav@o)5oqc1Yjp4CA z0uGZWx!+v!ZJNV3Vs)>=$FY_wL7bw6+&X?b5Nd-mB#2>Dz_o?HcIu2pE`yM9?ooEn zjMqnhXdih(3>jXt@$)>l+N-WHG;Nn&<7%pewcV@BO^8ZyuQ@j%*8&g=f(Od>%NU}1 zW38Z3LAI0ah(#|#VNr+PS3+COY+9>AG7sI+uW0zm!}RvT6Z^V`GE^In8*n(5FtA?b zZbBut5`;dT*B4ZnE<+YLXj#BE-d1_Np+&M^OnDV!$o$YT<~BK*=*dObzjW?RUI82i z%AJ)K2;|hK2^w7)Y9l{<-B0#=fK9$4+hq$z%ozz_x)%Umj|TZl8>194 z0fBS4`Cne}rq1r`^5OL;_l%;=@CJuEx(`$m=lTSQ2jefG42iBC@D=ubeH+Dui=7?p zA^bC{P=Qm}HWO%}Fs9HsO2C4|03*Htv(I^WqFlmV!b(tyi^Aq_OI9vV(P=d8arm3u zS0$%l(9Obs63P1`cYgn1g&qmBM8A8J*MHk&%_@v-kKXtTnE{4M*X6+F2jG-v-Op0 zEzXtO!AqZRl~RR~3Vq^1CbU`;e#Bz?-0YN!g6=p?K zTDe0f#5Tb-I0)6Z_nS5XKjEptX~b{IWA%Cq|IBn1@-!Snnp$1p<>{6N7Ft{34ecQ; z0v`?B%~#|m6-M{Vl@&`wCtK@@CNKJr`dCK=nvy_Vix&@;?V5)B{0Pgg$%VbH@tP9n zNDPK~q0NRvu`WGGsPVR#fD}d_-BxxSPJGoHhM+!gtH@KbmXFXNRP~d`9Nz*9pQobU zNf{)R(RRd*`FX!oPUE%V{XbDx|rX=jU+I!*)M59UT05|8`N40Q3&%(yrS+Z+X8WH87F z&tmaVz~oT)q547&DP&OB%Luk&qIRnAZIRl^a$<`uRj&#B%u3;T;@9*~K0i1Ob)pXJ z3D0@vfIeJGcPiSzf`N|__fp$UfY$-!NJv_ieO4rAV!#uDR?o@YmulUqjSio0fig^> z*aFYbQuChH+_ePP30AMI1Fum1M`7h1J34wIKUG-l$&$tA0Y*QdsJu9F5V1*)v;fiK z{X;uHCLE1=bpfH}#06thBMNAgs$2(}2lSdFXh&sYnpi>{c1+{a7g9;A499kYda7DO zXThJJCW07w;2f6nnRjmVQ5;VSsFyo3(EbK);t$%y%)a2^fY0hEb_Btc zM>QBOc>_ubVQ|mN_6qAjM`WQ1y1)V&E=$Vuh1@>(V<2&p;&qWAv|XkGr6?^hIlqTi z&x*}4dXc#Q6y?fnHFzj>9m zI+)Mo9f{PU44{@f%(kZYAw{Ic5r#ebZkb~96!a2mb>|jPbF<>v z`@c=`>JF|^26;46r^qw)c5|S)qQkJ;+-KFTb*D@;!=?_v@+!GUo)P{&LVX2}WS>PP zr?8E4yCs;fOziLxIu$-#%cA5dMckm^^oj67(SoOeM0O=!LnqKT1}-U~h*&OC-({W( zcZZ(5{`t#dCCfim(@tooHa_hV3*0))T*=*U5UOmANDVDOv73zm1!Kl|!*%M^+F+Wf zknG^c_Vg0|DRb~!uAGO2PnVf-d@rtzk#a4|y*vTDK8?FP>Xrx?=?QB>qz@Kkofs0} z3Lu|=mzhJX8g7WI0#`i*5P|3auT3$L>3C0iNdUlpuHE_&M0{%sy8U?|Z0{}&W238V zp&Kg1xRN)qx@A^ib66oKLpBBOd#o2{>Dx{&49O(Rz_#}QaxD4Yis4yMLvj=b1Ut(7 zj?e{5_(1b`-xK3|#0+0refiJu!~)Ti%1OR$|HuqG^>T<=FQ)gmF!fvsy8A>uR?z)f zy#_^NrnnRm93(b8S-av0+ zPEE$_@-R>S5ZL~nX_9UljK+Upc0r3dGec6BeoEp@gL35vg%12raCx+)`L?Q*niM6o z0i~U=OdJCgP+j3aa&nDJZYk3;&(~IL1?xxkT-9nc;>jIAMk4r~D zB2r)D+^2Hr#I|LnRAZ@5#L;<&OBGBLDwY{$f632FD$r$eBtCP&$0*Av3!e57)3+h8 z54IU-?OU5f$zVcv<+}Zaq}Su;f1?ifFFGwb*`}Ifr7Avk-v7aqx8%kZ*ilS{;iO{n zsgi_)DC@NcGfXfjpg>hhFMA)ZGV0$_Kt+B_PZIbw@ol`d_}}8!8E*jA#J;-iO&Z(Iz5-=As_i{k>bo^1 zyLE%seE137-gSK|#%Ra2-kx6Ghw<9kVV}AooENAHsaTuz=e)5|Gb|%>qbAq-eYFm9 z2?9EkcVYj^45YdD%)C;z3Bz>^1lQFqQ2m=q<*lX0*a2c9d=Me(ODsViy8015yMyjF zcM56OUSLr-U{{NeYnQ##IK{uxr6`r0MIw8BhVdr1ynK?5`p_Rp&qirz>}K7CV}?ax z!ozHy;Sz^|LD)+}l-Wh6htEiQ6ucC6M9lL3x$<3WsNBc5(BOz{1g`n^3?Juw-QzSv zBK5(+tqowiDY@B$qQ>(krub^Jl(8Z?>L_|7QC3G~Zl36|S&7gzC1)n9O(m3rG%@~x z6O|I}-7}0ayTN%%n8c}+i9vR+8JOeRVHtL%FTo#m4GEehS48A}7yOKXd z{ayOe>vwn4N!&_wOYiznOM`0ZpKGqvu8VY-L>c-i*%vWYbkZSU9T4VK}r+$xTN#QK1Y7u_a z`Tttq1!hR@l)=;F;AFok4Uif|w$j63Zw^cnQ>j}19-AHgsc0vVWOWU0(>#yBBn+~$z$CWnb-Esg*tG91-$gYe6=M{Uzm04OZJ%bKMP;G zMW!hUg!kwoK`%Huw2!$1NZA%)aaTb70D`3)f2*&dMPM605FLr9B7l-GpO<(2k;2Tu7^W z;sqN4K7}XP1WHV0T{RUC8tS$m4MOaaIR=^VnY=T-EkghaMCeJ50g;6XTE2Vgsh>4|9@zG}tEwTtqlR z1iz{`=mCXCzb(js0^8GWh$V8!*#hK52Qap>L3zVsyUqe`U%LC&9B;;p-k=fuDkv_z z2qldZmTJa61tmeRp}bgZNw+8;BXOX5t=0$1_iMnnZ4) z9{lb)Qmi1E8wU`63$2W9>qzMr30ObsW=03nCP4-0Oa&0>;DSmRlhz+XG?%*1#q4Eq z_?>e08yGeqYpn?g9k(+wEV!0e%~K5El<-JjP@ng&n3cXeP5tTJyF<+RJpb|&kJE-t z_MPSFMz(4~esB*!iX{GI_PfSN!eDK&z1W zH~GWr6&_(-@%)M>M-WQP$q16!R4OkkEROrI%1QJ<8bb9JHCvpc zC*BqlxTqi?{TF@xdjKhWpOA5mpj8-?^O2XgjiF#{U5f3^xjOHi1lpB3a~+wS3$gPUZj=EiA8hCt(MXK#4?M(|&DT&gpw6e5fq15rJzY=#$@gU)1S3^RSAo{a1` zxJ2fSD12?EJc1AuvG!!goRc*AAdyD3(V?Xbk)_RDL;VVvJ}81EN|5{KAdh5_#2s?F zpn%FA11yQiWbfZfSYxB@ly)2TjooUECsafFGA2}c|1q$$=G$g-k?~BZKG@hkgJ^EV z&*h(8s*K8Z;^`4aajxZyu=U*g|Kn+Yt41+{(WNY7WtvU^K)G6aYKdq!c+IomPRI_k zeMch_ma7EGhB{qxzFQH|2{OEf%kbP9KlKZ%$oOnou`{#ue_HUp&{PuFZ&@qxEN9Y% zz0!^o7i0O<9@SX~23Xdz>K{>BEWCiUz<;0Aa9!T0gF#uRgfK+P$wmDfF=MGdg<_{v zOwTXT&%-Hr#z-8=5eWXYv)mtVdA|&{0RX`6L|BY!x%zCX+AGs<>oG!OpIto>ao@oj!NNPSqaqw!O)!2sjfJVJK^R2gnp};A#g9NhC z3qIMFz|>GeR+(4rEgGJoPywsg%U2O8JL(jj#MQ((1sJj2itamcshq2Vnherv@}*=P zFyW;6h5&zjcy-L^I~OEXw|XxNhnuU~&2HP)8Q1Oj<>RMc+5!KmolTK2r>wxC)?#5R zBm&zGJqFrRvnWZaod5oj-kan@!B z&6|p^!m^gJFcOd*7=QBhsy+IC+)rfqRV0XA)e|8j2Mk1$je8UuwH%kaDU zMnL@Xmo-tT_?Y9g@b%5LzQC|%_;S0Tv?~vX--B4GsVl9%VGX#5pP~TTnTHLO`7Xe7 zK1&250#3F?t|^FdHH9Po*~xCt{;?;D1$=%bLG6$%|98 zgmVcosUI>_*qhw($h1*_iUwU)xGB?Im)ke<;kyby!^|Pkt-B+D6ln%^hP^b#auPG~ zi}J1EL{kDKq`x4vh!)u{cen^cd{6ez)cAIuV~QAy(tsbK;5c2*A+^70Fxp(2nP!7V z*y<(5l&Rk1rdm3r*xJt_Ibfi69)B>+vmIx1s4z6UDod^*DdfEHY0T{&UZGuqUFsIy zx7}%-Kc@-8%YblScc`ywQ3Y>7M^VuCig)F~*6L&&nLBv|5hBIb&Bv+uFO^l`REPNV zFV0psy!R2uw)W}t?gLE@Frcg0@2L{Jhj}sFdBbyR!bSd!e>+TMI!4Klo{AiL&FD@~ zdWCy!+P|vZAnTgHz){7br}<8FvmqbU)Q7|3%w%U8&6ID!{$(oX^{;qbPTDQmy6R{1fqUiH5T5IEc9IMZGBqhpqOEjj)64)IJjrU_VwfYBRBA$T3dsxd^i7@;Z4trj z&NW_#R)hJXZtta|0avcPd-{&~6RGI+GNnKupv$N8U7a6rSB~3u_a$e#7W}4sstE4B z_|l&aQP)kdbD%vwu`zx%DSFg>F@qLtIojw&e(xA0;PNJo*dudOj7nF+rrKLGiklJd zSiK>9{OyUFwJ?BNoqM#<*CM@+#N)R0p3;#PR*+@DKD9`gWaN*$Ug4_0ML!u?#u6C0 z$=ig)(46l)A<{Byku?d_+9}ZydDu;D0A+)M&AXw%hBF$$ONQG(a$vy0*F!z*@~<`Z zX~1^re!)5|BaypE)?HC_?@=QR4YVc^7J{|72@9bWnuF<1DBuyg8YA{wFA}EY5}BXv zepP>xUoWe>*aD_J?6fX|f)0UBN)eO9NB*?JF{yid0Vy9Y>th$5m4JNjw5YIsXhmN! z80$7z?mN-g)rx#(Qz#h?Y6WNv{{+$9eAgIzT;s*mWS7xbeayv|TbekxyQhXWqbsuiT!{YgU_`2K41i=t#O7zS03cm7)UYC=Q?3l6B+h6i>)Sdt0j zbs)PV={T(NWSG;UW{E?A89#HEd`1M#6emup@(FoMTia=^>lfLiwViA4;yuW$kRvA)YhNy~xFsGHmN@5Zn3)Zum$-%OOU!tnCWMN$e1PkS$uygb>t4wht=0MXwSCb`0?RZblhPh-nw0hw;(Hbn&YVp`sMjH?4N@KtRy~`p%hh*X$BiIbhW9gC0f+}`|$IQ4(q9yQV6iw1( zodmi5uy?t(S!Xrl5vR&f5QKTHx7770JNwtY`}25r_r3oB8RR*6Y-EiemvSZ9Eo|#c z*~CJtf^YpAKCpsN%y3=Jpj%LgY7=`lxtzv&8?U#xd0<%J{kC~q*3ql4AE_HXEwvUU znH6qQx*FDYjMakSF<2??cZ0&1yH!+c11C`DQ=?tl?8oQgL_9wkg?EP8->Z?4E@lTt zR^q)@i;|NR)Vn}=4w0yikb^I~*7KylJH!$#6(1}N{*xQnS+8ZxveECZ9xQRpU);5( zNCO56P8_|dUw3w|d|SSbqxzpAD4%{qw*5vNrARtWdvRMe>>u+lEuh@$t56Axp zYBOIcaa0iBI3W64#nyWnyFYQeU(yWVFV_wj6$FiDL*+fGv~$tQFGyUqt) z>H>!Cn`f?gx;qBi+`yTziq3f_57rg*fl3j)8LI)uO*Qj8<$n6L073yC{P{OSkprA! za>wK=oLTtSqx&+-5UL;_GH=lGI8gtE{vrhEkoD6IPq!Gm=vc$gE(~|OI89TTUZI#u z@>&#F?Rsq)gS{`9NCZ#s)HmnZW~>YHb2hH?>L<7=v9X%=b6;OS-hc6cH8)BS1B;(r zMi_R5CwFluuF!AIXQY1_U%oU0`;$jR7O2|q&1qJxTlR>F^V7UJ4uq^K8J zyzI0)^jkd-&^M^Qh5c*(|F2`I6DD%%Q4jh~_`1}Xm{zbk?&k?58PmC8DCN@^MmW5w z`arO@^$Dn>Nfx#locMNIayQ+s@rogjnvU~OMcE#a?uXBErFyy~lU~;F&EhG`-eqp4 z%ypSa@tvm#ayDhAbj_Tmi+0-A3+RxYZvHk;f`llw9S^V2GCLMtm!(PVChcxxV;wKN z*f8Sq%SDgb`ekH7$>wGv)WxmtN;E73trXU zuIVTp*;7t(;d~8dUd1FO4Md5vR8ih{!jtyf3+f{3cW*69bb474jhTi@o7_J=hsl?b zMPIWp`UWZ^Jw~HwqS#dksrM-iLJ1LJ9TyWr(+1W~%cu7=9btHB@gYK;YX7|TFJs@3 zE_GqG&{__mx0X6UsHhmf0(Jh>9O_B_=})#d>KdyKxAxqbYdhaK#t_z0Ks{V$rxkIai;DPsBZ3ee}- z8Pe0ZO}w^f{h3#W`PZbT$_$Oi)$?Kfsad+szQ$$|J_@+%lEiHmt#mZn@c!Q3MgCg0 z4s;USrO%DgDMHle19C^UYv>tBo&DDk*!7N=K8*vebS*1!Ock`mT)fZ~-V}>`3(@?I ze-?267*i+O7A<C}evMA)vc})@9_=py7o;ycaNL<6FWoJcH7T|L zS~+d>RJum7Uvkl_6ydal?O%RT3f8~R*CfD?3S*LnhSdg8@~01moP;imU^I-p-FE;c z0v&)N`gB`(M#bx75v+BEQ2>UdYl@j?>V6rxKFMO{H`&+jv~A-2I-uE#h7WS?6Hk@~#6JJmh@vxDW0a{Z71 z-T;w;_@-|Tm!bhiR7m7I-~t3Tn}f@`R2wLCsL-6eo7sXBPv3|UUJ$UTQ>c%9oP^;p1gOtcO-O^y>GdW$f5v z(73ZW7+a9jL$z-MAr!-ifB&SekW!X~2+vFJ+!|%bJWg#d9$P-nW&mGg&DXb!6Jk`ct!aMm# zsylqk=I|$NAKi1WF_)p_j__{c8=v<==Lwy;jw1C7L7-yO%ncdwX%3JLo9mYCACVh) zy5dy?cvw|sPA!T+v!N=HN?5d6NU1%twkFR(VrKCZjD31jKrSnXEv&#T%Bml0#m77W zonz=3P=p#K@P*x{}a^Jx4t}DJwnPVW(z=UVM5BIVPtKmmTQ(0 z89tUp=R+x*2Oxf7@wWkGF~+hck@@kG+GANxOu9F(DNdyFHmaqmr5j#b=HhtKq{TuG zRObU2fJH9@@Y@O)dm0Zi`mWF`ht+FNhZScR5uxsbD&iY$^DgzB?Rt}dI$Worbk z2oQ{Ch%;KELgP%CO4YMT612LIf2n9Wg!kW+D7yEY`+v!#7Bw9d^HIJj9Q5g^Fo;M+u;GxR=c!pYBj`oJDoZmAeyut?7Hi0Bq* zO8o|6fXTi-wsQ`(!`?9;@o8AQUyFAd{cMzzM|evw8=|{_6-j^DpZ>w;tO)_U1f@Wm z61%W}&xU?2heGdWx$SH^w!XyH64peT9k zq14V#|M`#~Mq5>i#N4tK=G*+9JWqs3Xg1&$w#XPPad888BkKx$x?LOL%}tMVG7-8@Sdbm0(#Be&Qq@W;gZBJ62~|m@m)nOy#P3+J_@x2$ z^UfF;YuIGdTMPVKc=>^^=;)f`^?t8e{>xr@7dA1cHGYL~S#(k$d`xf2{5Q43Y9I?m z`t@3eGwDF=j{yi>^~t(Kv$Wf1Ugv?c_|rV%dvRaCZlhmBXuYQ4#@0 z@%QDm~LhJ5UwStUdn8dwY%HYhrG=s|dmJM_fAE>P?Q>!7fLjTRy z*tD-T9g{bYH&dk~^A??U!~ojTT0~ZXSPu@0>g@$^WvSHxK+>}2x-U_ z>O@_W9?DG3Oi`5+@-Vzm^nwctlJEg{KUeVV@PO983W}M(?YO=`qw@zP?-md77V|pK z(OEZ@u!z_ytFiX2Ibm3m0oASppCfY_K`hUNOAbSum+47gN-A2JQj33j*-j8^GRf6- zmL(Tr)qsJY-XlE8=3nH#Y(2G5({V{}2Fb-aPuUsvV=N$Ik#8B*@+E8yvT5}+ZZf?u z_raR_H(&cmFc}Q&fp3>CARpD`K(n?IQ%%icxWpaL|7A_pKuP6ql^<1)HH<CCl;?4`cgm<<U==`RYvvBVn`oR@B!!a-+;&7&M`HdB6RV2dJt zXF4)JZL8Q#e{gz%tW^*sjn|@DnFQdmjKfv_q2hTTFMpSrZE9joeINM$6Me2{4NHp! zP(G783cFub1cnK6R#80axdtb=o8F#^SKf@dRGH%Lh~W#oAUI{6c7u1~JPt?VTqRJc zuHYI;GectSy+P+-QLaWbu7P~9^+$v?{<3p~Tfl6A%-++sV6hp~#QGTpm2VerbfN{N>sHvOG6JYKc~Yrkw2Tl)!`02$g_ zuDO(pHOzs)Kz)5=TS1^SsrqEN1iz8lqD89G&kB0X{LLfJk}RZJShrt5WTfGx)gFe`C3o-_JA>) z4!qh08hCs3R2$xG-W8PH`8#lC|{C)i|Gc$l-33fT) zF2l+Aje{m|`X{z!Jz+ht1YS7MTtj7}&q}R#eek6~-$N@wZBHo$i&qUP!pN-rQNgb1 zDq?^j=*ICnI?Qi%H90={&tm|cxq8&KWXbYRNvp8x1Nb?~n zZ3B5TFK|GIs!vojzV#KtJ>7Y`3Gbf5{Wv#9=r8!QR8L1i^hdsBG-DpIn`D4zw!6@> z$b!?*QrnOqHdl6~Q)TC{F1c(GKUo4Zb(-T+zPobKljmV^@Mq>kZ(YDV@J}k1d=rcquRDnytI>2;w>C$6)iL7@HnHgZp_WNU26Z_XyASOBl7B$9wR zsv|2gnRph>Y4OAt`bHc{1<>kENatha=pmZDLCJ7(tY}`yLj+`)oL@wvw7(c92q4Ge za%J@H#;X`eJbl(SdkgZX40<^yLlX?^5V8DC)jTCtGs*%L_{pLUn{>53zcU5w;#*Id zZtd7T{s6GQ0rEv^=qHx&O<|Wl?Al<}$E#Fmn}P%DC4HpaXvB zuOPD2lLFb&p4Rdysy$>z8r3&6HaEx+>bNU#YefE@`G7XT=DoqUMmhK;iMQfHNqB$; z_jj^<;ND%8W3%=^GV)YzxSlv#{(nmHAY~VjOrJF_$2dhGcL)O2!!%a6E2+7y=KT^o zzp-_W7=m!;5*!|Q7d17%*kz(SQa0!h3-~~FWSuG<8vE&e0LGhY8q4ZL%AT)$TfGM& zlDFSZJ-@_%0-2#kPh4^QKEaHyjz+TL$mNnEJ#h%olUh@+>XK)XpGe zR@2f4RvSZPAMol!!x%-&GOR3vNMeHC#bss2L}7YA5bOPK0a`2U#2}+B#P%s&qY6`+ zffbLh8Eb~BSM%eX>vn)L zK@eLWKgpG7T*mp-Uj77_=_i0=ileBNl_-GP;>72C2=|-3K7^{p96Sw33(N082k(FG zzE=#C+8*I^y@Bl$xk{Iw)qtAAB%tB2w(wvfZ0I#HPQg(pcG54fqtzUeh(DI^(0L+t zBa&zKQ=?CMY7Q(NuN?NKr|)jD{Q3kg0$BCZ^1zW;tmyYvs<$aVXQC7(&7rFRF6Iu1 zEU0}_Wtx|Hk=wC~L?c)4Z)GLEP94&HI!X7D_Ob3KFmRUvV3{d_&f1IDwnbQ$&7GTT zV`Ft6Tf(kCbCvpB>2X@0KcB~>dJ;vfI`%_}R^d}|3X<_A6x3AGYck<}y%ga=g0xsr zcfIQBpmGD`Pd-CIO%X@g58bAFz8A`74hW+Ea;M(efi~s9(ptMSfw0Xwc{2M(7?l4c zthRLB6udH2zI>e~6V+Dq5j}Cm8=hccHB6!U8i4O78bNU1Hf$~k*zLqHwR<80GmnZ` zr#6|`_(sOLUUW3W7)TA@3Va#RZl@CF7SUEP1!AKms} zEuF&FvQp8>tv=XhrgPvDeU9%Qoop=jTu)+r(%(z!)#-aENszv)=YrCvIBI*ypL(9u z1|iI|(}h$KxL$3VE6L~!=*r_W%tZ*q8ZNVgBf%zzIAVKHhDtz22bFLe7^gUqb7R@a zdoW=s!c9S{e8jK#FH`T%Xf}VuQx&tiqj0)~n1y0&mr<`T+6H4g7USMO7yh;kBsk`# z(PH>pNk(DhE)Xi23h7U8I_HVQKvy`*3Jxg`sIBUzBb4==tC7W{pjQCK9_C9K16I)2 zjw^w2`w)0~B{Mc;8rb{OCId)!k<5&Qgij>*q8DbMh*a&r>o5A^#f#Qp~Bh6gqZNnXxP z;W4hmn70}nh~X7Sz8~jjt)Kn(ACv>=A<0OhvZ1!#yW9LpsuDZ5l!!|4)MM4vl;l?mddyE<)gOejz!dL}jKv|Zx5Xoctm*(J*BD;F zo#q89SG(exYzlY@eyVy5x2F|MIdJaV2&UzoY3vWRO)UVnoh#NV@QH{3aMaUZq^Xh| zbbay=cIGgFwke40ma1UTMqKEBOWJnzr4-M-A7LB}XP5j5aGa9#0KJ(iH))MpJ=4My zu~2;pmg_29LVB5ByL8%wh?NR?wBkUCm3b^it<}HAePfgQGYlLFx7gCi}4@ zVRfu;oYA>N-s&ELUq*QwOK%`r+-bE&p(r}1hx%yodGD15)Uj;Af zG_O>?f87?NZdh@eC3K%;3UuL0E3sGF5AR56AMiXdNf)Q*RB`GmP?9%2h;}YzU>_(4 zP4hT>CCqWz##;ALd0BkgL9&}5u^_^}qnqgUF3O1tm{~P;cpf4= z&PdJX;x1aW7oEbrWhlO);rN^uuzGwel%mOpq$17;oI+@mjRoLTTV9sYFRuroY)a>M zkrHFGnul%5nF27U=m1|ISugNi;8v4JfNr2&2ZVMfL8oe$mn6tdL2I}wG9>y0A6U`#zGwk!U5D`T*T5cV*I1zVv*?F>1Lp zJo81MWr6u1!w3#b7n^%E)MsK5YAe{TB6nhu6?D{^=-UDn&yIW*MQ$T$a%7s15>Rv% z1a)Eb;7K;QUJnm{-)@K)jky>ihA=BvXJJ%T&zj@!Y3@^Uq=Zy`!J=Q9OPXXws?m|_ z^hcO?3I|XClDaeb)CuQRkFBYB6D%uk3IJE^b&B^760LK+fuITe-@oc}Erhu>mle%+ zQ9V%U-K-_LTt8s;`ZtEC88&`)>S6*w@H5~gHaxA}H8olx(9hmLJbGE>NGy07D5Qd% z((sGYBg&xqm^TXb96V`sI40y?zSa~HwMmSGXx*E_*u5a1$s;^u_GK8YW_sG**u=uj z#p{7vEiB*dwao)(wyEc;X7dJ|^%W0Li<2fG_M=`9*Xn}(hLI)QXOUK_+SKSK^jb`9UOEAwtn9dQ3_JR+vMfQK+Dii^R>@AszREZweK}(U6GEZAHyB&l2r|)U+yn}rXj3!kC#2%&$tz(2>)j?s zGWyRowbeoK&gSz{wTSh^v?{Gd<_f7-^`Ob&JKMsWtr@=fPtQ9G2}_91-{W^U-_|&Q z<7He5;m^|hw(w|aYCS3`_gb5vzflIz(C;0-s>N~jBc$q1Fu+shfj`RicPFIDVm3r_ zeR@}YVqo`_9cQ=VQszm8+RIZ4Pm#!PX7KT0V*y^2mCyl~lH)KrtFV^5FrMeUIqy~+ z+4)rfQB0b#`k1hboG4H5#2o_HWkMa>G>JB@f)uWOQz%>P>8-@%5icxgK_66f(PioE zqW0)NMN5kRb1^odN!Qc`2BCz&=#-dQd%xR~%Xnx_`h8W!xq%(Erz$`HC_NLE#BZA4 ztmd1E(tYcQg2EP%3PY&?DWHGvUZ(95m8wh1N^MATfplSwt4nF;pRctB?4JIwWJJ2W z@N-3GeT3$QZ3mUMp>9403nb!lwt-osGN2gyru98&L*i=V(P*d$7%0LcXnizQ`h-z9 ziPr^z7gxOh&isK}8g&*-XAlFp>+k&P_$#7jZm*Kl;ymR~TOP8#4eXfgPq4Zo5!L_Y z8{UE@g$O0h6q4j#E(J4;d#K@R4 ztqLSv=UApKk*%>AQ7h(HhaKnotj0+MDOvexE)8rC(0b)L!*XHLcF7+6yfVIG1jala zH-nZys;O>8q*42FtipbG(rbTkU?{jb*xR;=$+-Nz%Bd>XE`ck?H}&>>j%?fAwFKFF z0CF>!St|B@x}S1=K7_48=Z^Wa0&}};$rdLL;pd!{zv%A+ZrqQ51jzPm^pDa}{>Yhz zfBr7qeeA5Q61&?&MxIR#>{u(bPO=evV+@?O`&0K*O!1SK;5B%3SvDb!jU7 zqWsbL+b_1nNK(++U@2FmCJ_e&aHXLO`%34+%M&DLYX&(j0Q7X4g#AUHB~ZILpj*TX zxPY3_cTInBu-iZG`lmA~ax$1cg5lqOjn-Z}#w{gc!Y}iJvd`sm==lcSg(){o z#R?e`Qp#rl_BsOWEMU=|8H_+S(%vi>8*u6cn1AljG&7eJI}G*&_MvtuxhhbZ_d{Ll zR_Q)xCi%?}=zhhFHHYz5jWgHDktu}abq?1++(!$<66)FuC|c!?3Ksefl#tyjOSfj7Fl6dnwdSI0kfRriG_tc=y) zv~*)ds^8obM{?g!VUzGxIRg90`$U$PNVx*Dj4#hJsL_IHnXhl1qWc-o5f>>t!(JUg zFKYGPRmf<32Ii9^)9A)W#+!pGn1V$GLxDb|qSp&Xect@5-EuGQv;QAr!+E;0RQFMh zO^PN`3s@eeII;4D+HOdwNeygW2<9gFz-sXg>wQX3SLL>)avg(s7o(Jf5 z0}Y^UV+4o6PH*pz88nD9D#AnhvcNTe9ghXK)h~i6bXznqhBeeRKdm#I&GvL9YNY1- zpQnjttt?A;?_E6JH+J>kV%YnF8u&7@iwQt$5zP1RS4fXY0J~8efgnNr45rY7%q3gC zg~S+XlA7g!XM7&k# zIE)Zwc#wDXZAcgpm&1F3jN|LlxH+pq;Ghu9$@`4LiOm_E5)v3}+;oZ$9CES|m}JRe znrwnaNR35@-|Clb#O*rPVlytoFmNy^ed*RyGHlE)iZ{&9RZo|;KtJJm5aAjY8S{?; zH*%|$SJ?02xJ!DN^Ng;0#~;__eKsv7BHI-bd+JMgHdwj%V{#RA-e}t-S~}8o!<~Tv zuIuu~sVBCF*-B()!kp0CE-!cdn~NG(7#$sE+DzN(6}9}%&LjDNaBKe3nE;0I0GxwH zkN04Ek&~FF@7t;g8?Da?-dg3RS9F)QeSxb^Jx6BUi~+WUQ_f0@aV1WdddP&+JU=qI z&X07lOS*N%$7QXe1*nt?PHK~OmN*b%q!?5bz&Tp9+ldAQbJ8kI)piQ3fcA`?tp zYZn}D4++YjJT;j0(L18~At$oU-h5DlqYD=lqYXS&bIj(jh(!;bac#l`OXq9%Uin|} zy8e2GKq#xCX@U!KNLplDm)sycyvW^XvEVdsYdp;}y=I^n{mrU?>PkTwFHenBu{2c} z{_WD1+w;~ao%%=}o3K0W(M4v5dKFa?NjG#fle5ROHcMl03PioVeMJuGDxewY)Ik5Vk37yzTa)dw5&>>b~+H8~^lim}^$H@+oSh3Cl&QZ&h(u z+iRei>v~qy0up@&W9ZPhW)|H>MC+CZ)553Ml0I3X-xKb7@$grC>5Qr3qSviZc)bN) z=I_3)jb+4VO}dk<4R5bRj2#>;UuA#|5x{UjG?&EF$Qs?pJiK-ORHe0svuAMfXgA=0 zrKUX#5Y8n&h*vLWmAg*c9PY@{Rg&RJ&f8m#*Qb%-Lxryk#0I2p7oT>R2jwpq0GSja6C+n2tpLNPn>phV(Tz)W?P z#47jug)e4C6&CN^ky)qRr2OtT$#W@R2f%;7_(Hsh&zbU_jvsu{!rL4X-wbxz;kzzM zmgh!vp13+zZ!lz4!T}_i^Be~|+4Lrqk5|d|DETxL(tdk?dVRKw4-mWFlxBCaBy1j> z-)4)ldeL%_$y55Ek>(v%ia-jDoIbe2@}#Q0uh^}4RT&J;sQu9aG>h{E_|fq0L{&H5 zp9g`68rTUx{qMDjq^f!q$$3}!&@*k0IM}nY#NQe%z>Q*Wi zOjysZOaz|8@_&y-@zT$NFRp}UuS5nH&WvvtOBPH+y6i0KdJhT}hc;<3uH`XLXWH75 zTxi)U`)k6aGW*m_Z{}^`LVe8>V`SDG^mlMxF|)xw{U(A27sG{^)JLleCKJRf=Q)@m z)DgD~52VAb=p!iZ{%Fn{MSR}>@r3ef)C46KVEa1 zMY#L$p|?D<2SQ7-I19owK|lBJRAY*q;mz7{nHa5TlEPktwPT)k2BHCGPTtAX!Dqsj z4MFX7*45uUxq8x4UNed9*l-P4KPo+Yin-icvgsn3@G0EL)poGQ4eB#N?`yWY3Y$PE z{9{iJq~9+S$U5n2Mp^=iOrr5)gxcgL6A*{nIWm7ikJ`!4+v2Z~hY~mdL+-9M`-u z4{C!8LWx_>n0_i7iuOW@{{9zWwoZhSo?=`Wd)S}sTFk?F3QJD^G$3wS z`PFN;KPoGy8wqu@-Q22Cgp(0lBL^uL5_Mw}+XboiH)LkGoN%MwIp%FA+6!5bqIgPU=l|bxGHbcw*q~hmp7Y#5$v+Lf?<2 z<#Yu7jo#R+u#CKi6TQrje1BI)d83i>M7m?Z%Nk<7+UMk(x@1`#;U@kzey8cM5}Z_@ zAS=3>@hC|=)L0g<6OyG?y$HrRz|M4@XY$gQ|J9^r8k(}evG~jxx>JVJu{CEKd&>wIqyxJF($}PA@W3@<`-A;46i}m7x7i_;Gm* zS1+KqiUxUCcW4Aji}1I0v?~;KP1ay(I5ps}&_vr`t!2==mNw8p;=A!M>XqV@DeX7P z^1$8O^THXbTh)y>I$Xbii<&?vUYT8Te3A_Tmgase`XkJ!vkH>?0{LJ#_Lk8)5`;;^CMKtx)(Ya?v5%y#|ey26`I=(YDeoUlEMj z84~xflUj<{t{^;)1XT0|>TP(Gd+dNcQ;D8)Mvl@5CwaDlmVb|3;KXP)fRpTt;y!_n ztsrO7>GyERKC9D}W+4VYbLQOMs{%IL!TJ~a>sVoT`B8w$oS<3x<~(YyKqIj_qJ*+0 z0DLc^EII_hLC)+8$;n)vt$`x#>a4hoiM!;*r!=(+K-J>aH3lnG-48Ai?KWMCUL79x zm!9UAsct?sab!&v(|-91ZvcXky^HnEsj^HRng>Te0K3#tY0`$JDJMtkd$^&k(pXGp zo;+or7k482b>AeuoIdO@GI|UKZ#$fkEQj`KH7-6P%@JBlAl%)I4CioKAhw4+SuF8P z^BbBI+c&*$J3~xhQp@?4bNPJzBa5T?po}MS4Rfns+@(z_uirzk*d01L^oOc1pXJ%* ztq9e(BL>Lt1OfPf(7AY{nM7J9SmO`_WF9;prZ1Qlr@AFV@AP7|jh%H?7ooB%c)AB& z=8j_OPJ}%SlNsoGHvE_$|5_xM1K~?v znJ%uh0bh{{I?qMvA=J{uGrIvKrRPdvbM0P^94c!VWz05~e~${$q+W zE~!D^$EIU9#9iGH1(7{vQX)ka*s9FNn#|O^jzW`d)CnLh3(pk7-?g&^WE+gKw=}17 zivKwJF5wVE)gtLb@yd`M9Opn#>}j*+dm#$4!5^H}K~7(x70k`Z7Ocj%K`>nKwaH^+ zkl!+f(nB2~2cvoZor{Z46QAvt1`nm0Qrq~D`jM0x0WTKSBK68ktFwOr{uPY*JC*ve z0Sb(*pH7s~?Y0DYabWCL>W#ny|LqApIuWJ|JI_t2SR?-CcWrXWjN>V@tYT-v+k6^P z60MdNiy}~76-j2-zfmSIQ53#bz+3c-c}>fh)A6M_8a(K3)T`fZTw>sw<4tiT3HL5w zOmOQ?QQYO0ZPCZ3e2LT+W7CU(Tr=K+gKi^V!SX->SCnE5`I>NSH+En9=Z^|9BRICS ziTE0Gsr;YUs=vatp|1v8DW-yKuf!)wHuRpuvZhN3ao&54{17PGvqIc$##mgoiYJ1! zmHJrH8Z*7UP(@X8W=_V`UMcES-%kHQ&-O-3u{GmA7A2#JL`CFN(ZERoU##!j8YhN~ zgJ8?}$)JQ7*BPxtYJ5mT4&nUO%g@`dk*F`2G3k1L6JX25?Is3Kh!^?UeDoC<0d9?T zO>0yk*Z&SQ#p+$CF+YfHbEBV-Ntd}XYB^S!k@&Y}gVLebJrnaf>#%jZcrHN6ARNL7 ze%ab(;hq(p4a3aCV(>XnbztnNr$+NUP`Zz#Vd8v&>EP@s@Sh}EhhNKcg}n0M$YN`a zjor^VZMXahBtaxI76K$GNI-UJ95KZR1cP#mTLq)Jaj!*5b4sjx4Q06E81SkrD?M7| zp~aq?d%mc_3wi!CmN@utZd^E$s(li_0Vl*lOUd`qzP>RBq0ue_)1WIlsaBHlIyq8h zDM{cEgpZ(~?TRW6B)vYQJ#nvH%$!pvLW#s3bGDnL8>R5A>{2*py94SHx_6gGHU)_? zd0NbC84h;ChucO>B1WJh?fFu-j1n{1(FFq|tf(?H@Qb0+`<#U$&aOuGZZIU-vTbqO z2@u@_5pw0^PuNmT{NvnUUJ)`IceFnG6J}Mo#B8!e(2b<%fcZ@g!l=Qw?0V97y{$Ks z0)OlyyzT6pO_+%qnqrMZqGKEp-@M(2X9u7crCQl6mnqs!e~WFy8sibr>g&hQxm=Zf z1^Wl`o`J6h2@9l1Tr{RD2{gju;3(i9@J-mRHo8GomCv!J|DL?Vp#hXt8YvTt7A029;%m;otyqT-nOI2g}J0mTGriCejy+GW{fq$gFuB(5r;;1gXa~K=QR}rA7B#6O)^=Z-!S09)^DnM#N zcv#iG2*bI$B*-r}iGQ2ez^*-LSKo?h`1m=GwQh{Wr-Ml13!yTs6-l?7;l)?x`_?^e$cIM^KurG=Ff}6q?BqiNhETzpPpr= zIx!zJ2k?$z3a6ulXQ3$ZgTV%9H_Hb@Eux0ahaOO~l>i^I?HiHIy~<*ZrGJ~()G}Av zu+NRW6XsVnZgu>FJAY37>_%;OJ`m`y|HJ5mpz7O1Oj4i2ZAw33$6PRikW`l?4O`N= z^_p6=RHb1(ns7LB0>;AF=m*)Yi?=uVtSi4A{j$W4d28PCi|GC(_Dl?1?2N=fOdAdF+dg@T5%)(D|D~MnoLdSi)uYlm}O0k89rq5(B@eESh0$UY;>=tpw;5 zp!NsmkHvTR9G&2!6HdqG8U@AGUn(JMJ^m z=!IQOx-kMzDTE->Jgf7!|H%jB>rK7D75q_+k>_rs5k20=5*iA&nq^h=+sY`<`2N_Y`it@0 zbw!3D;Y7}&6BMnq3rzKzo(NF(YNo4PFK!0fuYkpwOAxa8?K@^v(g@2lIR%hAuKrFV zIP6C|J9rlsuuQc*Fab!wcD%c zoOP4bI@adaM^zMv9JR7gx-kOH!+Vm6`(#gCS2R~coOHgBj(Ui1KuP)J5!xY1dGq3= zS(u=9Dp6HAl?UrWd=>BU6o87CwuHXdEf+?n{S%Xx_Sa^#aF;L!Kwplb>exaJ@;Z27 zPt}m)aQ1H0ep4YedORa{_w%0WQ^fY+$*uv65E1zaqjr*b)WgHgnbFGnHlYLz>+snn z1KrXjF9N7nJw(H&!eL_yRy;SU>cuO}r*bmOApZo3Kj^BKow7T@8wEb5?0h!UkBodg5vMd;Xge1L+&L?xqUm>n=Y8X>NKi>!59}Q(#x=`y#Ybg%26HvrEkdyajK^U#s=MrvH3bCl@{=X;5r_5+k-Wl2L`zOtP!s_T|O##9YC`Lk+Y@GV_qB_qNP-KLEyQWRn^A#_0-uL ziW6@mg_W5PfAkp8CS-99x$m-3msSx3$E55;_=wKkeCw9j;~^_QQHdPQc7?CkP8v}T4s|Z+Z$3L}Sh+Qt?!w6u{O+vIqQKIje*m$5mT;Ovf{AhzWp|aW zd&OKErl+tQwz4#sM;qavX`^;d4uEw}JnjvA#)T@Jy3QHzB6wa{_O7ni4Dc!K$wUWk z2TL?$yX-~sWZ(xq!&sv|$kGaE5lTD{Nf7s|;a%*c<0`~%;e_QHQ=!|mi3-cZHNBsJ zs~TxLuo+*2k#R7vw%w%{X%<=XtfX@7{KVeiY}kOHHi)YjjNZVc@r=yT1LHg1;#nFc zFp#K=RpVusMzMXyQ0U(*!S;U#^m~t=}5H=%-a~{j84R21}-R zWB(w>#-FI>#|QLs9LqPFZuA3t9YW0DTD<+P+EuTA6yGC5d_UTDT3Qkt*P3p@98;!= zG&8Ks376Uh;7WjitS^1oYBw_YeSF$aC@*e2ueigrMBYXLfmUp*6CLuh`vG5e7OMwd zH7Xu-5=r$law;@6akVdK9i4hP8!#S;@nEr;->%|p!7s68COOY|zU2{(RD>r9`b3g| z8sy3~q3h3=$E0AD3ffnLoEN98!kvXneiF$~3|vxC+6?w!M!?17|J0HG9nJr|-)9z~g%4u&Gyb6Kg&$5SQW*XNC#sg!xqV zJ4#93mevvt#AdJkMx&}zET|*~_}<(0a|{K29TFg#90Bzua5E z^$=S(NJ=6>T=uuXh~}7c1S+>wy~1Tk_X&%Ml1(@x3FD+#e8$m~g{vjQh42x2%ik=tg?bRKa?Y1G5P5-YU<`Z^K#w z)hU7#W0w=%E@;f{LJH(bi}|T__$SIW*skV@PxWuHAR76(18|@Ox&W za^#?TWB>JdUH}0@JoakW6DCM)WEw=QE{m*CFHLikxY}Znj3zN+jD&dodm1u|5R-r)KdAWz0Qt*MGn@D};#O9)VS{};9zv2KS3csM&qeAilMF@|Zq5{0vtzfKH_FLUsdeUy-?q7# zG34N*OXn^ju&2T~PvENRj*_&TlKSMKIYGEZ_MWNqm`u0pBfzTcOG$>Hf^FbkpD6x( znG24I@i>JH(eAOB_Je24b|c%<>R8pU<^`}?r8s|14?B|``R@7K`ZDizS(uquZjs9( zZ1)Hxni7702Mu_b_!+EedNy5)UL^Q_c{Xsk?|ogmYFi~dCJ45$k<_^|zoJ*U@$wYZ{<`MsN?M6I15`OBeNf^7kW6* zV_u5dSt*QPes;H;`8jeX?^9^Q)9CABP3AUi$hxLv==!1O$>2#THXNpwv*YUJ{MJPR z3TxC;d8)8xZzNvMW+-tv7Keff6@<~l=EI|4AJP`5RQ1+RpB$3AkTy7{I0lVH&hrn$ zjTj(U(8KZ`UyD-oCA)PYgr*NSYkys~?E`ZQt9VpcDT!o(oST48(R5Yjg`1v7VD>1}|A5FqYu|muLXBh_5e;^&{9z&94m93_(j%FxuhoB@ z=O?XO(D5eKLd>G@$2qaW=dZzoGa~Wv%8?Vg)v?SCQoc9Nh+R%R(Yb?TxNb|0;rT2lf$^Q2qH)dhL;_dkInj?#AYNtYZ(;$&B%YI( z5T%~M+(AkMO%S{`fk7R4J8^%BV=j~DSbfC)mnXVg(};!JF@w|rEn@@e!SapYwpXZ<3tiw|8Hya$B>JK}R;xm2^V!zctK&o@;fMF_9s2Io8FrOzw~foZ6O~ zIf&#!Y>@42uIb1&1JO8$Q_O`_?8^TJjc`02n@bd+Ud-uSdC%YT= z03LUyClH-iMXis|Q9)(u##DCt;zKAgJeeM~d<5e0eOnk)M`oKR8j7@&EtB$Fgi#Bp z(uXpkGc$ThzTH!SIJR;VT=9x=QFWd8suuz5E07S_W;8{oo&^jJ=4=L>A+gWqcFm)h z^D;Zd*dKS5oVQ;Cn9ZBet-7p-q%EL3y*l7o2t{vfK?o}Je}Wmy zsTshpA_7VJq_ZVe*4KT9#uVlSaze8xI{n+p#p#QDYhRV)^V0Xm2JiLl$!5GMT)=@` z;ldEmH}kEYUO!+Mgk8l5w7J zh-J|O_V6jt`A0L@Ziu7NBsH(SHJmQ_hd=h4Xp-vaD?-hm3;-iCGk;8EcF*=|{p@W; zX4b+%k%=2yPv+7y@X**Ieuko)>RWBXz@GCTqWX2EC*gCc?7rZOVP>(8JQ}zKjevRo zyIh#a+x0+jAO?7t3)kelwH@vlQfK<{Gk*G*pA-wwl7jh22#E{Uc&{H?B5qcWC?CK5 zpjdGop?jjXa|qOR^84_&9J3!u6>i^4lsOw!5gGa_k1T7EtYLJbpb6!^xRYZmx0a(B zPb`Gnxt>(-1Z`wT_X!4&Awm{|CXeUsi60<^D8KvZq!WEKahiTkMT3AfJ%AO>y0HJ; zinQmZot5O;b->R_`T3*(IY7q0d}csjD@~z_V;jyvbJVlN8Nw-hq2@(YE^MxzEGJz@IL^W!@d7?e6E5f_x5; z)*hYShwhf&ZzJbYYZ2dS9dNdLW9~$fKK)w#~*Bl8VX8(M2Qut0H!Xo^4BQa2f z$^~lsior!n4&A$So8s%5Qr6+Gj=EiuNF8XF;GIH-7Vew8OpvSlfHchj@0IKU`LS9d zu^Z-9iUTjY%M?m$hjJlz_YSW`kZ%&qb-PA&Y|2+&_z;NE}e)EYU zC2Is&e;BLe854F@eUXBy2$orm=XYc(27T|eEEKw6Jdy5x4{Ms6th%&||$g)$Q!P?0niBA_XwbafO-z5BW}&Xk=#M#sYF2 z%|xHzE~7*0Fg`hneVz|AgU*$^Q*mfxG(@p$_aF&}ZLp!tmZ(E=JFEprtyM0P`-@lw zz$@+3VjRi*fEF}WZT+<5gf=%H!jqGWg5P9((K&l>HSU>%9A-D13`ylGHFRXTH+FAO zMTLqQ>Iv%O;0Xcz9f!kC{0>stBro;kINUzM5V{u0f;(|{xx%1Yv8^6bXC>vV4PZ8X=oa37`meu=S4g-e> z#vP8(93~W&x0%mt=hm9piP<__JGfo`zd>a_nKY*`V;A>LX?ku=GDZZF<9yJ{_6*xv6eY|OcT16O$-aV zI9Kb&>ww2crBIfKYvF9Th5&A+7kBRUx3m{g0a9MQwIc-8?trSZbIxCj3=5o4v(jlS zpQmzG_Y3M;#9)RexEqnzbrC#qO-Bsh5G-jw1W7!_YUjaU|D;;;a7rw4?rT(0I1n~g zjor7n|Jdqb1kUu&cE*1fDhpc3xWI{WQ+01`Z+}nfc+Y)^;*} z$`U{fLM|L@4J$1c_4?rP)I$1~#HY+w5b$A+wwGBwHDa-)JW3P5?|tE{h98`-I9K28 z0vz3oIKgI~AZSNA<+PMdD9)760`Q@k`{iz_x4GK&!FAX%WtqTH)Bvd!;FNpi_!YdX zB>T;=cs%5e|MzE`LJ$=RIk8`}`kV~0aLpNDh$KH+d~=DVO|aw}WA(Nj>j+G%!nO_F zs%#IT%meG6Z`Y|Sx+Ro#c_hk_L%FdpowW(#d-gJzv)AL(!yjb)HxY~~PF?GT>hXUPURGQ-c%OoT zJ%x-g|Jj*$JCM|ZPn^M^MU;>*yU!;!-D5=Jo;cXALD2uHnq5E3s;C)3^l?!tM)DXF zNTxxANipM5^3B*4nVADCH)n;5OK~$KfeUBTE}Nd6h39JtO#O) zCn5%P^Vf8>F)Hp;!%#Uw;CN!n#!MQ^>=DZ{|F&Wp(A>S`AcD=`k!-jvXKDH^R$4U$ zrgcW;4{H0cXe()$X|zC1&ym z^G{Z5mar~S0Bs{NLF-Q%FMw!DQ7THOH|3Ww&ZJOK_LeX^U^jjGlc<}*4w0D$b+Do1 zIZ8KiwN=?D4!OnN^rr;g9PXD~P=Wm(Pe$MZ^Q#d=XGmuW{AFpCy_-?!x!e&ozj(c* z{f$~H*Rhlr<#`gf^(NEiS;M30Emu<6h??n4ET!-Vn5HU?YC}T~H)`hzEpv5{hMl7Q(!_H}a2aZQg=M!lupaM4D~Qe466_L& z_)IrTj(jv_!t}K?79G{f5f7Onr%!v5))8p)+{rL9a~dUZpG&+?wu#zyCkex{z;LL+ z?Q9|>tc5}{BPsTm}=?TpHZqC z>hVas4s)AbV~My)(?Iwk8H|grpk3YSQfK^SMif=^vX|_M^#u)q5 z{^Y;iUzJu&o81Mi$voU_K~?n~RDFAimgFq#)%ha}8yy%P@uC8SfM6-iwoK@iQA_)J z$R67pMqVi!{S$03uRb0``P|U~a>Wrg6Km;<#JL2M%>AO9t6^&kwWL^n4gl@V#NrUZ zHvjdQ!KhlDo*V$>;I?of<1&GY&jTc#Y$+wlbN|kGY{wwuj12o?C=WkvM(rUOeo{6( z>X0KeCSC)5=aT>-Edg*%&XxC&M`O-zsSGpK8Eg`vkPPh4$Xo+~nvco{=m;O)bIMa0 z3gHtI*qkqYC_hp&4OKB9>_S$&Jv1=@923RK?`&}!H#aF5ZIQnT_Tij1#Q4h=% z%)iW4jzSQhBau+q9!f4c9iK@}JUS~bD22gdev|X{ithGZ{ZU|`LrpDqRnZ^^dbOAB zd|lZgXjgK&*%@4=tC=;f48PYG>72oP%N=Kh0i7J83>1n6oAkQ{VZF&3QIabPo8KD7 z)+zySm1KOS4t}jHH1YX_)kw=uS+om}mHq+rUP0yK)f^wE8b_!Fw^eHuw-u;qkoUXi zel>T2Ggzr+OK+RIOZn$faguQf1^Xh&OwQvoC?HoHp`s;fP*p%pU&Tq|$=zX8N_1S8 zb;%BM9-TUfRAr6=Rl#W4s95yMssSGMk*b5#vB;?F-8Mcsct3EufyiUJbrRvLz@3z|MXFbu z`4`!2gqVkz1OB8g{jvOLm%`F(81Y#%Rz-eNcF4cUsp&{KbQteuW1F`R3j5p1z!L_~ z{ONDz`t@vnO|c+7;URA3TUDfmkcotDt5ivWF9lwssp8qP*=1SLec*Xtyf}|Epqebcn#mDn%PMK6u^9#GIlCa|Kt!wB zgC6H4qElvR(%x8N_41dQlRYX!*zrb%0U6Y;d18AcAlX>&@EO}sqnW+k7?ZV{9y0Zj zFYdDe!ZOGuTqny$TVxqYlTXTFAZpy#+SSpe?(W_=C$N&7Q+AC-;s1cS6@q|U< zOjvlpU}x^cpbhb@rbLNU*jMH+#V?;SSDil{GSCim+$n>LwCl>>E4IX%8=CK~S{~>u zMc}IwC%*M|$wSKJwAjP{*WhJO)i@<%bMzFV*fw_KSMB_<_OhOwmzfukHNyraFAXZe z^zrSg#8#D69DuMw5M|i&Dc=Xn_hZVypXt4{{0F%-8V_R$vq}uTWJ>nz6%kXBW{+3ip zE4$v69lS~iKK2%&B0oVI@GdK6GSk(f4BdXZlyuv0RgRz|=5mVI-v$GNWW^z0{o-(0 zXOW`8%-p|dCU3NR7j|M%1#59IMy&%{D=Y1%foPeDKxkW3U!sTM3<`Q(7IZ0C9^_Ed zs>kaA8f5EW^e&l2nD$a`Z_75?Q3PVYlnc%1YW`?+AIq_B&NIbW%^G)Npq&iVE5{=% zO8Uuclg(&?9KOW}!;~?1pLx48uN4=ecN6*lMOxV_Dz}XHwjZ|?bts^7oB7sT(lz(d&XRF)on&J3F z+jlWNxvny)N(BiqI6aWh4|JnSr+(ZqPWy$ByBMa4$~hK5i|vt%mc$)I=h!$>-?PWM zY@{M8(9!S4(u7)`Bi@q=W+fbjg5{dO>;vm*?o8`Wh@DrH^D#!ZUge zh_U7LM?~I4DbT6te|m*E{!kaLsG_6(g}OYLP56tv+@{{;t(`ZvMksw&>|!27ev?5I zuXqPkgnRfs92=+Zt~EVeC+4)d3ou2_3lzdR2&XHUrVmYgAGlI`ml!4QZg9G0YQQ+y zwp2iF+saXRvoR`pIXzpIlqn5ntEqUrV(jr2mM4+N3T7s{>{x!sl@~?HmwF{Y9@-wk zE-q@Qg=Az;`edHCG_#uX3{1W_0lKx9#|BnxjA2Nc}Jd6UW>$8CW&scs+$ zmTFyoUmP$+xQtn&9#>&k)`->$;&E0ZA^I$7k9Cy9P?ir_b{knN6e+#YQ7H8Dv{oCoraWcF=M%CP6z;Nw_vskY(wp-;ZMQWUG;4YEq%z&4M7N^0(FuqC(dCbxkIKQ{| z@6TZ*9dS%+a3p}ICh2wsIbCygmTjj zbD0agq4l04!vrjn6WXhdT(_`cp39fMl&`pb@rnf4slaqzl9}F!#$wH-$T02!bS3E`urnF|P-6B+q&!la zd{oujElTHBeBe-LVCvA;v`QWsqunEp`F6kGC3(B}>Z`0mJHo{rQSpqPl;<7adNABC zA_mfzAQR_%;xeYnnfy3c$~Dr#79pbFA876vPn4N;JMW>e0Ti`TwsQ!a1OH@Kjn;(X z?4q(RCT+tKmMz(5NSZpqyQjUF_-)^bax#Ew&4)|9Z z#ig;kJ0SvgGu1WpKR-xA>bNSqrvl%9v@SB59TuOIi}ZujUNlv;=j=>bN5Bz7m?wZ^ zV&%I_?6Jb4)*A8w0w){dZFTNY4lVoi5MmQLv1RCq;&2J^C9I!%kLY?qrr%fw)_XVf z$Idz0!OnKzF=Yx@h3AFWR;+s)hvV0MPEeklJr^f$W5f?AMjF#`bCv4#hcUA}gg*P= zbMhdK%yA`LCbl2W7r%BZ$ki-#=(%>8ZmM0dR&+8R&-8#@sMS)sP0Y;Kg^#&muEZE* zrSpOKzBz_HBDsa^HD!p)1=9!n73*w4O40$|=1+^tJ_GJg#O#c*bTBCZwx7QL$>L)G z_PoDXw#W>_i9kVWp0M5Cby!PsoNYMkyyD!|=yQJC;|vqA1D`YgcjmhHdzh@V0W3*MhH>?cD4BZx0CfM1 zI1TMq57D=VQ0RM(O}>u?_a4DZX%Xny*H$lT`zmOy4@oaTaGOuVW_f}1Q_<@M8j&r4 z3II6~If^$#ydqUs`cYu2DW$S>E0=1XTCuB3Q%BzI!@M;eOcI@NvT`R)cgwLj9C<8pwmw82{iy@R&Y}WX`4J&AEz!J z04v#Vwi2D*n6T6RFb!JnGW!~lURl@II5q~NHvg2j&{#VUJ~*R9)S~Zwz5iI{;5wlP znoPHX@Vwk=nIjA0DYM(w6ueeP)m?LdP81rI2RmTwgn=v%khM_WFvr?R{(dG&R7tjE zbO0!q8Cs{=`=Wbeuvk;xH?`XBLoS<40|Uj9n3vt@X<&Z=d@HK`>2{2VgYu!4sPNM# zN@W7;SqDzw4(zFFZ;+y~gh`yfW-##(Ua>L%man2O<*|vYksY4OsMnb`Rj_j8YQK;IzOT+=J?2-}OF(jTPRupcbF1iSOJ9-w7PyIG3swt3$PdvIQ;Xg~3yCfboG zkxi!Gf2e3WsP}Jsv`D~Hpg0I0D0M1#gnZV7AxpgLyaHmHErF&qtzX^lkPW=?assS; zXBvfelr$A6X?%&XNT%-SpcJ?Iy8c=xn8QSrhB&O*gzBb}Ui8BQP-Z9Em6->h$Cqa8$;K{s)VVAB)kT_pz3jl{EopyMWCKHB@g@5NUb$SYdzY-^cKPH~0SM}~dMb|H@LlZ~6V$r6IE}8vQK%RyFG);upX0eL633E)zGrDq|+Qd$wOU>6yLE^Vj3?G z+7GtVU@Gw{9lOQvN{OG8*Lz_vz6!|9lMq6v?%0Pp-{B@+R=`ID!p6Pba(AG>`Mr9s zxupq>4w_f4oEe zSt^Su?N2lPgqpu9YMfUuM8gv1au1Woaj*QInnPRg(G{CfqP3YuJmc^J>|YQ0OP54l zF7(vWGHt6|)a(?CsGY8KpJiq)9-7HY4od*98_e~ za@Kq%vX#15Eza}ZmrJmLYhlIrwS*n5_>@=~fVT5(-3au25(qFnL7R(^Dv@JZg&Ni$ zRQaB=`Fh|uS0r(pBx#5I5!$_G!D}=|1Dss?q2@mn#kgOLSfeq>c7258nup$#NEhUi zwp_{l5U1F-ASIs|bqjasn+j;l1$x=*C!lxT@SReV<64-Rf_4oZ$~vj{U&}<4*C+;@?g?>ym418TkBeL z@eC)x{IC;09c8M(i0SW@yB;Rp(U#^Z$Fqu8-m=?<>el+Gvdx3b-#2=VK)m0PoeEar z$+N%G57AnF)OKBb6BA|U^_Tx-uqrryk>9dvAJ>=)Vlc4=qM2eXZEo~x=EdI-VyU#Q zlO?V16!oTF=SE*U-2+tAq!B69;I73n*Un@R!`c?)XkUg5;9pg_hP9K$*mro%pX3U>@>g@{^p+Kx5Xk&aCONx;Ea<2-@_9^yp0JrMFnTrCPlA?iJX_hi3 ziyY)5c~$i3xOZUT(}=74Tx8v@)tle}dcD>xw53W+{f5_UPD3_Z#=2pa8ez^Lfz6h5 zW&sxy6LG+t!V7i-qSmfE!NNxrx_L71UV2|Bk)z(sW$hddRYDm(fcFRd2R_#h2VLQD zVGu=s-uDfK->Wf3Qh8_&lbCQ_&>Kt!$zIze9hC8|takeclqY`!$0`Ex~5s;VlP-R`xc&#mcw^ z7=yW~D_ZqY&&SXpXJ?>3>Z|lLXh^M(3U;N76T54y-Ev1anycYwU-8whc>F#hHkJaa z>d&am-Ky^-%GNt*Iu%)m`i-Nr?fXU0UIxoXLlluei0}1ila^gI3fh6MSGhd;jPr#3 z`%jaLDa1wnD}Xkz>QZDa`>b^F^X4L~6($IY-QYj$?^j#@IxvgutsC#DR^lc;RXP`t z&O;g2JbbECy(%`!oDgCy(^kYjBb6wk5$(kICWMNhi@t5}HJ59B^5&=BL*IUt7f5VH zMW497*LfpXx>f&ZN9kor6!zDA=rDh?OUKD>xH>V59Kkgv(Nq}c$viD(!-U9&*;!er zZ_TfmX;T^5rB4bsP}Qe92!`j#d0OV92zuHbFFIzHWw$OE=L8r9zSmgVESZKTnP7lX z*Oe~)y)XBXgeA)oMN~M@Qb20)bzj&yGZc+yo*va{H+_Xs!jN|MPb@dcC}R)J!(|a# z<{|~{>M=yKh_;KWOYcs}RM$pCr5V&B%&|eeiG7R=Qd4`o__xei);W&=MurR6^(@NKZ*6vV$5oK+*keHQk>6fPBCpR*$1uW#kba+t(7Bu!h}F9F{c zWJ?&dXp^J10kyuQF=Ll8_>SG3Xnt8)sWSFQ^`)B~iIK)XTLp#Wp7J{b6yq)LY_{(K zt3>yL%)*JC#7CLu26*eKk!HbbgO*Dn+g$<;E(V#taO03=r*WZEzRDy{!oDPFH&nQs zA$kDDoG2DcU@&>XhYrvNx-QW&2%f%$L)cB~ly9caBmcK3Qoz(zy$7*Ukb;XMcgw3W zHZR?a=2&@IF9Mb7D%c>At@bP`T8C3neyhaFS`7dD!d{7QC^OTH1O$EtB?0iCm1OK~ z>xWcl#q?j9*7roRtKs4@VnsFP!kY<9Hv%@7WXju3M?Qo-rF;hI@}vzzAz!GxBDT?T zf9GkGOEf(S(#s&wkbFfnap^^1Wd!)3qZ%MPbr78YF+{oc0Dk1Vd1yIR)mir^lh3MR zJL)RkMifms->zfooJO~UXVAl&;ywafukLCEfayVp!BOZ`i%hOQP@U#!u`5q3bdz9~ zi>f}fYH@-8YvdxC`t*jH=cjW3#=I6HziJ}Bw zt1}uV5C}Q@-ARs(p=HoX3#`zv>rdwZm}8xD$Ht5&-73686#n}AXo$(gpG$*qh{B=? z=V;#GENG3;3`gdHgTaE*p_=|ow}aS_a6|-meU$o4sO#3h*p7Gd<73WEZ(o@(uSrIN zr;YgMW3-!SB~fQNVGh-!xxA|jL>m56$qil63uzpteaGDmlKQXy?99gbI4oDO{Ytg5 z^bt0A^Qh?2D1BhJdU;gBEPN!p7oELaxXwY0E|%on;;Do*^Q|)a7#oL^l-)2t-m51NyVb~mqC%<|C)=}e{Zj)X!HVcg9o44oGT$qEuYr!E=7b3s zT-aI%NwS$g{J=gWXDWt~K8~Ur5pfri1>$7I@QY&^{HZLeWe)hWm*A7~ES6*q)Vxdh z#60)|3*EwkrENSHlB3zy!HL)mW4LhOq$Srx%21XC2gJ^^CAXR8We1Vh`tRs>f zQAbIi<#2#FP>tW>^6iX#$rFH;8mh_9N?){_Du+~wMfJ>9DvIu=mukND!s6SDfTXoD4;4;6p=&pUj=Ems3v+o1o`}l+l=5s z`bA`%oos}!HRxoE(Dp^NHF4DBm!&8Q@r59~vW=;l{cVA7XHr7Q zmp~^f{lMbW1U;W)>Rx9Zm(KWEhP8oyfoes3g(*+|AdncmHhbG#GAVJcm=!=WU*hf8 z+1B#7gA(Yse{sKP_y^iwiR5@YB||T7S%9ZBAG8|?4r4hmOi(up{9k-otoIw~)qzkS zJ7C$OnL*T00)(Bys$Bh6BQA96erUvgtewZOj(5IrP@RXAV8d!;hKe%xP1ok*XwD*f?90S9Y=mSjA-$Nw$Mk6Ot2r*GLuMU> z^W(X{;q%eiuicAkwYTrn=qjgouW3O@Gt{`Hll#-1MsZ<#CNTu_Lra8GDlF`JB_-NO zB&Q8J#KIWyh_xD7;9gNgOP-jvqN5UEi>L$C1WD1MBFo-@0KSbk>P2G=JpWp27aT$3 zSJPwKm4qk;b4nh_@-`lUq#*Bu+uDh6RZoX3vgjD|T5dqJ;{5|`TnBgyUBr8Vqg-T7 zH9_1gZcOAwJX>-wvR4dCiDLTXKpF>l3JIxfyiP4Q$4C>bY)5}ipq^PiJs7jQf$?%y z2Ve<>&ahmZFPSjJ9kP7xB|JgX$U~4N*y&trIJ3Yk3NB<_uDw=TD|a{N^Y#Nf%xK;0 zxgkdCEo-bxTIjP=OpTw}+sG{^Qd~OW=%-%Tfpv1BA;?f4C#LA?%F;VN%Bm=YGsWF? z{ez|I#S;TnWm=6=#ZO=X!hRuc8U~Zm@3ZF&f?wDXfModo#3V|O7bTdnd4D;R&bqZ4 zA!Y8f*ji$B?UeB_lbU6Sq*?Y^GX}lOY)=Dfv8hKjAg#&y-Nr0~N9Wl=@vEJZ0X*Mhbp{*Gd7TiqZ(WCg zT8R3>MsNC@{PM&kNjPfr+PCmRsSu`zs{Fvf&F2S%?Y#_HM@h|&B;-CI$S(z1<~b(M zzSP`)pxm8aHot6&O6ypR_*1dz10umzGRne9qiH>*PDv>*eBb62;sT_&zEXsjB+Aox zbUqn23N}_sy{Mza)^tGp?k$u+LQQw}5`!i&mktT+I~?W4UFWnU)^yS#p3h)*+~b!a zgcuT~w>mgq*ITZcvL8Bi$H@4Nep#RNr~%(2<(DG+FvpUPgv~^;VTF$s?uTjiyeClk zHR`&Vl)ju;Fsnc50`1V^p1lh>~JIXrbk z&54OU)2-FOvj6p6YOQy-rP7S4E~9x}2R8!fAP>pNZvY`JN-Uxe#Gg2tzRpp+b90%dG_}Qp!qEGN% z=dh^@IsashO0a3^6M23SmJ6xk3 z(ohcdnCwvZ0{ajqC^s@tCgw;_s=W?u=9W`G!?pf=H31bi_H-28ZN1$ z2$3k_DyGd%eM+sTvt`EIR=0)+ke{7!pfO84V~jmeJ7A5)ow`GtYc?%XCy1qg^;(kJa~^OjH-R)z-JA`RAxvb@XYIczvisU=}&uNB&P2^wD2DEpxkP30o)F8=+qnLmy{w;*&y|iWGmRz z?HQP{QM!(TB(@c}wltb7BXztyaBMh<6q(z{yc;#QOs?wss$kzgPx7`xmvn<>N=F_M zD`dQ|f8zl*OuEULVd69g6k_hKSj^sYqJAwb=k_IL2cSOph-Ip1koh6)C44eb)Is)m z<6V9N8SsRhJE9T>oNXAR)E{BClwN8Jn&Se?hp*qxUGNE&p`@M-Z9Z`CcaLi;oW!~> z=VNURvbgrIJ^LW?CV72#vElA|TEXQn12WdKXglyR-&a6W(x+B?R^ zLUCR2hBLLLn|RgJP8Q%Byv@Bl_1-L2(R*qyQ?{(JP76FvqpEREtUifyx3dieI_gCt z@tKFs>5tl{eCRE_I<`k2nM7GUK8aWJK4D|vZANL6h$%UFW~xbk)uHE7f%PtahB#sV ztnA*2aM0W--3bs)ew(rbQOh7==Z>%p8H;Qnf%D# zT*S?Zq;E|pyr;cJism^-kfR7b1N%x(z%Nw=f`#N}6_aH(_{| z75|AdTD?}Z=pdJS>uQv9)vR6Qi4|6$=L2J`MU|mwNpQhv`uB|cV88K#49vtHm0n`6 zsR5L(2WZ$^K}GVh09VttQYd45p5E7$CJ7asx+;cJ^APvmLx%~KB*eR}Ti_mWVd}VP zy?MIx3f^yPJ0N#u>dj3&As&N^ylpw@!Sb`){|@cvXIG6QHaC-BeNxi1rX_$3(jU9p z8wWI@<%Kr@Vc1bZ&zwltL2Zm3+RZ|`Yi`S;YbdKs% z7oBDX;e>mip%H~Kh1NMkM;oDR;JiG1t6KO8VTl$gvzD% zPlWvYzoMz;z{oI5JD#sh)h*Xp0`AGlk+BOPKwn8e<+!;Bghc(mG5!F0;)H91U*GPZ z`j1ORf;KL_dNJ^+;u_1Y%glAfQd(+a5E}Uneg4uo5Hj`}wj7Hy-~-fl{{<|kp!Ol# zfX7j0a&j9?anEmM{Q>sJ=KA=Gznp;@s{b_`Ml8ehlp}YgQ&OWWS!2o%HL@4(CC9>m z=b##3kkVf5Yy57v++DT2)E66}?$C19Qt;+r~;iG~y>|tpXo5k#DKriWlepWnv zzp5zmL(zDsRE~f}eWU=NB`MLH;@`}l3#~6^J5OkT&3E-lbK+9R9qpVRcTQ{9D`O+7 z90CY#?D}mP1)i7)vep%GPH*3q_m=DfL?5y-vxkG6v2=m~St2eK&NnsAp8r2cfITg@!3A8CKR|)0YdVMvZu+UWf^xoq?@%Lfu5!&-&G&wiT&Q z(v3#y)kB%k=leQ0c&JQR`oT+T4AH^=~w1$JoC4^TUO%rb4#5$}U%7 z`_@@9njttWt)mk|rd-`X)sNg^LmZ`Iw#Tyi3`59W{7fvBu6ü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

8Na_o ztuUM|@{$^yx31XhO%4QLD*}5$va85ZE?V8>#qfbRLokTcNJxV}QTv>iepsyRSjO^( zOk=zIEC5A7y1#VK2z_4kf6aA)D4vS`EZ>)*wF$S(wErA42N6}G+=;pyN^q5eUN00q z6WhI1l1EGit6e{KVMrY%BaEB+9YJX46c5KyNJZDaGnWWqYM~BC?Til-IK8qO5V!iZ zX{N9_Z%`S}TG*L<`}aU}yl`0OK&cG0Nm65m3II^QCC4A=D%~ZcE7p+Dl_fxwyYJGuqnS2HOJfKje*JJhs z24+{5ep5j2uMWPBD#ygX{-(Sp4v7`rKMA$=8;>Zkv2g)Hk}l+n+1L$x8iK0f8NI2j z#cXN(#)P}g3ZNr?$bYF=OnI3YA-w$}Dz7rQyd|*Vy~T_uHoFW8(f^VNh+Q;UB^mc&m$!+#;3OEQiR9dUY~~La<6L4Wa#`%b?U@sfAAA zx|a8MX5%#&(CoszhsSDYy%%T2d^!02CVJR~35~H6b{^DIb+!+Hn^G&QjB^ZyY5EBg ztSG|fH=XBgTV*OJA}9=G*{Cbbrzx-(sMAa1SYXR``p?Hear{9mnHtxDR4t{I6Is;# z*)YrG+_L(}m|WEW%Yp#w(EMW52#SJ?>$19>(VdEAa>~13$ZRj~jW43a>umhHWoYMQ zz1{$xCHclr#O~(3_nCn7lTx0VBdmr>)n#K*?I1ce&R3ykFO7nHB?nRq9!+L7DIn8yvPBy{yg2Z^Ue1PWkn07Ss zX)FZ=4EOMtBEzO8_qPLGJ0@hg|Cn;%*_~KO{AZDHpQhDET8;fB@^Ig9bIiHB3ufU*3RZbb zb9>><8*~F|HdywM?>L2-+JxEfp3Y?xbAb(zAR&9WrVM>-_^qItt*6!XMjX0o^j)aT z;s*^#2)6pYhv_R(=zTwo3tOo;IDrPMd`5?E2QYnr~C%@+fQYt>~ z#zZ+s?AHA#9X?v;L)hgfy%+85T*{dIGxCy9YrguiH{KCU@=zRTZW+-_VS9n?R+GKN z_sJG(2%M?0h7nNV^yM{#4~Wotqc=@E`hoJphC}0TvnIqbZW|;jj*wI;w$MoY#Dq_M zeT0mEenG`{8in+6kA?|9HN1ERs3LRrf1olNIG?`-b~ZY4rBg1Q`&f)>hUY`ZQ>FB1 z{E-8DW&8+TNu^>_XK4@s0ypQA;NMGY4y)tRJtF`-uDo^n#S!SpCbn7~jdH#>OJxAU zJ3oiwHd(^{Y_ukBv!pisbUp4t9({-0*H?nRW(M~5#qbR!!q>ZojYGe&Q$wp<+Y`lg z9N6crE7=*~=#4o;`as~kkAIz+$&`sR$c~+vp5XtXzlV8sNjKhH5?`_S?m6eH{Y{hn z@dN0j#GBqFY45KfcM*ep_@o176Syoco+;hdUV~AsyddORhy7=UDi``r&%2n$_5rqx z%oVHC{DgUD<4>Y6Rq_UbE|MV_0(IP8LZ?;rl+A45Lm_3o*mU#P)D?L*A(X{y;AZ(iin9@U z9U?uc$wBCGPtY)loOpkn7NGPf3V)JUl1JaIMbf&$r%Ev^i8{Tt!v~mfXEi+WTWGE| zwXlBoTg0XuCX+Qo(k)=4@jkU4?;Wg?5@&3KwC!9G@hOS5GHL zE1b>^@F);sMuNQr@zb;3ZqffJqnqlLx*IZi zIH5B^o17PzrZW3hYjUETM5_v4(Fq#uAA1`{yi+S6dgjBGf=dGaJoe0V(ra&GlW4!< zcaJ$x1}S#u+scGQ(-sD5XV>P4B6qxA*cg}p?EbE<^@aiTFdy0m)WcT`~D%fY0m&q89v`5AihO7+sY6P0yKhvV|R3Hd0 z;M57tREW~DLIf#25bjrrSYgB(m*igxPQvDZy=OBbrA=iZPpHts%lhqCbRmV;$J_fQ z7(qIZY*rzarY3zIHc0&SR2?kqrh<8O_{&vJ%zkqrU#>#i^nx9gzNlA=fY7+V|DqiE zGKB4I8S?67A*6PtwvsHNXIG6F?s4nSAPv&R_RGom2;Gs<+`HtrPpEfJSosb|KIniW zAA9!dlnedEcU8GceS%4h|HAKH$l|uX@IEgW9>^rPk;VD1Y+b(O!y(&si&B3ypKAx{ z1At@BNIywnHLF_z9+jKA0(#S;f)oXWrYR^Gg%rc8GLNOQB!NX`IQ`Ppk`xY$aegA! zDhO!twXpAsQ$)I7nTRE+$d&6vC|GM(+~iov6Vy);0sexQ8&K4=e zA4G|ne5(=jyen_Mz%@%w*!Dx+j2rn7M74jT5&{i<GI!Q~SpB22dV2Z~(?Fx`$b5 zk&BSxlr|JBJUG3y)yd?b#Aa{RbBNE)0FNgI)pb;DNJBYw7VU6LDEd6Zrv24Q@q}o) z3UHh)X7n7)uU+xHiRhuXGMx=_0a9LHtnwZ1uKbyKN7@!>p zjb;@80((`kE2604-wV9(ue`m&f_QfGC~3Hf+a8MKV1d7-aF6O&L=w&%OKl-qNa@&9 z-igqFFr?&<&eBas#o;$JH@k-tstRdO`Fdz!A4E=hM2Bd;gQFQkD9E5W?ddE&=;#w{TbrgUz80 zKhWoW8V@hLJ6n-6>KsvFc8N+iB&B9nXR~*mVHqafip6io&G z)wOwfcQw2Rl?m@UC$XvRwzM(X73N-ttdrUF~G6*_r z5jupAgHm4`Vdy5l<<+D!aM7q$TTEyG&`<;}TT-^-0W{I(qKp|ZtsaM%_MQbFvn6a6`Mpy#wSMEd>2(?JK_$<1%GO% zP|)$H*7`}gAU5a;C<%ZZ+J;&Vd5n}A*t`P!paHOR-UQ!yK7?Wq81zTGSo;FvQ2TBN z^Y1kywbdH*iR1>_YIC*<$LA&Thk+~Gsa{$s`%n_ITQoPMd5x<}J>Fmz#VoowRvQ|JPbLDyV+ zX4rywZlEWr1kaglT^+cv)NQA3DJ+x~Vo2A}oZyltKKRN4_^vz?cNBJAdA5rAccJv= zq;eF6x@duJQ4!#frt-m1Xhh9*3@=hMD4%lR2As;qTf|-XKM4coV-u*8VyD6GMdSxj zZd`F|C@+a1zcv@NuoGOZYQC%Aed zjZAVNFEf(QavyePS_OCwS~G1&a*npv(gc~D{xw*6DbQyl7cQQ)1P1smzKAuseCLMA zLLI%FNE7S?kJ5K}Ux|?Qu@`oPi=819$up2HdPYOs)1rtp9n_p3gfr6ym^fA1)ec#F zbn-j;Z_fg59}mW&Q)9+%Wr_m!74S<-Y81PM$y*XE=vH)4hSfQC(!`wS>0$L z#bHld(MP$sD7M;ZVa`B>tikOKOQ4VI=0^R?4YS0`#+q;3GpgYja?FB#Y%SK4ZhryW zm^A@@%Q7_kcd?xFmTl2Xv^`21r}|Csr}EVgIY)fqgY%t6fCx+rB6gVF3-K0_x6kGm& z0tJMhSNEc8uzbbYzhARowi)(+Cv_2Yf0k4+p4`se<`YQq-Gi1e5>;gUbOG0^tp%bC zAXm*SDq3|gA0mjc`(YN2f%M^*BiBaO=zW^8P^t9p^Ow(5uqypiX13FHR6TDP7M_qg zEb{OY>64V=&%;pTc7!dg|H+dFWh=t|*5k=EMRt^MeYJoWohhJQS=m3& zKs=4cGyT-`eQP>#8LKnWUQK7RXRr6JH9D9Fi0b&C?;}X@hN%)^Kc0rC?X9O}E*ZwE zZbf8L%+9NAR@u7gTgG?t)yNAJr2}-7E()3KeR!6R)yrxTrtShVb5>x~;^;K8Mm+8K zinraPLXf|WFOUE=5j#RLG4hGlv-lR=b#}enj@l9QF$RbrsXRC=qR4LWg;}{ zqBRPq{%1X9>Z+>jz51a}N8*_Y{(%Ivm0sA4q7 z(zjDE$0H%k)@ASocC>|a@_Dt>3%==IU)_|{BI;S9EK-m-YKWA{h>cGDeN&aFLLJqm zcdC-9EFw5$x4o3;)S=(3_tjWeodqaq^%`nv6oeR%9k)@Kiu#J75DjE|$qv2c6oKG_^;7Q5d{U~|5iCj242wpp6uB14p z0#5r0z(59yIb_7#EVbZG6BXNl&=HeNEJwBgHrzgx23osiH9QgPmKb>a`bAw6-;t8Z z?BGZ*Mv5AuBKkFF$@y0cFxr!oh@SZvlO7}3k_hx~e-GHHlvljPWg{296%{#6rCi?) z1IQD63g+0%1QRl6#r|EQ(^U}eQo01|IJL`4Q)A2CQk4^nN_~P~s$RZUcD2;jOc|3?ugb!-ENr5P=%j9iw!+JT2?SU z2vdEC*(1aJDm6Vz;W{pob8YU5@}?lgw&2?D3Yk}odZtCSXL7uYBEZopl(>@ew^sW6 zDS1YM0b>tO61Pa9u`8&`T5|g{(n{NY4 z#SbP2u86JXN}B5I8y|c!rx=MFQJ#T19V`gJL)>_sD4w;vVcy+$I+bE4*0wB2RGEN* z-?Ar4N+%JNJh7Qm#X#(^l%)@nrorLL^_5+1Z73S3AAe|Xr!fRay(`W_-3z&)=4W`J z*b!c;kaS0cL4H*J0(y=ciY2lDF_)SbnFlWT@Wk#cYfi(72U%^$=%czCCPcH9|hg@Vw zO%t4BzM5gt8MMKFu&o~bB)!#lXZg9wdtaHio!@Y{_uLY-Dc>O8AOm)BkYU@= z{qCNP=meEjo1@oDCxA6GOB6}{bMGhC`JG;%vS@bbMm&c9`SJL zg=fsJTuUSX>x|DZZ|Hr`nN4VvljK?rJ#Ez5H81@FXfWTZ*LJ!cEvr+Oc-!Q=bt5Q$ z`1I!oEFQK<)?Jc0+IMbF=Lor`eYSXlOq{IFPW}WC#KebK4OR#AHhhAf<@sVX@b61C zI8j8B;YT?yyZTSxm|ZT%D+$Iol6bcOuI^wG^8S_2$r^jo6{qOWQv@zmV&w4*k|?O7 zGBs9N&wipeV*9gSMy{rkz1~(cd8*le5($;d@ zKaJ68uv99)-HVfp?S=*cXOXZT&9j((&Ir1cHy96#OvGWB%pvxI2^(&Mg7Ii;jIMvd zpqx_C;PP~qjn(Is4S2(H^S!2zt8PDMvFQp)`;36;(v<1i@AyMUf6*phX`jEUaM-By z*|xvCVdxs%Mmu>02((V6TMK_LYqkX~_tmOH13r^R|0{X(fmuSrgLSR4fPp53G~C^Y z38I%5NcRiah0TZ4)Fwd2`c&8Wz+a%n@>+%ivF%AfIRJ2&$`CYeQYEfenreAlT$cjx zkD2_+5YO2+908*TZM!=>OPBf<8H$8)a<%xZD64j%dP+n&4}&rn^i|@{<(%;-_ait1 zvQc-2>MI8O53tCa_r#h#LkKgrgA^)aLUh}175HCWO2OcFUQn&&5 zkF5BZSs}Au8Lh_MAQFU-RsvWwpRyQ+oapQCR;!8FX1}~kFcMAPYsxHyl3`{ZAD9J` z_6ZASmxgu*HzsCMMVJu${w3G_Zo%xdO7uJbBPTTC@r#~y zKr;UloBZ_cX*O>gp+%KpcMaTNwjE85Fo5i=G?^}A-HXir^g?T9^(O_3lMTLNv}!!i zpHjWd<*;pI3zWYxb|C_9Rahb2C*?KMcuj#lql)EF*go-?h4%SrMk>CZ*}jx*b^R%t z!~-9ErA~S&EQY>BF9^hTp|;@|4oBt8^a!Ag7LCwKOX>b?@Fh0eLC*W2p=%1oI|{mu z$m$JD*0^O0ru|qHvz|6U=-BNqfRQz_ZzQ5N6sC~vP;JeC|81K8`B>#`GBM zj)e(Nm6?|7vDSEGgoA95u@d}U##E{b&TZ|_qhd4~o5guftx8hE_Dt)dql>F$j~zM1 zxpP;p`plU{XNDfly~zzXOXB-H(-ofBbW|ijgotW4K_5LmTyxVHq9#cci(Ksd54|Pa zLK~vNunS=&y4&PL-3c=@|5GP+0q~g7snm1T!?;$DfzM1aP$mxqM$y`Sa4Yj$56Z;T zy1NzLMq3zTs3&1Rh8V`(er}RzXIo$X~RVV%x4ALFU+gwmm}T8~yJGob8*)lb3x?D$N+l`!ojEO$&X*w?N+ z471%~boS6MN2VFAG(Ci9Unyr;3DH|@;Qd##^UR}(atBTAXs6YGt!y#2X2RJ)+ZY=Tf3XbI*docb4jNzIYQ`j z39vX|=nu3Dc{F&knN+f6XIA_AK+Po7+Kq0AitR=6W-+!t)Qp$ugKg!Fv&(p9>&?Wc zdjTFyuutP=^uOn}EkigJujFVmBC5tl(oQ;(l{2yQ#s^Yu2Qp7^7u+b8vKOnt-g|LN zBThX^jg{Mv6;C*&#?r2PqXb!?jh%YdY;Z79IqP;IFD;$E(~Jy1!0bW~X#j?kpanQ) zrzB%)Xfq>j&}PBvHfA^|(L(Nm|Jt)4j2Zd8Nc}du619l;uC>vHghO5x(2r~1)lZ4r zJ>j6BZqIN5?_+t%voV<~{%@%MRCV|dKbbF7Sn=b(niLX&fe6`hEXiq}A#5y;73OYE zbhA+a@aV@qEj(vEAghI<_f`>WWWv?U`YtuvH%$zn%Y*A{&!3BVcEymYF8)%*)H)kM0(=yj9G2vBxctf_nK3Y+a~qdOY|@J z$KrIGsXBk~WuPgx4X{}3CYZU;!wc+3TLISS31q}6u(-*({l1E&20bMLd;gX=-tzjB zP;P?$%51Z8JTyh~mwp3+DFuW%Ar)56H4)pc6dwbR2D zxQm}zO9KBk%UA)?GtT7ycF95?|MeRR^7kF1YD>(%&6+^7XPgG(`m-49=%a>ZyDrx) z{eVua!eX3iEUJUH{Kj(xhg*vtbM#alhC_EW;+&?cQB|?EJ+-{%)|pmqRHi}nt~QR) z2(A~>1dJV&iGO+yrwrvAro$QHEYWx}~+u zbe15B49wxYYSIOqSkIOk-Y9J4;IQV$@^Vb2t$ALc4b-X?0d|GRxl6R#!)<( z+}4Z|Vx<)T6~bzZPXer`!?AAcd1=7CYeAEB&v|e5{Y24)edM=}S!xf!6=UH7|s%{#6Qjwr=N(crtEag-&hnR*Bnv=gVZ$QD;Z6LTaw|9Rt7G^$+` zxb#z&(=O%z{W*={MN8i($PeD=(8*VC67e6Rq=LFGZ9_%*MD27*&2^?j8yEQz&koQ( zA5mu%j<#ee4|FFFsX6uMO_GY;mM zzGqw7m`xLQr97#PClQt&^OV?yuN>CK`$(cwF3CUTQF^QSL`|1om@BUG8&VBNQ%|~m ztFXXyqTsq%W)3EbsMyCxWi={;!z2e&ke52)x5BPW2UaFg3V&9*tHNno@5iE_lLdml z+vzu)sxER9rk`a1Lhh!S?cSpGju96e|K7*fKWYH854X|%MNx`s zUl(EaC9YPI#r3@&UsON{;r*llN`xa`U@=6;<1*lorlY4;p9Lx)z9>v7zc*Ep z5!Q_vlhG=J+4U+8ncG*uMeIlEd3)xWtvOVclmk_=qDcK$uB-~Gw(0LI6pEJ!7M*M2 ziiVmk78f3Vk}8NxvKl(b??cy1PX7Ov=$Ra9GxTMTu88hAS~)3SW8>LqDW#&Ckg)$# zm31VSx?SkCNFBIOEpxNRpJ&;ANbwTXD zO>fMhz4~4!N)e|lQe|BYdj!Mk>4no-b0cnH6sUl!yCc+m7DA4?5CWmYXtgKg$hDqj zwa3Vz#b?QhZ;Im8xA%w)6(yY1VT!{)>+mwr)y&{1GkasH=K@`CLF72D2>ja zuVIi{R`ielO>GEhwqYcC5S6CHK(U-}Y+An)R{+}tPi|58S7^Layrm;#mh#K5{kq#S6;eDL z`|TLf$mXg1;xgj>95HdS+g@h8xYDYLD_zu{8YLJJJ!7q_)%9YP$OSu_!DP~NkuC_o z&lbeozCRg*gJ*)Omqaxd{o%5N3cY465;RM z-^MFbw?^@6G9oQY_i%2YClt>@AC>l_t+k#bY0_vSSZHAvUX8KwZamr1^ba7(7>CW^ z2OWW6w|`UCg9a?D%JH)}3W}_b_vsp1K6sil&wGD@OL1yk{E zfB4a+m^KEkmurqNgjp0{8!dJw37jiuvdVXU`j}yhVNMK{s77xcqe|-uJHvR&m?1Y^TJYJzOIG*8Ni+C zGMIYb&l0GKoOpRmt6k04>8}UVM>B%9nKS&MI)_<_c(x~8fjtMK6){{2^=s<9`;jY# z9nFq#SwBpi17S5|g#N+w0oXGI)4JxXc*k7Y%-mFRZWlF>j3Ru&__6wG%z0u03v`9g z)k#JUi`c+hGTfcj^)s3(gHYDiDUSZT{97Qmk$rNDEanLnlhm~DSu+%B8V+6=+p%0f zeyE@$Lgcq2E+{A@rK4kBMD<78x>n)`gzR$h*i7_;5DccbGHFb92DWTwN!QqaDhQPl zwOkVvLF$T=#YfcCOh#_r%-fDr7m$2oc}BSKd}gU%P3I3>nVrva{o#`sLYUjo)tsC- zqJhios^vK(m3n-Gys=Tay(IZ}_L=yxGZYZ0z$AcyPWti5rF@*|t9ng!GK`McV#l;_ zzxiUn=%zjR8)}tRA~~KBHCvoOI|xCj9tiF|QIxel!bD#%MK?7kSOL)FU|3Qq!AP$&kp9>z*M zs=TW@ucZlcN#;$j>%TH&k>j?PhSb1q=*>H)W|5h$YDxEkQ9D&{g>brP4`QdFSX(qV z1Zid;HBE*Ud_W*(1HnxmK2Vv0`XdPLCQw6=21b%Kw%YbqoW1x-ovP4>#o zh2u~oFOvB8yW$H`;wA-0(AcPDsGWeM=0LX~O6HA`DXzy{^9wIZL>C}5c7#U$mMM_L z*33LDFn#jM!-I|mRHsvCp2Key1_;~8FW95a*d0F99~GK>asjbsM*oK^(sNbB{&Whc zBQl|{W#Ncx)<5^4CVARUzuGRUv6T&~Tese6BW;_J|1=_dyb~~lL@c2}59agBRa9+> z)M<2VlXRZyl9L+KjsF3)eS76Fdj&|1{lM;wYTt$)2oycgVlUz{8S$K3A%odrQ@~=_ zY}uD0*ya%KYloUhg=#czCD|-9+^@$SSUyGCqvD`YAq>r5R$IaglCYrkC2dHrg-yMo zTP>TtLO@Q%>L_;by-W1PEI|InGou2=P^n6}ph8Vy)_Hr^biPFA>FGe9+Lyl)lAT#1 z`h*8Rv0Vr%u8hajTZIH8lo7UFRznpJ35bYsG_{tWUO+SzNlRAXPfum?GU;QIyTCdV(e1^h(Ef)u;`OIs9kE5}!!Os6QWd#f*mi!^Q`;KX#Ys^}X z0FTd@5%a?=+x*e~_9eUMJ4l&5 z*qLJDvR#PN>{zq7eod1}X$}?Ho6?b~ZO2#2>2VSBiIGK6#$E3opbcTwTyP&9&iklj zMS0DFB~i*JG`rRPR!p*u*KvyzSfckGO<|j`kfUz@{Bl^ZAQjE@i(4M5G^Oga?V`a$ zvR0*(Ql`+2i|$-Oy%@UJr3LnS!mskVm_&!OITrGXx|=e)G(Z-yd0S4m-xTuleEO^` zXPwtTOp8^s0WZ5`^62g+W+)vm4o|7%oY;iGuIg!Gi*YWw$Qtd>|7&PO%A{M`iTTtJ z6-`=)@T6tHmCoMv6~L__PD6MG1QpLXm&gjmAM>ssJ<220DbbPA77%^RRy;Ee;cZR{ z@R~R^^S1JDL+tXmD3v_GPwV^DuGl<5Pe41Gd^E9J$HklWvU%CiGgh%a8wbjWwZO}h z^Z7xcL=~~si71Z~;*J-#`?7@#$|@L4I*`_G!#q27)b}ZwdIli75jn480OEh)d+cR9 zBon|MD=U1YUX?C!zp8ECO^%wFej^e|FuD-&j<#Rs>q&th5oAhG`zE;h=fAF}=$ZTn zaQq+ela#0z@3m%QsX!sGi_dw(`4SYb`UDOv1)*8Fd|mhTQ=pb(?47E@*nMFMl=4JCSUQnllkJrfqAjcsC3^! zBD={F2y?@(X6LjN3hFv2F~UOtAcQ4r0RH+4#1!aQ$&O}V9|Q_Mk`hz_R3Vtj$iQ~T zfswT+eso4-Lh*9{@gek?E(V$ptrgcC9btbY4x@gnBgqR&TU(Z6V}j7xj;$2Vj6ckv zOW1KDcSjxJFOo@}8lz7|k;Tsw>fcx|-=P#)OmA5fzFPgUSsv63xbR>6SN@Vj6RJb~ zr-yZLq$9A$WW{5{Jic8|*6YqGyYGTok2n?mnjz%7JH*`*2(;%+HC zS+$?5-pr}0#PXJuv8YUe(*rE@5~GhMVX5OqIT+CZ?ahWn6IBa@ImX1DtAXgSm-!Ns ztSS$%QewF!RyZ&ry*dfTQ|a9EkMD8h1vvjjnC#>ul~{El`8=wOd<7! zAGxxy)hm`Rha)}sU9hNfaC5`+f1+BX%PTnDxxqb*^#n_9HGrv3 z^5e{@W23My-|J)2yFsfHZFbJcg1KKBNWSf9SjVyhv;|Xv{}#XbXp8uSZ`q^Qe;GJ~ z0uEdB(i1DiZqGcpdj9#wMBOq3a>V|-G=&mM(ZkKF-@ojIxKmPzW3AJf)WRSe?duZ{ zv8>TaU|fZ>=b`Cv`z?0aZ8r3ak{C3Q29yq@$T5;ACjT{l#BNeyz{V^l2+McRbI z0-pkEbR#CtI)x3QC>}vMo;&T{a_`TG3lch^HZ}SdjLorq)lPv`Jayc$W+~Mb&o5w1 zk`gkMj}feqS)Ag|>10viUs_}$(Z&Lp0vLw4GQU|DBPD?D18;-GSkT@szL3Cd#Zq|O z4c;;vw7NHCa~-4<6(_oI^?;f}-Q=0qQE^uM^a@eWwI9enllMu}KvE4k=lZst9^pgj z@i0Eol)T){H~14q@vmvtWb1#8sNR`w9U2ommb1pgED*5K=3}sIeg*B9Umrx@(jd46 z3p}`Z)*%vDwoL-#->klau=zZ|f@K}TU$HEhzl`iel^x9%3>F?NgL5!m#EidB%ikaf z&))ZTQheUvLs2L&)PLtK>#Oeci4vEbB%lNXVB7QmWva>Tmd{P;v#E{`fIa5{anXW}S=qr0%{{Eo~C8l5G-N?Qf5Q9nyqMBL;0Xi{x&Xd9b2 zURp{&b_s+1qx3^1x70+jqT2opLWSxibKZ40vC1?O(`btM_Xmatb=S$=$m2upQ@C}` zG+gmyI=-2uu@-oB^r4ZBv@+vHd5U+=qiPd8$04Q8L0|U0Ql%(1cVB3Os;4q(wb~qX_#QrqUEQjc@2MUKSvN2{$cKViGYp|8>pE(Kd zy+Dq#5o#u;c4Rr-9*L5O4?#}K637Ig?Eh$#o2&W1@rYA&7iRg0#^As617xdwgw*(QzN$+c0?F7>0CP!%xqM@u!pifNMnZCg~8YjwC^ za>OE$lT|1>a1xVD&8RUYuU8^GQK-oFp^J<0;JkhvW#6M8>TC#BR`5yz*`Lat({P^5 zf`y2cVYo{c_k8;~-EMDO0&CQYGC98g3lOjIwk{OX@s7?ylv{aN06!jU^tB3hcR*k|Z^+PdqjViJIiP-?P5B=zg5M=MkI25!sfrv8R^svD>M ztmc}byJ{eK^2>`-LN=>SwgW|je*(?Vnn4NRPhi(#>P9wld$z+!;t|;pWz<$VUMHND zf7aQaXsva}ZGUkxqcRPmp^R8a^#uTBjrzghzdY{{r^x~l>T4krjW%!uzhE+ielvld z>}|BVqzR0Zbp(*h&`y3IbZf=sd|3H>W`#j-cXxdfa{(bPnjdXCLQtD)muK0YwLG6=wXzK#Tn{ie{@pvPg zuBBR)OCP#ex?Yq}GY2o~1A-t?k?xPCQkyhJK#JY(X&j~Im@j?h@7KmhOC5-ce91J+ zK&*swW)CjE-lq3$T*BzuIaXKw)^mdnz0o_vN_B1ebWATqa#oM`TAz~QU{PX1qFdgH z>%nAITG~o?KumlE9#uTOdz9`KtXpUjAH)cEqC};Q)!u(g`(pMsatX3x3;PGBUljj*ug!R48;^w=+lWl>*T9@kVC&&$%pZu!uaC}((7_3fsebcg{AU_wX) za!dN3_SRFP$v=n==>S0hnyNP91Vph;qcMA%v&9F&8BCCdHT+)luZ%+n z8LGqw_NMM{qXT?N#&8LI`vdH8>ga{q;rorkuYwi_Yh%RgFe1UjaAQj@Iuls|UmIA| zWkQXViQ!bKh$V>2FwWsdL>R_sQs%Oo6TR~9?5yLVbs%x@zZ$g@;Gw_wOFQR*$Sci` zY1Ku^+*Zy7Z;iAS)w&(}!brPxd1uDxL!9?sAM_)FTuRpotzd}X-;Fv%s8KrN=bwu^ z@F4LP$SKQg*=#DedcC)5k$&`0I&LGe&tF}fo{p^75&AZt;9His&ZG@yZc*JDoCTHsAdF-hj)r zKrp@%KR4Bi7?XzLLzSbDDGHLQ0i2{w8z}iVl7gmzq7|kyheVhyO2;q+(r=pTlA*(5 ze1^vPTF@7_oqU4X38g>KN>s*^y0(8%i8h(;kUPIgSc$89W|1tQlxjcO5K%ADp4aOr zehaD*a+uz8@03T@x6|A3k6zTx>l)DhvFwFXj~oyk1LA^#5x~6>D(%6b$RA#xz9XYm zXvzQd6(Cb=42~ulR@llx^SK4glAq=-wI$u{=NpCvm zL*dMyH2s&G>`e~ocEO!GgBV0W$Zn_u^>@UO%4`z$pF#Z9g6L*VY5MJu*g?C|N?%T$ zsxC4_o_{j&8YV&6UO5G^l1T>A7y{$%1pw(Kr@c-~mgXv*lG?IdhQ)0sT1%&6#RlQ< z-9a%>tWz$l`)J$>4j6Uk+^#7vym}{R1M|-l@gxpY6=zkDL^dGmZ7e3Bh??0I0GS~0 znVyn|U$F#u;~fy ze8!Xy|6n+}+4)}?3){A*9#w5=?Q5)+5UxEKJ!d#yV)YRfq{|wCps>hsJr~5VD%Nb~h(u0@=H+C8i&rU*Z z>bmXLM4AJ^GU*X?%-Ql!asc5L#e)QPGN2+VxjwV; zB-J&1WsoRsj?)em>F7C*f`En+ope>Tk5DbdF0XhFYb4gB=mFxPSBDESF?U*z;wF(o zlDmb8Pm$amXR#cdT7NQ`D5*S$E;773(TL5swvXnfCBhRLw;|Kpexv9*UG(%Xwl5x7 zn9&Dnhh`>lq)AyJL&uX=V_Kz2TCgvWX4`L#> z0*9QMd%+h1xs&bmtHk6Sn~@6L5vs^?or5X)M3>zZ&d|9!{R60`B>0p}+!F&_7zCSM z%cy4(ss^Zr>N%dn!}SFVOUhfFW^hPA#+kGYNzdCw5F*{VrSw@2s;en0i~K5vR#~;O z%4@WM+21}Ddg(nn7D5vaVwkU*9hvCSq$GC3@5dW|HJjdB8wcBb832l#ppG!G71@=r z27mX53a$L#4yc#Cc-_z8C#kWROcv5^@L5Le9pMS% z0LI8fGCZ9*Qy+JZivC9d%|)Qu6xAkqohJ|wmRR1a+#d5=HiF&+sfIh`*%ba42QBH< zEU^VOTn%MO0m?Md=li@+s=VVC@tE0L08-nK867IkJCz8RBpSyDlhdi?ztA;@j6pV5`iGRW`-l9 zE-g0J_Et9WQBTW(ZQRoY#ACJG*0pzTvF)35U?vt|@sp0IMVC97H5G$Y?5=aUKFP?! zXVAOQ`l>-U67DUFh?(G8E3jR74#Fq&$?_`up>$ei|>Jw)YH0_DO$kt6mRkLu~)V(%jlJGENq z0mP4~&dEXAq6b}cPGh4nFZEW7I$zog62z);dtvW+75`VeHHy(;X6!S>jN#nDx<2OLwDIEyW7UG_a_@@t zn!hJhiVTCd_j<;v+m>oK&iKX05ANtrx$jdj?Oj__Sqv~WzLE|Ua>`^dFgWtUb|kGJ zSxC92YL;=BWgk;##_n2m%vhbdvGuA$ZV#&*k|Z_04J<2bl5{U~?Ic*d9~A0G%ac&E zI`38yv$>XJaIr#B`OaFkT@n|s7Fpk;OPhmy%uD~+v97!PgK}%(lO?WI#8^;Tw5pja z+1EMq({|;0qEzJuH4?39U{xgvS7_v>Cp_cSjdp?pIJg1nKq>Kdl2jGvN0xWY%h}`E zYPdY968xn8K5jZJ>#nYxW?(y@>)=_jl~8A5*JFck1WNkG;8{8{h!O5J!^tor#^=rR zqa+lY(m8VBA~z3Tfoy1g&ON=ueRb>Yh+tGf&w9+#-nr%`GBGAE+UPQ$4Xlh;?h;>Z zfd`HZ{yA=?WeJ*0p)qR5j;_O>`!r$i4+vZ%=%F+e4^A#v$y zN*li*i?*PoPmKRwfVTmK=2zc6l=NCq2wO_TdWd=%i|~sN3tPIk{%!BJjalV-Ip;V# zufulL6(pP5i@}d6AfPS7^(}?0B~@cYWYX;>dY~+8*^jM>Jg@{>0tq@_lyw8MQs-K% zdC3;DEOEjj3(001(CHtzmN{7J!6M5(j>ZTpNNS_TjuDG?pm%N54 zVgiFnaVNsEBNdJlKIlUL>l9+^whEeWex^uuq?nV8xObJqY9rv6Be@ynnec1@56Mu~ zp;f$sar|ZN%dG`oG$Dk@2LZBE33~5|**xzjQpenW=mNt)y&2#BMep4A0GQb%M$#aw zKVzd2H@0!K8}QBD^T&Mrx~wXe@>x1eI^lD|8)3(XKf*+$dKB8ZDbb|Z0M1ec-mB_v z=xsBQ`!dXYAHF8u$PatPyS(F&68cG6(^X3OWNSS}`uLF8-#g+A5@2rW0`M^;J6Uup+;S~rH_EoUjyh;mCFtYW9 zpNj)ekDRPFK zWBtETc>fi)i%kSm@5tZ5_6l{radnIwpY~pQ4uod#HZ8*8?3thxup^wRat;0lWV-nvQk&PclP)hH1PovcM@a7Vf7Pvi#D`&Z`42)+RBFcPH5K=wt|JsaF~0YhF>LY^Fuu!ViG8#{JQwaia)XfB9gWJikFYdS9 zui#_|X0@==`T~*fnv5C2eI88fpBJYpJwhQAfc9Ce3MIJaJ z;{oB#6AR4Vc0azO>DfsBx)T69ziP=&sSum+*1uc4Q*Ki^U4bVtX+Ptx^5&&W&z_Yc zVxWfn$Gc2A{QJ;(-~VX|Bx0YD6i@Nvk;v-K5w>OM$Joa9JHp4M${NqtGQ`&X8Ox6Q zp*GE*_@C;9IO|?>dthC&0m#B+55o)-3{zDDhgmcpyLSmq-ak#*WXW{aE%8Wju;B;f zZLr9CTjLalROD*O?U0Mir!>7IIA0rm22$4?_U$k6I{DV zedc-|;k)$4jqln>M}u|Mrct(NA>&4{zA|nNe^bAW~-;9z#Uaaotzv|(dSQANP_6z~AQkpf40@e1y>NrOMTujs=#hG7Bxk~*7 z;WK_37m+#<^Aw+_h=lg68jc%9Ds##mu?Z$3mS3w;1DLAMAh*+OH!wFeYYz>sl>X@e zoH+!YY9Vd1^Shg^1-_a87D`|Tk1qqCj^e```Tfeg@s29i(_<+*&LMvZqR^9Y*nYn= zyD}TarbBUik2(RipfkGh3?KI3Wf`Ym;Wl|Hz$!YXcMfEet|j~x597pg*w=yLG;V5A z-A?CHEhVEVx)|TChjLAwrm(~mH(_DOAy1Ql`@931w#cyZZI}r`Q53~%71ie^@^c9o z8_nV%ou8o3Kf_ePYeS-{1=q)`i6i3yOQHKK^|H$-tcy{X5jf)^@h{-6A9R$iq57pt zTIe)nS2*0og(;;&tNF$5?eSMyGpGDJBqY7*Q<%icUk(spbx9uIY?CZ{bdXEjWe`j?FqubRHQ@g`4*e$ zu}|1Nsl<;TFx@FyocO2^%i78k(xuefvPRK99|;t4@v?EntMRI~;us462Ph^o>HLJs zNZk^vX^d}#$WavnuA{ucoqqi_8QVD}3Mg^JBh=C>pSR{ecHn(%?^cLudLc7l4uCJR z=Hz5m$eOwCNl)j0bE0pShY&ccV+EwEluK#`?_x*JvwP8o73|QSpef6sil8y`Km_!_ zXs^mpu3f|&ygc2oSE*~0KzKm-R#vz?)4KzH+Hk_eD`Dt;#e(|bUY5)6$lTpp#J@-n zA~i4XDCe)9V9CP5<~wE6e-&Lu@jEq4FqK?e5@q#jdXVN&If@%n_qCGYm#qM!1C}_{ z*g>?1&-d1ADu4XI2|nPJm@(y)KWomj4-3N-B%T|%mCYSh*?2|}lD&@C5`D1RvVGU# zFCKI8URRTgu$Rpqv0o^_r0150Qo%NMBRgr1z_)MF?a3Hac1@q|M-9y zrthv^(}7oXTdwLIrGl<`Va6qOEhGye{jL^*sM7W{t`0sX#%?k#{EtI#QHy224=znf zH5`&B|73Zvv~fhA8Vd(V9?adUbytk#mf;u+oF(}O`2c#4cW;wj;Y)%P^80>C3QHDo z9zPc-hd}Du+}h`Mb122z%;pL^%p8fn&y$r)?J_BC3L=n3uX7FdJRX)}L@x zW9Nv3*rzU~s*t#qvjHtn1C5mt$JHnqm<}2TWk6QF+j>eONrKW!Yg0AXj4QMQlZKJf z?CA7Fh!vY;Lm6fXm6HpkRhidkypE#ix@M5}(OH6yE3#u-N*>Iqyjx93Uj~0-6ol^2FsZYs-q*xwqIcM({l!Z5zuWiS_T^LjkZ1 zaKe6qN&d?m%%1f+4bl?Etou97c`=O?!^uZWZze_xR-_e>dgK+$psLge!^j1+?d~lc zKsVV8oD`J%=~)0SR>--l3Q`I*N*kF>Bv=6 z)7cBFTNOyv+C3;(vkzf#w6oRUib5@Cr4-=mBQZ%Jj?~_Go7#_W&fuYNDX?Kda=EK8 zcn1(3`XAyaIvsg*NeGcnoN^#a>SQgENE74j+-GQ5ln9?^2H){bq z5qa$f*JAz8SYgSgkNowiwbqSxh){sC} z;t|dco?bLwu0*kReKP~9T1EuZ8D09bxnj`}OkoBmvS{OF_uuOPz6nSFMXpo?uYpwx zDX;BU_B7P7vCE6`o~)jAIL|bIOZ!;GOGIPVrx^E`T#L~ggO2$DPl%cDPs?-4H~_ex z>|!*JX3TZ^k{thPm8@zRGYZ!+VK&gvVVWN*fc9WH#+AyYV|Kh+b`L?Y>03fz2|Eg9irslBy>zsWuqR@)9_B^*p2vRRxsrW?kamoUH@i zm|ZWcL{m8i@;fE;8)rcWgo!U>NVgrsN`}wf0UoX zZVwnI?KhqBiLn(xwXn(j77=*~wt%2?AjFRBi@qUR;!SO2{5Wie;`?7JHCllB8`0S|4iRAc8 zl(^9S2>y688|kfITxPb2c@;s{%~a!nF=&I=`u51xB2TLKlt}&H7Yjw7^K87o&x9x; z45&h_u8@~v-@IsJatsJ9+@lI}Ha-{)Ai5KZA5G`CM*1Uy)EmL#jpcgP@tjkZ^u9!v zxoz9FZ?(viN#T87!F2FIL-hYHPU<{ky)g}#UZcW&y`0SB3-TM`=5VxM!i9504`YN= z?*Ae_04V&d7}9`;ATbO@bx8k+VZCosE1P0u0eivK9Q zf@2MdmENE|1xi!y3ssC(+#Xrz$)OPHM=&Zj8O;Cn_nlYI?i>)+d>?*5Yz&5o%gC!+!&i$e9O#!YDTrc+6R;Xoa*4;ck1y7upu`A_epahr;*L_~iA zWf~*ky9mhb>WLOwJSN`82NRLk?-2_81bPQYB=+$iTbhsYTF^nswntW;hhPoR_##aj zC8#3jpQZL@C+@uT3&!%9H0kEn$g#46yM3W*!E^tqcU`^ES`}D)QXuv*slAqg1crxl=pnK0%22~KOrcrd zHwj`6d^`fXn+|ODoI{Lt0ADF_)zr7(gfd6QFF&_flwPRl>$guT#?246NkKoW>}L`g z_NY%h*00z0<~3q*xUP_uamCQC308h>7^fp*>SzXk^PVuwwU$W5r!G%eV4w^!(SKoI z_eH}qTg1!G{Ep1zM?Q_UYT$EU1IAuz?oD5TO;aJ79!=01>T|D9gbfzku!&Rb&v~iwEQ4E7gA$Rujr+k>hlkQ$e-}U6 z<3)|3+q`an-7yii;!M;k`lo?-2#ylN5g#A(zPuCisn)_>YU2vTW zKcE=`XV=OE%S_6}ueg!JiA3N_B%h<=`5I-D($mPAGYotH3BC=RoYJMpDT+X_7 zwm5Q`$Nm%0(hN=;ccotDeSf1i_EJks~`oK*^5s=?d zs>p~%EyK9(Nezs<4hTZGAdq1qgK$_rbxpg=R3T*tse8qJ3asOrsph~0t_w0IJoD^e zQiB+ShI_zkU-wgEoOB<0KB)_bW}jR*MPS+`7U}vZb-?ok2b^ep&=7>)L&Crny_3nw zVarJkEZP<<5A|-_DbO~k1$EGJg6Cm}@f|fB@0gsJB8bRAzCx@$<&#!XQUHL8esjz} zD^2jJF9+1Gk?eG6%K!z3*IlltAmp<*XxbGli?LE))(=7vMHmi(GV?R`AT88n_4DiK zzXYbXvK;hF2#h)!!wv~^Gh=8t>h7YIl<=mD@7SEgm(x%3H}%JzWl*!_m`;Oj7`#{? zdiX^z7aL7^A#!meIg?q*Q}`VLfL!d+5z~ zu?~n#; zIwNC6fd6;t`Xj0K?0c@qLD_0KVMoYF7I6K=k2_cxjLijC{#ubR_C(5K{7qC}_kro| zSDJavs!C?>zEvA23*s5oie{z1i5)l_1}JLVn5Fvt?KbkOc+|3FTVRhrqLhqB``0^t zll#Y6fm3R}J)5X8&`*^h`PSFUAaGYjSiCt+v6BqgX(R%DX*pyJ&F+A@A`MnPh$AQdbxL0)jSyUhCP}6;c5_`ag ztnE{bE`&BW5HXhPlPbK6bCTNETbD|QWsXm3%u6#$eMIbM-Bd=gA<-ag3O zUBSD**yz_*0!<$jbH~TJqaA3bw7O*)XPzInyzSkTx<&43xi;33U?g#PU9d~l2|zk~ z1hXcJ&bY?OB!bQII8^*p-J6pmN27dupJxn)5G&jBXB65+V%G`-5=xb09Qier$nC*& z!#9SvnZK53tq`Yb)zMqCBkA&B&BRJ1o;D-EswZ|k;;axL6=3}-lWb#!#1vjWQlt-#g*O*k;BNhLC1OAz=w z$pG@(4TZ?fWZMFN7OS1^PUQX~TZys^%L4ykGb4&;_IfNN#4`^efp-2~4l_K3h+rw)16 zlAqB{jW$wIVe>xlpOH(~j;!?rp`XD;r=JGC-hKqL1(-jM`QJfzPyMukNQGn4P#`1t zK7qr=nfhq_1QyTh0rq<4nuZCt^{Ugt_H(u*!~!Mrhw8UR^ZT9&RBo_O9N}m0AAGn8s7dDkk1q+MdWt~*V+YBN^}e? ziu?4Nyfg4UvNmFe1{gg|Ht>-ptbU&LRp2K9EAAHcl9C%UM*ONo`+=r9f6Zm@=Dk0E$|3u-iuF>I2M!${eP2ynJ8Q2*6b zj=qmRp9VNYnM_(B&NxVl%UPF^n%$OeU|12?5hRfG2K1sLlgcL?d_qvy44JO@g&xJ8 zNDRe9+?VoN3`3E~^jjU!DS=eEF9T~Ey(5DMtWDk_;&AJRfl%GL3hpHaWR1Ll!{`dT z^w@hiIr{k35iTKuuTc?ZEWog2U(lmO6%BFKLCRulP+J06RwgT7jv|3maBzLG8Pn)X zKDo(+^^)bHwjE6cP(r+GqcxosIxKIZxQlj3w_IpDbEmFnqHKv?pp>Y;-zFj<<$rwl z03FVJ6iI?+y}oBEUUMR^ZC{ZRX-Qj5!yuDAcMV*fnX)rs4KIE?Dx}C|e|K+l(UNQp zi&V~prqo&*9=xf&7G|@#*f86JLA-rcn$7aD1vEFi5UG4-B30TZajM(!t-U# zX0)bAzpYV%;PtoDuYxRKUAD~aVAY~rDlSdmLmCj7tQ2w`z2!-%ppxo(4OTt|)r-dp z=`^3FXo(okf*luGfc=w{Fm`Ea0zo~q z#ar{M;W+iGdcL#>Xu;n*-X!;;sm1Dh2j*Y(PYXg?WP*fw*ir$g!w3ipX;k==hz@1z zxhBJ;rM-x3?C`YN4i=Hh+5Tvpz~jOSepmc{p88xy(gfI3XUMsvVUt z_uGwHD#kn>gbwAeO<_KTNWGb#37*cim}s_^kAMtcdSvjQ{~{~Mzmv9wxC?_QJ@$j5 zztlnzUW$j_W{5YyrmBEggIsq;+R2o&j2dxv>Mpl>Tu4hX1Cl9bk2qJhT?7?AuT2Np#B&OpFdy-x>0~*c*}$@Q<-ZxP{^P+r#Zw$iOCY zs0~Vmo2+?>7#lhqAK>QTCm=Z;81k1-mX`|dU6>kalJ>ZU zBH1Z0s%0qmbwL2P_Tp;}@kHzwgb@`i23_EXY@SxzOi*sj`o7-(bm|H1t&Octe_T{7 zOlije^R;=oH)a6PW?6Fwa}z8)hDqSFID-}r2rDkk#8xkm$ca8uXO zfvBkNZ8Xt9vjnA!R2H&b*XolIO8Dik*<*y>ZizZsyEYElT4X~#YgF<5`QE&rM7DI? zgSq;IfpnE@1E|dGTfux`>5L=(rmR4Go;$Kn`_ukSxtiYBm4#a3MV-vcO*ShoPV6~SRjc8a8SOFK;-H3dGT*8_AdnSw8Z?=sY0X=1_rt~h|stI zAV+elC{E{!R_ly@(NkO~L>2BXL6wiZTm{U%166NsY;-!nxcKe2C<}}d-SDKtiksv4{q%Fl`ZP0 z-EWEOR=?hFkB^{<`A5=!vRHKa=-qzox;Q zB)e6F)k`uxyEQ9A5+-Y!#Q0dtBm8ZHeXv9S#6ri7Ux9jvV7w;5tMioQgugtGC^~^b zbId5fQJ2rclmRs?BtZm6t}y!KYE7HmoZ!OGsxHF6IC`bJ5IM9x&KS*x=1WaUFFc6{ z+vILj!{Wr09Azv}i6W z^veG;-09=pvL5y7kZA3-yLkiD#V1N2+bcvTx4Ax2X1{BvFMy9@L>7_~G7CaM*h!Lw{!$^sx99 z9hz;Q6)Z6;_YULeJ<9p_CT-qySATsC&#+Upkj~>r6IDDKF_Vs7O$smpQc6=n;;PsChR`d>%8obD>B{N_?U=Niv#`YSRM670{qy<2i#C zzAA7PQHrIKmA5Zd8J>k^TSd*+Y8$>eH%@#|^3KqP2fzaC#IDyVep}7NACkeD6+KQP z?;eRqp(gfBh+2a}tAjgr_Yni8Z{ttO-!p8GqMQboZpQpj;fcyzpNwPkc(#yQEG>el zxhCGD0Z#W3Jm07!4p1s#H&+m=?HQ=K3Kdd~`RCC8p?72=N$;}#V>cPV+@dgD$sUD` zcwN@C+$YhFTA!)(jQO24oLx^T&{^_H1jx>}J)yzP)ySbw1inN+)vuvnCn3*%1QDea zj}^1kG#`CfY9?eEP}lBFkIKx72wTD3Ucqv}8v)3SX^sxz7SBE0&iG{m{B>x0%K(n) zR*)s((EMMuRK+jh7BhW{O|FvJpM8uQRpaDYhG8=ljNZsTX>8@WZs~rp8=r72bN9Cz zir0m+m4V0D_{D&=jC+Ic7AmyUmeN6;{8u$4!rw%${f~&yKJGZz?W+D8ixL2nP=<0C zx+!A6!V7&b&eOl151r1mt@Y5Rf_X<68t&~&a%3odDdos!>Xu-7g6Y{A&4l6=2R$*b z61Yt3YquQ+K9g~Hf6^=1lbRDtn(ht?ol=L|$|iJKoyH|8VcK*Oi}rL9a^N<-r76FK zwqhp^VElfk6UrJbEj&*{2aSwCck@feIjwjl@AT1Q&~C%5=;%-F1`?@hb-XbX%K&os zec;5oBz!mX>?J-rY@!0Dae!^31Vk;16vGJ;P6^DVrWPiiO4W^+8D!yeJ4xHK$kok$ zagco$-!1^8JO9*{x$3^WyCEHl-Yx!N`lh2=E$2y8Ua189i}}Sae4f^A>f*?o{$)?S z*ezr}t;=Z3cd(r)yN6M-?u3WK$w^kT*Cy!a{P9N1K~j-INPwu0QCN@Bq~<~<<~}gs z&=m7qOGNnlsrYQV%^7E4MT3BrFBXLGc9OH@3}yL5gHJ4;b0)A{#JX@`|NJ`3R+}r-^0}he7My)^6=8S z?>`DC;G!3X1`$BcmeRI-qL$u;6V!VpubWW0m#*-u0H|d(p+ZKNE$5QamN6>*WBoRkV8O zKT==_jeW^ZjuwoCrl?(Z^Ax(o6i9$e09;jP8+9|=W#p%v?#v}EBN^v$7?4f#7bDsr*YkYzdXhNvr99nNbN41L=k(Y zGKJQ39vCSt7DJ}%rw-qJ6SA7)mey@pc#ClD4wfZv*Y@D>Ct_zu&Z^3pR zK_CB-X_=7hnGo>!Xr7yT|g19{X#z+ZvTw`_&__yYwC=U+wKtF0B&Lyz}j47ww1R(>;i zSbU)KFIWJ<;GLR<(%I(n%vl;y3gN6A`=ct4^hAO!TW1_fP=a@)Mfg2~-~!VXN+8$G zaXuRl(C`sUbk}aLjG3lec^cphS^`3b3mUbbNF;f4; zdA@&+hO9Fr95^F!G<7=%)_;n+(!}10C|`>_|H-B=9!k;Ve_xWt3LCb(($^15IdXGx zga|(-j}^x0w{e~#%01JT% zutlSOC4bCPGwhI1ZJ_DMcy`~rHmW5(B7G<>YZPnMEGPTsiXsHP(UFfGqVGnHj0NCE zKeS2|S&-w_Gtp{V49ZK@#x4waX*H zY8qCGlexvwlVG?e30Pnzw8S(WI##@kMeA@>46u*c`BqQaJuJm3E_PMWp~nb9WiA#S zi+rA;`8uXOb?%^`e5I~?6#<^G)J(p-WbfXF|KFsK11ayFi+@^2wOtFs@IztwO}y@5 zwCKdR4=q~?Kr;m_6&^4wAp%t)Yya})@nn`T4|5sL^&Pd zN(fh(n$5C~P9gv&sf@7QEWw5L1N3wgtl)JsMkUeVRPb{%WDv-zApQ}W*}u$!C+qq! zn=0O&L7;s=cwk>cqmRfNtvIL)H|l}$zARBqaIcg%VG_g~<{&`13l$VHGgl?^%3c!o z0#53AV%Bl*O+Az!f-Gho0_{3L*?53r(x{+1i=XWNy{FHM0i7KDJ#zZn(UwRm36G z4`Xo=3ZITt2-jj1tDj5#!1~$Q{ja$z?c-JKpuWRkh{r?N$4}l4D|omLeqyx3_RmdT z#cTaR%h1r=x2MyCOWLDf5K1GVbim^m(|6DS)FHB262dk%c5H=N*LD9H$U> zwa5H7qW6&mOHr+qWIviZCuVzW->jn+ocA8m@9wE0M~*>RoReIvNt+YrNBGCL$bgCP zTxluCzx)LSr83!us#U?MF#&(|2USJLsg^jOS|7)?Nq~bcsdjN)o&vU&iaCpP+U^b& z%0p&YluvCrx{Q&L1c!t+=u$s#{O1$fxerlrD&FfP;RGuuGgb^X>K)LH0^7WE8EP$` zP$2NK^Y|wFK5d5gMWfxyMK)r(c-)^6$ptycvs#)N)qt)uhNs*_KiaV)g!dE+S5f%~ z*h+~=Z~-_Kr3jk>I{t~f(%u>=JpS(6CMWWA&Ktdx=5=;5foS+MyEq^$W`{rPeewB| zv<Ix;_S-3KMCgkl5py-6Q!S{mzq&;od>QAl0#Q3u4xvx1hFxvTn6D zhc@7cOMcZklmGaZOSCJeWdnR*vK`0n*{a%R{K2KRvJG$P4Oo&{j=r-F zaiZ(hSu@~5bnQHb=7(+SX<%d1*Ef?dzNuaGFkyF4CQcHdzVtgar6_W-xz9(&*5=1QF4(*M7K$ z4v5s!Y(xy|wjBJY=_c8#PWQ?-{Fu+v>ycn#_9rt2Tu)aqxV!4AAG7~pB_ideVIrZe z#?zzJw2-xeY+1lgEBa-OtyKVIm>U>m$YP?E4`KSQqw;tH_SW=pXuvQ6(cETboP1C; zwHuba1tUBa(_Hmb8| z7m(&_C+ZAnFEa7kxpGdm#TBMU!*O!Lc;%H zOV9zKmQ6P!H+j%=kI0^iKWPsEog|P9=Vv5UuH>{XD-dQ=2PCy!$VY4Ovb3`zpBU#O zSfP`xbuX?7Eq7F%aWWVhd=xah4)k$fcS_9Z4bn={COjjJ7c%^ zu8I1>_SkTK18NW9gp zRJ2}N@e)FH>AN8PV0tA1F=e*3<;V4TySpcB2O_}YF?o$^6wJo-#7!x3iT!WewK zK)4&t`c5r+CE3DbyWsfJN9%NMw1Ooq7!bIn!@V5U%rJxb%ibkG)`QSgSZkM(*WEw= zYJTZ81eyWtp-7i9hqias*IF0QC6HEY6j5TLTytW`qKY0mzmSW?G1S4agF^z-wqy&y z75;eh?5dGFl@bhd(5muOe)}G0pddkm;gD6iMe&lvrF4*3;u?;hP;^1FJAry zJ4x5H<>=->ueX4Exx8w^(`72~w}X8SSXs#kE!O4bjZQ~Bxb@CnfoT?uX#&qV8qcX6 zGN6$n%SiwK#$6;WPcCV5Ivnx~fyaJ$EXYlQRocHzr}*$cF4)?5w|jJ1r`{;Co!Ibf zB70$@erD6Ac-aB07+|~zY(~MWK`|L>LZDZ%*6YxCjp|Mbo#1v$}bzd^=g;V0(xpR-HGQd-oVqj`5 z1z#dLWfrc`oWUV*C_K&CriPERe^wNQI_p%9?C5$9)8$BQ#hf3Hgtiq5o6%rgW5X03 zHq8TzL6695?_3<*_IwL_O+j;>0tv$5zy zBTDdy!(_<(?>YQ@qq*B0C2PlW;F-zQ-naaa%z*32xW zCks;)*JT0eDM6eJJA)LZg02FM+_4_A?NgnGEr6latW+|`p%gEF?Oyj!C z)hNfDT69>Tpq(TrUCfpSaTJ5!c0D} z#+GnLOzu^?F!LdH`2$v=*_E6vS41nQl&0xU`b?g3EU@y39j32^T^Hhbut57rOGZJG zjzwJI%jbhU9>apJ9P9`;y(CXmCqTcLD_e&dW3&dVDG7O3-}kiYO5$LM!q6^mXD&Ij zix-m0>}rP55}vFGSm@g{E{dP5usEG=+TMxUrngEIbW`00VZq3l95J#m+RqTkPRdbN zSlVlK(hQ|Joyd|_1msiEqTC&SRzQP$f1~=%@&6CUWCgNKz#!dy6ev6hw#kZxb40vH z<^r`-g4PpQ8t-v8YT;FWNQV%CCBtOet$lWW8O|KU&4!Z ziK#S+qyy$ZLK7?AsM+k{>&%cv4OJ-V!}==?62~Uo*oluo9hGK}#Dz(F2HTOrn(9c| z6R9-znt{xohD893IhyWd!)0b+Ko`*^Xu=rwBT;i?7paVNi>g%W_lp{#3k00YP7q0A zQEDXlGt$q$iTJTE3u$f$^;K(V0@OtpR$2(%Qr;5&$W!Rxdf>U=_8_zz`P^ozGI(?( z201^B#$!iYW(Z&zZ#;ht1OLAVn!mFd2$xfXe_8G54>M7@t(@C+Jt4W|qCON;y4?1j zB5i^DlEf^jiThdQX2}I-D_i_JZH~>x_T#0n0^pX2>>8+t{7+G;&>LC0K-~s$00eo; zmI+I_eVTT96LHTEOMTVapew`h8G${rYV_U5-2-_<3V->pQ=pRw?Bs|bR{CX0vL391 zBW|&vnCgK~wQWYSy*E4zIEH}?=r0L?S*uc8jFX)10O?~;oU%!_xP7QX_K7Ihr8qC> z6klWd?LuOjw^KFqWQPOeRQY$(AE3m_G`{L zOA`ker&Oaxj6SuN$c%(8$%?pYGHWlTz=lVWj(u0%Nh1X_(3aw>1w6U^CQ1liewYYv z`DY2Dcxy#5SO!mVVKq3%Bzr(cgJyNjs+KBih}&C9YQFekvp?t)u8dHuG)Z1MvGH8d zr4iVsY~{4T)Iz%8w(mrcXO@cuMBNp_@Z-&YL^@dJy|S@I6Qfb~yG3i(fr*ic5JpV6 z)$1D~+U^Q}sa&22#t&1e&3^Jph3J8Bk5vlGFmE`#EV{TD6Gw zxx`g-s7<_j;eouXHavJ;%;G7P%06;BeFVa#zbjY2gG4#%M?`l0gO+*12GSk;2fk&K zk%1m2;Zu#)9voV?;GmpWC4N2e>EXeVHCoLVXv`vFM1Bf0>~XxOuH|2=*mCzoTb=xx z4wBBGNAW(rP-4(*B9ny66!JQA742ANHyO&M)2iGm~s;{-#mWFWvJwU?0 z)tzlThA7cY)5|F37+a=>*wU%}IV>y7nuT<;3eCZw6XcdErGu7(L5wO@0J8Ft(I|$( zji5p%(`*bq@Kj;~Ew~#bmX-pRVZwex^0Fo&jpj#F+I8W{sZG)8G~0Wo&cRLp3H8TQ z5SdGEaCM`HpM)MCN_9F1Yzp-#d5FS_eO8Lf{(!SX?wW8?Xu>*rhc_!5#30!Jx+hi2 zS(A@{5|Ber`grHL##d%^S;ug|xboITuKgRqx%sBEnRL;n;B7!fSxoj$BK^;Y;f&M_ z#&VsB!vSph)}T-X#uU5-A{8N@4^JcG4>|{Y-N0n#)vqWUQuVVWvZs4(R8+5U*_~Kx zd+4Ixw;E3eubD^x#wbH_eMMeJAIF@P9Vb$-T++wuFmgn~571!2`Tbf-;{p{}ixN(f zC%INi#0;JwVNoc{29cK29G7UV0QK7E3-iMp@Wzeyn)J?p*aR9P0z+|o_@b( zG**jF-N`aKi`RQgu5{1&m4Z7#S!4IMYVM2+7r$l)U6DXsLwX`nA|Bvtl{^+qdF4t1 zcdn=PfFTn-E%Co1EXSX>x0SBK9C?6;CdoLLrUSMzP|!9Ysc>m!s^`ZtUKc+uQRrV0 zQpV|rIbw<0V^8WFQyc^Ql7nTP;A$~ZgP@d(UT91tg2)f^TLEE5PgD;<3G%=cd_i!5 zG6@un%xG*_;fGJiJE6LSvP2ya*4O?5o4UfX08p7qgI@W{(%dh%U`a!^zpZNp&HU&~ zK&QD`k=%T?=9dbt zHu!pPCNRxgBD(M`c=vJ-^MYHz#EK2gL8f=>xwyn0deJ5z(>()^rxDJ0m`+(O&UW%3 z5T|%hSShLH{mY6`fYP0KLbNlP`VPO2qJC@8;i%QbcJDz^?38DA-neZ~;cHz_GIkqS zMLj?2OI*^di9=TUJ+_MC95LA!up!~(37AV6`f(S%!>!Z8dt~va_FhRXN_%bvr!NRT zNetW@uA5PsVOz#N#L=}tEYf%>%7R7>e;ygw7xyORr?zSle>)^D(3qoa4mq$$&)M~; zkP*&-SQ88sGX&7{QNP7^RM7-&f9|T%pa+8UX20ub)nUBzD$-)~I^Ga0+0I7>E)RFB z22sG)eHi)ksp9KXxiMWlL%b7adPtr#5kA1(7?K1@%XeJ8?8$a=iH0vEKaN)2qqL4<(ivymFvLP*K8AOh}n8q0s!h9 z3=pf5_PZP~mVRJ?f7RU{$`Z4Nu8X{TY)0`zs)L%=SVBZry}ZDIawQ})ERX+YF>QR0 zb_NndxN~|2XN*14A(^)I1p(t2PZZk&PW0S;!rTKbOuhVpQ$R5{<8srGZOR~G2AUZP zGAu1evQyz0by}v3Le6nV?1xRecOy!9m1S*5iE~6A5!bM8IKHfOLhzHN;_8{ca@!2J zM*%KZnS2ugIfQaQBUyKdtVb#4lw{r{keQ zdI&I5f_}fX)O~wua1BC{4rr5WFqO(l7Z(L(ia7#Iz8$13fR<|@OuaXEv{fb$;CFV|)97>t?GI4IK9W?|C(n+N2{|#qMFJtCH3#9>=8d|}= z$~l{+-o0l-3LXiHpA%tjpZ#IF(*y?>NZCstZn!zFN4`6#evN_wore? z$#J@Fh0O?M#5FPa@{+XZB5pW7-!)!+nri!;v44O+j-gpCGMm;(BEt2i^`|&5&2neL z>tBy4Xuxvz_k(l|Zg5H8=~(vTd6cAi&GUO)FO3bo#$%_svF+oSCJ&R43xCeaGA^}{6-3*+lA2$B4X0&6GFyFZorz;)!Cr$P-#hf804S8FN)`^|fqQ+&q*=RC z46ziw&AevW=vUuq#P9p(I%(Wi_e>`^}|lC%Dt#X9R(V!H#42E-+UFyN1} z+2g;I6|)qSsVP~)wM>qu?!U~iLs@)$VwE!l!54g`tKGgdY7~b-+?8II=0EN}!|$u% zbemOj7wCyN5@?GEnQEvRSr zkgKV{p=qFPO7lQj=Pv+krdp%5R1)^p?Z$kCc4%Y6hW9xL9T8W0okBDV&A~@GZT^Qs z>v)#tT1D}bvS?jgFEW#?ZqV!CWeS|btUfTzfUniWaL%D2s?+|L2E}RFLtsrpoQND; zzq#XG6sO8M{$ldqV8jT0##~D7=IMCRNh^oKxB!W3A4QtU>ZX={ig>m?Cb~o=PCiCz z2(6MsCl4`GaalT@F+K4btZI!_B~iv0k(`mnyK~d*GXkz16dgr+y&%U^Myt?OAlR)1 z^xlD6FA3Ck5VP3k-*RcxxxxrC!EmP10zFWG%?+iIzb z+7R6K&ne^7R9ID>OO^!((-k1;I@KtiX5Y%Hb{|3}#^ufP80~8zeqU=IW=E*^&uumo zlTuN#mDSz45HQ{1ert%u2091*pM)i-?h6nfBn=!S`rrfT$c^e2krC!+Di+R6q9nKZ zLc>^L;0iq{*Imh_Fou|#`*^f!yf@zy7CXTa0u&cj7eq|>#Rby*DmgMPHCVxDljm+x zkITy-s2BFjv$9;1*6^bg(g)~KS7gQ`(9m()arbX9etk1I56+QHx2eh`!Z?$E2-VCU zjmXgl?ZNOOd1SnszPKpiYU4VAi=IHzhzw#$6}>x%R$SZdPgN|z<-NUrwQ80P{a~hE zD1u{K$Ro-r$02f;fZuB8I~dixpsC~SGLM2>N=ZSrS4EY8q~eBcWo${zRVbuptP>&g zYX@YIHp!Ou%zPy-KsG>ic-%-2x{}AU`ILp4WnL1Y@bu{&5r^Lbk(bazIsbeMm))_t z{>2K42aEKn0x3j%^u{XtQQ6I^wgC<%PMLYhn{=;K>_XGVDbQJr&u_DN(@A7XP!P&x zd(yLMx)$gU7rH27=|v)94{p>jW5F4s-sjwWBqjERe^fqUjQCgunW+>yPtsP~X)1#% zbhb(>Lh6hhQm-usT#IUW6w@)A76}UDo|;1s&LH+p5thhbYgAUmq9CYCe!0(vFB+>s z>8Xmx@%cpnDbga!+p|)j5&vs+a^8v3!k2e*;^(uuLJ$Vz-j_9rf#Z$E_#}0%ediV( z3`fWG%QHtOrubA+7ya@Ti}`=qVL-|Z264~u+abHh@Oc&=+Sg9@P1(Go1U%QyU3qsw zdUC~oOhKR-77-(0)+}>#+cSV^+cQaz`2%NLz)D>j2LTQR%hKVeUI$09-gsZpF1+NrLNw$+TC3@bR2F%?f$vYAn)tCM|Bi*H^X{M1y4aD$ z710lYn4XO#5hNBSlw^x8Ptu#Bpf2_;IK*1I!=x+SEz?Oiz}^lr&Fa-r50FwL908g7 zJLE?P(b+)K4}_swr{?(lSE)zrdI`?^XkLWr(KvBt2Ai}A$AJ>rj_~WY)KD_NaLT-W zkY$u~N77A9Vx+Gp+2uIia(**{%rzVbi`br0a&b4j$0K zHWLI9ig)YtfaaTPVcUc?jAyxZ8koAwh&ACz+pc|=fIw&x z10i0_5$5E&XCy97f$yyf3jI;}rMsctZUzZX=*W+fDc%~;3t1?7vk{Q+EoH^@+=$jQ-lH;1~1c4(Vl@A;y(if9N&ONh0-W0|bX@igl zpbiJu+uO9qU1}P;OhN%hf;*!l8)Q+SGFRI@&I5sgwt{57BQ5?Qd7atZyVG5e;oK$| z@jzjk_)Aw=DoyuTZyavUWWKPLfJ8>1 zcvC#^X2}2O0msC_-;#mT>J^Ws;Rna!v1lUjoy7bj&Kd1uDwKP=82}7WBgNiKU+G;I zm#XK2YOtzF8cy)lN<;r)Qf-~YomrSOchD{kC>+hscv)Nnn?+8Nt5qdO+S&LE_l}H0 zeDwI-M4MsxPb@YCW8mRb*IYAc@tR>+|8gh}`Nf14q0sKBSV{va+MKOs-^(ME6I$7W zaAsc4In~Lx(oAo{f+jvA!EjtSsuVQRUTmI^ro1T!!t;3|W4uJqXxhgoYo+VJF!e06 z?F)R18?y*<+VmkNqZ2XaVy=s(v;IQp`NR2C59N`L4cl=E;^#c-FK13^q-nP*R89$$ zBnmd9J0V3ghfVU~PIiT?R#7x*2vefcehMW!khg1GR=xOIteIHmrUG}hern5v)CQ4B-~S9SHlr{ z%cp?aP(DP~O#ny^J^(=s!^&m8ta z;;T~K@?(}hinNauv)|0I?LpwtgJMI774Q-os^lWjC;V0q3Igf63)h#om%c4`T7Xpy zJ!c7+bk4y&$ZjFizg1z9l)GvgbKM7TdVy=?~{EIib9w}6?DIXX6yNEarjhcn2lFTzSvl5=V`2W+T{so z-xlUfO^ETQx||#||FN#KGOyYRSQivLgT;U^BGx4;VqagN5WV#fcAhwI8IqaSEOU(d&RsN@@ zOH4FEu58#UWN;Bbd%zwWIFu2+)$pA`M7l_Oz(2e-U*nZ+!RAI? z)L0gyz={dL+^_6g=p_%DiAKL#4(9Y7l}6!?Jy0&i-lu^7%2226 zi2F*9U3E%pT?k(@=8|i>MZ_uEN$6@`ZB+KceT3O;IRi^H->{b=Sb!05;K>`myl)hT z&5ViO3mIqkscf^x>%I$Vcfno*{Y0$>kV=G@jU>f>KAA340?$2BHJf}J2-zg9kr0z% ztBy~g&VyDmB0clQ^auN1Ub|Ses>sY;%k?m#8bc?mWWhM6pXv26VGt zq_E>Z2g>Xc{zPBzgA%6oo&Ug%VUi)?&*9QB;Qw7t`1!c)u~ug`TZWMS0MCan@VWzW z`}YHx;H);Is5z$ivGev_7$Oq4kbx10#)efVvjjyNWOC?VDu-_Pn&fIQ$PIsaPDpXl z)NmN;gx(wGcGN1{;IlP5G2nLdqhgL%zb#Gu>Y*2s{)81HUSAHxyb12QB*t$Bgj%(e#OM~qC*SZRjdXEMtypD{wd6{7IwFzX2bjBe4ul50fcN;! zF@kPaHjo8`BJlzbKjyR|XTl_a3lCV>cK&Zs!p9!A{B>Q}>MOOHlD!<14W*cvvG+ht ztQoQ;WG&veMsyMcKrn^hOjXHTGjK@ZQO_Z+3Lr<1u1Fu;*58xdzc?}7MsRT`781$+ z+KE?;Zvx-TvoC+pshc;OlF;9yfHso)ZrKT6V|CFvi-MxeBO{%e@6+aWnemhP*CSWJ zd{-9|8I(u8)Wtz7sf5|1YY4pZbA;PrkXDj|^41MpeN)wjXXJ+T2YHhBG`v%+H=-F) z#s@3o$^HXd8VDuz*CBlOpLXRqatW&-8=(&ZW;iVz9tgpMjUvkSwNIWOd(--a57}y> zLU39j73PIsYn&_-%YlG>qXZ_?^!(@J7_>E!Gd4*jUv?u5+X((zM5&%j7~iMkZbbYC z;Yk02>?GUo?c`~XRFN6poAeTx?G}YnC~WBlHegmgFg)>NDLadNZ%|E7?zq2WR;pAoo~kG(`+h=Ki;QeV1e`DRB5&ZoW!{B7d(^8z40HEZQM z0!>hKfj4I30$G!tT=wl6%N3^QF>5`4i~p1_{7EE3+u{+|-txYC(FZrPdeiDWXQ#CS zY+=2pDvL&Bpwso0MFW{YsCTk8er&1{G6LdEM!8b5=Zx2NSOo481t*4s=+A=}*Z-MD z_)w{4dL?Y+QpP=tMP?o)WD4M{`PadEGra^hqbhJLSj*)kudzkQ{Jv^>_^|mrhX^a( zCx&`Xonvxl58QRcSUX=Y*{L68T3!RyzU=kU_tk$~Nvl-74iDLJV4t4Y({;3|UU1Rs zX1~4s$4l)T^aiYv%3`KO7a}t7>IpxvgP5n${Nv#blFPC z^oxas(IEt z5Yzdv3-d7gZYqDVt)7({5TtHq*Oi?9tSP6vAa#-aiN{ora37R;zM(V(Wv)c3spbF^ zt3hfeHOYVbsGX7sbpsd+Eu``RY47(Kmtb zfyGw7h-ZEgud|K_CaBh$Ifw-y(m)~Aq64VkEx$XJ6!QC2`M!TY_>_bRQ`OWWC^Tp2 zc+b$@y)+cVrcF`0SK4dIERrUE6>aU~f{_{p6;35V0Za}Fjh{M!42EBQfH;v1UKcOy zvgh!%bKrof~KxkZ|=GvLB=qRb@D z+j}zbw{idh3HG<|bfzVf;jIS%NmX0M$ot8f0+@6pe!c8rcfPrjFIrhwLvB|V+ILX* zf|y}GKR!H2ZxE07^UPko*`F6aF)W~!()q`Xo4#rN_a}2Awq+Z zs+7*~bQBN8v2Oyg=y=WpJvLHVyBBK=-gVV)J^d5yFVKs0_sipkhXE7|tKqI_nxwypyw^6Ok4ixm?jqa2HTSL9+`exC{}Puvk&ec*W<<``6rK4UzV ziZD9lfn#^TO-1znj{d9nxZ*}9zV$U~&+7WPIE>8=NS^fI%=jJ?Ze(5CihMG@D<@j{ zNA!|1b6@v9TSdGlcA1#D__5lMdtY2+>@FP=Cs+@-ZSomC4>x^~^4Zz_v#GZ?q=qo; z|NYi8t~?$+B`@JVX~*)j=8y`k@nb`n*;)F6!t#p6MiN+?tCe0Wk525Tc@i2$8l%0V zlD2qVf??~9(KNNtR%?vx;=&fxUFBDsxVtBtqS0pj;UMP^x3YD?=QDr#j6jzqB)e-;F{zv@2Rg=-s! zKsxvb_ReN3Ir3m>MH7PTf^~k4B3@%+dbg4u2hE&U_zKEixlI7~YBa7BAc7&=R;|Z_ ze7F^vhN7OT(WTRECe=i`cwLncLbi1WNr$)ubrUkXoO{+V8=83dqRq27=~HDAVQNW( zDEDGc?3REArL*w@rfHpnOk50sEm4P#d5AB2+1`Yvq1>92oq0}G+9)hMba@G6B-8?| zDTiDh{GySZw|I9$#`s+@*Fdo9-LNOpM_-u^3MAFb%{?-#4p`s_qT3^9@eGCgF8^&{ z(*&=zHNsZ_fEnGxtbuNBAHOWenOyR;kIIj-h5;rlx_zhK!QpSsi}8$Z!n@|iefn#i zF3pS5uXMOpvou#HSnlds9~izyEMtTWE@06HskTN6iA297U+hQP7lN2PP+l!!f36|ND zS1C}75*~0J%UOkYkVLphfZ`%Xm*ED6pS>4te)7V7GF3fQ*#S0iBsucnc)n`bD+!#7 z+>F9LCpd?T-f@4>Ma#5nOdQ@UGNd*=<(sqb$g9dB?j)liZfr^o(Ml}4Nnpx{7}XTn zBO{iURk@{ZT&R6$A%3JV=3GHkq{wCBstH~~m(5ha)8Ylc5K2l;98|4&nIxpC1DiDq zqk%S;xwuxHrl=P?*l3v;XWmRMOtzamSAwyS)LqUY4=c5zinD2<{rS>*<}6Cqm&#Xj zOqaBg?CL|0im`QYw!a{k5tlgIR z79r;o{fdq@*8fl_J|@~D+w(t1*8Fjh>`Zp5{4SfY*3d;lgJCd&jxT}An}sbZ-#~R> zW}TXuCh{=}2QI>!b3AT5lRRGMA$!^dYIcq6mMMm^UFOgd=t(m&#}zuk?JV)>@9#fk z+v`-|9L8pC>X(s;%+nFei9W{i5L&`r^7luvR6tA&>`^uil6?nSQT_?Zx@d;9p24JC zl5m-{+6jo^3LH10`?G}Y(cElDYYiJPnlLUppc@{Ce#0Dya`YxCtNzZPa=?K{rKf)W z!AW-A&<*+*osk>(?N zaAZ$Qzdi;r=Y)nd3Oe?AMNF*6Vrb}y+(Mt96$o}KLQzVwZ5?eYcq&qz7ax?<5uhTP z=#iSN;=}%z=0>8HS9_m#=Y@XYQnWW`FqbUy?f1rkT|T z`^5NK&D69(>G}Gj23Y?J_k-f3$_j{@N*sEFl z$r>O0^7BaTHQBfWQI*g2D8%ZK|Z=ISDi-V!`-h| zJD3KNkDzZMC{&5H;I(P%`c?C4((u4Z*!!SE5w*(}w2Cqobb()xy+-P)bSrU2 zW}DuMc>Vtv%P}4*5nyywNS+<=GT5r0+Dw79MvDKUm-xq{YD)s16< zQg&=vMIRBtN|eN2uADH-lChlf-*_!q|A@TfFj!CWF|)cj*gzLckLKU|OP{|u46(^- z8zWKxQ5r=zAO7|hd^K)IvX%g0-hS%v4};r@^hZNb)5<00%uAJsHu6Cz0 z9QNPYLC4DK{|qt$FJ&u~4XzlOxhXn3`}kpEgm_p0Ju=?wJpg-CJA8|;d3}(C=WpJ&!1ae8u}4>=VTve74Mt64HvhIn`3^X- z_0$z(w#?Vj_A2X+ds?xuK4za>RaVWN?e`@hcM?m{ML&fJIA|HkkT8AS>tD+^O^jgR zS{{FVZ)TAa!QfpJ+97#xhZO4lNx{2?BF#ts*PD)3uhMMnL)JP8EX&$IGHl@)ChODS z8)LC*Q!u}C{f@>ORo+gndU!|x55lyj!m^uFlcM$B(YDi_K6SC?Ad z64M6JV0cNyzn^#ZC%fU4uBo{(-XMg3AMln4+DFbYulXbIDhaoLh(9=-Y-M@rZUCfM zYmL(wi0K7d%mnU< zB_5ZP;CDrv9cGXOc4Htbi^vS6be&KxrxYN>Z(q$$s3j=A1qDGw2Eh<8<}QNwSxC#2 z_A!aFgjviWppM?}c&{S7f<)6m@UeoA)A3>2a4FJc_1zy6FK5V-tqJxLWNh840GD>Hpy#!z(ToC7L%%v}|z7T?E1@ z=j>F4SS0%%#);uTv&SO@+uWkN3sTdRHIVKafXyI73m%}`8vQog%pcu}#16Lg(^iGo zo*3y9+Vq`c(s9}0jDG$rYVeGzVs6RhD0SWdWi-a(E000^4vr&EbNbHEsA{RU0tEYFs#l(urkRJTVVlXdl&8(0EgY5YNStx}?glN@gY`|T-EO7-A@miZz5 z^L)EnvN#DON)yEZ4aJJ+2g!D_u(M2T0+;KgcrD;OD`k_n%1?VYHeSS{PUw4!+kN{x z-M4tW)g@;a9z4!`_(4Y2f}mlS(YNjUd&!W|Q9knxumwF#?Fm`GowLz%Gvtfx8j*s< zpOdaXWS0}HXcgyE7IiwC9At)XopPguD_5;4V3khpj6> zNV-2_H5H^^MMbecL>sJ%*hmU_C=ItYs$bo@X51SxG-47dydC~kX;`rI11R}_x;Nc< zZ4P6?UiqKs1qfXWUmZ~>S{j;{$u|OeSExUDfoK}!wLJC<`rbDK9$R%MPbsp?9#;g5 zDL{6Wp09SJ*OjN;w4&0(Y5c_SpVeMH{Z1T!!^sx|(;t6BDVf2!#@U%~UUW9&=3DVH z>1SI;{X|{|-^Kcb-!q}FrHGZ~yyD+ffB8;>?QhcXy@ZqWol?I=sj>-d-)>0z1$fJA z8HxAs@64elm0V@M`r?h}Pk2@2_b9&Kfn935u{2|kY1MSLQjh&y4|+S_-b(;i@@e)I zpx#xC1kD|z@qbw$yWlu@cNDT)Wr`Kj*2piDO@|Ocq7S@~X*%$UH{-PRY`bKs8l@~u zWzSVsh<$xRHgwOX1u~vj1$i;~t(Owj+bf3?;frz&%j1pmrkhQ}Y~+xESis>sqP`OM ze@T)%C=N9gK90EtLAC^?O97xzCn%GGT`oODn2w(!pi78$Ozdt#pA49YU z0Tv2!ynAvhWrtu0mnl7+`7DC@D$y28#*i!$i<6P-y%a^*e}u^cycF*8>xEimU})7A zTUBacu(Ww?Wv#-j&<5znjijL~s)dbDe(40K&%xgs&7Qrrg>~Obn}qPbs(shy^XK~e zwQ9;e&6uvgjwd(q9XdZ`6#fvIoSJ2O>ID44#y5@qx2eBFdPpf;Rx^L~k2M=FaMXjL z=Q1qC`RAQAXU5xJs%9(*+SK17g>fK9hf2PipNQZj+&BZ$Q`jgWkiHDC;I1ZWYc9AB(X2qt{qp)0SqIl2E}zq~_cx zAX*GzNmem{DLLD{ILfh;&6?@JZ3)C}RP+ctveJlVczzlMv~01@(^H8?p!sND^QL1B zr&8Jd8Cy}&B;V$a08sYRRd>290Z=&uab zf;5EOTLuKL-sUt{;IUvNWqM!qgMP*(}vo4!192JX?9Qa zJ00ha*pr%UqgiS+{dyrw>|ZJIhp?=!mRsWE5e*Spd$L%@$Lh+tJPuTzxd;e^AXV6T zDa=p`2h-?r3#4Xiq{FJ~o?10ka?c@6a%dL{)Hqyz*o%U}!(rwwJ)B4z6rfFlwCACC zN;1y4?6rWCh|g%}+|U(fuBZUp_%1Xi1;hpKel#xw$L76oZj&m7{iC;y38G}kn1-v7 z@)&P!i>-b2v{svvh(?n)Qx&p)3p$efi4`NKzqUM!{FC_>ri9wgwn9ik=+RI(<{x@~ z$>gJ~Sn2_dBnZE=TLxp@PKVUgjipogfb{hyry*5N9^c$WpPAvo*49T9X(VW=gP8pB zz$__q=1Bl;$BGT*pSk42i)UMG4V0;@GOD3@8Klg!x)vo9b>2O$`IT9^AKC`#6a6ie zt^-dgL&#k)>irkD8c6iFY|+=yma*g(wkRp_J7nfR?@jqlwp z|L1lNGxv4MdX)rK?`L~{YkyIrR?;B0uH`=7+KUc$E9#L^S0;MGoNo1ze#ezZUm@S= zk&DDVZz(#_x_KSPO~Z|)wW z>kFtEmyu2(krSNq^Djg#;_(gu6!5St1Q|=eN; zU=)Hbs4(IAk-JQa*-<=V8b%jY*WOAK13a(fv3smEL)DSdiP0;PM*Dokj9U7t23?u} z!l~kU_{!UZueAoBJdQ54#lE?#(u2>?-02{fPZ(o!ITS)Q`+bRcBZVn8OwKBGugXU| zY_^Ur%WCxk(fMzcT>1}A?k7c_FL}m!qQVd%dVS{O!Mdyw-4X7mtOV!toaGuM&Z-9m z)kTv6jeWf^(q_T*NdVJ9L4Z_mVX>Q6xKR>_f`&dO)pqGR-$n;B?0U0gFUD5>?qXx@ z&`j?ZS#@J8n{G&b-Qrnpjaoohm2G9#{bi70@I;2h;E?$fGQ3~{xb?N;lBtHg^*N1P z_x#t3w~shEYDFO2bf}nI)NmI$OJM&2tz!X~fT-5@k> zQ%^>7pg}igyf&T(JO8_f{69DYKNPMa#WF`fCk}zKIU52B70J!C4P4PLhJd_~7S2WL zh#WET3%KQa0oQ*mF8fy1a^U?sSDZ33TMQKpzXKxj1l}YQ9_qZyn)v-Rxw?$j%Up9Yi2OfvY z9i5;1+Hrtf)Ul(Q*ug86Ut;BUWMIp@*!hqD#7!PpiW#-Ogmnzvir}To1>8KqYQeN? zx(5XPs;-TR<1sWcjdlnG{!k@i41uW|i?v#3`c^tH^e+&~lC1WpVtPp&OZ=#86Myh) z&BETXYHrizIIGFI{MVgaD5ioE@@)hN%d{G@RUfJxIU_(!@F2 zVnVQ&a3T|m{9En-$9+JMK%IZdB`T-oljhxe(`(ODwYfX2Gs%?iYxFb5J9{rT^P+3S zS6*uf03G1i%Fa+BzwtFh+R&!H3*DMNs6T_KbM8RUqp+^f9`$Nf=B3s;SD?NxLvsz0>;~Dtf%(FR%PSZ?v zDGf=NG{E51Cg6YKrAUt@kDHb7cieZ%8Zr^<+qQH(de(@srmsV0-bTq&#S)Fzl)0ni zzSGHL04@3@h@B1&@fVk)T84k6rEY5`0lo@s63CFU8S2fPWD`#Ri?x3wOPKTC7@m( z;si1EZU@mKS?kK3n`_8ds&rdI|BEsbGKRW~F)CB~EiZ=^Hh#&75Iqae1f-SmhIhXa z_D^2NqOE<(nijCaP|htTA!G2{QxAIAtFEtFmrFq5$Tnv&Qg(dyk-EXj9~VLbhTs^L zmd=)U{(4U40qlZuHEvQmcWhIO+m9ci2<*98x_-=mrmpe&QiYtI<8vr5(cW~~ohYYBq?oNeK z>wVPd*e{kEUu=;|@=2_q{ZeyEphz)faCN}H9eYcT1T@h!3sThZll_&^L4{>(@*@khDihdUw*@NyH??i>9#4e}ov_FA@V?Kn|sDm+c zsCaCQ)ehc5CH)RBH+BJ1=wN|$2i%Aqc};Yh(}ZxYH!1@-K^U`_A0?|oC9Mcf`ER;(<=jEsDY|5%+c&LD6r?_cFH*$u& zB-6;7yEXq!daWm?tM7GTpZFE|N&J7H5PKX7t7pr$JO?yzjD=sIWqOdQk4EDhR)Ye8 zexWlen&gIph_P+^Q!1b4O+MK7;)~yg!C7VgBl#uI8NV!s870hO-lGpji7b^5qiBoc zW#Ae{1jmbCbNZ5?@QPwGx)}sND;t()`fH>b8k#{czS=Oc@K;r$whsHD{#oQ;2vO@{ z**EQknoS&T>x>viI^N^jKI!)9x4IKFRIuW=nJUp#d1c?L0|7!;9<2fyGAH0#zHLd@ zhjUd%kU9aWkSMxm2VZVReNYjAVDq&ao>$DErj;EDyEf2yr_Re5Ea<;s)KM zV=I#kC(wu6*K6Va`CfE_9L+)fC`Re5B!E1o0^zOX3x5cW0xZW-Q{$i=#KYC!{1BO% z>#}p)2LuJvFFF51_2Sukxb3SX)JfO3esmnX22_~V|3XsDKZiC}5vxa+%Ax%2%@JrX zMoW>aJG${??`~SdnYMvh;I*d|T+3%J2A)o(HZwJ@9|&K{#_b#AzNgVCajhYTJzUd7 zY-2lxN|(w$#aqpNgf>7QQy6_ozr2_00;>qr9y4FsOX8uFp{%y+A6kW!neHbo8QxzK z^+ZW$_&aSKP13Ew zU8;I)$_|n&DFJ?U8~5xeO{1o9-R`+7lBNoLU*q5&tkaD)6Hd_7@HvN9EB+%M7y=`d zW&h}h*_i-6-3AXKahp^cH+>6nD~p`)Z3$1j z&r@eg2>rRdlD7sTp}i`TtU7fuwUK|n0Ol1S$`yhJ3Y(sjhDiEiXHRAPzelOwvDJ-! zZRZMX(D99r1AC>eCCbuZTofBu8*F}rYnEmBGt!1OHH))Dn9Js;bTbrWdbB#F(cH|z z+Ohj~KBQ;lKJYf!30e_DcH09357p9$e%DNI*Zh6vJoFPbg?|)s_mS`!k53bB|H58i zCy#wOUzaik2gCp^zP^6pHR<=O6`|wWN{Ff{wSX66lXhNZ0phXT&Kad>=`YQQBgB@M zFinfK6oO=cF1B~NBkk&6%XZ}u)`h%Z+%}yz*zwD@*a!de%qpw41NvM)1>!8LL4 z3a=P_#OS#MEtTF=Su;P0lg+5oKN-;8;lN@WM~T40_cI{@2m>tw3|%c0jeA&U0b-q2 zhq+gX69BWlj>O5pBB`JgovEz4#$T*<8B1S$q zx^7C%ir(m+fd8(;Q76{~JEAt!hr{ZN|U^9Qg1z$42S!u~6gJ2Ma zBQ^@a=oKKz&^3jOGS~&cg~=Wj6ednY=q$r*iDn{mt~5U+hzD;wmNqWCK8u*P@7(|9 ztY;2x!#891EJT&0QO^gRHR7Rvu3n`^68@*ua!=jZ&h-z<0(C`6?F!Hfgf%9{T5%~O z*5`rQiyNJy9E$IiGXXuQFPXeGR$xP0V5Zx>ZELoU(g^7%25~;#i zrQD1bQ)p5T?8Kq(Hsw_mb(qg(IMj?NOgso^{78EkuxEvn!^)ex`p$VvydJO)rm$)U z3%E%WC@9fsrs&DDh(`OE3p$<X(l{OuR4|GC1+T(`tnTnqHupxPkw zeSg)NWji-zdB~8TZ*7dar%ulSV4wWL;A8f1zBfnEz!Mi+mzyeP9MdV_^v|w<@KJAIfxjbQ$p5WMC7KPiRMKdv@_CZG#>E#?}%dppnd;tt=7v) z-^LlFh}(nrFX zN+vsP;5pSO8}0%18Y-=YOx3qYNPnZKKIz+M%bl$*fCPKEiF?@VBeJ$m_!8G54bdMN zqMlbmx#MuxLU;K6%S-xSGZ-WvmmPv;X&3(giE{|hoXL`Q3(Nt>gx0)Qo+W{|Uhwgi z<>Ry;?F$0Z^Gsww zVRijcudrxGGa#Q-gwj)-{uWYL*KRofTRQExMn^@5H}Ys(=(6)C43}&NFgYS0a7(j^ zzYvP!YMOr7vw4N!4gfho#=q8o;a`Sou7UlI>#p60;wgzT!|IdBDQDY!ETa&)H7qe9 zny*nhLQe{IqeJ{E|1Xn2n}?(22A@+EPjhQL zdkY?>BC%a^i!qqa<15ZME0H$~?}cX?_t~9b+G&d+Q+>){(2iPkO4`@DD~0Yr2!Y+2 z`b9GU$Uq5w3-o3}$UcLXvoL7)x`5~zQ2H~$umHVwJI&uR)|5=6Ip92nSA(_)@7mTg ziA?66Ztbj2SV1u-5g=hp1)>If#Ea7evTyc^6+p+3pG~u+C+AO0^LuFAgwS$mzdjdm zwW5=EmH1@V#J(=nW~2Bi{XV+>1HZ>5DS_?py?#3LF(ddV7|2;jz|`3}+AJ1K>apBU z(;IF;-Ef9n10hZwpZ7O{H$nNv20Z-)dXDoSwmq-voKai@8v+0L@?QZ2ufCrEd&s;a z3`Qc)cRuP%n-pa>^kU~=oi7+}BJcpf4KB`G_k^Y} zvcMcV%uiF#HDrh_Y_S#l$L;s=-d&fZiDA5J3!vQsjK_5Y1mqU#p^O)fO@@0RoJkQp z%0EwC@pS%#1 zz7%B?Q)+CILT*YY)E%6%QFI0FFTR3c#NvBKG9ntI?Z0wTuSu;xKJ`#VFM?G#R_RLg z$%#)fqzY7h)7#GrQY07^Zr*U(f-LUjht$LMk^HF6CAbsX5C0=bJBFcOt8OLgkYYw# z5R;vNNer**Ye#D0(Yj^gqV*Xd(ojGi=-L?pu2qHoq*?Hg& zw86uUI`y{e`t?Zo96uInX4P*zKODIislz*at}F}mKr}dEU+;RV=vL}nA<^iGF0z&@ zA}Gr%t_)nMUP*T?Ye%9eLZB2y(>=C=BIc_NVtQC$xOy3fVVnv2LKqL#))}GrMYV}) zmFWlE{U*8DOn+CZQbjDF*~&pC$m}|u*7hRO4ZPqtw@Yo{pzio z^nCXg?l$?qEnja=L>*@gwjX1!E{yL%pz4vl$PEH;72EDtsp!pUH3AiRPi%;EC8hiR zb#;-c#-1jINl>n*)m@A_K9{uvvBDxpYV7lQQ1ni#vskB9gzCd4l$)o_4<6acRN&93 zb{=GHbRZqH>y@R|Q?+%&N4l-s#2nkYd-`A{hV>c9T>9X@dcGSpo|X)WhxOo-O8%ewDR<$D4x_SV zJ%V&3yY1_*;9KJBi8ipuiO}re{PrrYTTiiraw3XEfx|GW3SHcjeOa5Nhcjq93O$Hq zs@V#4C>R#ntEy@-Tpj|c<@>kCooU!>@n2XqjNA`DMr2Dsk>x%woY=RySE;ZuJavTJK45%@2^OT#!OfPPMpnB@}G!nPap2{ijx_jcl7*gq4 zO?*lRwK($7y6$O+8mvm?Ip8*a#-Teec?$?N-2J4CPFlnC^{P;#RoZeh zqiQ997$X37Tp$krx^%w;&tt@(#Dy9=<$X*+xo@D!#x>!=Z?Y5!ZJ*QgMcK*{$#9aT zwm&u;aoV3J)zt(2eHFb*>d9g;yN%bXwc`gFV=YX%^XFQ<6x8OZ^%&{}r7C~xW+63O z71!jBC?o13k6FF-I%E40uRp5FdGYid;KS%tQ@2k&ky2jY*i|vsr5iFF%%tJEVw3_e zE}vP`I&&Av+mRadMbf3Bzw}mB{@+qn2SIt|k4ehnIVp=XF9q7}yQTr(6EeLBJSzkn zKA@^!6YF~2T?!d~c$E!ogB_DG$bQBs?SXJcI=h4jSd!cd9X#K&T73W_K-v@S{ui~N zI@Ejzs7!9Lio(9{G}&iYI?LwSEg(!;B~Pk_Jg;jD`A|}15W;gqzwv5@4r9*k70I(O zbqx6HGGV!|sLofWZ`SXE_Cg^Wwqii{jn~y zIdGe%NNk&KcuYEW=Vlnf7u6~@1@`<4g=adesLuJq?u4V4%Ed$%JYWywiY&$CsvAqEZH$*W&eZ7Xk7?0YUNzFYTXaGu`I`tmSM_XRp$pJ_q zZfm16Rq2PSXjkWe$!S)SJ`QiUVs-Dll%*!jNVOAtkz7x}MFJD)HyL)Zmd_Nmk; zvAAEm9t{2wnA4ttvX{UU(Cd|Js)JoKjZ!|S|48&PyYY-i$%T0jIx5xchBT|BcZ#;1 zi}ZH+AHyU)p8as%Vr&S_A4KNw7MEFn>8XSJsF zGX|I@u(JgM{Zg*XYq`F0_X+47PSfSBq_k>(HEGG`0%!HTI=cd}KEO2gTL0vJJ?5X( z@2fK;ukVRZ1k~~!S627X(1=znA%M{Y^z-gnraLOLl&ExP;z#Y(Zagyn;>I}yJf#j7 z!TzVIc>r$r0&q_{w}m+RnZry;v&&p9e=nc^Z-SnOk;4V=zG}%Zc0acg*!+B@9ac#F z@e&5bDsvD2q(wFQDOvt*20Odn;K-Qf-b-#Wj>QwbbZ|Bm@?>Lc>Gn-pTHSm?2uT^< z%G&D@SvN;C&IzaI-;q2Gni`a_1d$v>?8zC=stU}9&6~vp4F91b-T*^bf^Gvkh9zD>A1eb^4XF=y?6T>2;8_fhb@^7yOf*uMJJzV@;Q<;C-&Mrw zi6{;5gnb;y#t%oA=xGI+-*npEERv8BX75V4pKsVv(sGO!+L2f9DJpnkW@G0j+(MKHlLC%pqvBg>(1K=n(`LhGI5C3tRet(oH&-l8~Z1^fQ<=21}3T* zW%EPc=sez=-$-0i`)MHOjZ%6aFTjE4xu>WAIhEb8OcS&g<1!f>GM5w8aU%EHK2SN3m-qr48=df)|!uet?n~t#7gois(b-6dxhJ@qy9lv;V4@h!fpo>-PGy z1S6Wxx4Ot>_pk2lRzY)<$9k-lT3NuyOpzDcxaMC?Z~vEB4XjLFtofNMkih_|T1z@4Ko%Nr@gOZd zfJ5!aBa~aH#m6~aUdO`TGGOPFJFEOg!dn{I3riY4- zWs49WRTmP;1*`Kf+N9M}3G4Ege>$0Lumk0m(2+>`?C)SP*3OW;hJBly&E@2OcMQJk z3+U(N9gQzX5r2-8n! z-}X~&{3(tSrynjt)f-)Hqzh0b>l9Dj_n;scar$#YQ(F7k>&Wjq0gTeAAu9L7I&e|3 zkudWBQs-{F(2WxkCxB@L)ojGqI~jh!i~_JxU$@e>;&LJk+0&^s3NLa*{S*bzaK2(S z0$;>>Ys%W1qj>~qFJ3LCAHhm1d3i5$W;v4pb*5d1i3K`c1IC5dQxzlEz0$nB1XibU zkF(0--~k@+J*_h50{z;1YX~f{Y3;1iT6%D$D}tw>O{w5jr5lRP9K_J=-t%QBy~B4& zN?m584_31W1n=8e2!Kg0{;s2Fb#rBfZ&!h~0|*q3oYF!gn9<(jc+(Y9s1C*c>jRuL zINj>`a)7tvjT8Q6a;G-j_J;5-SLS#^WT6)1El|N zKtH(6YW*hRi|f(HIO<34^B;iy%foefe^1I@wx zo#E)qnm_;pyP!*SFgmUk*+NHM1_iA+L)kP#?10K`@x=;3NmI=X^R1RC`mO$=)hYa` zFQ|Asu~4qQiA7qB9-Abk?$}eUsXFffFjVldbqo{0wf9XIHrBNf zQ~DXWBqlt-EvJ{Ce@TTHrUxBzF77N%+1p!^QKw8n5C^$3$HzVZJbjG!2A>zndEO1p z>369HLfsp)+brFQ`nX|E+loR~bJrih4`D4g zJC4t7cviXl8?*%*%$-_~j2^esd)x{VmPcvF`fjhe)&@|OpbIpIn9j9_e-#yy znu;l$k+516P&xH;-%{MJ5VD#|N6S;R#2&&A&mvQ9L00))yPyQ0su2yJA|?!3H_Ob9 zivNwCGEFq$9~N8)ynD$b4l}gT({x-?Z^0zOAG+!r z>0hA~#IAw^o@vWheJ_q0xF33Igbp|Nhd^HxtVRhZLU~O7^y^Ckgy$D-wC=-1FXeJt z*7>K}7>_Z8OtIWSjjZOs1HzhFq{bMH$Q(TT1)Y51mB8F_BEaG-m6+uuZz0gdseF~k zBtb@II0`3u7{q4O$mS=8ZCk^#{?9QmTqG$e+v|+3mlAu{fjCF6|KVz+==wJ!#L;U*Vq~ty&m;y)b4?ky4PipjPgVcTiGgxq;PH*c0Tf~;NfRo} zp9SF(s`5G*S@5ltw91tn>g;~=n<|6u!osYZ+$)iVz0OeTcgawp<cwJ%Hx@l9xM}1a2%pIfA{Al2K5Ayo# zhw%Pf-o;C_f)qWSGed-tCH+(NBSnV{;8jJO&7HUY^O>8xPwEJT6RTiach!WX48SC9 zG3P&_MvGLnT%uu1@-nq?QZ(2;4?C_A<~d0ASS7CG(u1jy zHBOK){s!sUe&vKTjNbU+>uZ+%3#enzW?F@ zrGoli8dio3%`=j<#`~UJmgZ#1zZwco*M=6Fn)J@pQ(Bz=$Sho1sgrdIf(Qy!(6Gg+ z4Xj;pyn|+|c~N3?gb0=8E%M5(&SWuPKD}lZHZ;ty?TbbP$V>`fs9wMs{X*Ekbd7-2 z>fd=Ic&T9Vg;`H;)}{%A1p|j@&?=oKrwSoLF;YJgrv5f>k&wK zJ9+ON`%U>-kmyd^IQQv(r9BY62K!Y$-~haIuXbw-mBPU>fG-Rz?Q#IqaKIn}r^P8o zB*J&_Glb;CEncp?&Mt#8p|8=mH+D8CVY?e>- z*d&Qq+PJMPB(;1M+8WMVGX=FHONi<$qDlopj==l=_B9TmSh+8Q7F!GSjV^OGu|cj= z(x3KT`t;U<^e`h-5XA(3(Q60>P8Q*)bi2+AkchJ)!&OYD+`ohu|5O~ z!()Hm4XlK(B7q7_oJg`zV~{6i7HH|r#nvEd?-{Qvt-uwL3p!LLTS4py_TozsZRfKv z`K&sS6;h*ejnHLO5q`Q%Vh3FtKB6ZvPG{(W%FfL(+|*0|OQJ+FprAd^o^oVYZt|YO z&{Io&h=x@nZA8Fh{gyj}w1G(2fT%(7oG=NH@@C0QP^%-D46ImYpfv8${eA+2M=vr! z{GkK6tl?b_ui~O4;Ex}JvYrY5DGUk%xGW~93RX*IFv!P0X$h>>NT}V? zB;p38FH(ehGaFM;bJnQfgc;=eyi-TKx5d~ED0hqVbJ>d_E;kJY!_Fnky70SVF})s? zAT@X7FJY-~9B~y3Xan*C_E6JTSTwrD+B6^VS=VI!1V2@~z8=k|ai-*kBDHt?B zrm)<1HqDf;8CbdsZ()M>xp$CH`rp=Cy?L3GEbdj-6tgd=6zq(;X!l0#=|Eh>d=P(e zu+{j4W$Y=drd1V1#YY)cT~?)i->|U9JwI$)WA^SmJvZ`z47@Ao-A9KKND<_E;kiX= zLL+M}Pr4!L><*2!$JaXTH(4P-nKmRs@=(zRJuC86jp#d$T;-Pfj0WhQ zET8Os(#{-yGraK@n=w^__}mhZmtQEaVg}>AOUF;VU_%z-jKz~(RwsJ>lEFA4y<9H6 zk{RD4LN!l)lu|IqQTl4chAZi~--L4#pl?GoXw6oLZ>7TSWC1H|Pou!8)S6C!Wf;Pz z8j_)DE#%u0Qq53O#_ls%F)*b zH5d0r!%Q9)nI%Wl5xp)TKu=?)`i_feNrfdOS7d{{A2o3k&^-9(nP|o-{{;7oYVeD0 zMjwNP#-k>+D26)H;ezkm=|@0D`KJ5t_mpm`*6WQ3iwH$p8)#zD!nBLo_dQlR2PGatHMC27$ z?NHQ-FVtA#IZF(KT4mYWV*PXmr&wH`Ych32Fjba?0ZMM~qVK(~ha%VfObv>QHq0I*l21OTcbe|Gc~l89MP9yWHuMlej){C4SP9FCAzV z9ve>B6BK6i`J^Z**`u6B*MF#4EgqR=3tFg#hiHZfp;@ip9>r{v^%oD;WV2^E{ul(k zI)j%AxOmd2RivguYTb7^&AKwpql772zfuxwyuHLL!eGq@CrZA%>5NRuLrhU-3Nmki z6SHJhavyz~cpi|>b;bjFmM1;xFj~W{^$(*SfujK5(#JgZRP2$(N2p47nS{2=kSXkO zZkWtWIhMGR#;6OKfWB|2W$hVnYUm4&H5ITEzLx|YP_)il_B73+sj?Fd=+}jeyB+;d z7-Isr5*SLui!Cw`fkO{T9ze&5ALqA+o!+R<_F5Gp=b3y$$u-#~fb%K6y{k8by__I5 zT86s+QKB1$gJYWBkL8lJUKK`nrQ~7qD!|~&2<=lvCM2%fgG<=_7zAukx$hQRlo6~L z%ONN5HFgf3or0QzKh$rf00tiL=rhf9idhMx9$CN*|H<639?x2kudBIzBAi7+WkEyJ z8|&tBow3-6)ea7;QKqNbdP>PB{O`u+j_P5Mer_Lcq$|i7p3f~^locf)aQk~VKc9|0 z{Jas{h~tG18fQSaw_2@C5rh;AWht!sgoZ&0J{#a!z?UV_Q^Mr9;T#%uKs3VTqOTvm zJ#rsXQ3*F>?~I*8pT~Xbil2PNR*yDYR7(44L28#P*s#vj(qr?ePtP@!4S&Xh%nLkA zv~9`wFLeNQ%7*rWZg8g>@z$||s^T3ZCF75O#Q`Z1XJ@2PR*dP|rqo+W(G9|DVut=n zch|J`y}UwqQa;tVPF@lj4A*m-ZLwaWPx(cycxY@gzHS9X;TJ?T6yKIhyLd4yvUq+c z|EPu1LlyV1uY~r_ao!SvioF()M~tpEVj7(e+3jm7mbwy{&9WV*+>| z*8OF@l)bxi>3X8PSk$r9NB%aH!i7$0Fas$|SU93hlnTNjG9))!7zTTVf1y4eayG@t z{XwhgweY0(uo~na!O%CeQ~X6T(k`RQNJ)L3_U%O6JoXSJ0X-WMteH=zv6c@f?7*{d z3pv}~n)ZYf;IHnJ*&{;B3Ewn+{*=8zlI_Pldf#O&E9-X~wUwj=vjD#Zl{-B{8xvjO zDs5%WxSjf41^0}hVEtOR%xbSM8w-M!srwN$@D)iRXYft5&@x;|@6o#`ZX1za_(!ol zIB#TPF6#ke^9f0AlaIA+4wBZB_KHL#Nv2gUaA?M0)^I{3*gdw+5!jtQaPZVj+ztFB z)KN170^qRac<}>HU~xfV2-kBv(0HXNTyqU--|ZtFC07FzNd}7JPPaz6gu3gZVKuf+ zf$;E*ui0xkSq!{4D9z)awprfgQc{FDrX_wop>RdiO^8!)ivJm;@Bxyo;(#s(8)5r6b!NRx20E`wdt#D!(io+v~{kl?XY&}%?U45#y`!-WpU z^&pG3)+VgOA59x@hsmQHYm}cPX&10=Yn#nEDM3Gxr{!D3X%SWd%b-!ZML7D)JL>t0 zG-NGX^R(f08TV-5JHB-~I3J*?=bS+^^SRkG-QML+6`#^QM7MO|8&R4nm%#o`?el&eg#WrnN)0-S*>_j{L2V%sNdO+ zg4J>L8G*EKKo0u?o*QF6rmVsc1)>1vQdinsNIKNr*otyQ#jwGna`^=B%sj#l0Yo7v z+*$==AFS4~NUg}?J-Z}*S!ncD`oDpMZ&)QasiIV@AmwRpXUa*(w0p4ai1hCju8Z7A zo~R%OrcO!SC8ieIp!_!gZjlyfh2>(VZjeir$#{y@3H2 z;D$8RDzEe5i>XxyJsJS2fZ$E$j|ktXYU7Eo74pe#7}?Ya)isP`0~FzQc|p@LE6eEd zO>q~C$!QYZzRo&@USo`ol@hMXV*m1Gif>&QZ#$ohYWHbZ3qk0d1z&Yw!&JqK6(SuZ z1?k7zlbdL2K1^18o*^-=J)L`5_CQxca|@Z=@uGg#?#i7T+hjcQ!FS@@zIiWYblisD zw=E*u8P|%GHcNGlR2C$YEL_n#wf-rVeFuHY4kmxt|3gJF=vqKJ6zDIbA#$$n@vYTi z3w#m9migWVzHYwXxY~|a3>kHv)vx@}nZpXztP!kavn?}_ApyAqt^BMK(~p5ufdYz_ z_{nGIDYo8NjLokK2B(qpW1&Fj_xlj>`N0=!=&Jo6-WaBMm*2cO*fh1|(!LE;oib+e zrd$J4MY3(a;QGZ1znr6G9|t0;n+E=g;2XwWgC04)IcE!_{TjGjDd%(Lz!`NcoN*VA zVh$Ta(72>cSHYiCjMXX%BTdPFuYU|i^}B1$UJ6CaRAQxtI|TSszVCHxFRVQ-9( zR{#xz04%S{VV~Ic8g|%Wy$f$rso(9Acmh$kuy*5hF$i@5WF@>9M`#u8u%Li>vjH^Gniosb*BCh4BGX__JAekYTH zgF`1bLm$Gq;26@>nG$5tfbnG~x*O->5mPNsJC%0wG0h_6c3bs=)u7=L21moFc!0C} zk4r8M3Ret0eo%}u#_zY~b#fLTfJ&w0!$G=5wJ76_w$wGNbyCBw6+F_UMlJAXW=F-9 z+mZ~z7#jFLqp6Uf4Zd+MGEb<5nt>;Rs9(wxV5~xtQGbSHS8zQPd*ug-<;SmK1?j+{%liyxdqG2rv|h(o^g5~OQo#g zW%^i8xg`DO{Vsj3+%V)^VkSWw!hom^AlD}G4#fR5iF_go43=7HenW+nz9i2adHw3p zLibkirW|D&_kOto6l$1AGCXb1oKtz1lsxY}NK=GgUWQEuOX%! z4ETV(ALf}ZGG(O-YuGFDuR@Lmm~@9qb0o+2G!OltR~r7dq1WUZm9KKmOBwG*O{yee z!B0OeE5!AlSo$XktL5<=TL3=5P448y)7r8AxmC0|Dr?2y^KZ(~oe&$3OZV^DYwHw8 zYbl%nDDGhws!HpXLzI{jgq#`K;%gcvO;@Ip3NIGi-4+^J*r5}jI%=K-0a(SLQ#$i~ zxu=t8?zBFm`!c|0x(cZ~bP5vZ#mUOWwD+`*Nn9D~b4Z z!nA6LBcpcjf`OEu2e+!gvtuP=`DJivtf_#SREY;Ec2lrkm^$Sc7TXgGP;aOsRi$8W zK8y9sWGj&Ysj&~|Dn`0Q@!S$(+;HdW$WL~?ykp5z5-4s#p3TM~Da1|*=uL-T zyR!XSZ_*_Y|(r9vaCr8w``j2b9a{G0beclXtHTVz${uB6i~i-v@wq&=wu(+KnL z{CY%NzK6r6uvEx)$@if*;mK~_RKy58gAXwrASC%(vX2OJOXBX=7zB3u&)l$?l3q6lU?M{ri{n=MfU^bhUOMEXC& z=^VNPY-);G%n&jGeXfRyF4`M*SYa}@>5EDIcukv_gQHZP2OSM0*?>qf)RRKKQ(OE& z!8}P*R^U|^pcoklZ;R(x-sRHIKX@ut<->!&l`#{+n-L`Uw7ZQxisMcbT?E+&1To}a zoN^`pUzFwG&mf&L#MSVEJ;ev;7YZ37eVJjzGj)@RiCjmzHyP>63w9ggD9Jm-z@p`< zP_%1q(E$QB!i%Hs6Mc!Ft;Y}A3lC@!U_w|fk9$c3)W(v?5|(?;Jl|`c`;j{@U${r= zqtr!?@D*}42d%l7)G<3%)B%`qg!6SeoUVZAu>pkXx@UyF#+f}Wm|_p5pMQpU(mQ6& z%)BEwhwM=?d=fZJMH94xuc~29-@&kj+@xVWKg^TmglK;T=vPObRlnV!{bz+HSqN)# zvdXKSZM8s2Z5ofz0uL_qtC)^BQJ9;o+Ax2eg$M)u2#;LqLP+o7*B5~e`9Y~nM+IsS z^~xkXO@$=XD`m%gfE2%<_&IH9g7{TUmz#}NQmq>*)ajh_Pqk;_k44T(_G?Hnnni;N zDz)ArD1ZcQVMUh|uchj0zOZyeAq!*^*)A&kArHWanMd_1)3XStZfKEqh6CzhQt6pv z3ER>=KE37`>BHE*!`d?Vt#ZgVQ@fxjVB=(q=z;m}3qS0MlL>vKQ3>Z76#5d1>W_XW zVLUq^JnMAW_92cYForiv_}JG>t=dJAPXeBeZbhD3qi>`5ZoUb{mJMly1Mzno?4O?vv{Q`Ma3CeI+Z-5Xms+Q$mUW9J^+8jrFK5W6w< z61ilK8l3s$4I#OJ++)lF=!jG^j6aA$-2bMAcFMcs&j^ToN^fl}tbIMJQVc@F5DC8s zBQ}I{9;{&jg3;9hV3eL;?*D_8#w7O&mK$+s9!1Whg=O67=R7eV=v|xF05kpo0j6z_ zQ0;hvbogO~=$N0r4e0#^ZK-Y>f1@2n#^J5o*DYc%+rj$%F@mLdvl0Z!L#nekwO)&x^ctY}6#@ zUZ+%{xEvlR+x&#>N50pPTFK!w?islrfeAsu}I%;+kV=(`xtdxA>Yo(2dF zpMS53N1&vOH2vdtM9(Al5ycj`h7>5{A*y%@a)H=dV6h-#ICFKMUqziijv$Rd4bjAeo+f`#2aFmZv~5xY!Njq9LFXs15Qddc{Uxe8 zhgPolOl>XK2SVoNU>5?c3(*^k)Zd{zu)kBW<_vbq@rmzR5r^H~6|wFx%Lg!^ipd<^ z!9HGH?CgtH!Ie;Wr&21G;$`dF<3`XKHNXEVsb!BzMgR)XaYeDN8#UTrFOaGNzG?i} z?)|#8`Q21j0E=5s>-br_GKRxH^`F&KhuN&5MkL|{rG=E<8lVSOW^2pPU>kxsZUO}H z55=Wyt%5`yJlC8Q&c$}WR-d5xk)sOVD1t-ia(ivBx{EoFxcU^$jZ)Op!jhruzkq2m zD!mNRqnL*YfWF?BYOY6D`TCopb-bb4?d{OGFMQ_v{;3ex(dmcc!|{ozbC6x+Hins* zWFxbYdaYYLt2bCcxkCoJXLDwG!HF=)ktf4s>|Vci;|Hmgc`(g zso*aW$APX-0P;DD_dOm%oR(%&P*LERJ)O@Hn*(H}oNp$Yj5hH{z0%fF)ZI3}>!xh_ zdRdJMKFY^?e4nPQv{elG-om%!MJ2K^H)w;&4P2{=)iZd~m{)-`E+DvwJy($M0tn(U zXy$k*CN1xC9%8Sh>+~M4EL~h2Gt_~RM#L5Mhb?e2m=&(ramOAw1Ut&1V_jc~ds#sV zoEE9N+R&?nm)%$FsXR7<3#3XR@ zJ)$~|b-ydT_Jfo>Wj5wNRjq#KY=P9%k~f`%7A+6ET!W1vv|hlvMYmJWCA67QoEC|~ zd)bY35H$#B^BePqlYp_eVLw0A7($XObc-d*NnoBiq({&9{P=dxMQ(h2$7g<1x14Q} z^t`^dXR=CE7etGr#geVYkXp!L+zo-K>fRlFu6pfpb**R;5q0P6Z;SOuo3w>>QiB<` z@ZO~(KG?L7PltZsbmCyzq2K~mv$YYFPw zCgiASlp}ru2pSv4D zr{1xRX`&-byf~=?qq*#udvaWiV*|wOF-bToG<)sEtL>m*W2~$m-#zeBDLCPv2E5Hc zl?UEK_LeE&!xGbR$L39^j;7j_k_GC)Xu{ep$(9e668gI}&e{kIo{97Wb#XV}yC4CN zmL3HbZFyW&iGFZj6|uI>mEojox!eVHhW!adQr4t}{5IQzxUhvT{?U>ZdF%z5d_zOoH0~d`cTbqwNlLupacRv0J@F4U}-@Jw)Y?jayB{ zLIyCoj+h!TlC!Ph3w3TG6!_<)iu25!$~CKe5z=w^CbgsAiVbY+FOHHYv2w99Vn6FY z42WA`Z0&%&%#mMzQxE;+;lbiG2m;p%4cYvHEZu54uqW(Pl2Iv@W4+b)z3v_^5J6hH-Z08RVu@b6XJCghOow0Uz#ge$k?H75`=2054-dB1+O!S)_(R~wjtpi;cx~wS( zzSl`&gl191R!(+w=*UhdF@4Z6Fcc0eM}d3II0BX2Mc)^SOVR>toBvlm)*B##@g#+T|`1lZ|4Af0i$~ z6)WI3Q-H&WYM{*m?B^y=6>+P|Yw~|kSqyQpRkI5n<+lHuo(`X|9&2P=#H_F|hyMdM z^x_4U2PLDrYZR`)zwHBegn!lqWB1$)IE5f)N@M8h5~#fsF9g>WB!{4j#wMJu+Onx%k`;09T?G~M`UjGRZ9=9EYbB`spd zq-b2%7e*!$hJvGaaC(aBQL3fx_>4wpbv(r2O;CGlI#3OGZz9AD_MSZ=v?wXdG^W6M zoh0qp8nK<=@XoOLJ;+gl$tf70oTS>mmvFZe5h?UpCm^mXyqP}-B#W1H&o@R=vfV>*$2G`ZsD zDd;FRYMjN>jSvh-fSZBS(g(VdC$dHrWoaw@oVzLHb7(usF#s%lAw-k*8E0{@WKwho zlpUt6ZvaS5o@nI)tj)GB*Dn-M($uSMzVK~owWd7RtxcoGTb5~&dmT}N>mv3OGhc$9 zn|b)41ZacH)6DpJyz)McoSnkTirCZr(04R!b&r`o>)}F>bS1eQ806VEz@_&Zgi`q6;)iV>*YrhRZjM(|kepJCcOZ`iEHXD~( zAwyShX`j87q}00}GL`Jz45&AbvKYV@8Y-)eqOpFIRsW=HHTFx^p`)U5J;{<{M^kn{bCXSi#T_ z)Vjn-iNsWv9e#nce(>p3D{D*L$TV!7oRWwz#f>KPmbl|Ml&0xDQu`7Bv3SBO>b~6xNEz$!F?-GO$H7wL;pARJA!D8tjyx|eQQ5Z&nj459(OXf zH{dgpCv@lbbFRMw4a!o~$^BZSs(tKQQ7cAJ0U=tbj*p6;duSI*PCqU<)S*&H;@Xsq zgu#)!r;wR^@gxPOj1^2rEjVBJ^VErK2U#!eU|%;x(|2`rjdohVpnckn_N$6(+xi#W z*dj6WIKi4AtA-&ciDfL z=PK>#*$169>eL`}aKwgQlH|{{*&b2PWUid4@VuEg+X}yxI6tZD}C+dBECTJ8 zahLf`s3c|x?gzNA%Vu(3ws&7{S*PS&djk%X2;$T|1^y-r(Y)7?_N4;W@p>2qC-)>% zmRdYH#s}vG#Xu)=$MwtWMV6o^xH@$3LD(uc)nwYN;`Ac&KugFZYp2zpXB1zDqJ&|M z?B(gyvsgMnUNz*O7TY9j0}pH4@^m=lG=|Y$fktxxUt@cJQ1FUpZdWkVTfskih?-IA zGmUcF6emfEYC|(+2^8{e)jAsbTXj=ocfzYE?#*abbD>5oj+f>|$O1 zNGOyV9&#t*RjJu?D%Qu*D@!zp-U6xaM<}ieKK8lH7(Y1)Ck$?N>+W`sUgf#23py+v z3)<{KG(M1{)EVAKJ*%;MPUA;@NiO6v^JxvmXNW&(dIT7f%cLzc9}lz?_x_S~{{XU) z(FS&CT&w}j^m3!sJ%oLM&(6UUx{AIhr<=c z?8NOTMXLQCY~a%4e;kMI1}>qyhZ{&DaKuSU-V9FJ8o!G~d}ojwbMx+`GnIn~$;6OZ zY+0(rwmu(RO%EO|*%vPFSi;jgf{kv^?YleY~x6KRon8p$C<9Z?0AU_s#mjWf1IOMkKZN`NhjFH>W1gg%S(66tL77h@&}$ z?3qZ>b!Az`2ib0I8NLT*|DejiNxRy)MUh-U`ukQ8ZqEcIn>4eMp=r5Ws-yp!3Efne z&$;F4({|xaZr8-#zzQ;0Rd`*_D0(QHu%4U}3ofH>;e`XLBc_?!xC-Hky4mu`&$6T%w!-Ux(i`Swbek~R;%r-{|cn26L z1WTqdl;kKX^m!Kvphu^%ayNyg&}Ep zHc=U50~|hMlIe7fF}Q$B1im+m6RSvwtUXIu{>s{yFP3_ z*pt!c)GCf$AsZ6pwczz)yFxE;sR`V>Nd`^9eg$Th54$snQ+3&wV z+Jx6?Qnm?W77yQ<^W2?FmM6BkY;*d zH99YQF}ubz{)p^MEybvBbD)&nT_fP95x}PlvO%<6s4G9Sl5_w0apSnS*r@x}CtExt4xIoK zrfE%QQjG;9aCMEFC2yZz{Vuo1jQ;Po1dA_s7c{{q85=*#o8!v;!r4EPOge`N% z;&kyv`Qsc4h^1|Klg7{1d1ya#lR4&ld?)|tr;8QO+qIx~qYa@tinZ2Rf z%wp;X@i*(|uFH%7%ItyDlM)2Y+Jj0YPyzALtMcFmpq&ugi{rg(&_--f*pb#Q;X36b zh;pUW_jL~hXw6#BBZj_I*<_Ff?MybxxjfDES3eS9z=@urw3aXUugs4JZGhsShPY7m zntONR4zmq2&nWa@oSGb*79_JrJn!{ynCYjKcI$r6Ih& zJ5@D1VhQWrR1+j&N6zz4!W?_E3}6K9dp12eI=6S)56KW17zUA?GUj;Pz7UX0rjqY* z%Ss5)tI^GY)oADhlyqu_Wo~Sjvgk{eGtn5CCY`I+TJ)+fheG}&_9u$> zRCd=uBJH^;9*EI@CZ!a~8O+=s4pmbIux+e1?K+ zKqG(ly9o%E#)&POAU?o-2-|##Er3mpug0UIa1CT^E$;Sqpj$n5x`qcdd`X+L?k!hg z!)SV}cXL|~)B_K>m$gv$Qz0S9&TU*;!7d;>%O7*2Z=V1&)1YjQN(5L@XCrl{rJC#=<_kT<*F4`f z6(PvIa4h%nf_UvKqUp8!imi)rbVn#6$VUo%`v&pk{kSH>$`FC7%$&{YX;il*4|5>g z2v4n#p$r-IxDmRtY6!OF(8Zb%x+=W-g-FihB@x)?vAnT_iDEuG`Jc~{hN3N-STbGy z&8TObNyMm4E6#pR^;G4L#o5AskOG#px#C5~Z zgxI=4C=;o!a7J<7fys5!Z%5^(9RteOi`24h-;TO;L<)&L?gI(c$%-D&**W%l(u8W) z)Z~S|@_JF>fDqpm1XZA7iI7*~8l~#BX^(9&BbI29)EOo5GMH{1m{Ky3g|9r`y6OOx zWWev=O;2%%$S{hgtIp~A3l};8`TS`S5(gvFRXc5tL2x{~mY9=P8IW(HVR1&X1C&VI z{71#N4Kp!Xa@)>I^h0=6YdHJj7Mw_M3*7f^%+*%fo;OJaZ~$OnRVBw`EtObFDno{x zQU)8A#a~d?`a5YWZm<@Q&Chq7eX@dpJ5l=)Xa?G5p>%GAz{JBoDLfg?XXLq zCD?P%-dv=NcF?q>bi3`V-*Togxj&r(8O!FmMHX{C(-;(p-$3NYG38M0YE{jpx$=-a zjWeJ1D`Zg;7BEOy2^?~YTt*Hd1t9>+ z*z}5`A4&5Pk86%j6oQ|&2P`{45Q@4ywx18zQl69uu;#0Bzgd#!jXI|6sGDJ4+Eq@s6+{}g}Q5p?4jLb%@EQ+~OT7*+u}L!U>8W!mvWxtp5v zLCfFKccA7if@+WHz}CXa#E9lwfTrbewL(rx;6ejAP7449yI8}$OBh;DPDCogje^6) zFxQ0=R7T+{^ynJ}R>nLtw%kV4fZrwRh0CkxfAEvtiUK)v<_VI{??4JohoRPaDMgo( zDg#l8iE~Gi#TS?Yl_tIT_DE`FKSwgGV40kK*@Q(F?ja3QQ=-7(ydT^{bI4kPlm|3& z^$}9ht(yklno;1av+HT7aIbmxYW_#LAC{fnin~kX+T?E=fjAPiCh9R>(utSi% zO`Sx2@in&lkAJkcNPkluK;i?w0q6y6j0j%9b2j*;p7W~wPF=@s*cENCT zGERHF6&S}En;}*iMb8REFdkmPBq2zxF$k;U477Gq9@!5v0$%+?#>p&>Be}le>h=p}k}L#j>lUaTbwm;-Z&?A27OTs)q( z_bI8(w?z!}{u3(7+#+7lfqXXRzIwrMw`L;PsLMg4wr7ZPyA;eu#L-6|LpYQl{=tiG zYF3YjX+CeQys*?P-PMwuA}yYqooW`|yq9XNNgk&j%Oxd?fy+q~J@0n(4yp)1kBY}P zjFX|W5$jHp_u&N(s?qjDE^H4RYy2c-2Ns-!;#n3qSuyPc!Y@yCXZ*Jct;Z>4XTkkeIe0KF3vIH?{kZ!1{O z)B#4P?!f|pf9=DDl`cLl01MwhYeg*-@QAJT>Y8^@bmZ$0E+EEcP!GHxBH6*dTA@8v z2UMdYt#&E@fC9*C?3{q|+;GW=6m1|#3mKuj3^WA|7XEh84)aTS!!&kz%Bu_mgh_*e z`+iAA?}2;v&j#$OCIfcY#W%48R1kZcvfX3s!mQG374{YP1Eo z?^fg~5rS5cezs_ECS|O*&YIg^a+Dv<~^p*YUGzXwmXq{V7KaY`xY%Gx=IJ;eya|c!C%K{n$9R2(nB#uj4jL z`!<|N64^U*B`dZ_Os9ZU<&D|6R1ziCv})Es^(-^OxxwcY2XL8ij*`NZ83ubWe)54x zw|YR7h71U#))p~xJ)|p+z*R2GtRdOF2X7>|aXhVws}qjFP@gNQEhF+uQUNs`Bs;4- z^>0$Q(V9lfUNOrVGB1iGqm(QOz)aWh*{Ik0_o0a6>6A0sTsOERhZ9n*M_(PGl=lZc z3`cqYJ;hYPHW?9Q;ErvHp68XlFIL!l#H3%A z8hG}s3r-~GvA>oUBxeM#enNr~sP&g~l*LA8M^pu&v!0*$%J^RfT z)7c1Bbe4~q7g}20G%UN*nKF!xxyaX-8>+_?B-d=O91BGbkg-IU#Bx8@GwIqv{U9(# z8v>Mxn@II#RrAgNbydXcev(rhUjmvdMFk!5L;5G85n$nfU1u^ie#k`7H_bp@IRm@y zUK(vJAstCO51O%Qo2F!YJMc@n1*jkQmtDMgpLG-p?khgSYj?)cT^3wjTj}}(m%pN7 zFHJM;#h+!_65neV4&JyqrbgQIBF`m5)h+8u zmck|xPxJrRiQ10~I+eHl!j4!Gtip3Zw@OUV7ZjWvsJiL(*dYXTq#4&Jf6q^jLS8yO z%KL9mw3t&i^ho|Sm|;I<`$AfNF+l7Ku8ub$=<+TvY;SS`;C$8HT>&7gf(GZNF-Dr) zjIxRY$+qc$(fA0E7&6~U$^ozAB~Dfdnb5|ZdVCh3&{ORnaCT3HyDEt5&y!0AUEhfXbau<2WNg7jK_L+dy9i2G_5X6a; z$C)!S7oOc65%u^`swHt$7_iKbIL}wswSn8gN$DwlQh%gMi`6GW|3P0`!rh#^p_30V z+@X!^2~SA(km!02jT0Z>&dOQIRU=Yp8;;6Yn@2?>&hn@|Kd@kg9mbwQOr8bokJ;Oo zxrpnwJPGwsds4E>Oje6le5^$az{sjY&+WTpA?N;w{fERQCTAQkR6BvlGYU>p-up~G zvScDByob`b$-rle7m@Er9tIKAqQBWk{#@oMX!Fe1in7m+oJf4?T zSq@BkO{7I?JgBa?Dv>63I%|E1qG(Ea#gsRo;??uA@TBYL2-B@Ql_C351W>WLe_f^B z8^hU;Y3W@fE;wB2((+hMB|>rJg_$<8wbTAT@IkNbt^z#OP*c)YeammnHEVo50UyQ= z;Ab$fRbQ(~A=QXvQD}Y>=*KetHhst-QZ$LzS55xj6%MeWP_91NDuh&Yh)FzQa#Q(M z%Uq9kt=Voq^U9*cpXdy+8aY1Y`)lcAcUNqktC+Xr0(OxFvc5?9jVN;8D6QEZ28F*F z8oYVKU*2(>>a(oHHEHNAAR#uQ+9acLd|xQ@MTovJkGE8!@&B2hN$3JdrNaYJf!iwa zv~tN-LI*UX(+8oJSw9P#YI>vJzd$_GG`TusBR#`%W4=l>IP;KlZ=UKj<=K;&>N@)s~0=~tfL@`%eN z^EXaEpN|-h>CdB~f>yg5`*+F}6k?mcw5MhF3a227NG(A!XxZ)G7&1A{R;{-ZJC z*M_&_*md2BT~nsL&7IPn0BS_kOUw*zb0a;0D->ZWZ)nA8G^wXVu<8Y?E{PO^pKWrUZ5KTwxj7ysIQ)?Qi8c=bDOR)geZ2VubDPIq5V=-PdR z%cj_3OdrytKpPKZ{5Kwt0Q4qjrEBRH(5Ik6xv;0aCG3o_Uywf+deJFT z1XVO^HWF`$ZAB=KP@<1l^#O4`L3)ou%>LmL5Zk6hx8k!8wt#b}!Gje}Ko&0Oaw>)_GDZ*kq0Xz9iu{jQz0BaPqHR`#gxf1aag#HY3 zX%|QVW0@JN6Y8CDC|owGedfAkBi1R7%S<sFn@_doA)d5|#0^MZ0DS&f`+1=L&_T=G2JBBHNm0yzJA zxmz1hjE9;i01+%#=g}=tS2mbMa&jieXL$KJ3Oh2K5WOZofbTNRUaO#Y1K3^#U)@u% z*KcPp4h0f_Pm0Se0YZ^3GFw!g0aD2XvMDw92ilOj2|K7`PvLFP4M8wFtj{_8n0f@L$W0hZ$ zC~uXQb7mSG{o;4k{A&oirq=uu5!L*_fG5!-Sf@mvpuf0<(hRU;aZX6)_$vX2z{JDH2r>4ry%=KTxp!l7gzu-KBi#s{j z^&!QiQtGq!dZ(;r=j9eKhkG>GJq|l5^O()z_T^&ZmCcMvnlm|VOi0YQDx($mg@u1O z^D`ut(5;bgjZCebd^G(m01_;(B#%+6{^oen_$B9;qMM?rJVT|W=Z5?9sePW(Tp4K` zYN*EFdg?t(BDN zbt`v*FiXEH-?*{o0x+T+BQg+9;$zB0JOWwYPV2HAyvgU@M6|Di=+^JSr-52w5qr(i zw&AyJsPw2I`7c0Qv1csOQ5K>{!lKwF$v~-(xwtyI->qM*Y|l#ygDo%me4>N} zQmW}e(mcH*F3hKaFBD<{Iq~L&`l5-vpt3{+ESdiZ{lNWH7M2s|*DDHvZz}h3O+fAz zW($g}l!iRwK9)$58J${{NCb7MCBquMj>Aj?PbK0ef1a>VvG13(_sBRXs4Y~8okKi~ zh;_QS_GWW+%<6-H|DQ!-1-iPafD|3%g}=%H z86aa)bA?2ZwqbgR)p88<9nHF258QDc#jI}t;O;q6A(r4Ka{O(}Xw0xf1NIXFQbG4C z$@0EEq<32+x>78CAlcQoXF9hnjX!VJrqzCyr9n~2pm~Cl)3StMJAzz|3Ji$P|BFZY z(1pH~H<@8XRJK=+g=X??teORTI%^Avs5Ct3S2SQmKOye4kx8u!m$`XsczkCRxIpCK z$v^7H^<+ke;sX^ykDA(i3g8(4QjSJww{HlD+%N~wo*PUb71#f1gFt{Q++4anuAY;z zHf``TSk;RlgYd7Ow_poVOj$R-hupO>3M5ZNZfpBlZeSmYvzZzBAFWkmG}nq~!!+;P z<~>dgz4hpg%wCx){f@DOa(ou=e6dcu_?O48H-o@7=g05752kiV+hQgt@rc2tkj;Gg$4_F+gKd06(Xd9 zyMES+x0MlYGE)PU&I`KU6c=aZ3*XJOtb5R-DQL&T3dVK$S}b8d=5__8`5CYHlJ1zx zf8iel4A^g4uAHVN1*?>UM(DGuIi9cP(&hO2sRrU3cjxT)0(XsgmLfQn?FigJQv-gk zHuBs|AQUN>Va73fOyOCcv_}bSC6nXix5y}xLK+=wly;MyItG|4{bzH43_(O@t zZn(+2BTJoIXj6uTpr;eJqeEB^nKEw|<=K5T%pqrOMeF5yUL{hBX)YJKD`Z>ky}hgP zNC$_z?<#&Pwni)8*Eg)|zVybswiYkrzvc`se4debXdodRy=&8Gc`tqh=QH{HExOcl zA4S0HhJr6th*a|WvO#cT2=4b@nQd*29%bo^;cD z`0>4`WX1GE`kDky;z9KrO_@|y5=K&nGYqt=)W}tH#3MoVkAfLM75Kx_yMmu3nbn@R zNsxkNv}10`&b2^;(aoJRjcB=-Mjpz@BL;!pMj@CEWI6ys#C^DlgEMz_o<*AvaPI4{9d>K-K4;r(IbgjL#k;?Gs) zjKIOoY}{BtkOHe%NYw0-#yKa3b)u4As$Sj!F&8Ef;Swo}3ZhRA$7Lu{wB!YmyJI!A zAr{I2<_F-JaP&?-U!K(ZU_?gww-P$=+VTfUyWot;L*+7wGUTIzWpcadb5l=~8<5gj z(wKd=`!?Mm;Hg7@ok!sxYNnY>fA~+`jUwdqh!wmcX4AMAr8BDSbw8N{`~)~d6-B=m zeGH>Mx!au9YS|0z!YIuV)^dZ9{J6nFlC+sH8Ycq2)0opvGbkyCi_)foxLAG^IH+9` zy$;~C+$YdeB$8cAA|El5I1G9gx6R&xj=cK({v4^nv<``CcAVfFUPKJn37ogDA<`Q< zJ&{MT+RSZv+2^_?o~}-KppCw6mN9Q_5P&C>BQ1KAUk&7XHc9EVFmXPddFMR)yis1o zTRL>9wKF@Ph?+ZZ4|sOgn6O_B2nHNg3q^EN@!XCd6GGcGpYFUqSZ{8SwIQH4{y*CB z6u2XOpb|=|PCF0q)9*AZFTOukz-UPKRttJ~XC~l5X-!tnN1Q;NWk9oA3=IU1nxIS% z*%SB!SC3R}uh_rQ)-@QeOe8k;Naq9haP?Sf*FtJ07CP{9-0*b|1QOUfOn(Z}0;UW9 zA-bD?1V_{__2{P8y#2-xEN4oIzZhpL3CdiLSOO|sARXnrQjFF;g?-kLmq;@TfI#BY*4!l1PKaJ&s$LyV%C%SsOA%&z&&J&2KnJ6I4V=W07Pp_^J8mW_*$>=3 zsQHHOiOD5CO6D&%q6;CGMKH5o=E{k;hyjTr_j_XqNOn;n25wUF*pzLx zlQ}Y(&KxX%R3r7#MCbq6+I>c_lg zce=@Fko35q?X~lFXP`DcI+fz9D^PWb@(FzIk4*{wUj3;;T6@DuNLJT|W>@eSa7>jK z{6hsJ(n}K?m!sWr6V?wTU;ENwNk2jf;S1g6rD0%>BBq-70%jnEC9-1fIgSWl!f+N~ z8w1wCH}bPKKb(9|fQF!zPL4zhfzt1%yXwsM)4%6R>pnNEio;ivLenouBk;uwsJ6jO zC4Y{9Dy$O$WY@6vj{c*y1OH5{}VI1TIWIZ*?i~yd7KxP*x0i*vJnQ1V2*Oot!xjPE{XuE=gkq z!$Tn%xOGo^E(D|yTD~?Ymu=J)RI@OpUqFfbgjtZ;DCL3r7xDE7Q`;y>&1&Nrt1i_= zI<+}(<=fb+laJyOw#wRwV9tOP$0q;TjMnv#_EC85Q(4qwXKuIjq`l0RyyG5LK+-$C zQ{@kxfZ^acHp^C3-J$l&c@2qTZCzVhQJUq>B{*paS8z?hG~~c|a}~Gqs6wyDQg`h5 zFs{2X<8z2#88Avry*Vh<6GNxW9%@l&Yj3Drv#pxX2p88LJgYUhEJ6aOyf2$hk?&r@ z;<_KBomTeW=H;d$MqfBWVxQ^yNK{iLoy{&c1|$ae+2UcQDX1&vD>4gJ5$k-BPg}m_ zUtX8!N>{}e1RapmQ7SKE$v;EN+_0M+$YQZ|y(v}648^7{#R&gX9H{bBttg;S9{3bt3VcGa$K z5OY30)4M2dxjy*tpu`Nkg&xfq&=5vt&v*oZ1u(J-?{e97jk|B_*?Wvp2KR9MH6M)) zCrE|0#dN0d;2f3Dnmk{dhWX?#(|gZ{ib&muyKkvoh z=*}dX2!mC;40qF~AOv0(n`k$;>b}x)2k>pUQ60!^W9N}9h(i8*S+zU`f(pYI4Eh|= z-ZokHzfo@9Ex}pcYo0c zAep?Y-qPj>;0j1Mu(q$u5W|3p-G4BVR|Q*{!EJVf9biCZA9oV&4b#uMd#sKtPV%<2 zMyXTvB|CY74kD7)kK!8IaT1;*~8qB2*ZzR^H^5A`*n~hDZ7M$PTMTN#yFK zRAQ8XU4q5_**fB#N>N2iO#Ud#I#TmMR43GL9u~J$Ebe)#(FdRtkF2}6)@!7LUY3TS z+y%b!cfew(t#(gcw)Tj&FTI#`r>&O-)LLf-wyqQ|`z6ss1%JK{gJ^F(7+%zOnha~{ z970G#$0(GeIV=^SC-!Ouppg+`^CCv~YS!|aX3c>NPEvu|+~&|A-V67MZt&H=yx_*N z@R^n_%4C>MoJy!sgsK)If`(KeMbf}3Ffn5*emo-vxhL$y{P0E|wR|l33f14H1;+Kd zwLL3z^mF)6*ONnNp4=#B+7Gllc#>?VYNrIR4hf1@k?G>18utbr?i=>O?-HyZ3`Vw&o$?)94dawu3LHwkOmqgDG%*}#e}O8R$}89wg}4^nA4*POl87BLFl z!nmat&6khzXhnc1+d~dvQK!}}>WC{vR?Kb!pj0uVCD&_-G?7d-bPBJ(ATMKw1h(h$ zg{`mmGShpM=qpa;Iy!vn=3;bNuHnC54ilDu$9v!>qCm$2gTJx)x{H-mxqOe^XJ3)3 zVY62$u-_Cr&-=l&ovAvC7pwoxUfHr_Z6xuY*(T-Yb!M1X!v`Q*9sTd&%2R6W5+hDP z=$5b_K)|9h0n&A?5Nu8qkdXn??U?}D4YR*A{=9vA4)|Wv0_zralCN!E7?NN2D=2*` zDR^gbl}ezC@#Lg~o4L-s_NRd40BK{SbORI>46QbAhI0L@pl1_u%d?}axJZ=&OoOQ# zu~FmPz^&{F(C^jSw>rBLw>7QaL}Qav2F*L1Q;D58sx&xK4l?sUXnCfOjU(YqE!2kY z)W6|>BEx5NU$Ef={K5L$b5Q$um(8Q}WCp{sgdZt=pROVIl&!b`8749PJwL>zH=cKzTd zzq8ATzh$7I;lRc5qQd~d5R5~rkCynK*Un~wsS8dv0EcAE5x%A#wM;0{biMZoe&|Mv zoOk8xH?GOOob9QmxgnMYzQFw)U7F< z3ii93axqwiTJDounafT2i9H2TpkyaqX=zh>;HeIYrR4Sd%$L50CwQjH?sAJncKV-w zPrBL2$lyALld#v>RW|1XHJEztOmdF~@Kl~2!CTPiW?u$8rH+;rIHIr4ozB1j)z)T-f`zq3hZgdC zxZF!2`c0xa=FX9lRsJ$2vgLV(-DHQr@kbJZQ;yMA%OkSj5W_G*^oeuF(p)?wy-@n$ z)cv3NeWECNmzGSy^~qpm-o^$|#K~sUjTm(zGzCC6&2o(|kdySPV_itk%Q?HT`@HwgQI8z?#6ll0#YlR^~#%vix4C`{b3CF3K%E z?;~WEQ6|Q-&l9FP5VMOwqu)@|SG4_xQ@*g^j6+2<8>Ti4YD_xu3=yq5yI(u z%zYD8711F}@#2xVjUxj^%RlI3K-uPfJ;h|;`JeCRWDoqwP=%^;1?+&jFUJ@M(c0kE zy+SXpxdPk)vBvKe8#609WzPZEYSQn=IQ><|YkP?6`6dUf!eALm2l0OHO{ySZuU0EV z>Sm)CV#Fm@#1GL>dGY8>L2JDu9Xx~;;li!rotvmb_5{4O;>QsD zzKPFgyqf*QRkLimeZZRh<-No6{=UyN#6rvH@uxjK#$8SBsFnU@ z!7V1$&z4i=-PvMx9NrGW5h&=h+@;7W_BGJ&LMXkGhHLpt#Tsv?8?m+G$FI&LEZM`N zvx2W*#kM4e_zxVBi(UE=He}1pc)dtW&g2{9w zxvD#AQU%lkuz;3S`L;Q~bdQZCIQ>CigRI=(=kH%cG8eRb>U7cF z8Z7!jNfYU3(k*q6FO}@)DH&rXTB)Ho6r#Qur&an0Nq}1k!`g6*&y6ld2&3 zYUi|9umQ%*u5M(0^3hU$<7E$X^$A;M*?Vv`XLE4HdX*}!-mK3_@hOw)`%E?nwG-p> zjUjm>LJrKdAqQ&erzS)UuItzJV{Bu97L5r{sE)S%_9uosdR2pNYnt|w7&Z3%yT`0s z>wUdO19K}<1S*-c%=}P!iHn`I@thQ}uNwm^Rca5<$18X0`3a;1GWpR7-X_pE@YX?))x|N<#|9I0%6QqQ@Tx&b+6C2gXoI$hqXElFz zTRUX#OX2P0$Y3v%t9xjLD!htl%IC++0|V;K;qsTu!0eO^KRq%tpCDiUEdAA$We>8^ zt;l(2izFt@!Yw2-Z`%$yelJ!U!c0mbiRkd0{(|btSm^Df1L}de5S<*!$iNL5ofS_1 z)OPPJTp^(}Lgob`uuGrx^W;1_dO3fRPw{rIz<)e&57zBd=R3>F(+^552`<&fWJ)VIERz}TJZ zZ-S{vHdg5VQ2-pA(V5WT;+Cyyfyw3VFH3H%2?zJ>n9S!9!g~1OE%Ot)b`*Cc&euFE7 z4rlRlJ1a0EYm?I2@bMnpZr^9e!p1)aA+Njf7!Y;!K2xAsEG7Gs(a&UkhZ@>uu z3+v-Bb(7A8`3vZM;*EDmUJ;aw)B*nX(UA`mi0JZ57cw3tA)kG<(hJBko;Me>dj7jPrWojkCf1uh9CPr%`?S>}*eS)J zAa2{(WkHD5`Y1Q9ONc}nj?k5$Qt5h?Ve%<*#Hnw{NYp;Cj>LGMIG7nL)pGiqAZnnH zGw%!*Y3Pf1P#G|s7$WD$ra;T561tbC6gc6(@$nmsI)s=#CgX~rFmLkSEz-gJ`6mzz z&DGya{RWjV!7_v9d)nshRoNAv;#t+8>2Gdv+?1<%QySUS0)!RdEc@{t6fgwGcZvtk_SjA#eRV?%W zuAtzn@wV3&ufm4Yk|4l$H(B`%JrmTUgtIeW^@juuxI;9?n~>ApDsm&57FW#eZ%ccY zqAzU?0`J|%tqMWB!BBkJ71rP&jzS=Q8@Gg0tAgVxjfnkx&{m-8*_SO^$(6}Fc`nKk z8Ve#q_*2Nv{AWS@p_<-YPIX4<47w)V>qzUk%CEvgLvWbJ0D0P0hTLOgtR!COA0y>$ zz14Y83MCm~UoBLaeb%fW_~%r=p=~tLj)_=!j|bWlKys>akS%yf={9{x->N+(|D}NX zr^ukpqG!WktuMKWQI6MM(lH?ozYraa;>f8Y5B|jz|HPGvbGG3<-LJg4VPFn4!wi*9`gh8F}lNGguPx@}hClHg!GGA0DEa zggbuSvT*h(3hR-s=3hcR6qcS<{D1u$^SxI0d)sO$7j_KBMhb;Il!sN^-|auNJt^hy zl4=?DEw9WPjZt&J&VVzvAEwc*{Q3|&6Ov*^>I#Sp%D*)IvP0YbA`ds0r$|<9u6y*3 zvcV})R{3O-AqWNoqEVFlP8ae;*dTD&GoCN}WgpJ`XE6^t7rs7n)P%a&rSgiMadVZ_@`zoSp zW8R#iGR0_9te%<~s4*TDf<|YjR4OlZi`gTXXpHf~oOlW93j+Bw@gUv75C5uU?WJKE zvw*Dn#U^8AOqcGWPI{m6SXAY<71L3QQ4o{KNjCrwL0@QxuUNx)gV1fKweV``vovFr zIaGu^ngeIjUA}v!BPiu~0#hz*@w8F(%8Hom8!BbRD5MtlN^K`;=-?br-IMHaq)# zR-AAZaE=-Y9Li}#-jx=mck$3pd>&S5>TmNn@3ZKJc)QRVaZTL;shnElhQl0$?oIzN zS8@rnd>lUe%g+Gjh5K#u$^;Mrm?wP^4ChcWb0NaYy3>{K-8#|Rl#PsQW5H`LIZ%Fj zn`GE?djDuK$^Vf`Th6|=_`Yz6I2F^NqqoxTE%i*vqq>YHCjlWU`FV1Q7&Z4G!G+^v zPi}I{{v5WDxwtMFx<}?zq+`)@Vg7~cV zmVq2^Cy`lk>+`cEkdNnu3f${w*J}S%-w4v^Qrj$fj#E!=5`Z$RcOdsXDo|+?m&`o! zVG~<=9(~=awgK1f5qkDjzljb zsb;B=GWi|CaEY!9rcbA3l+smphZUY(ch!nxIlb9gX{^%9*UZ$YlaT?dW!OD>{eVK)DKy2HTUe7Mc8PDWa@%+3}0tm8yGL zZSdMp{tkKD970Os1Zhs~aa}l2%(c(%tBBYRsF{#I5qpq5AiX-2VfY*(z`gEeN%6v{ z2*UMo%5@NZHUo0D&@p1KQ!cRk!MCOA`V32!rkM^t8m_4+h=q#?{=lWcEy-8}t-b9+ zI7b!J0TH&i9B6A4K9l)8Cse1f^FkeL#5MRZhhmoqD> zNN4i0+>jfSZ9t&WYn=0d^jv?ChnJL-?N-rW8zwgAyu`=;o^2wbznyJ9l8 zI@|GnkD2_-Yv!rpiA``(G0s^_m$C__X0Ldr_HGyIZi{@``4P=?eJqOSE{Nz@uH$!$ zb5ZM77k8F;-kCAmIWn1O{tCJjZ35=+m#Z!&HQ>&XhN zSJ`ydPr_nLva`GbLt?oJGXjmX&E0G$Db2x!MMY@AG26;&;44f^_r&N+)xZXxMsC9W zH3>eHY^K%qt6n&pmCr=z5C_6vykL-!r3_v>-45Mb3?SvgHD(UBz}3(ZtvH1F$)QSL zh;wGFXb&dXiB-yaTDB|4%btMTcd`x^7VtrJO{^dz+6D7 zTVs>T0t!~Fr%*;Gpcf4Gw#o}Ni% zlZx>ZXPw=W6adu^`0VqOidV77PvFeRx4SE#gcr&&TE+NCEyCNEYK=Pg6Or1o4tI_+ z3%r-&o5VDIRkgN&2>?SvN2p9lqd3{@(d5aO&ZQoaGYZ^%RnpRVb7r)amb0;gkEb-v zHMZw11N)8^!!bt}9gak!Y@v!~xw`u-*!{}ku=rs0#v}FPq%^YRO+rEdPe8E0h%LL4 z&e4{=0(8bSogPteYqB~fOm3;p2Kegn%`uct`~%_e0ziGArh|djfqpsnX6VEPO9jCS zul{zR8ra&Ir#ItMLKc4>bOmn{VNiUs6bo6-2J`6dUX{6Wht)VEwpkhg1e$Zroe8{_ z0_|37%m%KWN`-3*CzyVzofG@OgH*9N<#@vvE+Env@JVA%o{1KlTE>rh2;1q4X&~iL zNl@C$m2@9s%$FQ;7O{#_%mp&KtU+VBUw=ifv0m%ab($3=g?iGeEJ;s+-afj5P4iEu z=oTWEOUhFfgizK}qBgz%DykHbZ+d(b`&GV5*WnfjG^4%G{11`S5U7BDN0G`g`4aBP$PU!SU&S68=THiA&dae z1mB(nW^@lAK_gG>ovW+AH%A-S3ix@53(8w~yD$-rh_ImrQ^Vo=#K4Fe_UY%<*=)AJ zp8$wmFK6AE0e#s_TE?_>0Xga%rqlcBQ*RPFgt43=wnlerJb>>ajLVMQ(NRrLGTqo=VN5?knPf_jEHR7IYy%2rWyp7e)I^&3+Un-h=%d0yx$C7b@zCY zOv0F7!K)*SrXW)AqysoH7(B*@or7yI-$(O!E|}B8lcLqWTZ%WfI}?9W5k5-nPSnK;Hr@k|$=G8Cl0u^Hy61oex>Ie% zo^g33l#Bk<#SQehigl8`g>t+@i?3Dq8xpQ7N@?}&dG>9$Df`S_xo8@M17%Xfe4Tw$ zW;cI%vGY0?}6m$N{AASh)FVCJ^=$J%{Tu|(QiX7q_DJla*iAt3dj0tvafRzXaDRH-26+_+5d65 zzsM*bF)l2{RQ_lJ8N@aPhO=xJv6OV#3pr$-PZ1`EAfD?+285D0_7!U>OyY&Lbe20W zzKlUkTjZrD4Hy)wFxvIwFgk2_NjMeYeN*udV>RaLV>WbIIXtS^{gQ&}!2c=e_*nrk zhQX>+3sX=2joMJvn0h9Z$6)^lrBEnrGdV>P1cqtQuFD_}Ah5?{AA+tHK?TdvMif^y zH?&2`5W}jBn?oUE4Eyx~-pB0>wTKpU3z{;Tm`zC89+s=jSAMEv_<^c&@8EsmtwGMvZ6X+ zvX9M%xl@`_`>K|8WneAylGA_*ia1TUCH-M_pS%p2WUsVoxSbQW_wiCm7MxV-s+Vf+ z>W8ODBtsffot#Quie^Z&{)zK272W(&_-K9TfsJu^fzry)o zEahgps;2~2;j%!Z%yQr>lXjv>1*p}_py)I17qCdveLDw2Scz*;gV*lH^sV&^%%Id8 z$2-p2;d6CO-2?=yA(N^0&nfc6?Qb~&<#HO_$-$-OR<@;l-4q_88PF5~^hrfYU@&1d zDDf2yDUw#W6noPit1y!)Zo5%K06q$RpsndqLvvLYZp@lEa%{~CBXK=qJm@u9U0LR| zR(5gj>Gx-GEsAlLHRADpPK)sF9?NU=Z%`=|m|~R1bi=OmSul_8cAM7+diFZ--#dwj z@dZtOu2&5wf{3AR^=k=l=_e+5bx^%BC>_A^8xqH7BmE3I$a?Yng0#X$fp6}Bsw}WD z@OQ<;gr3f2nb$k}6lvTOP9}mXQPfQF#0@RDaEV-fl;_-PlgK9(>vByCA%`>D$4!a@ z9v`%Zq;A|Di07Dh+&alF0iia@dJdzUY7$YCs+EWCTFQqHEScClzDAKLQ9=eAiJY~G zm_m{);fTHG$k(o#gYPFG8s}Jb+2E7(iC*{h({*~m4uaU|ag< z@T_tT8qjX=CQl3G(m1x(uMVReYwJ$lkfY{WRvjgIm@3GF-^Ml_vyAO;G1>7at`P;i zdZ!kd_P>dnnjMiXX;7QU(P-oWh!6V1*08vrmsXxEH~L$Z;1&G^03 zeE4oEIn9j`h3B37hNOUYF!k@`fVlShPaApE$-{q7u~)==hYTXW(igIID4GNA$j%Mi z?`#Q@`o9+FS?-{-v%9l9FSV8KWtFkSlU}fxZsGPV7`S16xbNRp0SQb)6?Sv78k{c$ zNoe;+Qd=!3M=GNec^Z{{wvUf6R*7Tu4o`9NnW-)akf)L*>2AC~d)WiC&p6M6tXQLo zOznf5@6*U&VH%_z@O{6b!VVwpJF)fxbx(i*S@H)vMM5yxLIcH!I$g|$gvhF$%*)id zLBg$gVtOABSavmkw34$^eKqr*RmkJE9g&%ZgWwJ(auP{x_m{GSE2YS1GnBrFgA$OI zfoR<2<|QF!BOSxfHDI0pGZ6U9osvIpK1fnK=?}OHr$+n@wMAITF_;>)hJ5$|p^W%8!T`CIQW!ULur}hCQ3{%C($_A4|1|go zTq6FwvjC;Y{3XR-%V^TLJ*&e(ij{|ls6cMj-G{>{u9JLe!}^qFB(v)kpp;Cle5w1! zN#oe9dtV_1!V&2VKW<=yKC&=AlF!(#SabO$rnaq%1)Tn9#_&4FMvh z2zVi)m90JfgeW54Qr?%ZrB_Yn(t?js$j{3F)+dg8G0DQ56D#3<9K%y2w!A9bpw=}&{Y_|I0MH`E>QBZHp z_+?XMtg|qhUrA%CNCC5ZzY3lowuJSxjjFZP>4`CD*m&_-tudu5DBiK_`(kLCS@KP9 zi9Du2>y4K*2gadAm6RgpC{K_HpVWSRosn)2Yf6ljzkW2ovi73UdR?iX>QbemHnEX9 zQ%k4mp9aCRr_2N){wVR#DRnl(8vbsbNQj&C;4kY#P~%5UibZy^>nnc_BC0D{sq0Lo z8W6yy?-s364iD7PJDC-zL9JRgeM#d`G6GE7C8HV61=qRWO@kPMr)`%bX;p0Ya3~mW zA1%>v&?+Obj=wdURewa?Nkg9p9>Sg}C#XGb`u3VtoFL00D ztfK(-Avbo*0af7FCgKS0|BGSP4hI;L)`4v=M7pL#!o_j-G|6@C6eWOLtRdp z5zavfFQZu{4yUOv{;9gj8QFyhWkxuG_N$~%7qGhcGx;9`o5BHDusPa@SXI(k-25MT z>V6j7P&n_7Sr-rm3oV0d*;wzxd!RY2f%MO3Qg30lMpSejfUQknWCnbGcqS2jmYNg} zt=-h$tLFD#+lfcLQT~co{rVqeMO~*ssB8+8RCr1nw>A{he%$7?7n3 zN%P#ksMct?T7W*d{BK|c$NZoxIgJ7-yz(y(4_lzEW};AUO;xRY$F5RKc2^$uKupGj z3Gjj!!50AF0F!gOa6G7y_h{u_9`iK5;S_Ua^vIM6e$#J} zs`s7g_|N1wW(sSo#uvg2W&?nST{X>7XpOSI_@0q-!eqFV-02qgE__KmIruwq)u7#XE^0vQ6~nO~xV{XqjO8iJKqe$7SmYHhOArCYOO zdwk}scy#$k&Dw6IILT`^Mp{#olxK0F&X)6EqUMyM>#Rd!OTpO@t^mCJW)LV9RJiixotc2*F85jSgM&=9f^rb_y(5 z0vCEF@Ol<nhbfpRG2?=^E||S4B_f-d z+zkVDG~uw$Z;7i>_rT)EW&sBjyu=)V>sXc$!8oSMFK8J6^&;0H*8u@WzN6_C%dHZ4 zk+4BK<8~gI{_66E0`U@CjQEiHm4s5c4MIQXLL;QuB{bM*G01Y+uO>r+V zBNLW$sM=D79+RtrXT$45u{50m+UZzT_8R+WfmV%{N zvSoWds8)=RRuVgiiZ!hec(L(Q(A-c|90l*X22o51veq*4#+#2tJRj@q79%9jAy#gc z(aQ+PS9j?aaOIV9HQtJ8ap#t0XV4^pC|Lg`><|}c zR5VYPUX$2C&pm&1GorW81=r;ywi5KN|5%`E`8}s$XLe>UEqp#ewr}6*7YU9t{L3I4 z(WI^TEc9qvva}6lFb})JjES&0(u{DP$>r2AfgWCv+6iija7wm2J6%ipltrPk>}ava zZjdQ*i3|H{HOe>nCN$6Yd&^uCwWr3Q<_2d`u_BGHS_2E{9A8|uY-Q# z{Qxf8k%LsjkAmNr^!4wtPrt^Q7{5HP1)xEtv>#X_JW(HgE70mJ$Pzt=lvv>DaiFbr z4E~#MATm&X^jsEdY%OSS$IC%j40mHs{c2YYU0~c;dnT{ZOuDJr7Ly4*G~m+4QpvOP z_r&*m|81TIteX63@)YyGo0&4q`R&2@bT#!~;rPlohgFJ0s~kE-UIE=%R6UFP`T`3x zma>gCesz`zB;1Mno_SSVzh@T zfxe_jUXD~1*jvhaO_<}Nr`gU(_(b&C%nWIXLuS!MkKLO8v3fY0ZxT?Bhcxc*VbbR? zZQThZqMIvZYpna0Kg5HO(>yqMUT7X0KvqC@0s-=`yG$hHEL?F(CG3zw^o9#tE>$r{qXDR)>PEA)gUPJ??d#*{#M#0 z{`*Uq?EO>UBRQI2t-IPbUyM@rufgV_*O|hMc=Uo)+{UT5*A6M}yZhX}s|=%?PE280 z>3~2;LDe*S{C0<5mh8MEdIM%SvG{Gvq@irxX6SZ-XNq#-YD}3l z0lROF$!UlI#`PKPcQCrGi5KS)Ws_111v&n(pmwZu4V6=C?U_6a%>1G6k~hL zoEbJ{Shry;p~8`nHR@IGvx6~XscSu8Y}7x;WsB}Kb#x-nDBkKUp0l-V8bgdoT<&%s z5!jiO-v;T8nR~4*y1aspW^<8X17~l}X9k*|yyi2-Xrx8N#rDxVY^eZQcBlgaQ|385 zWf6tjBi6AptV;JevV(%RFQ+x6j}7~18!aJ+&gWXG6~GbIYw(z2OqrTmukVug6cMsS>i|cpyNjO(uOt-;<>@}3TXkY9ttF5vSH%tCGx)D{0@beh zAy*s&K$YmH1{4E7!T5Up2k2TVQwiCp+|>5xk8UE zJfQ9X=>wte>7KYaUzB0Gc7KZ~(53Tk2`Oo6iHm05oZrT`962 z7aMePNUHK;>3H!b^a`Y`t5ZuT!w$3Zez=>6;^+QlFYlP>>dQL{9vN@g2@9Q!c)u}c zrZ`jL1aX{SczuyJ*GUgYXWiF{I=w}0*w>C{mh~gFtwENpYmuftG6%H_d|4nXC>q-F zgJ5)HEDuOWH4Q=RGa`>>ASB>%mk)mr4?PpXbrwUxLH~b0M@2mVrNqmz}vZMXM%4f z2Yw=UwE6>PUVQNopRYCzzXG1@)gQ<_AelYmprMP`aUQ0b1CuOQP=v$p z1TZ$;Ph=-(Ad0+_IU%w(6~Z}B+7#%Kjg4ZG3b?qyf`h6>ZtJQG1T=b+W4CB*g}Y3K zRs^0Qs5i9&aw9kzar;(hz7~(uene}}!TdTPWG-8ncW4c;hfbJ=H-UL;6o1J~tEE(F zu4J%0k!Vhgrqa3ZL&#A2ka$?rSHj!mkw}Omb&<}(-q`xYE02YFPUs1z!J5JCO1?j? zBA`Qyc}Uin-4r4pLC`gR&PdjC`P6(mEp<;S@X9v3EKd^z+8J3W{tP}3)!Kyfi~0B1 zsgI9d0jJJqfo2#(#WsTgAck;B&})vfqeMcI(U4JL4Neh=aML{ID&~*I*3KSU(rXjn zq0#t=2CED7YEvXu^LquA&_iTbOm|}~6@3W!1b9x9+-TJFB;F_bpRE_b?bam!Yn}ke z3{%k+_cGiXJmudb?{!GSy}a0JFeZV?Myi6+YCqaqJPT0D>m!LtjXuSWY<}3c)}Ikc z>xlaBCG6DrF12zt=I6GDh`z?+dP^#OYM!~;4t@a6kfbHeEkcksig^sH-h|oQ|Gr)b zn-cK>3w#Kc*Y?6+>cml%Fi*Of5U=|+VspSsoG+&lkxcy~1q_+f7EfFRKfh}{qzVM( z9t~bMIy6A(@?(8DJ3e4<&(J%@nO#>ODg6{uAfn%Zi<>Kv>A3y*(fv4YsP~9Je7`Fv z?Ff_t97jV8XHt#M>INn5phqSw0QE}(sPqO&CJFbBxN0X^z-Q5%Ry$zfrJmm)%I6>N zG6!s~P6-F?-lqWKB*el78U8EJtQ#5PJpoq?7Pr1qz{KDPuHu{QCY;>pc19zni`=+K zhz%)~Eu}=&Q3Saep9XOiC$Yp#1Z>tD43mFLtUp|kOwxvfa53SoNv3wUcfMEAraP37 z6xKEZbDzJ<7dHwfqC(c~Wcfu+zZq82HR41MEgyLbH1Gu0U;&&aY|})`m;KcM*-FxO zgXVoIxHUas)+DsO=yWzV*K#Hj3@yvSsX-T^fDbTWM)m434aX0EBqRI0IVTALA@Db! zKJTJPp^s&UQ5OSQ`uII?iEaO8AKFsrymMgzszdtDRrEXt-LTzzA2aE;>vk12{7;R3 zzJchiFclAna`)h$Z31UioUWXNr!_53gX2(%Oj2G_n*4<>NzKZ7O17@3cbGh@z`ah0 z#GO|+ecs}pEOsqtc(@xEb>v2Pi2n44mpxI|8`Cj>6gU$Iymw_72_U9Mle7JYfitu@ z>!~B5)|(uBm+{xDMk_NbJf4IO>`*8iMd%zNLSSkL?>pRgkGO;=n9QOuh`JwTr7#>2q;Q-!6s7BQ<1?=VX)-0hMRxDXa6f79;4LIZZ! zpEBc8SK0Gh^_Xmt5=mD-Wu6I1ZCT+*H*gNJ_)%qWN1>QZ6nU*YQamxq>nczezW3Dk+Hsi9>al;6d}8FIer(r+&~EU#pzmbbPTNP2 zQ7*pqUVF8eg{x}4ySAf;lkabj9fn;l7N6FD(&@XrlMCa3M+$amqa}#~-uI z%rYUh2Wb45kJDrUEGc90Vwxg@-GaLog=W#Pb=#rRbQnI}uI=IP@e zfMIsLfaRz}1F|M<&u zl?&}NMU^IrZ}!OZUZbbbIc%&S@3(vD$QE2*wR>PNYGOvZDvQ?p6gopZos@BZ4g4jl2@gJ)?q+DT26Li+5G=-9JQ*lj-MNuOmz@lwACh6wsZXSlEdydX zY8&$=I`OKIqo(k^G0>l@e?3j(A zjad}(lt@RLO1maBXorEuPRgMvn=8huE7}0T4ROeFU<-2uq}TOQXX8En+aI%X!|cz= z#>qWy_*m?;)&fI&FFZ`nK}r&KgX zZA*iy{_6*g{ccjv*^Q*4 z(neN=R%%X$HF!7IGsM8Sc$-S$CGYIsKi|6@OyhcM+f$T{Z?`V8aPC84{Etkvi~Zs| zU}5q95JyFis6@hUMdr3i6$_L@e?%nf!7vVvL_5)S^>yjBC>;)@6AXhY9H8z40biba zmKl=&zADGm-v%Fwft9(*h{xkQ=KFK*m(Fd7P7jdgo&x8uJYjyXoU!=ma*4Xm?i0Zu zO8=5SzR#?!O7=g|Y1K5hrCyVpulg_k3K@JVIzXAdnUiYMS=(RtBZP>glUKaR(+4;2 z(Vzw|o>`(8SQL7U6TsL9`_pb9Ra4sFR182i$2E=UAx&@(1=w7~gcCLL+pds2ju%U{ z9WQyctj5OSwN!(}S6WhOnlWTpI?xl9Kl}9Jl;Fto=bEcf?>x%`TT1y;e~Xj1+xMku zuCh)+dv*8Unv&TBBhHIPUr|HMsGw@RWi$K9SsszLZ|#E|tHLM`Ovxhyww9z&oQ~Ym zehg^7x#n6y5Fm z!k+{XMhq`C&F8oEMRxW~rzSNX4=BQPV@TJPqMtf+pGFs~zl&DUSDS_Uvzev*OYi@~G5I53-tgWWhY@ ztsR2A7R^+lQwJ*UwCU|RW0Tp(5Q>NMS(eD;Ho=A9ogWXoYT_~r)Gx+h)5j;Hxx>jX z_OMsJgd+nuvp7hQW3U6diCFf3Z(yXSoL|q3+-5E%XknV>V{InhZ`IFMOxhfQrbSIh3=zf<7{p2&@%l!~`0wkQxvSKI9%aA8hB@T?tV$?=PB{>LZ z6=|K2=T&UqL?ZT`IaME z=KaS|+EYc@y(j2T0?a+!qYbH|1b*|#m(pcGVA|IwYo8NA5%iNx5X4~uN~=8phZ>LQ z>Zf9B6{~r2)tkmjZl-uE?I7tL{W~)I?*5o9I3S1$NpO3pko>Er6p(GW9wWzJEt}? zFHLal9Z;XxIJ-;@Hd{b-FNDr@PYeb%;cTr1ioh756M*;O`6Uk}u~s_)8iMzI7#OH% zd<>BOTf9tFZS1e@;cSuund zATfU}h6tx+M1lU_)X@5$K^7!Fwu>_7>U=oV4A%!qftE2qJ(0iFj$(yV>Xd3As0V>~ zvbqArc$;}0N>IOj(fK`MkaI1dTF z0vBtw!)JjGd$0)Ax@i_2O6O^{5L92kM=j!bXAeOXiaeC}GU|RDb^Hxw#{ycQg=#aY zO)=c1$-Q~8KkXezg2?S+SkvT73I3z&G1sXoZujr6WXUAxfwcfQ6k@Iw=oei?1#`tC z?PHoskyYzhPeS-wo%gJlYt2^4aR!+)o29!IjiyI(fX{$#`Dsj?-y%ILC=OJ*U{bMl z{f6`v=F6rZ8iz!r(K6B5r<|fP*z*dJ^dh4Q4o1d=dPp<2sOmxXA-{rT496D+Qu30E}5*|2UUxViQ&YII?VPWYX&@O|=&RYqq&i1gE zZIJ~B!~rn7Lc(sVa6#!&+VPL3+~?74d2p4xHYp^N^&c}ly%RN@gwOxQq?6qK-Sd6E z@9B6$d(oEdeU|{~H&7(@eLyj0|3C+`KtsdQruSoGqRxw?qOxf}n@?7uSgE`e@yfqm ze$6~AE6-;_8yHelDb2hJxbt?tdVW(uIeujwIcvVu43kr9>na5&)D*v?R2o+NE?~{x zcj)BfM#qJlcDB!1h;=H)<3e|4&u6&g{l#t1VUnq&Qg zFxOL7fV;}vzQz|d6E<8M6Gev$!l+)z^^VO8=Vq+FF$6`~{tUijeCU@gig!Slx9hKk zVJT^0^En@-4Fsd9NT<@gPc4u)#enKUjh_M9F`$`Mbuh`;(dY5CL;z{>&uW*K$MR$X z8X#cFUG*3PT4C(_?7BozAgMv-9{&{$>x)Ci^nzACK`mK5M^gTzhHs+JkZ@J{2^qgU zZCduPn3z;MW*B<-hbePO(Z)dx0kxlJytr`(Up?InJ1uLw@fZHcx;Xx90#p3u_xKdLMDpsdyeLlmu#j4 z+@WDu@#HfWK_0Kc6g-DJXosau#K&i?ClAZ=NT>upzES<>kM%^mm+QTh*ytN|cu#E~ z3(0P!F!qVsDRt|k_rV599rvCp1u-Y9$bN7wCu3UmX-FCJX`yZSCu%iq&TrY}5VNV= ze6V{<5Tc+^OM{r~WI_nX^uH2tQ;a<}T!HwLtVLyZ4z~+eNT(oxK^#Fe8y+9vTH|cp zJ&uyb2;;oT%hMvALX|!_1>~#-DA*Gb+u`O4nPM}KGNst=tK2@)fF%#ruwnX}@UV0S z3dnIYK=}{+ObAjJ>TVA9W2pVkmci;+_N~z4C?%ezE>y*WN(U=Ku*?{iCsRe7kF%81}m3le2RK$2>}%ZFqhI zhCARJAT+Yha()c?l>vuD)f$n~pQM8eaN3(5F(^sUtZ}w1D`WkK-nz95@S0DB&u&Z+w;aJJ5STaoO@<$KX(IDKXNCwjHwf?CBH@d;#4W*fpqeP@Vx7T(%A%l@)y-! z0R$(Nb3fX4$vVx|@_+`;-zfYo{5BcL9|rs7 zvE-{r`q(VYKNiORM>iK*v|jwJ(2v$aDDcwXg+qM8Wa*#6(6ei?ECT{lu-nm;UoxAw zwzEF`E+Qh#b`QLRuPWniBS5yV#y2M}ce5$fc{x(~Enoy7%c&!kGz>8DSMKqC>aE;`(Yd_YbR>23y- z5cJMt_dt$_8Z}QaPaamQ@BF`i`Np!Yx$xeacG2&N)}-g zLzq=yla$|qT>)rdiVQ+oy~;~@TkRj2EZvx5dHrCZ))VKvWbbtaN3Z%e77$(%`-=|! zSjUK4D{*wnIrKq|tCGp!tmd~ZW~O%jF5Z;*21#q4)TArYxO@0OkC zkyql+M~Ho~MPvbx(b(-in>}68uH%6IpQ>lI85qJ|7X)20r{=!J39l@A_L@OB>a@`X zV%15WPXlXYsMq(*l9fL=iDhfSmkN3BKIWK0J~x@w4jj5O51Ybd(F1(}WVH*mX9Ce* zA8Yca`MHD@3{8EVhTa6y6Q%dh>X?S(tNf__yw2Yo_haF`Kn5uaFi`+B3>bE8nwl;EhN zK)N)FoSUJ{;&BTE?8(|$9mv!YmFoXab3}~L_j&3u;HDOZ=AW-|$q#wT_ExqC?~X1s zC0Jm;p?fh&toiv4iYjBC`Q}!UQj9ER!e-qXz{zZ5ZO{K6w)tRng)8MicV$0HA!B%9 z&UZz;RU9n+P4smHkVA#)>pvxE%`=2-ltH#xNCYViD##g(_59`QpqE)5tTFJkK&jV) zHv$PJS5=azP!2Qfwru4g`}aS%6dmqRucel9(blLf2hfvFrCFEiV+;z^N|0k_<2@54odMkE1Kh(`pbVMydX}CX z14y;*Kxp%99+~XN6aoj55S>-FL~a6D1AR4c%5uf!HxH~M($+D7qG<|IKtdeYGF!S{ zs+F}U^3YaSk`w$eW4>e_VSQ#bA$}Htwm0k1{4MK%a8SD+-2NeYx~fAS@66AQ)qJ3X-Cb&3}a#cGXF<>ncJH9YX4W;eO5ixmeFszDPcB3 zc9ZAAzEgpWeMPjFkvi1elgWSWy*2sVRF$n63j8xrw%(74v<1dK(V|)M95eEi#Y_$& z;jDqy1$A>BgYPW8Y_V<7WqXd3-f0WEHP}Ob=WyS|mZK$ChLQhF*%;4%&||s0yiIfv zgvP`>LlCf`!Z3?;fTO)wN};xPjR}wU4W*0y^~o@ZUTyGyhOuq>51nB(gX#@9p~I=8 z1{9+_Ik0}dATxl)5(d{^r@3FDP_kNRw^QvnzbYc+@%D2CWL6STWBm>tC2=@qnz}Vm zy-Hyab_YnU_Y@dgfZ@oPLgdU9ad2b+cwYa7&Y_9&-`ce4Zt|dor%l;*B1XUd=uhU& zKpIO?q-|t?$=s(!0>Egkp4Y()OU(N@Iv?nLDPU;no4Hq~w7tp11KxEgo1QK{dfyX< z=z`1TcCx)(f5d91Hd9f#ZF?a39uC24MHk=nG{5t+J#!|iHpN_QfRSRd{T^B z8?7i?V8<{qPYE@BsuVM=E$&=icyNy-SK1meUeU`+# z{G^bHSnrp!U)YzCPRmkx(?d|?#b&ZE{Z5Hdcg5D5!u}tDbbCi*Edr#u`54VP^NqEN z_u2#71=_x-rHk=c37Ph#V#LZ{K1!SV2=jW_*?LH?q;wrM+Vh?%^0F`i_iV+9 z4hUdLGxW}B$Z)T*CV*M$ha}W=A^v(U3AN^y#;)^2yx~Z!n06jy_{Q9;nuV+DelxYs zmpf}Z1@WWcl}F&{#N@7=42enZY62^jTJ_YB?zQO95fCmu$3O2+x%70uyWw^A4Y;X*@K1`Lt9o-=X2qK4` z-gGSR$C6Lw69w!ZLIJd<$=A#=O0CsT=m>n8mx`!3mi{9<>L^mXvCa=vgzL&PB>GtmQOREOBTL?1rP zQt2X@G(VeSqQ|Wj)aw8;5#xEs0|S`VN-cOPJf5}TOG_VOX+>2l;859C0He>ByKyw7 zVZ#E<-N*|+uR0?oLc12&Tf5c@m)C*Y`P%FRp8=B$u@olN`o|x1-n&^Dwt%KIyXXUc z;`RZlhkyxV1+ohENxzoH--qQhR2>gJ7>MvSYJeYejE-#?{_PhK`Ui=90C+3hJNp87W>h8Rw@L8YR7#nkrNE*|7dao5#WShMXaDH?R&MfneNa7FJFsW)m zo=${HaD9!>*#^CarD+UFdgQd$I$6T^tSq7JX2fiI{t5z+o5Hkqba;3`KtZKvh#Pu| zYJjVM8REmr>B_f94>Z?-9{*PAT=UQD63_dqOEk4n?_@%-TK7MCGf`F=4@=a^J^0$% z9LyF(RuzBo&mV#0Ss?l*$oJ4j)#gdUmZC4E`wp=O^NKC^MB(`Z%zfc-mRFwT1p!uY zJmp~@XRzf)@4*Q!o^FurinwIN;Er~hVC#N{xkUphiR%)k__$ezYHaQPOU)ikb=~j> zpsisiQ&eUP*ajMK>IQ-MXm{^8jT+*S_na&r7GCR4qL{88gF=V zW<(1bjf>2Fw{f9idOF2=%w(l$4Fum48VubSJCd$v*}sUW*aS!8+-rh6S#JMagzn;U z^eOw^#?Oz`SNp2}o>L8d5(elqP#`Z%|9quXBwb$HG9wi=fHUN*FD1f8wYqD>gJkwA zzKi#=NdZpF?v=iR}I0-O5Xc@w}gpoqS-()O47ASlzvum;8#o zO7djbWCHsB9sBS0Q{sHlN^Y0u>G_~Q)!Yw~5%WZomA^h9#yeN4C977~H-D8|HJmHs zb+4v*4B23`YpW*P?zs+=4esx_y!7x^=QFJ|8^6FCOfDyr(x7t*_cwEeOB!yzz$Xj z|GRp8%=x-|I7e-ID)IJ|wmG8Nl-((9Whq^pZu0WH2>(lB|rB03~)@EV+b`FjE(<0_R+!-+|6;mfJD=6yOKz#V$ zB;|xLMZZZ)CAo!hX<6wK2pOvF^K?9Ht0K=6)TPOSW~q($jCiw(>%8|g!!A_e4}ckq zpH4%;fe*a-wXAtTF6{MjHP|BVy*F$gjn8yOfK~fEEcxZ>+6WL3+4J@!{0JT}Y-cjo zi6!`+xEs~e@#f%F6((|PnjIqA*P?(0l8I5=zrk0s#Q^SFbZ>F)tgyH;#|m}9b~gv< zLCgH~$fV{!YYg^W?IryY{s-hJ+ObWdMzT~-(aV9eWskz_3`vFQmhuRnv2L#v?SDXh0<;x#?8Ok@W*2?}aOPBYq@K z>QQ`TmmYD^fFP@e6Y)M;+Rtd@`a9ma1^=u z&&!*+tf3BQU58gkQ@^RG&gTeN;mM|9+O5Y7CM`rImDiP6cRvv?*(RHTsyp1j!-OtA z->ws^j0UMHnMB%maY2c}oY=o0Med^v{~7?L_*}BY68u>U$|qo^4Y>_8KrD)Rx`dDZ zmwFOk`h4$|gEV`8>0}NQ$5B7QWI!Kd^-9u&)us@q2M|_Dk`eT62raDXex(-VpKF5w&E$WjX5PAEOC}f!=Gk(3~aF+Zsprc zEe)`Mb`Xrj{VxY^#gd1{t!$yvz{b)dUVr(m*4R4T>!3;*U_c)=LjKvp`GYKgvD<9{ z6g>~%y$PZ1HtEYVx~ftd`bdRfvXD2RSlVENL|*T&;jjdyl9^QyLdLG(h8=oy>m2eS zHWhdr1iZ_dq94E#VoYkVQE!!pn6 zA6{eaO);|&i6}a8wf@mkLN*l=N*KxB;9g579r3~@LoHyJ?R{FEN3+lYA3;huW|M4) zg>zyQFt6(t9pT)J(IY~O0fX4(I7MH-(jl#gzm>(^(UIB;vmUtyxPMk|qk~(*8k#nm zmW#tnBZXoEJDSxt$IuC>@I@f~ov@=Lu)X>43JjT_w|MVNJo1`q9tD_bf)5YH@y>eSn&s9Q-E{*L^*u&7Mq~0rI)76pL=I0 zkxfjem!zc=b*9#uXKm3uJ>7JARx{v-UpWax!ct4DitaA={5KT)Gq(c9%f^nvF+ zQmHUfB&q_}^wSa%I@mpMFJ~9lm-w$Aa z8P(UOevwUh-FUpqjvx1fXsaZb1XN zF)jfs((f2sS}A0vtQ9H?KCv)mpNm49nP@}Ji;iE@a|`txD0>c>S=V;C6-fZL`eNVc zUcf^Ak507-eD_F0>=7DAmrAHP2KxJoX>=-*KfIsNp*~ngIvFU)94=#j{Q{xuP+LS< zhGgl<1F(@`wC6sndm6P6(AW&HytM~($b+%;MdOhU1tRnA!_C$m`$j`fwS!ep7ejQJ zR4Ys!#YeA+%qtQn(GKA_g&m=Dv?sN!HU;02QrHs@^?Zr|Ker>Ve`XH4kDVL)CSLw3i_0fR)Y(Ck1xl6zB!_wLvcaG|u)Hr4|o`Jec5VHlrBzRCDV5=w>xP zr_Z*tU4XeRLyg>BvINN%#+Z4RT4>jK(fOPaV}NJjRzL#8B_gK3A4ngoZJX|nUwv%< zZSaqC446uG-s$p*O8(o*aX|kvfX1XhJEVa>0r(8FA!35}ukO^>!-v|dqv@f=lY0js zeFUgfyazuQt_splVrZBZ{)*Q0^uDUO+FsGeO^RUO{kTDA94fJfUmp>;!!1nzaJULhBRzX`FPvh3 zwr`CNg?L}4t@+`0SeYoo@v+?1Q9y(hDq}Q$rxgpSGnOWh4y!A^G`}SeZZaQop74QW zI9h8)&j~_~QZ#u(TZ!-M?djgkCt8NTCTVWm`6LMoMOB}2Uyo~*2`M~Ar0h=&|pBVd7kYBEhJlNC2y4K&3S@osqmj(}L-)Zen*F#>nCSKn9 z1g4XTB&iHmBsja`xzbD@VLrJo)y+5W^O}ZqJ{?iknF#ifwcKTfz5{YSN8ZKsH2I(z zRd%h)VvStcF=YA*@p1$_$>pZZQ-Lv|+4jXaZB+K08}VK(@8$EtfUCE8STU)4Ft zEzK{1=<*HI5$gj}5xa_4`o}Y&YQvl}lo0-L28^6Ejz@RdWTEwl*-pIOs~OWSv@Wi# zk@bq?IWn+xL&BhBo5nJP5Ow?0x5YRIzU#hQP0294Fwz{IZ_TE~sn~l6-K)|7j;F-A z+p@eLRYm%SVK6Bq7;Pl7;FC97b%e&EE?o5kAh{`CWj;@gPyj;=78I(lm{*1mdxTm=x}Q-jLqQ8YS&=t-5Y3koi@S9u&en{+>%?{Fr-% z-^p18C`Q0688XE?Bv!!&%#@Hd-AlB}>Q03_m3gN7+|5U7!}K6qUUQ-zRp;&Z&sAbr zm2F&WX29GAq*l)I``TQzk-v)R|Gf>Ca_Tzc!7Zt09}E4W>$kL!?km4fCwzJ+kmp<* z55Fd@$-vBc+ANapHTXIX-&mp8p!y*AYdJ3;rOL+&pQJpD3toic*f{s35+KS5Kx|bc z;Tq|Rn}Xm$d)Rt%=S3wDWgcLiwx`5%q^e`o6;{wK+!&3O7#1}c6gx008#;E(Wiff! z>vJ)!4es9JZu4Ir^QPiym4hv9yCt7XoBU=)loYjR>d!B`|k(?9?2o zJ*cHWMNVsVjv2GORadKKVD~dX^{VV5!@`@3*-e7?IY_EKO>kZ8rH#3CPN1jSGIWcC z4zj77VPGqwGTD-W%~Asyh?U!#7PSU3_^tGYKKD3S^_)PAoD0V!!msj*uh^FdX8yKJZbLK#pWO z>0_7gu1KGJV{JLQ;BWslY3jXx>SB0w;5K|`wVyXqJs!LrW<8{(9Yhs|^Qi0$bgRv1 z#t!^F1wRG}j!J7q?j$nFk`Nhu5D~B8+pic0;MLMvE5t;XLtbdKbmaQ!@6&^N{^MCS zMtNPkZ{g?l<+c1ePnFVa4Xkpu&>mUI;E zy|IY`g}EV6iVI@w2QLN0+XM{>PTbnh5i)oc{FI~E%jfW^1{|%JN49AY_5ghlA{+g8 zJ;doh=W~T(s;x?0@N!VWn%JmGaTqIZRf?k-O!lxhQieoH%yCccH>bJ%KeEnXF^+rq z_DMmM4Wn(XuX#T8i(unxsDrWsQJ&-`^mX)G_7{XE21br&jG`Thu7PUl-=%;)*G7NT z#I{0=vwhRBFrn%p$X{wMx7>rFRgTHpmL<*#xa2L~b?-T6u_jFoDycSsYxG1*(>KD3 zwQVqhxRMz6o))Aqz>Z0fFIqa2x~qibXIf(3CX9&onVIB+WC!3=J-Q)kM%?P8mmlU} z@QLm?3_W0=W82%QA<3!M-RdS8Cr;WaKt9J*O8V=^jR0|cV47h5(5S-JC+x(lY13W` zf$+TuGXLsPTj=*+3uP7ZACM%Zpqn_u*-*CixExL!!g$0u2#aeK$ZyGXRPx-qBXI5n zS`?YZrLJiZ>{S$De=GQ<)t*MiK!#G55BxysDKCqU@T7(|CSEfXiXJe~Ml^gkC#8&vFeaJfAQJBL8W)S^?r|@gO6%FoI2ORC3)3^= zX)Y~k_v^>g?MaPnq_eq=L=zquGL?VHlGkI*V1If|j4t)U-_LhOljN&J9LpoMJuW1h zm$Rb_gd9i=aKuaA5%mYOT}#MyH1P}g@#j_rD^;)g0X(U1_CWWL{60c`Mr{f2JUag31C0X|I4lrV3Wv0dKw5+0@ zwAY4Gs_+kWwE76oXe;Ubu@6%6Lf0ll=^1c{zZ7z>i#+)$V*+zQ)jr^s#m&ePSeD+* zQ*Fy%NE?f?2x>3~kdsPL^I}HvRo6g*x)S;EGArMyYp9}a=AK9^0Rzb-J_)R>Vix~e z0aKKG#?0vfjXc|u1x^$oKN2evPvS4BG_$mY#D78|52d`Vpoun!Yd|v zlMV%lKPgKPwFDXHAv3Sj*wSX;zD@1`+ZTabExGA7XtiAbydsBn~wwEALpe zBO$X0EV(PREzffUv{y`coa%3#rA0Nk4AhMAHRx&~B>_ddoO@@J-7S&xE9CQg)TaLHgie5&XohFG{pY>luU^A)%pE=# zafl)OVDfTda-8P!_inY^KafP}WwBVFMSK%7&Eoq*v!JGg7{6F=!o$`7y8LILy+a|% zlH_Xgmhw@og^!puGe#(+fN?DsY(<$b`j^)vmB4F8S4xm%u}QAlL^z7^VqxllQ3pX))&*YOEe@S`~)5IZ5{AX-oAA95U%r6AfhhOE- zq;_q0_8s>*h-+%WDQBc@`el)pr-B!HA*6l-0VCk6#@@X(0}ij>_X$QyeYr5h4#FfZ z&&BC!7EeUG+2FWFnuXd!!0FEJm281Gl&=Zrnf*vYyxfzkkkkq{<*ghH1{i;)xVZ)p!LjcJHAp`E%%0yWAf)tkXsvingn`hEV?x=Y-t zcNtgXXXrDi+rYl)Juk6KH?G-J*vBGGUDt(~WbG!+J8W1o4&)iwX+wNM{u;jO84SU%s2It1e#GiYplp4&f$x`Rm?e76J#%tZT<=X@SD^wZIe-o@ zF>4=W`=!jPY8kn@Iud;_MeD%R!>RITaDBj73ArTnGt!2f4($pNb@w4|2Q`TK8qRVg zEM+W(v20lm3bXD=s$Siz$v}4_px1?GA+&=k#HJMZ4Op&Uza?JSR#Dn`H+kMfABfb% zJA-pH!i&9JLu(g)mNj<{8UKQr7J5uk;Oj2FBJEW5qzBIJ92?`0Ww!X1-)(9)aGl`rxEU z+KXT06ECTpwj|Qrf%r8kSP@e^p_4#08rQR~=5BW(!MU`B^z6LmI7s7Mn3;e7zR`*F zxKctl?6tOmKg$bbYWz$K58_zINk42=S>U;V*lY*iuCb7C*%XYbJ7bG?EDOIt36wy? zG1H;+lFQjJNiBx(qvelzlo$m!DOZi=ehZuEve6gpH04_`8@>t&!8v}0-0y`SgGKCmcA{$IK%*>C;oj_I-rz^~ zpD`62$<%P3nOMJP22CoRhQ;PI0#PbfuT!X~@)+VG^|TvdSi?3a(6Z^%^M9L~p1dcK z^T>ir+vuXBxcYtP0*zC+H2Fgb z1uOey4RJF!!Q=nnwLjJWfePP{WnX}VHWpl*nxNY9G3{^VrvxNr-!!)feXo>^gX9!% z2B*;BP@QuIZy+)$V2uX(;)m|flNT=AD z6q%_zH(x)(KkjL(i6cf<3p317brUqt=i$`@o^ec+wBRw)SrN?RWQWQ_)bkKfsxs@s zh~S$nkDu(mWtzh*#spsit4&ro+krhccE-4{2SIL~ynbRm!`f7?A&rI0rT|O>eSGsK zzZUW?-cQ2T3pl!YFf8zuNEz)94bTTl;xf#{Mpbk^2WzphbD;PO{ol@IY)o#&xta4} z6|wXcBNx-zXjU{k39#fYwD?}Yn-m+;jsbn=$o1sE7f?T&9Wjj4jx&*JZ6nAS)1Wf~ z>#{OK0wCt=`)Hq->#ZnMZzeh%JcIZrLy*nBy%z#80$*lg;k+mjOX7WSezv$!Osp@+ zwacyebuLupM=|jN;0^T!gs{jp6KVZm1p2YUu#w&C9stiUfy7+%c2_ zw3bFcKSvet#GTdC#4lNtl9;)VAPCBcFFTY?sKw#_ZcNH=_3>1~0!?!-;EoTX?V<== z><~0zN7y%hupB$*nVlUHHmtZI?qxzi0^}r`mQmSOIFKMI064&oH75;@YSSGUk}t^f zwss3b7tN*Z5EtA%aD1XX&=**0 zR&I`Hunb%87+VH0%xWL{UQ%^#t9Q9j5ey{1s-#5YM^rGB)6hYHymU?%w()KZo8$Tk zwj#u86KP)E5xqaD?Y^f*8E4x?2=_(Z>?Jej!qT+@5*voGxeI0~amsntwkq3o7#+b8 zxc%W|zZLnGUxEQno(8q~X2;7Ey<5TNP`Zv8BB^#b4)&7_vDvik zoJ@^9rARE#ObDM4eyy*HVC_)UBqrNoWdk*d$GD7iYXocdW}#Sdeirf%3k8yEc}jcaVBMYD^-U>rWEP(X%M4TC)nFf&A!1&j7gaSaEqr;C3H6!b^PSa!$$% zY-p$?qdH$)d z^`TAQCF(RLDbo}&Ku*o#!>_=1I&7^9_Ml#Ojw_$DyQ(x;DRJvHdSTBZ1p=55*4Vf$ zno^=cks#<6atlx73H>V5YPy~Dk?-Mp0q<_=HRBx_7FD++jc}Vt>rZgTxR#O2ropn@ zk(j&#-1+=HC)ZYuuJOp#dpYBYALzI|?&XYp-`E)G`dwTyeB`EvlF zf86r0U>PQBqCZK-)zUmP0Ejv?_+58WK{dAmwN+<8yjhd0sx|nYU@7`8Aku8p3tBcZ zx(K7f2ZAtiYXyH~ftW&T(eT|jK&d3$> zXK#R@nX}ICw)bHANuRy`MH4Ivu$SpC0|`1{_Utzyi;t!!-=DVW*B9`!dEEC{&+EZF zt4%z!4;t`84QPgfQ=r6lQRq@z#O0~*W$lvI#l}TCSWEh`_zMN*_a;8HW!PUMtzily zRi}NjjDqH+-aWy6_~~x4{Z*)(mrNKEETns5OW<$jz?EHVz`R==UUcWT+#g!|9$_QN z?Nf+k_;C&(A9z!tzYX@1QAbY%A9*x;J z$1w8>D9LidHN}2{H<5TBAQhmgnvjSAGX7D&0{EEyjQS>wLF9|z)RIU9CeY?u2u`D3 z$f{5FGH5?*hwmZ{dQg9cZnQa1Ht%M{_?tOGaPrD#j*(u96@=)!1G4HuYrD1qw$>JfOm5vZcvLRSvN~k4)fV+9>D``05aSp;^MNnq$v(`>h(CZtLDUxi+xC+b3J5}{ zH(>m%r22bnNHp(Jzz2=2a*AOSV0|8-05vy~s8uypuPY33(Gt`y%$#yCtGU~>lDz1JZE6$+~wl)Y|uVxp5 zl6STDt=btdP4EcSOj|``4@6-Yp?=urz&yxoZt6%eHXh`ZT(e7Qj&j}!UKNRoM~)3s zZhEy?nSYX;mDNaH>M`5kE5E>$7ULg?BT@HTyMf||WAH@cd08arJb@okJ0m7_iMmmi zJF; zyp%v+JtojYDpKn3gF61j%KGw zU`ALI?2yL(P)ajggRRB5HB{o$6NU#l!NQQ5d$juv&YQu=CwL8v3cUl|$I3ZZDTfM4 zpc0l=$d5w^UF8V?#n_yiTR#T~IkweMEFSICW}-xX2PIm2s`Sv+msenzZFRxMpTeuI zY1yiG`ay1U50+%|ioKZ?~shDf&?+IwZ;pd2L7mkA14($WVfH z$tq**cI40Iy*)UjHhUsU9ZD&r>G+Kc4ygYvF)Wqr>9l<_tgZYJTpvXG=+FT({dc5~ zXR~k&DAv}@wsQYXpyIT$|7nWrt<1}PgLfmbNJ=P3=xftfY-gZ1n#1muqwQtE@ah48 zGDulx43_zfkjlVvmdK0;!&^)3<&FPFo9%4I*Ti<$sGQ-@K#|mH5^z7lKDM~8?bkQs zjQ(>$>pSGX<~iz?jL*LfU2Owb<*Ov_^Bs0oAI=E|*mhnfe@DwRnwxz|)|8vagnDl* zL{Qixh+ueWBrH+!gNDdRZ93qIIwCJiEbv@~F&lR5y-Y=)5ZpEV5z@~;r)n9HvWBaDuv#L0q1g7~dRj%X z-1G27Ob{!7S!=l5BK?;;M`-k=5W=PV$27~@ePPSc)A&a=vlkH^xU}>FA_hykipMrZ zMl`NzBlU`s)wovvl?!zLMN;qzZR~u>@jB=uE!eJjM0Yk#uokt}ROEDQ_TU#u#V}7L z39IneJ{$ZAkh}D^U@+ir?%Mb}a+y;^;Kxkv0GF}e!t=!sew8%LVCYr&Bzj~EHpioJ zD0iqm{ceJOm_O|e4W)im!=fnw(^4!yw}?LXue@G*ym6{S|00t}p8v$pj-NbBloB79 zlx+~MxOIdAYl7ld{gAK1eZuIuB!8&*^V7{EXZ&-(Aq$;tAFxsJBO1c2h~K{Okz2(m zh+*>N*1ok0u&UNqiNkvvCjMLP?Fo9Rx376z|0Hm(8)9Lmr)c&Id{R-&XM)5q<1h6{ z9?q@n(*GjvZ6BPKBv|eb5vY5zgf~+DyOoZKq;j{-H22?K&~aonUX*Rf%V5xBZ^O@? zimCU-PWYX=VQoTDvlV?;g6>nF*uxjLmT;#Qu=#efb9$8#7)6_t(}%r7%S(P|s2#P6 zv-E5mYg=;X5onN{LvbZJP=UyfB~bD~=gILy4UqWb_=3H_H2qKCd7tn# z%uL5)5}bg-eT_KuxXXULV*AS=-0~*vkeIaF%N%AMEC>+SMQ|YtF>dlG8AINlm>S{W z$!aLa@Erq=5j@5e?uvtHMQMugYE<}}l`T{1EINy)oj*}Fryg|cyvF_XQ5H%DvxU%V zd?L-S=LcDX_8KlS#+hKuO1 z%hL&agGqLpkniyjRAEwcS*33X)r%%O8Hf&;jy43~TxL^;z!x=o6=2R@) zVrGTG*W=*edACauD?;3#aJ=9qm7CegpaqbKe$-i#l97j8!mUFLwDSSjECu|fpa(G~bk*`xhkl_s5J(~*O;5EMzcr7wppKFXge-n&^jHI+=wzQ5 z6_8N1lPI5gPl4fF!gp9I%FL`Yx}SLrL%sgped-9)%A2V`K$DeikAUOc?CfMo<2kd* zAvP!qi=E0ZE;=rtF~uGy{FM_sts9;pqpl6LSp;1K&a2M4uuLW3|9J;98Ei~7@k4Ym zPz71wD<9hrjNbc|tyN!W(XIZf0ni)bLz3AUJcj)RKs_RHn47ttWQq+G3bf*$=+g2M zr&j6(uNb5UEGf9a&oYFjV)%C|yBg7Wu=X5$_?Sq~*FSi}0$^ETdj%9eh~x`@Z(kq; z=bE^t)qRMK8yuQNu7?$Pt?Iq77L~Ovtx=2lm^XUq76fsMz2CJ^A(`=4j+K4>ykN>*;4y zQvGOTaw@_9^X5b8#SC7@dmc;F6vK;HH7?5s8ls7ChSFazkpxf*4}UZlWx66`l&sxY z8|_I`e9 zpxz`-pU_d5vZR|teZnYbke5*_0LR}!I$%Nr>y0tHAviN^dR_+I&L2~Iy5kOne13m^ zS7gt{wj;mB+-vNp%PY&bcl8)>myr5@Afc*)e)E?ZAxQOdaWqT_feoR4l2QJ9$XX>~ zy?lX}NZ+q_8)H%PK{m$CSvGa+73 z4o_9Pv0zke#TtBR!lBd)0av3EQlY9AF;unT#f(1JJ>F{tO&o}BP0SGfQ#fadDS(0xXX*A3xeI=^X3 zl!T`wiq|jaWoe@}>^2mnSw<#{gF}cU4o)}3WvC^hvi-oXC@Z)!Cf51cQWEZ3KRV2cd5pY3sNQb|+pBuj`?YrT9YTen2hB0GxBf2z=V(bCtcc9G<$ z06UqWA<$#=uQbb9Sqc^~b7$pvdlw?mrWx7F`n15h=Wd=TfgQwvU;INH?$V=9 zG!;01i4;ew`8>b{GUaz|Q2?s0tdc@=eg@tpB&f7>2~xRS3#8kirRL-Z{hsrFqm&lrepH-Par zEh_EMqOwaIbz!lTGLewiYAStX;YoMXzghdN{%ZHONOVE+>D2jsL#vuj_bzPS7?Vs) z7^kX|b6+Gi5426Lir{F;9`0IDN^Jh@laZP7SUk|z#@fL!U;}2p72PRrWxnO}jBqk< zH`#3|az8L+kbQJ6ZK1-99(kwUjjqA{l9i~s(QE=7xC=Sgd($0Ha%M{lj69iZV1m)5 z)Daf?K6e&fW84ZVqE@G^c2?HA-5a_fHv%=Uww7dU>S{8QQ}}BZ$JOZ`_16#yReyRa z95j=B2_(rI;>JMFU^AFFlRuMFy}38)dN0jOv;Pp)H)51odBnB0+XI)EPFKDK}f2X6OO}>sM_xzidS8E1#+zlxmUMi~UyscL#dwV~p zsixS6w~gQ}RcPeH*Y(t=S^EPPI8UwB z{$0oRy4sh??46oszxcua0?22OYZj<2^Tr_%=mn=odgluDB6}FYddAS{)IMuqDxV|z zZSmy7G;7pjOf$2S!vF+|%k1@5Wq?AH`TLzx(MhcM&*9yfts1L zGZbf_jPYy?fSbbfz7R5nMa7FF#FZ9&IKp^Mla*jsxmb|8*HALqDb=mn8!$y7_iMaG z%V;-@vh=pL+z#1jZx9A_KW%R3uf%Iow=5MP=kTzb#WivQncgcNiMh~0$Y(S)^3ZwN z|C<-e(t}GaL-q^r$>~tLaGLCEOETUcUm^|ks3O`G+h>{EsUU8{=@%z(a^Ox2ukHRc z)}B~u;EA5=eJfe}VqsBl>wiv|S2_$jBa&s4dv=@aHPc)uMtZ(ZmzBry8`V0E#>z9cB<0NU6$J2^AVp%LA`S~fY8|@U|gSOC?c0T^oxZ6 z^#1Y6d%BPLeOTtvaffA-S}VRlch04#z%swK03f#$fFrF0;7N7`VMYP?Re4Bwde?1O z$2WIitZU*v-ZE@2$Z)}J12iT3=MHSXFOYu7m`-`dbG%{ceddhFK;BeZb+_yNOEs2k++ z4=;*kdy@_h!_nGR;X6D9!~D5zV%5!H=2B6VpS(%lgPpQi_pPyKeyVCFvUxt3G~$nr zIfBDmZDzJjfN!sk_XnLl54K}oQlE0sfHF5;_fH5aBKvC~=E5a-#eif-ZY-4%)IbZy z#aR9G>@X!BWh?oMjbd(Dbfx&T45@^b`EK`ZwnLulLN9i0>a+ULUpu3E zU8e0-qP(aL!6eyeo zrkwlVv6n3FDZT|*xWdi42!?f&-6ts3%D0W4u2bgLMKR7p0auBFxXBg&LdHqOANG6y z(8rKw{C|2QQn?AyzqrA*hZ=fk*q>&pwfmz4se1jIB}`7$0-g*R?zH8lSeMd&7fr76 zOqVMS{Mobr_Q5N|3>GHIfC6=tASgXu;;NKXpJmfbgpP91m{RRnBTYTkS(&4t=3&6 zlReDHS{7_Xk|Ri9)U`uG&fm&YB;tF9T}#eabUzI3yTBO)S2&+Kjf_|l?|^O_74 z-_lq?mx00nhrfDsKvaF;Hg$sl43Ebi+5GSf^%$-CBO=YL$Tfyw`HU`V)K0aCJ8c6K zFApYGyOQpAFBkJ&+qCe`h};3;!ei9W(@a-%sy@T;g^WFN&TemAqVMMDlz;4Tv2%TV zpPOQut&KZs_3(saez%Qc(al`8kWP@pP;>6ucR*bEgAxd_l?W=b{psOw*8-35C`%8h;uU~-?h_2LVj*yLqTn77F66~!;WC1c#bd@cq(F+}u1uGcz}!hco@ zx-0uKa&oXq)Kq!n;K1f+R-yE{FP4{lQZcoB^0tJXLAdUH^`#h}fEvL_6^?N23rglL zlXDP*GNqI{;g}qam8Yn3W2?;dlz}8yg52ddpf!FRzmic=hUUXO)U7in?UfSud-w=e zkxkG&JMRcCllpTJLEU3hxU<<}>>iB2=#ZBCk#oYY-Y75&Dh7%79iFr>BHLd<&pKj= z$s0st9Fsv1!ZR)Q_wZ)J=~A< zNyV&Bc&qW0iq27EFuf(D>GIq=^71cJeDV_R^IV?gUDrRjEVdo7jGwjNa9A83*fvBY z)}86<(b6^<=YH{GYo$S9Gq>2)0v8sBYH%D+QFuBu$zCWpVLye~$-;QZW~EWG>KDz# z2X?c~UUAT1Qru{T_6Z~&&x>XewXBOLD7j5oD;+Vl$Rjr&r^eWpv{6aSeJd>Uv6-NS z68)q-8Q0B~vC{9mbf?Mjj7qS^eNYBD%bq(DcNglAWxDz!GToU<$2Ay@)3da|hkb>JN&IzN=(S@2SPgOt zo;*7`Cg~C2g}U6<{i#ihb4((K=wH$?m-?(~P&uuKiO*9T)v5_}!~}@ttRhp+IZ3}e zlDw=Q-tTr5Fx-DWM9RjB5BzMY*>o8ovYesozDQYbo!%}z$P~5Vc2TleV8cas3m<*A z4Vd0dD~h`&%g=rR4$Sz@U351{>kG(36|kOsT3sPFG7EC67X;tn#1-Sw1k{ro67^WgD|>lJQ#8KQ1soUjp;muHbA6eSeoU!Z2>0!7$h!+zlM zYgWYWn+C!5Wohe$!@{*N9}#4tU{7AX`u%L&YR~#I{F4@TJOq#iydiTtm_8S`Z{1ds z+P)Gl9Nbo$JJRf#_)mdn61)FNhUj<14kz^oA;OA`lYT!g8c0GA`21sZ6Z9q0WTewjX3YuFT`9;zFVO7=E~^@;>>=}WO^XY=bwLJ>TFMKc2`!GKLA z-O8vTy?Te;OZrJQOuHN(eF9z^aqYYM{xEbU$+tK-U21q*BjtW;S+UV#udfODc|c#b zJ!&1HkmtC&AlH-$wF^?a41Z*ydjXSoWqV-HyVqPx2GqSSM={x0-R&4-c`cU~jpmiT zKhwUilF=GCwlsbjRbR>m~V|3c3i`^ywlqWd26Ab_ZFz^Jt^6hWJLS z8M`Kn&SdkiZPCa5Z~LMgBMbuV>rhruy#G#TXD}xGPKb?B2@RoSLZz5}n{LJDihbH>X>U$(? z)Z7Mq0lMgUgSW~jbglkPRoI8cFQUp|KXZnltQ07vs=o(Iex%{*y0uOO(k?a(T_F8} z)Ec6Mz}v&Dy@>i+g;?n9<8*?~j;cIeMp$8(S2o1;2Ky4YO0rXgetEnyRTik|VDI7v z9zLPPGq13tQB~NdK0$v$6d&JBxwCp-io#*IOu{AXK@V%2Qonh#UX!+w4=m zt^X27E-%7~;pw7`@#c!m9V77KRCaT3fCNk5@EBfo9>H&d|ub+Xs}tpi5sc>SQv zro9}Tz({z0&-X$(9>BUJna>WfQQ=QYEw8`kDie3nPvx+Enhj6h!L$?2Ez_$KcVYg) zag4HP7b1fbn=1$*6i5uz=Ni!phjdb_bapbM4lf*4ytN=^Zl#W%`E;;4ZS5v{xGaDxIiYbaMH-&9*i~hEHbj zz@}y!mGIg7W2AXH!-N3^LpQ1{8Y%4^jG})1gDinkiv_dL+HgK^>$R`E4xk5G{;E8) zu!6|CEc?^EkpXtu(Z~E3%wx__{SwE)DwKIne`P#?Aq%;e_xmul;d!l{CW$Yvv?6+! ztIVMP^-X$Jk7GB3_NS0;F}o;z=2cGZl%#SlOU91=AcS@F>}#|!`X7Z1Z7Goup?8bb zHrVT#*7K3u%X}^XNs)WHh=7R;BJvM^@jbg|6!EZo_sUZ~*5&Sbr#f-^D=HnLa@*$O zHZ^xVjkhK{f(?i}AXkVrhI;(6ogi`MANg0a&tl&{a26`k{Gx>SmG0gzlMbQnxqlHS zu`8&x9I5BbDU)D=QM?HA1WGu@{IoBL$JU`cOuW?dC3~?#T?0G+S2$X|ubHXTTwa|) zqLFuGEYMx$*8uJ{_2=}E zY_7F0uUI?AYS!|aJaUF9sAe_@T|j!6bh(^G5YYyH&$QhR?Iq)P?$o*DBHYNYFjpWEqwb zRYNmJ@dq+oqOWFu7C&_T*op)k3KeXWM4P7$HIwfOKCCVPNAZ6rfr$7qX{r=J>%T^T zf}QsxtE9k_Kde%fVb*gdXrjA0&gwXfPUQR|rvAx<DLT0L?Yn zu?-wIBu?z7AKDwcW$bG=B8o4&^AsaMhe_$`5jY7Uw%>8Y$8pnC| z$>nFTuwzL-3e~JQWO-ezY@1>8rL!}fRvBk`=}TWY4x1mP1yWUA{+FCD)3Xkn7-?!) z;y$+!dGVR!YP~DFhj_atmfenkiX7QHdh`*MA z2bw)8tv%1u=C_eaiYM0BTW`$g43W3*^!D0kNvv!-y{jR9o0OJE@XDmCA9xB|Vl(!g zcK7_3kZtGE2Zj#~F6fIMdu99t2#nq)#;dA8KSVjh7mO&X#q~baQ*tj?T_2w+Pfc7L z5akE(T`hIXkU8P%Tbc~VA`X!3UkFpD=*&k?9HETufV2|_4rtY+ZIGwr%+!w?uTZU|m|Fj^D- zSPZv!6tzydNy!f1anXVtF(ILtHWiUS4$Ytd!?iijN5eh1BhL(J=d|MWR_hpxF4^Ml zwqI?oCso0sGr^Ye=&wbE*CzbDo8{X9e!qUzSEUxQJZ(Sz*A$UJZZR1rrX0OD)AP2p{J$+<(&MZ8RJQ@uHQ5- z^ZyZ*t{lQDgVtXX6cBDOlxAnGe()3HbU@=dVCpIJwQ)?w#`toxr5{rs~68FNW0YYsCu>IX6*?2jpoFc=j9FL-zHf zr;eE(g^!1C&($t1qzEh;FWte8!GIto!=iG#O-5E!En&R5Dl8iMKn12iZ%i~>(QqI2 zlhU7_!Yhhx0vn_R$_1GmDO zYgYx+<8AP4m8mNjGPhrm{CvfeYQ>N0GAXB-wp?c#(ui~$_Vg~xy*#rWGP0@}h(c#8 zgzbU=S^!0ZO6TZTAPaMk#s!BrJFNI~RZA6ev#xtjECfM|1xS0=jKqj|MDY)UVsvAgABy zdRHd+POCjseFAF0r)9**JREMATPNi3xLCs9hF5tmj5H#x+PeP3<{YSHq(j!Lk!36n zFfa(R;O}#BZtXgIJ-mXr0%II;SNRFiqhd$D06(wwVnU>2g_OQK!Q<>b#+XB9s>%1v z=dHByYLs8*?93P>8xIZz^FhvOq=YVomq4`*oyOIGZAobH5(QPHfh#;yJadyL*<6Y? zXgAQwBU2xyzHFV^-KzfV29P{VTtqSw2=e%~xwXH&-S_@gO_}+sl0<#i^_S+3pUI*0 zUkE9f`HAvSDY`{z!HnUni`dZ{O^e9bkAOM)9bdH$sM-mypAV3v1Hl2eRmcrYXpzh? z#qne%2?%=X&EM_CqovS7K6veDSJ4*$zup}g4u?lPq zf9qe?w3>hD+>LtlTlqWV+DnYc>?)fQ=UH(Xl04ko=*RzF<<1z^#FO@D0~1D8rP+}R zELH^a`PZi39?h-~q@iScqs`np^hAdZrxTAnNpB@OD>8nBKD)G?3j8LB0OvE8e#r2q z8T;xGQem*A1yzy;{{THe!oMBQ7c!6!faGjNxG_3H`ZHR`7@Durj#jgjk`2>g(#rpy z@4}xQ%wt2aQ1myH<0y<01P0f+9QCWGjDPLncqjgws@^wxZLLA#(nA88z0pNSlYxLt zEz5@04W`OH2)a}I39-(9*t99R1+oH~a+d4JnF9`k!gNX^;d zjsaa2Zbz}nugsMGm);o)GHQ<~G-H&8m1_Di7$7hNCD~mP3PDR~l(@L_((1y&=w!S_rcvS3d_4}6t|a+dULdM>_F>~<*0 zdOD22+~+6yf&)g9e;rDY&xZMCwwv-`$X`xFFk|)V>Pv*gF>;rRS4=F|6iF*uJQdUV ztQPe{QU3>Q9?7T+*#e1(N1T6&F3-^C_R8A70)@zu0i2`mC$dq|qtx~Wy&BXn_3VvL z1mX)1k&9|OLla!0AN-;}gE2~06wmORFw&#Q__1E{E!~yl6%#^zLutQ=MO3*xpP0&u zdiNOFaU$7pf907&3VzZ>D4KA$!E*ntQ8&PlgF)VZOWmMsVcar;)s=Q3>m0(Fh&mQ{4A6vWejp&(;>YpQ0V;N$d{i3+-a{2hA!mi|H<+`VPM{(8|r{a@p zHo{{E%yz`cbOmiDwwHVn23?Gei7p@_xE;2Q-kJNK^5|atc`J=j7tjR!dVTFoUhUO$KVu+9L59{aEr0N?^9rgb6vMz zdznIlNd}UCqt6+H`s6UR2y$?fn-dqOtMgr%Gwd`_NI#{Tg|qDPJ=W~;fOGOf$K%#o z@6;7^FMDg3r3&+|awrFD$ zQi_MdFAC_{p1TK_(QlYt_HG-By~hd|1)xmE#I~+1*N257B5z%-=i48OG_4V7;q=c<8 zRiv<)cYyCyHvjpf!US){19iOKw{LVi<837>t0;jrxFoL2)!ZxB>`gyBX2aES?UdkN zs;5z&hxu(0QX4HD3;PO7r-hb+PEMf)f*}f$@Aj}L2Vx{Zh<-M9S3}_q9Ex#+t4)g; zgkyXs0dbR6<#8V*$|{f|v!HiVUpy4c9HnTay9rP^l&{nh_!xnHut@0JrZ}7$tFz6-4I@WBplT2Wbp9!`!r<(D{Yx$9 zB2P@5qmJOMJMx8pc_|{q1iw(&#QW-i3}sriYUQye+0D>I5j$X`sP8osN);gn&F6b* zw(8v;|I-k+;oiUP%N_r)wKh@VVh@o$!8OSer9pH4ew|yCb7*~m`n48_qJEm{VlP%LfHa1vb<3LeCw~4`497=2Fa{i;5QMeSQKsJ z`H#8h+$uttU+Aeu4WSUXI-?QF`Cz0qX-ZhluW9M&t~ ziQARP=7kNabiQ~cI8r)*H5P0BB6A%EZ4Z;>S1b0CRC&MaGH#mBlgCn^PbdKLyeXXo zGIrF22NR}>x?Whxo=`lVUC;|s{M=&~RFh4UY7--xJJ9M~`uRY>A~tL9H!MJF#VUn6 zDLom>I+h(r3FtRR6e^VtoMZGS0sH^bEnFu_QvL%0WjK`ueSPwf^&XWwcKCrQ+F9kg zF;0?GRNf;#Q1CQBZ+t1CL^#SUHh3#PMqqCrWnCa4U7mr|DnD(+N{a@FP6KbE5yo4T z@4$wVF?u+s5W%IV{?%su&1dzzvy@7FfX4_heJXXJ855Q|U&pK7#76V@3P4s%GaaRnu$Fihqs=`Fh7f(__12JUT}I0OS1jIeN@|6! z+R#f)Qk<45)nP^9O)CScqwGs>aB<)-Lw#gJTk){q7rbbj;;C$t{+D(jCj@FK%Y44{n;cY8ZG=Ubqz@flA`@z;em*CZ3RQ-TARWv4e!GWz7DqKoiCrZ%&N z;hxi!yBv-{%DFWwvd~SaSYqXU6?N|I%!hj|ZElTe3|CzRiHGiZGc{>;K57CimVta0 ziv!UOcef6W9@~iSV~ckd(DM^l42C5Sxy*(oIq7e{gm2-B*8>Ywp*|0_i9WEE^;#Cg z{=t;8Uh^dggRF=7E!A=sPK_~xNQM9Gvb7MD(+FPni<6JpgA_XcXsgdHNzZ&>SwE{K zw@p_vCG@B15w`8Wnw*r9woAPGsfMn55dC}kkZyFA_!$>1r`qK@l53JEv7!1Gle;|q zRUgSk6W2vkm?$1wVQ=me_?q866wUFj6-PvhK<)#NulgicQT?7&SiGX|V{SKQ7Hio) z@YLsAFQkR#()&W_%hs&!x8hQ*wkZ}rY>=#F@INkF2TSRg2&(5Bbn2b{Ud)rh9X>1-Hvi7`zJ!s?UDQ;wEoc! zeZzfV;H2&nG1Eqk)V$YQ^zR4)#tnio^xfYu&Uz|$=Kd3ob!Tu3^OO)_?g|mxQc^6M$ZBW7QHJv%BV4Cb7QfoeAQXtU1^e?Kl##_ReS7 zT$6TUK%tXaH*rXX6SmQ5xR>C;s^07(0JP`2lCIChtlZ9;@^)koWP-lp4_0&Pl3cs0 ziE&F*#VQUg<$|{!XTsL4d5H^=z-jfbh zsd(5t{QYk?9E>sx;7|yGsDVl^`R1t+#=bE4YO{$E63domTH!)cc-!QOwV;6|?FWgeByYMkQJ#SugSs|rC~&0_8)h`*5=zbp=y}&1%u|EB@8O5!=l#te z?n)fhR~({qlF=4)9owX`PYVUJA3O7xYFZ+Xz#m)uV3KYwKQ869* zFW0J!)k@v;BJ_(sDYi}^B@edzV!o5TFr(9RT5~wq3%=*G%3vN%HK+6{w{x=q5Xl+a zk;{0g_R;iF3F3E9-m2!9PVkzsCS6)TuFh9PXFXVa$vbnQSWGJDGRoFGKg z(`xxbc8HX3oxJxwfHJ2E(5baVyAzU)nsZ0XE=G22qE3`IKdy&iB8jLOCTGH3h)=qZ z(1~pu9d=-5{KvKYv%JZXV9i3`SG4*|^O%n1@lXtUGl1RP>p-eBKHHkA2{*WX75Gy{YGn_!`i3c0aY zB)M*bct3xk+j5=G@3fUaZ`W~Atw!Yo2JUEyseUiXmz)6UWS^t~ac_Sj-JY_%2^Wi- zhE)K4jGL-}9wI^Wd4<;?odi}q95dz66J)eRUhFhX-@tQS2^)&7Po7QA9)cWJWnUDoUUtg+yJ0`S!KW9rX+>?;h`*F z=&lT2`u^Az`sO({0Inn_mcgF_+GKa%=l__rP3rPHB0k*0CGvSudXfeZY1(1ORZ5LF ztz`K_q(e5O5_VyUWM!Wem#k}SZ;GApuX^fiWp(*u2T5VPZw-#L+u=x0^QFuNh{^P~q-Z8|oA*$N z=0nQzkVF8L!VjdA#SxnVhi%}OlcBt&Ds9WaIj8hE3cd1zTx8geNRr!9QAZMHR~2%` zL1yr)Otm)5049rSrpxfdAl_#90j24h!irT+ijOEpV@zTOR@m0Kk zW9c*}=5g_FCgjVI)9sJzbsO8vojTur2V%E@>j{x(0i}5j2B~qhmL@V#Fahdup=fe- zK@q%59T1eWY-(nZznT-Ii)X-D_G4K!DT_C;&mk9RS`kBP50r{CE|ooX5^K_VI+|kZn7aDVLeAyJQHPq>Z+=CbLyOb6Gj>TRw(GT^G`^^-&`*Xn8O# zW+65BOr<+t3(Q4Z6dEC^Th#J_C&82R_yFfUiSv#*V~7$BYyZ}##c88q3?>Iyc{pUg zr)XvqR3kv{%S6o!v1ss?h-b;E-5C;az8q_kd{=7&|XacXg7k)&Sq4w(_iY}m4gDIM&V9e z2HFB7mKAlgqPuM%CPO?ABU+C`Y=KnTtkLD{dsS<_4ECEf<9rX1&L=>yb$zsw*{`o* zN)5aVr7zVWvg#=8n+z)ZsdIE2QF#dgJ}?0BZRqfiM))J}=d|J5PPw}ZYuk`EzXMEa zWUtiLmY%)(+>mhAmDLD<)jZg}S|dc=U7DkhluuE;4oU~lm1KU#AIu7E|AE@~8R%H% zpH}s9TgvS8LR7iYSLHXw5D;T{RyaAp78s?dRUi5=Zr#J8{JuW6;rp&-wHPNuSC;4^ zTo7Y2j<62?dzect>f^cq~AjT0BeKI!Hmk#u2XDp?ROI?{x$fGct3R;za=RB)uLNeE+vJ3{ax zzr*?s(LgH^>U*k(=|aPat8N^U3aP$PX7F^wLQ8sDKls#Rt*-Pmc9Uiv$W|lt{kVl< z{?1W89+ZH+!5fNxw=mbXq)HfCTcFRAmF62*nWbW`_;@Iy4g#Vo;daL#n4lEkLF(SG z;tU?;UQaO`x+wsLU&5|dsvk5Cxg57Bb#IVRfAwh`DH|I>!E-{mHA>Kh3Dk}RtI zSGGuVKj22Ubb(O=NWBi8c_F|t*?nK-zM~N-Q+TAr!en$f6KqXCty+H4Zl59Jly|G> z#Q{GSg$2M$wz3_ar$gu${Oc!N2Hgwzd$w!u1FCDEyrworuuW>%m^petHHVm<-_f5G z2&s1DA`X9(ON3<<{VR$AG^~5WSn!fjF=ppR9E)3d*=m zNh%4)Y-{=e`wEiutreJ&u6uD`w2?Vj-l@>{La0ZQwk7G2lzPl$=V| zm(70lg+IGP%W?IRKY!r|q@NlD97xNAdA6+wmxuid%4ul(({Bh;Z#4wD2zl8=lrRU0+weD#7X zkcEI^zD4?zYi?qPDgJ&bH(uq`w?1A920f3Yji?1KjzpxIb=w`TlZ6>=Qw+jm7I%v^ z5j=LZY#*Tuq{l{=sli;qXU1oEDD8AdMqyRQ-4Lu~M39uU8`O?f8_1ra;j;=j z^?X0qzTI*;6l?hZ#}n%?gwjBOvVTF10W$yr{VOhO1rkY_+J_+^q%T8qe@h0uogX1D zSu8GaX@lf_Q>OvqMp=dMzynyrE}a}g`Dk7KHe$vO(Z@W#b+Z^vO7MVSH9u1RfDCxb ze)${lurMRSLP>tU+HDdpU^y~_w45`Y`w?$W*Ilgkra|1@D?*lIJ4#l+`X_zwPwZpg zl>oJ6{7&h1UD2crOe-y(!iHkFiuYDx+)JBTbT!cg6t~Ad%)c0OPGzAU4w**=)-}?Q zlbW%+@Xla61UvKNcS;U4O}C4()~z1tSi#dyOl4*G2`#*);WA^&qgNJzoo_j-3OOQ= zy|imQr*$*}W*=D3I+{ng?;2 zh7DC|QU@awlQ(7sePx1Y4QDV&Yntfc{=BCSX09XO>9)^U) zzm+8ps!j1_Jz2rEm{pUW&W{|Kw0ZbrM&zy?m*#;2JBmila8S22`h;p4F0y^3;^Ow< z8{!ifFP=!tZAKxNrlw@X5J+up>zj3L-YS}!t{qg07jK)pKD{c&qUGWg`|+ntw_q!s z=8VMAWFBjXM+$5QPSwooCG#1gF2}?i5Z3m)9gp#@wBMt5673#6AXm#{CcnUscO3N6BZy06Ke{?vD_)~n`?FcIAd6$uu+u4?)y8d z9GT2TUE9`jl#~PxPk@aa$`q4yOrTO6pk4RqFiux>oMLM(-29W)N6B_`z$py_D? zP6cQ*H|g89;UMteRQOe`79t6vUK{z-*i-tNR{TqYvIqLRFxw6ty*D`9BCS(7oM&-D zWx$?Xh&*3H2r~AiO=Gd{)~k-1aXQjEOtz^7U|ww#{^`NR7hm^w5-x>Oui zhr{D?~y^ zlZU$?mFWdhN{io_@69~|F)Gb5n}MeQ{wevovW?6mOAQ4}xfEy{RDmM{R8Q9sV9WRH zUF3`R1^8S#2zp_hT5LHdH_(jIfCs^eyJU?nuzNrMg3}8r*^lz0s$>rTVP3{32_j{- z;-SDPc-UafeFl6PdBgl@1ij0)^T)J}<@o*@aRGFCge=Y|N9IQ^i9Z$*0W;?mk@DV@ ze@n}F-+=&vjWkBHobQkQud}zRD!`{2Q2&nTbUNhLFbJwyY?xaRjS38!53o8XBBb3UA2>Ke!OuC1+bsR1mXFJf>?y z(>Fjr6k1qY2Ovg;G70QvmLsW7tc4+^PP&(>`Y7LZ2k`dIUIh{z%ORD{eCy(jqatK6 zDk&*~lWoA7qgv7-6DAorLTO73dTth$yu%jtd3qYN3lNg{ZQQj8gX;cHI1~r$nXlmd z8X_1>NbUgdx2ja)XitYgT^moMVvUSrkUr6|gFAhQbn+{iP|XeNL9@3!Hrsy>cLv@A zKGM?u&jj*;RPjXK&mx{Gc~;5mklTtbC=$FalMzQ27EVjTnRW5AaadLx)~88=$P=&m zC}8OiKq2L->*Ztq>3UA;Xbq2RFUI%#dF)&gR7TUOxzuq2dcqU7<78pM!qg(wIq*Dg zic;xW75(@o#HEYSvF|ad0i4WUcb!;=$xg{8q8Q(l@*6k!k?5zytGuPjs(dH*;(Xvg zI(DWKYUt+S*H_Wd%cI2>N%d9k=C8gG-5GsbhN)&W_RU`%oQ@&ti@P#krzSVjASj@C zuoV=!#JDSr9fAB9pnDK6iTFi>Ef2yLUW?&!XuGRE$!_zUKf=}DDO7u6;u^nrG}d1x zH8WI1#NW75(IjX-HX}Z^=J|(UvK5`MnGOZje(@6AaC~Qwf_4q@;Opvmr@wMGZYu?f zem+blsQJ2yW6Ugejl>0$|doaUq%)IjZ9&E_M?S?B8H`Xw^>F!L})`e9zZvJFY9u zil>bKhXPY>E){>iqhRP=E+)9pL*##!mi6{lY;f*uO0HDu?o9?9Q4B^EkXI~LrOB++ zTJJa4$-)E;lk5{cD%kL75cGgehY`V01sjpPJ&%$CxM(>lopt55U5f*+(|926=;^DQ z<5q*iqZtpm0sd*GI?~|ipyib6$EjuTYFs#~&?iaLrf>)A#rK8dd zAF1FLLHtEOxWMO0So+Oi$)-xg4=qR@7f&tTsQu?3SC6LFsV$QzEsTwyW()k-`Xfmw zoVJ?YDn~Sq9~!C8Pw0Wk*nV;fo- z<*K9R39IZ`=s~uAmhXb@II`}L>ar>~@=jajd(xPrYca63Hc5BbAY{em8!j2Adnmip z6|N2)bth*E@iao3bkxer=^LSpk$9_XHrzCYF0FBgT~)-=^hyH64pr^N7Gb->^}nKsBLuHbV?OyhFGeCPtu)rt53Z*-LcrIx*6Qp zjt)YF{OLjcPAd^CK24@JxT8iyS;OG8Pi;|`bPw?jvu1m$028b1c|4H zj2Q0}?sw4#LFy9Mjh2O!)=ZaE!{CS-h2|boRRf{xfj+kdI!|^Inxt%$y4PdSf+KM*;Z9C~T8AAwe6XZQAsDmEbZ3)V^5Nl!d;=)b5awSDZ&N!=}+`<`fkY7Zvl z50 zRN5Y9hta&a9sW^;+tN~Sc!$3v9;xc9PG#eYiQpl3zFVM$nA^IL4b}Y`J)BJcuy*h0 zHhsx6qdH6gHO11vF6RJ^NWA?tzl9qIHBAJWc%j2r%5j7H;$4^0IN{p=NZa&C19iy? zu}=y4TjyM`tvA*AJN)BHV_P|il$GlYGd|_*>;kJ6&H<)J`%8kSkFV)B`Z@@e{fY3I zxY-n^V7(;dq)25JkS6JsiMnWNBAYI9vo&pnbUd=aA~X!!%-qpgj5%P4szgZc^eYL5}87TgvYU5+ka>Q_&$T z1WH~EhL7&5B4`l+ugfWe#dq_VF2H7UV%gmj{{p#E z@Gt9Ox)YhCg1_3^@7*8B`{;LcmvYEM{QyWAqo&IZo(TtyxD{nQ1L5v$<$iGSv(Ak|f?Gk$eA zkVtK_s`)>a)aZ7qyUL&-mK`TfX;2NmU215kIitXRVk3#a#)M9fg~HP&2~a~J@shnE zOK0bvL< z4-R?HcDVVP->`aS?1?hyW_sG^s&|=SNGi$D^Ve5He9=K)-O?o!QT7M=I{RnRxnW&A z8=OL|A&Vi3L_zk@CNfv4WGQ(pDd&V{NQ^IIsGqqofN%Zz(_iTttn|5@|0SHK16FB_xLsfgYZ0 zTASF0O&JQD3;~?>&`taQ&WDY>AN$-zDi0HxAXzWA-)_-QGb&Rzsj0I3qAeHtb__yB zMeE0JT8nJ$02*?Y=+@b;a|XgR8L>eoNJ`C1;h@n}YQj#IV#5>Xvo+0TU)0brmN?#p zaJX?_9v>z}rZ!xLTd?)5Uk9>i6PF?2JnP)VLZDIDbaE$~m~jYY{rWS2+Y+MSkFXh* z333?kHodp_Dd?P71;T&+L3II&1pAE5L>evDtEjfFi^2~#v{6n6Ymj$JC6?ZnA`OVB zX`inws(uA-YC-nfFXHYdIAI4!DYQn2ssp#509|OmX#a@7s&En@~HYs#?SEtcuziJ;qu03g0d;yh7D{V(?qavL|Uf zI40ByDrM3;A*ctZSq(B)bL%#&pD^5G&U9&C8U?cWQ`-5g`&BzUy&m8WTNzi;NTUhO z9S~!w`|f40dCF0}H^>wjK_)j~`&Fas+dVMN4>C}pqJ!)_dgVd$9Mz3AJHLcI=L&Um zFptBlxaYd9D;>cM%Kz*I9!iXS)@z@_EVH};YQCzQIA@q{)qk>8B;dCezpqKQzxm&G zmLkqbow?K80x|8jS9NRQACob|bowHW+d;sjC!{N zfae+HB$JHGl|#&Mpo{tWC=OAx z((R%DlOiXneN=FQUwwN0b`d!e*j3Zz^aj@1H9z*9L}mg)L$pD7Ojq$G=YE1|29x5^ z;a82SPsc0Ga?y7fbjB3HQF_NKX%b0+zU+|4?E;^YqFXhvUz061{|;3i@#l!b3df>n z61B2u1_~S8onL08yZ8&^;hnCJnyXb0IX3q0urVtm!tWEL?!N<#aYO=3vYXFB7%E>2 zq&ooo>+Rv@(XanX0cE=$%$`(8Js+2zo1aMAi|tw~wE=RP0RC#y^ZP4mTeAP?M*=%b zJ=5XA*B8DNl)wb+`iJ~H!J3@)8&b{m$I}yXC^=9(sSD?(;v|2yq@6>O+q<&|V7^wFjl>HMl*9;r{Oz z-6WwmRt#3}(m|3*h}2_eCOpcw)Ys?LzZis8OnfLO2eH$Lh`$Zi0?jRh)rlu*_t&0{ zk;a;!wKw|8ho5~WbgX#tN;yhSL+G!M*^&OQOI3joa9@p2YL3(x$uE9#k+e9Uc3pf? zNClAm5S-FgHLNK#@lW-}vGXu$HWFau2%HJZftKN_%{T>gY zS8bcwm}-9ix>uYmYzl*%SVb9067nE6p>lgGkNFdFa(a7ojE&zd(~H)NWN| zCGq_Ox298};p%v;c0@F$(54O^qhIT)UsOVdxD#<1I4vY6xJPWk@t_2Y_cXp zXJsUyfNi=Dl_6!`Hy#paeCnU{dEyQ@63E!%q!l#2p}PbeZ-xHzb53($ML+UV-&U9DTsEDgj;eM{{8pn{KG1%S0(z3|=Dj14 z0VZ{K2q=u$y(C53e5DW> zp-*fM;y@_(`NSjhHcuzFb*ghfx4&oB%dnPzV~OAddLOnbB=O_70wYIdpBQ zq0$kK(O&1mn2=fr-)diVl6fWk>R0!)qXhVY!OpQcH?JqxGoOWOf>~cI+YyezQ+C}r z>8arf00-qyEB$?kJW3}qcbPKv#i73lU2;;KupBT9h+(59|HGt61JUmYPH`Wlr(G-3 zKx8nEB!|4T5i20Pd)W(GJ(O(s@dr_fp9Q`qJHRJQI5qAIOKf`ZA{`hTo4f2ACne>@ z#PJ+SmY2;KK1I3f^OnLoFey(7-463 zF!EtZa*5wZ4EcSYK)P#;@-*sw-*Aad(xJJdNK@~JTFi(>;N~q6e-qP>BBtg5LLqu0 zgIyzqVn4G7sP@fg689F*bctk!AX{RYojG+I%cHy2523t4d9%lp@mcTQ?RuhsQ2B;L z;50!uN?N!w-%&)R`k|wi2zp9n@2b09%B>(717~{{7cSEgNxZ-?)gv_&4Kiz(pPDzz zI%(1BU3VWvj%xzzkYf^tqWMgKzxV%?{0w}fbf&crzzcj(28k0>n`kFs<-LT)e;U5h z92G~;$fRYZHKY@)eV9B|1w|>8dSF>HO)e+#I*aWm2&%H7py({3=p0?fm}o=x$w~k_ zu?jF`6e})FCB~tKIeZJROiV1KEm2r-*Qa2BBGPduWpyxJlS=WB`GR*TzGUce42T!` z-0s~C)2YPVn#}07uCl=G-44pd(T<&F;u*cwx(+rDH+#zclmmZMO}IC9)GZr@gi>pr zx=Q$RAzU1km?X^==9%0uri2*P&#JNAfbR*_(Iu~kB={;+oMk3M3u%ng@!)0h=&#F0 z21p58LGv$;&KhwkU^=dK#Gdjezf59vb0|1{vkVq|t+m1Z@n8g6${yn=4CvY# z!Bcz5cZ)Sbm?(Cg>(0b95X(tX_}Urlg)SZgkKIJs#`x}{?dFAN-dnc3i}SrhUgGm- zI5&=os^ZImLEIeDrE3dCI{BUb89Qq|j#E*zXs%L9fiDZ4Ny7hMV5X7DPm0%guD@hF zf>=Zq+do;>eIJtCE=_mo4A8q?)Hray%3m<2eTM{6LeTFS$7! z1rK^Qt|x_KV;54>{Ia2m1yUS3i)W9zXj-%xpL;zQ#rPo7|Ek4a)LQH0=>(_k<1G%}MfOj>;@g@; z*Bojim28t~DvN;I8ZL(E740L31)idLj6XUjNt)~+EH?xq(feegu9iQRD#t?H)^MV> z$p)WoP09|$pxqw(JQiNv8?STyja`kl-RYwqtu%MG6U)78|#CliHk$OF8;kM zXqHgyTTAH+neVJa;drXW{5E1I&6=fC>M=4={fY8*iJbFQm)^+^de`jD9Fk?C0$pQ( z*65_S9pD&8EG_)7tSyHdej$;3_N28C75yL=MNqviqilL*1}@d|C@{IdXveElMRIof zQ5=-DIDwHP#ozSN}Uy8P-jz5Tr?KAR?>3_OD&r}7LnmYC^C zhW;&5)pb4g2n+ohXrP(VRcH9ZYdsr}HLt7(B>(Xo%p99aA{2#X)P8Ws(tAxYj7gL!uNKpn`6^YihJ|O;3_klkGN+D~C+geb78cRD}*J)r1@;Eiy zUFebe3iBoPAS`L2X&pM?4AMX)za3+_*1HGk_`ZZHEU?3(a#-1aVTNP&(zzNHSu849 zPiQbVr6Rj_=GZfxIsF10OPE?BD^<3&}QqDTyXUMtMx3hYP_7=glk%wn- zIRX+eeQ4;xd{TMaDDB L)mHsHx^vPHnC-{2M&#HTkgY~`yQ&u7Wr9mNLX?7@+c z^Vgd$a=cAw>0N0ilec=PY?fEws-3jD&BPbM^{2}vQfFsqDl_aAoNjh?AVD>e-zo1J z7Mx%8d?%5n117GPYDhVp{eYx0io|M)BbU!scdhB{+KK?nUT&sjIpxb7O2C;93pjvS zPWhtGPKqJ<469E>VqDg+1kDB$BQUk56&}D*4_;|SyDt~Uh^atVB3Wx|_{6twa_H8% z8*s}^UHT~}f!}<$0)AQkrh>@&^?#8+f0fR8630Yx0}M@&_WjmZk_(iEc?vi$T2xA4 zVe}2Lfr}yb>e`K-cEf1btMUA}3O~~&wvdO~rAlQ9#HOopl(G`c_#92uX8au|gwhr) z_#aVDdnocvL2x`W{x{-lWjijEL3?H#eGqr(Zp=m{04j>mW9Xj00+HGW{b}!?0BCK& zJGOr3Fadkn+KTb2eL_@E2_6XyOp;Vb^_xKiC*=aXDI)wzS0D?JB;%r__~FG{O3bOn zh3Crt#*>s+>u!@I8>s;4GEMlZM%X|7E93*xAEAbZaME89Uk&S*tm{1UK?=1u0f4 zhtgZ4e4~bM`2l_#qZ-v%KN;%#h=C8jlF+C(p@X-o^A)MQGmd=ZryuCA$3yjA?%~%t zs8XGo&xd9$lld3UaB5DQ9%y1Au=ljCZjG`gYTcVtzD};3LZ2(@qa^#Fd$M4^wGerz zrnijR@}jb$ge(s?w!ej{RZAR%q7@SnuwWRAfv58}TPzd|he1h8T$^(c9+Xb?t?Y6m z4aP1++}J&Mq^+B>!;wB&(tdd&e=mqx17MAiL;I6ed2uy#kBZV>Y(ZI}5J<At#P~qIu2V$Iz*P)1ct6XEXBNO(GcO z?SOOQhGRr?SFCfJ!+@21Q4?fIhuXE(L=^G*8B_+^z0s_^MVj9x=#F_wUVkz2b?r0D zIR!>fTN@S(oJJC7Zai8}IXES5@t{-+4sob5WAb4DLqNR0ar-h^NV{l6gX~)fBoJpt z6@K6O-0e5aYAFBS-;E=qANr!Rg9PS>Hbk#e#qcelw3UE9H%FcjgT?F32%{pIJ-g8)Ofh(VdcD>z)Of9R#(Pi4;+)C|y~=v^dIw1iE7fy%zQ zwVbXFLZ7-PEkILAMyjp$=LC(nfu(m$7>I}XHsH}t;48%umoAX=1%4Y|#bPx!R^@j% zNG!YkTjQjO@7yQ2<{Ap14M6#^#{ufcuqmuo0hIVzV^iip4dl?CEeadb$89Rw#WHAQ9qoIE9C%47CF5UHC zURnXNa(V`bKp5%(|WvnP&r|_p`0K~)Gh=Hkdo#b8@(Ch z$=GiAX^XSaD`uY~S@65&Q49;-=8myoHv8Kn-n@b~@3T6?I=AR*

Y6`^S0tHwdV0 zav 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

O&%HNX4af0^E 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 z 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