[llvm-bugs] [Bug 47454] New: regression with passing f16 as parameters in arm-linux

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Sep 7 14:15:11 PDT 2020


https://bugs.llvm.org/show_bug.cgi?id=47454

            Bug ID: 47454
           Summary: regression with passing f16 as parameters in arm-linux
           Product: new-bugs
           Version: 11.0
          Hardware: All
                OS: All
            Status: NEW
          Severity: release blocker
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: andrew at ziglang.org
                CC: htmldeveloper at gmail.com, llvm-bugs at lists.llvm.org

This is not a duplicate of #47001 - this bug report is against the latest
release/11.x branch which is currently
7d4d7a7bf1e8d99b80da66afde7df81b05f77538.

Zig code:

const std = @import("std");

pub fn main() void {
    const result = std.fmt.parseFloat(f16, "1e+700") catch unreachable;
    expectEqual(result, std.math.inf(f16));
}

fn expectEqual(a: f16, b: f16) void {
    if (a != b)
        std.process.exit(1);
}

pub fn panic(msg: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
    std.process.exit(1);
}


With LLVM 10:

$ ./zig build-exe testarmf16.zig -target arm-linux-none
$ qemu-arm ./testarmf16
$ echo $?
0

With LLVM 11:

$ ./zig build-exe testarmf16.zig -target arm-linux-none
$ qemu-arm ./testarmf16
$ echo $?
1

To reproduce without Zig, use the attached files (yes those cpu features flags
are annoying and I would love if clang had a less verbose way to pass this
information):

$ ~/local/llvm10-release/bin/clang-10 -o test testarmf16.ll  -nostartfiles
-nodefaultlibs -target armv8-unknown-linux-unknown compiler_rt_armv8.ll
c_armv8.ll -fuse-ld=$HOME/local/llvm10-release/bin/ld.lld -static -Xclang
-target-feature -Xclang -32bit -Xclang -target-feature -Xclang -8msecext
-Xclang -target-feature -Xclang -a76 -Xclang -target-feature -Xclang +aclass
-Xclang -target-feature -Xclang -acquire-release -Xclang -target-feature
-Xclang -aes -Xclang -target-feature -Xclang -avoid-movs-shop -Xclang
-target-feature -Xclang -avoid-partial-cpsr -Xclang -target-feature -Xclang
-bf16 -Xclang -target-feature -Xclang -cde -Xclang -target-feature -Xclang
-cdecp0 -Xclang -target-feature -Xclang -cdecp1 -Xclang -target-feature -Xclang
-cdecp2 -Xclang -target-feature -Xclang -cdecp3 -Xclang -target-feature -Xclang
-cdecp4 -Xclang -target-feature -Xclang -cdecp5 -Xclang -target-feature -Xclang
-cdecp6 -Xclang -target-feature -Xclang -cdecp7 -Xclang -target-feature -Xclang
-cheap-predicable-cpsr -Xclang -target-feature -Xclang -crc -Xclang
-target-feature -Xclang -crypto -Xclang -target-feature -Xclang +d32 -Xclang
-target-feature -Xclang +db -Xclang -target-feature -Xclang -dfb -Xclang
-target-feature -Xclang -disable-postra-scheduler -Xclang -target-feature
-Xclang -dont-widen-vmovs -Xclang -target-feature -Xclang -dotprod -Xclang
-target-feature -Xclang +dsp -Xclang -target-feature -Xclang -execute-only
-Xclang -target-feature -Xclang -expand-fp-mlx -Xclang -target-feature -Xclang
-exynos -Xclang -target-feature -Xclang -fp16 -Xclang -target-feature -Xclang
-fp16fml -Xclang -target-feature -Xclang +fp64 -Xclang -target-feature -Xclang
-fp-armv8 -Xclang -target-feature -Xclang -fp-armv8d16 -Xclang -target-feature
-Xclang -fp-armv8d16sp -Xclang -target-feature -Xclang -fp-armv8sp -Xclang
-target-feature -Xclang -fpao -Xclang -target-feature -Xclang +fpregs -Xclang
-target-feature -Xclang -fpregs16 -Xclang -target-feature -Xclang +fpregs64
-Xclang -target-feature -Xclang -fullfp16 -Xclang -target-feature -Xclang
-fuse-aes -Xclang -target-feature -Xclang -fuse-literals -Xclang
-target-feature -Xclang +v4t -Xclang -target-feature -Xclang +v5t -Xclang
-target-feature -Xclang +v5te -Xclang -target-feature -Xclang +v6 -Xclang
-target-feature -Xclang +v6k -Xclang -target-feature -Xclang +v6m -Xclang
-target-feature -Xclang +v6t2 -Xclang -target-feature -Xclang +v7 -Xclang
-target-feature -Xclang +v7clrex -Xclang -target-feature -Xclang -v8.1a -Xclang
-target-feature -Xclang -v8.1m.main -Xclang -target-feature -Xclang -v8.2a
-Xclang -target-feature -Xclang -v8.3a -Xclang -target-feature -Xclang -v8.4a
-Xclang -target-feature -Xclang -v8.5a -Xclang -target-feature -Xclang -v8.6a
-Xclang -target-feature -Xclang -v8 -Xclang -target-feature -Xclang +v8m
-Xclang -target-feature -Xclang -v8m.main -Xclang -target-feature -Xclang
-hwdiv -Xclang -target-feature -Xclang -hwdiv-arm -Xclang -target-feature
-Xclang -i8mm -Xclang -target-feature -Xclang -iwmmxt -Xclang -target-feature
-Xclang -iwmmxt2 -Xclang -target-feature -Xclang -lob -Xclang -target-feature
-Xclang -long-calls -Xclang -target-feature -Xclang -loop-align -Xclang
-target-feature -Xclang -m3 -Xclang -target-feature -Xclang -mclass -Xclang
-target-feature -Xclang -mp -Xclang -target-feature -Xclang -muxed-units
-Xclang -target-feature -Xclang -mve -Xclang -target-feature -Xclang -mve.fp
-Xclang -target-feature -Xclang -mve1beat -Xclang -target-feature -Xclang
-mve2beat -Xclang -target-feature -Xclang -mve4beat -Xclang -target-feature
-Xclang -nacl-trap -Xclang -target-feature -Xclang +neon -Xclang
-target-feature -Xclang -neon-fpmovs -Xclang -target-feature -Xclang -neonfp
-Xclang -target-feature -Xclang -no-branch-predictor -Xclang -target-feature
-Xclang -no-movt -Xclang -target-feature -Xclang -no-neg-immediates -Xclang
-target-feature -Xclang -noarm -Xclang -target-feature -Xclang
-nonpipelined-vfp -Xclang -target-feature -Xclang +perfmon -Xclang
-target-feature -Xclang -prefer-ishst -Xclang -target-feature -Xclang
-prefer-vmovsr -Xclang -target-feature -Xclang -prof-unpr -Xclang
-target-feature -Xclang -r4 -Xclang -target-feature -Xclang -ras -Xclang
-target-feature -Xclang -rclass -Xclang -target-feature -Xclang -read-tp-hard
-Xclang -target-feature -Xclang -reserve-r9 -Xclang -target-feature -Xclang
-ret-addr-stack -Xclang -target-feature -Xclang -sb -Xclang -target-feature
-Xclang -sha2 -Xclang -target-feature -Xclang -slow-fp-brcc -Xclang
-target-feature -Xclang -slow-load-D-subreg -Xclang -target-feature -Xclang
-slow-odd-reg -Xclang -target-feature -Xclang -slow-vdup32 -Xclang
-target-feature -Xclang -slow-vgetlni32 -Xclang -target-feature -Xclang
-slowfpvfmx -Xclang -target-feature -Xclang -slowfpvmlx -Xclang -target-feature
-Xclang -soft-float -Xclang -target-feature -Xclang -splat-vfp-neon -Xclang
-target-feature -Xclang -strict-align -Xclang -target-feature -Xclang -swift
-Xclang -target-feature -Xclang +thumb2 -Xclang -target-feature -Xclang
-thumb-mode -Xclang -target-feature -Xclang -trustzone -Xclang -target-feature
-Xclang -use-misched -Xclang -target-feature -Xclang -armv2 -Xclang
-target-feature -Xclang -armv2a -Xclang -target-feature -Xclang -armv3 -Xclang
-target-feature -Xclang -armv3m -Xclang -target-feature -Xclang -armv4 -Xclang
-target-feature -Xclang -armv4t -Xclang -target-feature -Xclang -armv5t -Xclang
-target-feature -Xclang -armv5te -Xclang -target-feature -Xclang -armv5tej
-Xclang -target-feature -Xclang -armv6 -Xclang -target-feature -Xclang -armv6j
-Xclang -target-feature -Xclang -armv6k -Xclang -target-feature -Xclang
-armv6kz -Xclang -target-feature -Xclang -armv6-m -Xclang -target-feature
-Xclang -armv6s-m -Xclang -target-feature -Xclang -armv6t2 -Xclang
-target-feature -Xclang +armv7-a -Xclang -target-feature -Xclang -armv7e-m
-Xclang -target-feature -Xclang -armv7k -Xclang -target-feature -Xclang
-armv7-m -Xclang -target-feature -Xclang -armv7-r -Xclang -target-feature
-Xclang -armv7s -Xclang -target-feature -Xclang -armv7ve -Xclang
-target-feature -Xclang -armv8-a -Xclang -target-feature -Xclang -armv8-m.base
-Xclang -target-feature -Xclang -armv8-m.main -Xclang -target-feature -Xclang
-armv8-r -Xclang -target-feature -Xclang -armv8.1-a -Xclang -target-feature
-Xclang -armv8.1-m.main -Xclang -target-feature -Xclang -armv8.2-a -Xclang
-target-feature -Xclang -armv8.3-a -Xclang -target-feature -Xclang -armv8.4-a
-Xclang -target-feature -Xclang -armv8.5-a -Xclang -target-feature -Xclang
-armv8.6-a -Xclang -target-feature -Xclang +vfp2 -Xclang -target-feature
-Xclang +vfp2sp -Xclang -target-feature -Xclang +vfp3 -Xclang -target-feature
-Xclang +vfp3d16 -Xclang -target-feature -Xclang +vfp3d16sp -Xclang
-target-feature -Xclang +vfp3sp -Xclang -target-feature -Xclang -vfp4 -Xclang
-target-feature -Xclang -vfp4d16 -Xclang -target-feature -Xclang -vfp4d16sp
-Xclang -target-feature -Xclang -vfp4sp -Xclang -target-feature -Xclang
-virtualization -Xclang -target-feature -Xclang -vldn-align -Xclang
-target-feature -Xclang -vmlx-forwarding -Xclang -target-feature -Xclang
-vmlx-hazards -Xclang -target-feature -Xclang -wide-stride-vfp -Xclang
-target-feature -Xclang -xscale -Xclang -target-feature -Xclang -zcz
$ qemu-arm ./test
$ echo $?
0

$ ~/local/llvm11-release/bin/clang-11 -o test testarmf16.ll  -nostartfiles
-nodefaultlibs -target armv8-unknown-linux-unknown compiler_rt_armv8.ll
c_armv8.ll -fuse-ld=$HOME/local/llvm11-release/bin/ld.lld -static -Xclang
-target-feature -Xclang -32bit -Xclang -target-feature -Xclang -8msecext
-Xclang -target-feature -Xclang -a76 -Xclang -target-feature -Xclang +aclass
-Xclang -target-feature -Xclang -acquire-release -Xclang -target-feature
-Xclang -aes -Xclang -target-feature -Xclang -avoid-movs-shop -Xclang
-target-feature -Xclang -avoid-partial-cpsr -Xclang -target-feature -Xclang
-bf16 -Xclang -target-feature -Xclang -cde -Xclang -target-feature -Xclang
-cdecp0 -Xclang -target-feature -Xclang -cdecp1 -Xclang -target-feature -Xclang
-cdecp2 -Xclang -target-feature -Xclang -cdecp3 -Xclang -target-feature -Xclang
-cdecp4 -Xclang -target-feature -Xclang -cdecp5 -Xclang -target-feature -Xclang
-cdecp6 -Xclang -target-feature -Xclang -cdecp7 -Xclang -target-feature -Xclang
-cheap-predicable-cpsr -Xclang -target-feature -Xclang -crc -Xclang
-target-feature -Xclang -crypto -Xclang -target-feature -Xclang +d32 -Xclang
-target-feature -Xclang +db -Xclang -target-feature -Xclang -dfb -Xclang
-target-feature -Xclang -disable-postra-scheduler -Xclang -target-feature
-Xclang -dont-widen-vmovs -Xclang -target-feature -Xclang -dotprod -Xclang
-target-feature -Xclang +dsp -Xclang -target-feature -Xclang -execute-only
-Xclang -target-feature -Xclang -expand-fp-mlx -Xclang -target-feature -Xclang
-exynos -Xclang -target-feature -Xclang -fp16 -Xclang -target-feature -Xclang
-fp16fml -Xclang -target-feature -Xclang +fp64 -Xclang -target-feature -Xclang
-fp-armv8 -Xclang -target-feature -Xclang -fp-armv8d16 -Xclang -target-feature
-Xclang -fp-armv8d16sp -Xclang -target-feature -Xclang -fp-armv8sp -Xclang
-target-feature -Xclang -fpao -Xclang -target-feature -Xclang +fpregs -Xclang
-target-feature -Xclang -fpregs16 -Xclang -target-feature -Xclang +fpregs64
-Xclang -target-feature -Xclang -fullfp16 -Xclang -target-feature -Xclang
-fuse-aes -Xclang -target-feature -Xclang -fuse-literals -Xclang
-target-feature -Xclang +v4t -Xclang -target-feature -Xclang +v5t -Xclang
-target-feature -Xclang +v5te -Xclang -target-feature -Xclang +v6 -Xclang
-target-feature -Xclang +v6k -Xclang -target-feature -Xclang +v6m -Xclang
-target-feature -Xclang +v6t2 -Xclang -target-feature -Xclang +v7 -Xclang
-target-feature -Xclang +v7clrex -Xclang -target-feature -Xclang -v8.1a -Xclang
-target-feature -Xclang -v8.1m.main -Xclang -target-feature -Xclang -v8.2a
-Xclang -target-feature -Xclang -v8.3a -Xclang -target-feature -Xclang -v8.4a
-Xclang -target-feature -Xclang -v8.5a -Xclang -target-feature -Xclang -v8.6a
-Xclang -target-feature -Xclang -v8 -Xclang -target-feature -Xclang +v8m
-Xclang -target-feature -Xclang -v8m.main -Xclang -target-feature -Xclang
-hwdiv -Xclang -target-feature -Xclang -hwdiv-arm -Xclang -target-feature
-Xclang -i8mm -Xclang -target-feature -Xclang -iwmmxt -Xclang -target-feature
-Xclang -iwmmxt2 -Xclang -target-feature -Xclang -lob -Xclang -target-feature
-Xclang -long-calls -Xclang -target-feature -Xclang -loop-align -Xclang
-target-feature -Xclang -m3 -Xclang -target-feature -Xclang -mclass -Xclang
-target-feature -Xclang -mp -Xclang -target-feature -Xclang -muxed-units
-Xclang -target-feature -Xclang -mve -Xclang -target-feature -Xclang -mve.fp
-Xclang -target-feature -Xclang -mve1beat -Xclang -target-feature -Xclang
-mve2beat -Xclang -target-feature -Xclang -mve4beat -Xclang -target-feature
-Xclang -nacl-trap -Xclang -target-feature -Xclang +neon -Xclang
-target-feature -Xclang -neon-fpmovs -Xclang -target-feature -Xclang -neonfp
-Xclang -target-feature -Xclang -no-branch-predictor -Xclang -target-feature
-Xclang -no-movt -Xclang -target-feature -Xclang -no-neg-immediates -Xclang
-target-feature -Xclang -noarm -Xclang -target-feature -Xclang
-nonpipelined-vfp -Xclang -target-feature -Xclang +perfmon -Xclang
-target-feature -Xclang -prefer-ishst -Xclang -target-feature -Xclang
-prefer-vmovsr -Xclang -target-feature -Xclang -prof-unpr -Xclang
-target-feature -Xclang -r4 -Xclang -target-feature -Xclang -ras -Xclang
-target-feature -Xclang -rclass -Xclang -target-feature -Xclang -read-tp-hard
-Xclang -target-feature -Xclang -reserve-r9 -Xclang -target-feature -Xclang
-ret-addr-stack -Xclang -target-feature -Xclang -sb -Xclang -target-feature
-Xclang -sha2 -Xclang -target-feature -Xclang -slow-fp-brcc -Xclang
-target-feature -Xclang -slow-load-D-subreg -Xclang -target-feature -Xclang
-slow-odd-reg -Xclang -target-feature -Xclang -slow-vdup32 -Xclang
-target-feature -Xclang -slow-vgetlni32 -Xclang -target-feature -Xclang
-slowfpvfmx -Xclang -target-feature -Xclang -slowfpvmlx -Xclang -target-feature
-Xclang -soft-float -Xclang -target-feature -Xclang -splat-vfp-neon -Xclang
-target-feature -Xclang -strict-align -Xclang -target-feature -Xclang -swift
-Xclang -target-feature -Xclang +thumb2 -Xclang -target-feature -Xclang
-thumb-mode -Xclang -target-feature -Xclang -trustzone -Xclang -target-feature
-Xclang -use-misched -Xclang -target-feature -Xclang -armv2 -Xclang
-target-feature -Xclang -armv2a -Xclang -target-feature -Xclang -armv3 -Xclang
-target-feature -Xclang -armv3m -Xclang -target-feature -Xclang -armv4 -Xclang
-target-feature -Xclang -armv4t -Xclang -target-feature -Xclang -armv5t -Xclang
-target-feature -Xclang -armv5te -Xclang -target-feature -Xclang -armv5tej
-Xclang -target-feature -Xclang -armv6 -Xclang -target-feature -Xclang -armv6j
-Xclang -target-feature -Xclang -armv6k -Xclang -target-feature -Xclang
-armv6kz -Xclang -target-feature -Xclang -armv6-m -Xclang -target-feature
-Xclang -armv6s-m -Xclang -target-feature -Xclang -armv6t2 -Xclang
-target-feature -Xclang +armv7-a -Xclang -target-feature -Xclang -armv7e-m
-Xclang -target-feature -Xclang -armv7k -Xclang -target-feature -Xclang
-armv7-m -Xclang -target-feature -Xclang -armv7-r -Xclang -target-feature
-Xclang -armv7s -Xclang -target-feature -Xclang -armv7ve -Xclang
-target-feature -Xclang -armv8-a -Xclang -target-feature -Xclang -armv8-m.base
-Xclang -target-feature -Xclang -armv8-m.main -Xclang -target-feature -Xclang
-armv8-r -Xclang -target-feature -Xclang -armv8.1-a -Xclang -target-feature
-Xclang -armv8.1-m.main -Xclang -target-feature -Xclang -armv8.2-a -Xclang
-target-feature -Xclang -armv8.3-a -Xclang -target-feature -Xclang -armv8.4-a
-Xclang -target-feature -Xclang -armv8.5-a -Xclang -target-feature -Xclang
-armv8.6-a -Xclang -target-feature -Xclang +vfp2 -Xclang -target-feature
-Xclang +vfp2sp -Xclang -target-feature -Xclang +vfp3 -Xclang -target-feature
-Xclang +vfp3d16 -Xclang -target-feature -Xclang +vfp3d16sp -Xclang
-target-feature -Xclang +vfp3sp -Xclang -target-feature -Xclang -vfp4 -Xclang
-target-feature -Xclang -vfp4d16 -Xclang -target-feature -Xclang -vfp4d16sp
-Xclang -target-feature -Xclang -vfp4sp -Xclang -target-feature -Xclang
-virtualization -Xclang -target-feature -Xclang -vldn-align -Xclang
-target-feature -Xclang -vmlx-forwarding -Xclang -target-feature -Xclang
-vmlx-hazards -Xclang -target-feature -Xclang -wide-stride-vfp -Xclang
-target-feature -Xclang -xscale -Xclang -target-feature -Xclang -zcz
$ qemu-arm ./test
$ echo $?
1

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20200907/d550ca23/attachment-0001.html>


More information about the llvm-bugs mailing list