Closed PeiMu closed 1 year ago
A bug is found after the pass, constant substitution. The test case is e_exp.c with range bmx055xAcceleration == [-134.500000 mjf, -133.800000 mjf ],.
e_exp.c
range bmx055xAcceleration == [-134.500000 mjf, -133.800000 mjf ],
IR
%6 = load i32, i32* %5, align 4, !dbg !54 call void @llvm.dbg.value(metadata i32 %6, metadata !55, metadata !DIExpression()), !dbg !57 %7 = lshr i32 %6, 31, !dbg !58 call void @llvm.dbg.value(metadata i32 %7, metadata !59, metadata !DIExpression()), !dbg !57 call void @llvm.dbg.value(metadata i32 %6, metadata !55, metadata !DIExpression(DW_OP_constu, 2147483647, DW_OP_and, DW_OP_stack_value)), !dbg !57 %8 = load double, double* %2, align 8, !dbg !60 %9 = fmul double 0x3FF71547652B82FE, %8, !dbg !65 %10 = sext i32 %7 to i64, !dbg !66 %11 = getelementptr inbounds [2 x double], [2 x double]* @halF, i64 0, i64 %10, !dbg !66
Change to
%6 = load i32, i32* %5, align 4, !dbg !54 call void @llvm.dbg.value(metadata i32 %6, metadata !55, metadata !DIExpression()), !dbg !57 call void @llvm.dbg.value(metadata i32 -1, metadata !58, metadata !DIExpression()), !dbg !57 call void @llvm.dbg.value(metadata i32 %6, metadata !55, metadata !DIExpression(DW_OP_constu, 2147483647, DW_OP_and, DW_OP_stack_value)), !dbg !57 %7 = load double, double* %2, align 8, !dbg !59 %8 = fmul double 0x3FF71547652B82FE, %7, !dbg !64 %9 = getelementptr inbounds [2 x double], [2 x double]* @halF, i64 0, i64 -1, !dbg !65
This might also be a case to prove the usage of constant substitution.
Fixed in #634
A bug is found after the pass, constant substitution. The test case is
e_exp.c
withrange bmx055xAcceleration == [-134.500000 mjf, -133.800000 mjf ],
.IR
Change to