-
Notifications
You must be signed in to change notification settings - Fork 15k
Closed
Labels
backend:loongarchquestionA question, not bug report. Check out https://llvm.org/docs/GettingInvolved.html instead!A question, not bug report. Check out https://llvm.org/docs/GettingInvolved.html instead!
Description
Testcase:
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "loongarch64-unknown-linux-musl"
@BS_CHECKSUM = global i64 0
@.str = constant [32 x i8] c"BackSmith Checksum = 0x%016llx\0A\00"
define i64 @func_14() {
entry:
callbr void asm sideeffect "", "!i"()
to label %asm.fallthrough [label %BS_LABEL_0]
asm.fallthrough: ; preds = %entry
br label %BS_LABEL_0
BS_LABEL_0: ; preds = %BS_LABEL_0, %asm.fallthrough, %entry
%l_1780.1 = phi i16 [ 0, %BS_LABEL_0 ], [ 0, %entry ], [ 1, %asm.fallthrough ]
%p_16.addr.0 = phi i32 [ 0, %BS_LABEL_0 ], [ 1, %entry ], [ 0, %asm.fallthrough ]
callbr void asm sideeffect "", "!i"()
to label %asm.fallthrough66 [label %BS_LABEL_0]
asm.fallthrough66: ; preds = %BS_LABEL_0
%0 = insertelement <4 x i32> zeroinitializer, i32 %p_16.addr.0, i64 0
%vecinit5 = insertelement <4 x i32> %0, i32 %p_16.addr.0, i64 1
%conv6 = zext <4 x i32> %vecinit5 to <4 x i64>
%vecext = extractelement <4 x i64> %conv6, i64 0
%tobool25.not = icmp eq i64 %vecext, 0
%cond = select i1 %tobool25.not, i64 1, i64 -1
%1 = insertelement <4 x i64> zeroinitializer, i64 %cond, i64 0
%vecext29 = extractelement <4 x i64> %conv6, i64 1
%tobool30.not = icmp eq i64 %vecext29, 0
%cond35 = select i1 %tobool30.not, i64 1, i64 -1
%vecinit61 = insertelement <4 x i64> %1, i64 %cond35, i64 1
%vecext62 = extractelement <4 x i64> %vecinit61, i16 %l_1780.1
store i64 %vecext62, ptr @BS_CHECKSUM, align 8
ret i64 0
}
define i32 @main() {
entry:
%call2 = call i64 @func_14()
%0 = load i64, ptr @BS_CHECKSUM, align 8
%call1 = call i32 (ptr, ...) @printf(ptr @.str, i64 %0)
ret i32 0
}Commands:
> clang --target=loongarch64-unknown-linux-musl --gcc-toolchain=/opt/loongarch64 --sysroot=/opt/loongarch64/loongarch64-unknown-linux-musl/sysroot -DARCH_LOONGARCH64 -static -O2 reduced.ll
> qemu-loongarch64 a.out
BackSmith Checksum = 0xffffffffffffffff> clang --target=loongarch64-unknown-linux-musl --gcc-toolchain=/opt/loongarch64 --sysroot=/opt/loongarch64/loongarch64-unknown-linux-musl/sysroot -DARCH_LOONGARCH64 -static -O0 reduced.ll
> qemu-loongarch64 a.out
BackSmith Checksum = 0x0000000000000001This testcase is run with llubi, and shows no UB. Let me know if you want unreduced C testcase.
Metadata
Metadata
Assignees
Labels
backend:loongarchquestionA question, not bug report. Check out https://llvm.org/docs/GettingInvolved.html instead!A question, not bug report. Check out https://llvm.org/docs/GettingInvolved.html instead!