Open sjalander opened 1 year ago
Slightly simplified example:
void attribute((noreturn)) fail () {}
typedef struct access_check {} check_gc;
typedef struct access { check_gc* access_checks; } access;
typedef struct VEC_access_base { unsigned num; access vec; } base;
access base_last (base vec) { (void)((vec && vec->num) ? 0 : (fail (), 0)); return &vec->vec; }
typedef struct gc { int base; } gc;
gc *stack;
void pop (void) { base_last(stack ? &stack->base : 0); }
Assert: jlm-opt: ./jlm/llvm/frontend/LlvmConversionContext.hpp:51: jlm::llvm::basic_block jlm::llvm::basic_block_map::get(const ::llvm::BasicBlock ) const: Assertion `has(bb)' failed.
Back trace:
at ./jlm/llvm/frontend/LlvmConversionContext.hpp:51
at ./jlm/llvm/frontend/LlvmConversionContext.hpp:162
ctx=...) at jlm/llvm/frontend/LlvmModuleConversion.cpp:52
jlc -w 20071120-1.c
Segmentation fault (core dumped)
20071120-1.zip