<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - regression with passing f16 as parameters in arm-linux"
   href="https://bugs.llvm.org/show_bug.cgi?id=47454">47454</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>regression with passing f16 as parameters in arm-linux
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>new-bugs
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>11.0
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>release blocker
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>new bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>andrew@ziglang.org
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>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</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>