https://github.com/JuliaLang/julia
Revision f922a6371c6b658aa955e5096774509b12dd7579 authored by Jeff Bezanson on 07 September 2018, 03:32:38 UTC, committed by Keno Fischer on 08 September 2018, 19:47:23 UTC
In this case, the result of `iterate` has not been checked for
`nothing`, so we try to call `indexed_iterate` (for destructuring
assignment) on a Union of Nothing and the tuple returned by
`iterate`. That has two method matches, and so was excluded from
constant propagation. This commit fixes that by generalizing the
constant prop heuristic from requiring one method match to
requiring one non-Bottom method match.

This issue caused a large slowdown in DelimitedFiles, where
the inner loop consists of

```
        while idx <= slen
            val,idx = iterate(dbuff, idx)
```
1 parent 65e4c13
Raw File
Tip revision: f922a6371c6b658aa955e5096774509b12dd7579 authored by Jeff Bezanson on 07 September 2018, 03:32:38 UTC
fix #29036, poor inference of `val,i = iterate(x,i)`
Tip revision: f922a63
appveyor.yml
environment:
#  USEMSVC: "1"
  matrix:
  - ARCH: "i686"
    JULIA_TEST_MAXRSS_MB: 500
  - ARCH: "x86_64"
    JULIA_TEST_MAXRSS_MB: 450

# Only build on master and PR's for now, not personal branches
# Whether or not PR's get built is determined in the webhook settings
branches:
  only:
    - master
    - /^release-.*/

# Note: use `[ci skip]` or `[skip ci]` anywhere in the commit message and AppVeyor won't be
# built for that commit. You can use `[skip appveyor]` to explicitly skip AppVeyor and
# allow other CI to still run.
skip_commits:
# Add [av skip] to commit messages for docfixes, etc to reduce load on queue
  message: /\[av skip\]/
# Skip running CI for changes only to the documentation
# https://github.com/JuliaLang/julia/pull/27356#discussion_r192536676
# files:
#   - doc/

notifications:
  - provider: Email
    on_build_success: false
    on_build_failure: false
    on_build_status_changed: false

clone_depth: 50

init:
# Carriage returns are bad
  - git config --global core.autocrlf input

cache:
# Cache large downloads to avoid network unreliability
  - C:\cygdownloads
  - llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z
  - llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z
  - usr/bin/busybox.exe
  - C:\ccache

build_script:
# If there's a newer build queued for the same PR, cancel this one
  - ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
        https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | `
        Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
        throw "There are newer queued builds for this pull request, failing early." }
# Remove C:\MinGW\bin from the path, the version of MinGW installed on
# AppVeyor is not compatible with the cross-compiled Julia Windows binaries
  - set PATH=%PATH:C:\MinGW\bin;=%
# Remove git's msys2 from path, since it conflicts with cygwin1.dll
  - set PATH=%PATH:C:\Program Files\Git\usr\bin;=%
  - ps: contrib/windows/install-cygwin.ps1
#  - '"%VS120COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64'
  - C:\cygwin-%ARCH%\bin\sh.exe --login /cygdrive/c/projects/julia/contrib/windows/appveyor_build.sh

test_script:
  - usr\bin\julia -e "Base.require(Main, :InteractiveUtils).versioninfo()"
  - usr\bin\julia --sysimage-native-code=no -e "true"
  - cd julia-* && .\bin\julia.exe --check-bounds=yes share\julia\test\runtests.jl all &&
      .\bin\julia.exe --check-bounds=yes share\julia\test\runtests.jl LibGit2/online Pkg/pkg download
  - cd ..
  - usr\bin\julia usr\share\julia\test\embedding\embedding-test.jl test\embedding\embedding.exe
back to top