emscripten-core / emscripten

Emscripten: An LLVM-to-WebAssembly Compiler
Other
25.79k stars 3.31k forks source link

tot regression: vectorized ops #18759

Closed mr-c closed 1 year ago

mr-c commented 1 year ago

Hello, CI for https://github.com/simd-everywhere/simde against tot got a regression

The function at the heart of the now-failing test is , but without SIMDE_WASM_SIMD128_NATIVE defined, https://github.com/simd-everywhere/simde/blob/7e70d02dda84bdfb1e97777bdb9622f3f29682b4/simde/x86/sse.h#L2966

Here is that function from he -E postprocess output

__attribute__((__always_inline__)) inline static
simde__m128
simde_mm_min_ps (simde__m128 a, simde__m128 b) {

    simde__m128_private
      r_,
      a_ = simde__m128_to_private(a),
      b_ = simde__m128_to_private(b);
# 2986 "../../../usr/local/src/simde/simde/x86/sse.h"
      uint32_t __attribute__((__vector_size__(16))) m = ((__typeof__(m)) (a_.f32 < b_.f32));
      r_.f32 =
        ((__typeof__(r_.f32)) (( (((__typeof__(m)) (a_.f32)) & m) | (((__typeof__(m)) (b_.f32)) & ~m) )));
# 3001 "../../../usr/local/src/simde/simde/x86/sse.h"
    return simde__m128_from_private(r_);

}

Version of emscripten/emsdk: Please include the output emcc -v here

emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.32-git (bb9b6eb4164cf1df517bdf72067ab7257a32a9b4)
clang version 17.0.0 (https://github.com/llvm/llvm-project 45ddc157ca7c464ebbea627da0f682b1554e2390)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /opt/emsdk/upstream/bin

working tot: sdk-releases-c41ee404c571c6a46e1ccde357a03072706555a5-64bit https://github.com/simd-everywhere/simde/actions/runs/4155968543/jobs/7189425976

broken tot: sdk-releases-51d9739bc0b3221501654ff6a14e76b90e3dd935-64bit https://github.com/simd-everywhere/simde/actions/runs/4183801504/jobs/7248626128

Full link command and output with -v appended:

/opt/simde/emscripten$ /opt/emsdk/upstream/emscripten/emcc -v -Itest/x86/sse-emul-c.js.p -Itest/x86 -I../../../usr/local/src/simde/test/x86 -I. -I../../../usr/local/src/simde -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c99 -g -Weverything -fno-lax-vector-conversions -Werror -O2 -msimd128 -Wno-unsafe-buffer-usage -fopenmp-simd -DSIMDE_CONSTRAINED_COMPILATION -DSIMDE_ENABLE_OPENMP -Wno-psabi -DSIMDE_TEST_BARE -DSIMDE_NO_NATIVE -MD -MQ test/x86/sse-emul-c.js.p/sse.c.o -MF test/x86/sse-emul-c.js.p/sse.c.o.d -o test/x86/sse-emul-c.js.p/sse.c.o -c ../../../usr/local/src/simde/test/x86/sse.c

cs -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c99 -g -Weverything -fno-lax-vector-conversions -Werror -O2 -msimd128 -Wno-unsafe-buffer-usage -fopenmp-simd -DSIMDE_CONSTRAINED_COMPILATION -DSIMDE_ENABLE_OPENMP -Wno-psabi -DSIMDE_TEST_BARE -DSIMDE_NO_NATIVE -MD -MQ test/x86/sse-emul-c.js.p/sse.c.o -MF test/x86/sse-emul-c.js.p/sse.c.o.d -o test/x86/sse-emul-c.js.p/sse.c.o -c ../../../usr/local/src/simde/test/x86/sse.c
tools.filelock:DEBUG: Attempting to acquire lock 140648273187088 on /tmp/emscripten_temp/emscripten.lock
tools.filelock:DEBUG: Lock 140648273187088 acquired on /tmp/emscripten_temp/emscripten.lock
emcc:WARNING: invocation: /opt/emsdk/upstream/emscripten/emcc.py -v -Itest/x86/sse-emul-c.js.p -Itest/x86 -I../../../usr/local/src/simde/test/x86 -I. -I../../../usr/local/src/simde -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c99 -g -Weverything -fno-lax-vector-conversions -Werror -O2 -msimd128 -Wno-unsafe-buffer-usage -fopenmp-simd -DSIMDE_CONSTRAINED_COMPILATION -DSIMDE_ENABLE_OPENMP -Wno-psabi -DSIMDE_TEST_BARE -DSIMDE_NO_NATIVE -MD -MQ test/x86/sse-emul-c.js.p/sse.c.o -MF test/x86/sse-emul-c.js.p/sse.c.o.d -o test/x86/sse-emul-c.js.p/sse.c.o -c ../../../usr/local/src/simde/test/x86/sse.c (in /opt/simde/emscripten)
profiler:DEBUG: block "parse arguments" took 0.000 seconds
 "/opt/emsdk/upstream/bin/clang" --version
shared:DEBUG: successfully executed /opt/emsdk/upstream/bin/clang --version
shared:DEBUG: sanity file up-to-date: /opt/emsdk/upstream/emscripten/cache/sanity.txt
shared:DEBUG: successfully executed /opt/emsdk/node/14.18.2_64bit/bin/node --version
shared:DEBUG: successfully executed /opt/emsdk/upstream/bin/clang -print-targets
shared:INFO: (Emscripten: Running sanity checks)
shared:DEBUG: successfully executed /opt/emsdk/node/14.18.2_64bit/bin/node -e console.log("hello")
profiler:DEBUG: block "check_node" took 0.034 seconds
profiler:DEBUG: block "sanity LLVM" took 0.000 seconds
profiler:DEBUG: block "check_sanity" took 0.072 seconds
profiler:DEBUG: block "setup" took 0.000 seconds
profiler:DEBUG: block "ensure_sysroot" took 0.000 seconds
emcc:DEBUG: compiling source file: ../../../usr/local/src/simde/test/x86/sse.c
 "/opt/emsdk/upstream/bin/clang" -target wasm32-unknown-emscripten -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -DEMSCRIPTEN -Werror=implicit-function-declaration --sysroot=/opt/emsdk/upstream/emscripten/cache/sysroot -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -Itest/x86/sse-emul-c.js.p -Itest/x86 -I../../../usr/local/src/simde/test/x86 -I. -I../../../usr/local/src/simde -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c99 -g3 -Weverything -fno-lax-vector-conversions -Werror -O2 -msimd128 -Wno-unsafe-buffer-usage -fopenmp-simd -DSIMDE_CONSTRAINED_COMPILATION -DSIMDE_ENABLE_OPENMP -Wno-psabi -DSIMDE_TEST_BARE -DSIMDE_NO_NATIVE -MD -MQ test/x86/sse-emul-c.js.p/sse.c.o -MF test/x86/sse-emul-c.js.p/sse.c.o.d -c ../../../usr/local/src/simde/test/x86/sse.c -o test/x86/sse-emul-c.js.p/sse.c.o
clang version 17.0.0 (https://github.com/llvm/llvm-project 45ddc157ca7c464ebbea627da0f682b1554e2390)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /opt/emsdk/upstream/bin
 (in-process)
 "/opt/emsdk/upstream/bin/clang-17" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -main-file-name sse.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +simd128 -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -v -fcoverage-compilation-dir=/opt/simde/emscripten -resource-dir /opt/emsdk/upstream/lib/clang/17 -dependency-file test/x86/sse-emul-c.js.p/sse.c.o.d -MT test/x86/sse-emul-c.js.p/sse.c.o -sys-header-deps -D EMSCRIPTEN -I test/x86/sse-emul-c.js.p -I test/x86 -I ../../../usr/local/src/simde/test/x86 -I . -I ../../../usr/local/src/simde -D _FILE_OFFSET_BITS=64 -D SIMDE_CONSTRAINED_COMPILATION -D SIMDE_ENABLE_OPENMP -D SIMDE_TEST_BARE -D SIMDE_NO_NATIVE -isysroot /opt/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /opt/emsdk/upstream/lib/clang/17/include -internal-isystem /opt/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /opt/emsdk/upstream/emscripten/cache/sysroot/include -O2 -Werror=implicit-function-declaration -Wall -Winvalid-pch -Weverything -Werror -Wno-unsafe-buffer-usage -Wno-psabi -std=c99 -fdebug-compilation-dir=/opt/simde/emscripten -ferror-limit 19 -fvisibility=default -fopenmp-simd -flax-vector-conversions=none -fgnuc-version=4.2.1 -fignore-exceptions -fcolor-diagnostics -vectorize-loops -vectorize-slp -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -fcolor-diagnostics -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o test/x86/sse-emul-c.js.p/sse.c.o -x c ../../../usr/local/src/simde/test/x86/sse.c
clang -cc1 version 17.0.0 based upon LLVM 17.0.0git default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/opt/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 test/x86/sse-emul-c.js.p
 test/x86
 ../../../usr/local/src/simde/test/x86
 .
 ../../../usr/local/src/simde
 /opt/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
 /opt/emsdk/upstream/emscripten/cache/sysroot/include/compat
 /opt/emsdk/upstream/lib/clang/17/include
 /opt/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
shared:DEBUG: successfully executed /opt/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -DEMSCRIPTEN -Werror=implicit-function-declaration --sysroot=/opt/emsdk/upstream/emscripten/cache/sysroot -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -Itest/x86/sse-emul-c.js.p -Itest/x86 -I../../../usr/local/src/simde/test/x86 -I. -I../../../usr/local/src/simde -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c99 -g3 -Weverything -fno-lax-vector-conversions -Werror -O2 -msimd128 -Wno-unsafe-buffer-usage -fopenmp-simd -DSIMDE_CONSTRAINED_COMPILATION -DSIMDE_ENABLE_OPENMP -Wno-psabi -DSIMDE_TEST_BARE -DSIMDE_NO_NATIVE -MD -MQ test/x86/sse-emul-c.js.p/sse.c.o -MF test/x86/sse-emul-c.js.p/sse.c.o.d -c ../../../usr/local/src/simde/test/x86/sse.c -o test/x86/sse-emul-c.js.p/sse.c.o
profiler:DEBUG: block "compile inputs" took 1.321 seconds
emcc:DEBUG: stopping after compile phase
emcc:DEBUG: total time: 1.39 seconds
profiler:DEBUG: block "main" took 1.393 seconds
not cleaning up temp files since in debug-save mode, see them in /tmp/emscripten_temp
tools.filelock:DEBUG: Attempting to release lock 140648273187088 on /tmp/emscripten_temp/emscripten.lock
tools.filelock:DEBUG: Lock 140648273187088 released on /tmp/emscripten_temp/emscripten.lock

/opt/simde/emscripten$ /opt/emsdk/upstream/emscripten/emcc  -o test/x86/sse-emul-c.js test/x86/sse-emul-c.js.p/sse.c.o -s ERROR_ON_UNDEFINED_SYMBOLS=1 -s ENVIRONMENT=shell -Wl,--start-group -lm -Wl,--end-group

tools.filelock:DEBUG: Attempting to acquire lock 139640757301776 on /tmp/emscripten_temp/emscripten.lock
tools.filelock:DEBUG: Lock 139640757301776 acquired on /tmp/emscripten_temp/emscripten.lock
emcc:WARNING: invocation: /opt/emsdk/upstream/emscripten/emcc.py -o test/x86/sse-emul-c.js test/x86/sse-emul-c.js.p/sse.c.o -s ERROR_ON_UNDEFINED_SYMBOLS=1 -s ENVIRONMENT=shell -Wl,--start-group -lm -Wl,--end-group (in /opt/simde/emscripten)
profiler:DEBUG: block "parse arguments" took 0.001 seconds
shared:DEBUG: successfully executed /opt/emsdk/upstream/bin/clang --version
shared:DEBUG: sanity file up-to-date: /opt/emsdk/upstream/emscripten/cache/sanity.txt
shared:DEBUG: successfully executed /opt/emsdk/node/14.18.2_64bit/bin/node --version
shared:DEBUG: successfully executed /opt/emsdk/upstream/bin/clang -print-targets
shared:INFO: (Emscripten: Running sanity checks)
shared:DEBUG: successfully executed /opt/emsdk/node/14.18.2_64bit/bin/node -e console.log("hello")
profiler:DEBUG: block "check_node" took 0.031 seconds
profiler:DEBUG: block "sanity LLVM" took 0.000 seconds
profiler:DEBUG: block "check_sanity" took 0.068 seconds
profiler:DEBUG: block "setup" took 0.000 seconds
profiler:DEBUG: block "ensure_sysroot" took 0.000 seconds
emcc:DEBUG: using object file: test/x86/sse-emul-c.js.p/sse.c.o
profiler:DEBUG: block "compile inputs" took 0.000 seconds
profiler:DEBUG: block "linker_setup" took 0.001 seconds
emcc:DEBUG: looking for library "m"
building:DEBUG: Mapping library `m` to JS libraries: []
profiler:DEBUG: block "calculate linker inputs" took 0.002 seconds
shared:DEBUG: executed /opt/emsdk/upstream/bin/llvm-nm --print-file-name /opt/simde/emscripten/test/x86/sse-emul-c.js.p/sse.c.o
profiler:DEBUG: block "llvm_nm_multiple" took 0.013 seconds
system_libs:DEBUG: including libGL (libGL.a)
system_libs:DEBUG: including libal (libal.a)
system_libs:DEBUG: including libhtml5 (libhtml5.a)
system_libs:DEBUG: including libstubs (libstubs-debug.a)
system_libs:DEBUG: including libnoexit (libnoexit.a)
system_libs:DEBUG: including libc (libc-debug.a)
system_libs:DEBUG: including libmalloc (libdlmalloc.a)
system_libs:DEBUG: including libcompiler_rt (libcompiler_rt.a)
system_libs:DEBUG: including libc++ (libc++-noexcept.a)
system_libs:DEBUG: including libc++abi (libc++abi-debug-noexcept.a)
system_libs:DEBUG: including libsockets (libsockets.a)
profiler:DEBUG: block "calculate system libraries" took 0.015 seconds
emcc:DEBUG: linking: ['test/x86/sse-emul-c.js.p/sse.c.o', '--start-group', '--end-group', '-L/opt/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten', '-lGL', '-lal', '-lhtml5', '-lstubs-debug', '-lnoexit', '-lc-debug', '-ldlmalloc', '-lcompiler_rt', '-lc++-noexcept', '-lc++abi-debug-noexcept', '-lsockets']
shared:DEBUG: successfully executed /opt/emsdk/node/14.18.2_64bit/bin/node /opt/emsdk/upstream/emscripten/src/compiler.js /tmp/emscripten_temp/tmpq06jaewl.json --symbols-only
profiler:DEBUG: block "JS symbol generation" took 0.145 seconds
shared:DEBUG: successfully executed /opt/emsdk/upstream/bin/wasm-ld -o test/x86/sse-emul-c.wasm test/x86/sse-emul-c.js.p/sse.c.o -L/opt/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten -lGL -lal -lhtml5 -lstubs-debug -lnoexit -lc-debug -ldlmalloc -lcompiler_rt -lc++-noexcept -lc++abi-debug-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --allow-undefined-file=/tmp/emscripten_temp/tmpg2gawq7m.undefined --strip-debug --export-if-defined=main --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=__main_argc_argv --export-if-defined=fflush --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_get_base --export=emscripten_stack_get_current --export=emscripten_stack_init --export=stackSave --export=stackRestore --export=stackAlloc --export=__errno_location --export=__get_temp_ret --export=__set_temp_ret --export=__wasm_call_ctors --export-table -z stack-size=65536 --initial-memory=16777216 --no-entry --max-memory=16777216 --stack-first
profiler:DEBUG: block "link" took 0.164 seconds
emcc:DEBUG: emscript
building:DEBUG: saving debug copy /tmp/emscripten_temp/emcc-0-base.wasm
extract_metadata:DEBUG: no start/stop symbols found for section: em_asm
extract_metadata:DEBUG: no start/stop symbols found for section: em_lib_deps
shared:DEBUG: successfully executed /opt/emsdk/upstream/bin/wasm-opt --version
shared:DEBUG: successfully executed /opt/emsdk/upstream/bin/wasm-emscripten-finalize --dyncalls-i64 --pass-arg=legalize-js-interface-exported-helpers test/x86/sse-emul-c.wasm -o test/x86/sse-emul-c.wasm --detect-features
building:DEBUG: saving debug copy /tmp/emscripten_temp/emcc-1-wasm-emscripten-finalize.wasm
emscripten:DEBUG: Metadata: {'asmConsts': {},
 'emJsFuncTypes': {},
 'emJsFuncs': {},
 'exports': ['__wasm_call_ctors',
             'fflush',
             'main',
             '__errno_location',
             'emscripten_stack_init',
             'emscripten_stack_get_free',
             'emscripten_stack_get_base',
             'emscripten_stack_get_end',
             'stackSave',
             'stackRestore',
             'stackAlloc',
             'emscripten_stack_get_current',
             'dynCall_jiji'],
 'features': ['--enable-mutable-globals', '--enable-sign-ext', '--enable-simd'],
 'imports': ['fd_close', 'fd_write', 'emscripten_memcpy_big', 'fd_seek'],
 'invokeFuncs': [],
 'jsDeps': [],
 'mainReadsParams': False,
 'namedGlobals': {}}
profiler:DEBUG: block "get_metadata" took 0.065 seconds
building:DEBUG: saving debug copy /tmp/emscripten_temp/emcc-2-post_finalize.wasm
emscripten:DEBUG: very limited syscalls (fd_close, fd_seek, fd_write) so disabling full filesystem support
emscripten:DEBUG: emscript: js compiler glue
shared:DEBUG: successfully executed /opt/emsdk/node/14.18.2_64bit/bin/node /opt/emsdk/upstream/emscripten/src/compiler.js /tmp/emscripten_temp/tmp41nb3d2d.json
emscripten:DEBUG:   emscript: glue took 0.1672956943511963 seconds
building:DEBUG: saving debug copy /tmp/emscripten_temp/emcc-3-original.js
profiler:DEBUG: block "emscript" took 0.269 seconds
emcc:DEBUG: using binaryen
shared:DEBUG: successfully executed /opt/emsdk/upstream/bin/llvm-objcopy test/x86/sse-emul-c.wasm test/x86/sse-emul-c.wasm --remove-section=.debug* --remove-section=producers
building:DEBUG: saving debug copy /tmp/emscripten_temp/emcc-4-strip.wasm
profiler:DEBUG: block "strip_producers" took 0.009 seconds
profiler:DEBUG: block "binaryen" took 0.009 seconds
root:DEBUG: move: /tmp/emscripten_temp/sse-emul-c.js -> test/x86/sse-emul-c.js
profiler:DEBUG: block "final emitting" took 0.002 seconds
profiler:DEBUG: block "post_link" took 0.280 seconds
emcc:DEBUG: total time: 0.53 seconds
profiler:DEBUG: block "main" took 0.531 seconds
not cleaning up temp files since in debug-save mode, see them in /tmp/emscripten_temp
tools.filelock:DEBUG: Attempting to release lock 139640757301776 on /tmp/emscripten_temp/emscripten.lock
tools.filelock:DEBUG: Lock 139640757301776 released on /tmp/emscripten_temp/emscripten.lock

Contents of /tmp/emscripten_temp/ regression.tar.gz

kripken commented 1 year ago

cc @tlively - was there some recent LLVM change to SIMD?

mr-c commented 1 year ago

FYI: this particular code path does not have any SIMD intrinsics, but many compilers might convert the vector operation to SIMD ops

tlively commented 1 year ago

I'm not aware of any relevant LLVM changes, but there must be a codegen regression. I'm working on reproducing and bisecting now.

tlively commented 1 year ago

@mr-c I'm having trouble reproducing the problem at all. Here's my attempt to extract what the test is doing:

#include <assert.h>
#include <math.h>
#include <stdio.h>

typedef long long __i64x2 __attribute__((__vector_size__(16), __aligned__(16)));
typedef double __f64x2 __attribute__((__vector_size__(16), __aligned__(16)));

__attribute__((__noinline__))
void test(__f64x2 a, __f64x2 b) {
  __i64x2 m = a < b;
  __f64x2 r = (__f64x2)((((__i64x2)a) & m) | (((__i64x2)b) & ~m));
  assert(m[0] == 0);
  assert(m[1] == 0);
  assert(r[0] == -760.30);
  assert(isnan(r[1]));
}

int main() {
  __f64x2 a = {NAN, 532.24};
  __f64x2 b = {-760.30, NAN};
  test(a, b);
  printf("ok\n");
}

I would have expected this to fail with tot, but it doesn't. @mr-c, do you think you could take a stab at extracting a smaller reproducer?

mr-c commented 1 year ago

@tlively Here is the a, b, and expected return value that cause the failure

https://github.com/simd-everywhere/simde/blob/7e70d02dda84bdfb1e97777bdb9622f3f29682b4/test/x86/sse.c#L3788

Some of the relevant typedefs:

typedef float simde_float32
typedef simde_float32 simde__m128 __attribute__((__aligned__((16)))) __attribute__((__vector_size__(16))) __attribute__((__may_alias__));
tlively commented 1 year ago

I'm not able to reproduce using those values either. Can you either provide a minimal reproducer or instructions for how to reproduce this with a checkout of SIMDE?

mr-c commented 1 year ago

@tlively

Thanks for your persistence. Here's a recipe

git checkout https://github.com/simd-everywhere/simde.git
cd simde
mkdir -p build                                                                  
meson --cross-file=docker/cross-files/emscripten.cross setup build
# you may need to edit emscripten.cross to use your local paths
meson test -C build x86/sse/emul/c x86/sse/emul/cpp wasm_simd128/pmax/emul/c wasm_simd128/pmax/emul/cpp
tlively commented 1 year ago

Thanks, I was able to reproduce the error with that recipe and I have a bisection running now. I still may need help getting a minimal reproducer for an upstream bug report, but let's see what the bad LLVM commit is first.

tlively commented 1 year ago

Looks like this was the bad commit: https://reviews.llvm.org/D143581. I've left a comment, but I don't think we'll need a minimal repro because the problem is fairly obvious.

mr-c commented 1 year ago

That's great news, thanks! Do you have enough information to create a test case to prevent a future regression?

sparker-arm commented 1 year ago

I had swapped the 'true' and 'false' result values in my patch... hopefully this is the fix...