The FFI case at -O0 too, where the allocas are still there
Every other program in the table is run twice for the reason stated next to them: at -O2 mem2reg launders a sloppy alloca, so -O0 is what tests the IR actually emitted. The raylib case had been the exception, and it is the worst one to exempt — five of its calls hand C the address of a local struct, which is exactly the alloca that comment is about. It passes as it stands. That is the point: the case that only ever ran optimised was a coincidence away from hiding something.
This commit is contained in:
parent
01603843c0
commit
16f1605580
@ -159,13 +159,21 @@ let () =
|
||||
symmetric. What the last case cannot pin, because nothing raylib
|
||||
computes without a GL context reads them, is width, height and mipmaps
|
||||
against each other. *)
|
||||
if Sys.command "ldconfig -p 2>/dev/null | grep -q libraylib" = 0 then
|
||||
outputs "raylib ffi, headless" "programs/raylib-ffi.flan"
|
||||
"17\n34\n51\n68\n\
|
||||
6\n1\n4\n3\n\
|
||||
7\n13\n17\n2\n4\n3.5\n7.25\n11.5\n13.75\n\
|
||||
1\n1\n1\n1\n7\n\
|
||||
7\n0\n17\n2\n4\n"
|
||||
let raylib_out =
|
||||
"17\n34\n51\n68\n\
|
||||
6\n1\n4\n3\n\
|
||||
7\n13\n17\n2\n4\n3.5\n7.25\n11.5\n13.75\n\
|
||||
1\n1\n1\n1\n7\n\
|
||||
7\n0\n17\n2\n4\n"
|
||||
in
|
||||
if Sys.command "ldconfig -p 2>/dev/null | grep -q libraylib" = 0 then begin
|
||||
outputs "raylib ffi, headless" "programs/raylib-ffi.flan" raylib_out;
|
||||
(* And at -O0, for the reason the rest of the table is: every struct
|
||||
here crosses as (addr v) on a local, which is the alloca mem2reg
|
||||
would launder before anyone noticed it was wrong. *)
|
||||
outputs ~opt:"-O0" "raylib ffi, headless, -O0" "programs/raylib-ffi.flan"
|
||||
raylib_out
|
||||
end
|
||||
else
|
||||
print_endline "acceptance: skipping the raylib FFI case (no libraylib)";
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user