-
-
Save nikic/bd117601aedea5f03b5750571d07624e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = '../tools/fpcmp.c' | |
source_filename = "../tools/fpcmp.c" | |
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, %struct._IO_codecvt*, %struct._IO_wide_data*, %struct._IO_FILE*, i8*, i64, i32, [20 x i8] } | |
%struct._IO_marker = type opaque | |
%struct._IO_codecvt = type opaque | |
%struct._IO_wide_data = type opaque | |
@.str = private unnamed_addr constant [3 x i8] c"rb\00", align 1 | |
@stderr = external dso_local global %struct._IO_FILE*, align 8 | |
@.str.1 = private unnamed_addr constant [32 x i8] c"%s: error: unable to open '%s'\0A\00", align 1 | |
@g_program = dso_local global i8* null, align 8, !dbg !0 | |
@.str.2 = private unnamed_addr constant [32 x i8] c"%s: error: unable to seek '%s'\0A\00", align 1 | |
@.str.3 = private unnamed_addr constant [47 x i8] c"%s: error: unable to allocate buffer for '%s'\0A\00", align 1 | |
@.str.4 = private unnamed_addr constant [41 x i8] c"%s: error: unable to read data for '%s'\0A\00", align 1 | |
@.str.5 = private unnamed_addr constant [74 x i8] c"%s: FP Comparison failed, not a numeric difference between '%c' and '%c'\0A\00", align 1 | |
@.str.6 = private unnamed_addr constant [62 x i8] c"%s: FP Comparison failed, unexpected end of one of the files\0A\00", align 1 | |
@.str.7 = private unnamed_addr constant [57 x i8] c"usage: %s [-a VALUE] [-r VALUE] [-i] <path-A> <path-B>\0A\0A\00", align 1 | |
@.str.8 = private unnamed_addr constant [58 x i8] c"Compare two files using absolute and relative tolerances\0A\00", align 1 | |
@.str.9 = private unnamed_addr constant [50 x i8] c"when comparing differences between two character\0A\00", align 1 | |
@.str.10 = private unnamed_addr constant [29 x i8] c"which could be real numbers\0A\00", align 1 | |
@.str.11 = private unnamed_addr constant [46 x i8] c"The -i switch ignores whitespace differences\0A\00", align 1 | |
@.str.12 = private unnamed_addr constant [31 x i8] c"error: invalid argument '%s'\0A\0A\00", align 1 | |
@.str.13 = private unnamed_addr constant [34 x i8] c"error: missing argument to '%s'\0A\0A\00", align 1 | |
@.str.14 = private unnamed_addr constant [40 x i8] c"error: invalid argument to '%s': '%s'\0A\0A\00", align 1 | |
@.str.15 = private unnamed_addr constant [37 x i8] c"error: invalid number of arguments\0A\0A\00", align 1 | |
@.str.16 = private unnamed_addr constant [87 x i8] c"%s: Compared: %e and %e\0Aabs. diff = %e rel.diff = %e\0AOut of tolerance: rel/abs: %e/%e\0A\00", align 1 | |
; Function Attrs: nounwind uwtable | |
define dso_local i8* @load_file(i8* %path, i64* %size_out) #0 !dbg !37 { | |
entry: | |
%retval = alloca i8*, align 8 | |
%path.addr = alloca i8*, align 8 | |
%size_out.addr = alloca i64*, align 8 | |
%fp = alloca %struct._IO_FILE*, align 8 | |
%size = alloca i64, align 8 | |
%data = alloca i8*, align 8 | |
%cleanup.dest.slot = alloca i32, align 4 | |
store i8* %path, i8** %path.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i8** %path.addr, metadata !43, metadata !DIExpression()), !dbg !110 | |
store i64* %size_out, i64** %size_out.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i64** %size_out.addr, metadata !44, metadata !DIExpression()), !dbg !111 | |
%0 = bitcast %struct._IO_FILE** %fp to i8*, !dbg !112 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %0) #9, !dbg !112 | |
call void @llvm.dbg.declare(metadata %struct._IO_FILE** %fp, metadata !45, metadata !DIExpression()), !dbg !113 | |
%1 = bitcast i64* %size to i8*, !dbg !114 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %1) #9, !dbg !114 | |
call void @llvm.dbg.declare(metadata i64* %size, metadata !104, metadata !DIExpression()), !dbg !115 | |
%2 = bitcast i8** %data to i8*, !dbg !116 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %2) #9, !dbg !116 | |
call void @llvm.dbg.declare(metadata i8** %data, metadata !105, metadata !DIExpression()), !dbg !117 | |
%3 = load i8*, i8** %path.addr, align 8, !dbg !118, !tbaa !106 | |
%call = call %struct._IO_FILE* @fopen(i8* %3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0)), !dbg !119 | |
store %struct._IO_FILE* %call, %struct._IO_FILE** %fp, align 8, !dbg !120, !tbaa !106 | |
%4 = load %struct._IO_FILE*, %struct._IO_FILE** %fp, align 8, !dbg !121, !tbaa !106 | |
%tobool = icmp ne %struct._IO_FILE* %4, null, !dbg !121 | |
br i1 %tobool, label %if.end, label %if.then, !dbg !123 | |
if.then: ; preds = %entry | |
%5 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !124, !tbaa !106 | |
%6 = load i8*, i8** @g_program, align 8, !dbg !126, !tbaa !106 | |
%7 = load i8*, i8** %path.addr, align 8, !dbg !127, !tbaa !106 | |
%call1 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %5, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i8* %6, i8* %7), !dbg !128 | |
call void @exit(i32 2) #10, !dbg !129 | |
unreachable, !dbg !129 | |
if.end: ; preds = %entry | |
%8 = load %struct._IO_FILE*, %struct._IO_FILE** %fp, align 8, !dbg !130, !tbaa !106 | |
%call2 = call i32 @fseek(%struct._IO_FILE* %8, i64 0, i32 2), !dbg !132 | |
%cmp = icmp eq i32 %call2, -1, !dbg !133 | |
br i1 %cmp, label %if.then3, label %if.end5, !dbg !134 | |
if.then3: ; preds = %if.end | |
%9 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !135, !tbaa !106 | |
%10 = load i8*, i8** @g_program, align 8, !dbg !137, !tbaa !106 | |
%11 = load i8*, i8** %path.addr, align 8, !dbg !138, !tbaa !106 | |
%call4 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %9, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.2, i64 0, i64 0), i8* %10, i8* %11), !dbg !139 | |
call void @exit(i32 2) #10, !dbg !140 | |
unreachable, !dbg !140 | |
if.end5: ; preds = %if.end | |
%12 = load %struct._IO_FILE*, %struct._IO_FILE** %fp, align 8, !dbg !141, !tbaa !106 | |
%call6 = call i64 @ftell(%struct._IO_FILE* %12), !dbg !142 | |
store i64 %call6, i64* %size, align 8, !dbg !143, !tbaa !144 | |
%13 = load %struct._IO_FILE*, %struct._IO_FILE** %fp, align 8, !dbg !146, !tbaa !106 | |
%call7 = call i32 @fseek(%struct._IO_FILE* %13, i64 0, i32 0), !dbg !148 | |
%cmp8 = icmp eq i32 %call7, -1, !dbg !149 | |
br i1 %cmp8, label %if.then9, label %if.end11, !dbg !150 | |
if.then9: ; preds = %if.end5 | |
%14 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !151, !tbaa !106 | |
%15 = load i8*, i8** @g_program, align 8, !dbg !153, !tbaa !106 | |
%16 = load i8*, i8** %path.addr, align 8, !dbg !154, !tbaa !106 | |
%call10 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %14, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.2, i64 0, i64 0), i8* %15, i8* %16), !dbg !155 | |
call void @exit(i32 2) #10, !dbg !156 | |
unreachable, !dbg !156 | |
if.end11: ; preds = %if.end5 | |
%17 = load i64, i64* %size, align 8, !dbg !157, !tbaa !144 | |
%cmp12 = icmp eq i64 %17, 0, !dbg !159 | |
br i1 %cmp12, label %if.then13, label %if.end14, !dbg !160 | |
if.then13: ; preds = %if.end11 | |
%18 = load i64*, i64** %size_out.addr, align 8, !dbg !161, !tbaa !106 | |
store i64 0, i64* %18, align 8, !dbg !163, !tbaa !144 | |
store i8* null, i8** %retval, align 8, !dbg !164 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup, !dbg !164 | |
if.end14: ; preds = %if.end11 | |
%19 = load i64, i64* %size, align 8, !dbg !165, !tbaa !144 | |
%add = add nsw i64 %19, 1, !dbg !166 | |
%call15 = call noalias align 16 i8* @malloc(i64 %add) #9, !dbg !167 | |
store i8* %call15, i8** %data, align 8, !dbg !168, !tbaa !106 | |
%20 = load i8*, i8** %data, align 8, !dbg !169, !tbaa !106 | |
%tobool16 = icmp ne i8* %20, null, !dbg !169 | |
br i1 %tobool16, label %if.end19, label %if.then17, !dbg !172 | |
if.then17: ; preds = %if.end14 | |
%21 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !173, !tbaa !106 | |
%22 = load i8*, i8** @g_program, align 8, !dbg !175, !tbaa !106 | |
%23 = load i8*, i8** %path.addr, align 8, !dbg !176, !tbaa !106 | |
%call18 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %21, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.3, i64 0, i64 0), i8* %22, i8* %23), !dbg !177 | |
call void @exit(i32 2) #10, !dbg !178 | |
unreachable, !dbg !178 | |
if.end19: ; preds = %if.end14 | |
%24 = load i8*, i8** %data, align 8, !dbg !179, !tbaa !106 | |
%25 = load i64, i64* %size, align 8, !dbg !180, !tbaa !144 | |
%arrayidx = getelementptr inbounds i8, i8* %24, i64 %25, !dbg !179 | |
store i8 0, i8* %arrayidx, align 1, !dbg !181, !tbaa !182 | |
%26 = load i8*, i8** %data, align 8, !dbg !183, !tbaa !106 | |
%27 = load i64, i64* %size, align 8, !dbg !185, !tbaa !144 | |
%28 = load %struct._IO_FILE*, %struct._IO_FILE** %fp, align 8, !dbg !186, !tbaa !106 | |
%call20 = call i64 @fread(i8* %26, i64 %27, i64 1, %struct._IO_FILE* %28), !dbg !187 | |
%cmp21 = icmp ne i64 %call20, 1, !dbg !188 | |
br i1 %cmp21, label %if.then22, label %if.end24, !dbg !189 | |
if.then22: ; preds = %if.end19 | |
%29 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !190, !tbaa !106 | |
%30 = load i8*, i8** @g_program, align 8, !dbg !192, !tbaa !106 | |
%31 = load i8*, i8** %path.addr, align 8, !dbg !193, !tbaa !106 | |
%call23 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.4, i64 0, i64 0), i8* %30, i8* %31), !dbg !194 | |
call void @exit(i32 2) #10, !dbg !195 | |
unreachable, !dbg !195 | |
if.end24: ; preds = %if.end19 | |
%32 = load %struct._IO_FILE*, %struct._IO_FILE** %fp, align 8, !dbg !196, !tbaa !106 | |
%call25 = call i32 @fclose(%struct._IO_FILE* %32), !dbg !197 | |
%33 = load i64, i64* %size, align 8, !dbg !198, !tbaa !144 | |
%34 = load i64*, i64** %size_out.addr, align 8, !dbg !199, !tbaa !106 | |
store i64 %33, i64* %34, align 8, !dbg !200, !tbaa !144 | |
%35 = load i8*, i8** %data, align 8, !dbg !201, !tbaa !106 | |
store i8* %35, i8** %retval, align 8, !dbg !202 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup, !dbg !202 | |
cleanup: ; preds = %if.end24, %if.then13 | |
%36 = bitcast i8** %data to i8*, !dbg !203 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %36) #9, !dbg !203 | |
%37 = bitcast i64* %size to i8*, !dbg !203 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %37) #9, !dbg !203 | |
%38 = bitcast %struct._IO_FILE** %fp to i8*, !dbg !203 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %38) #9, !dbg !203 | |
%39 = load i8*, i8** %retval, align 8, !dbg !203 | |
ret i8* %39, !dbg !203 | |
} | |
; Function Attrs: nofree nosync nounwind readnone speculatable willreturn | |
declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 | |
; Function Attrs: argmemonly nofree nosync nounwind willreturn | |
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #2 | |
declare dso_local %struct._IO_FILE* @fopen(i8*, i8*) #3 | |
declare dso_local i32 @fprintf(%struct._IO_FILE*, i8*, ...) #3 | |
; Function Attrs: noreturn nounwind | |
declare dso_local void @exit(i32) #4 | |
declare !dbg !204 dso_local i32 @fseek(%struct._IO_FILE*, i64, i32) #3 | |
declare !dbg !209 dso_local i64 @ftell(%struct._IO_FILE*) #3 | |
; Function Attrs: nounwind | |
declare dso_local noalias i8* @malloc(i64) #5 | |
declare dso_local i64 @fread(i8*, i64, i64, %struct._IO_FILE*) #3 | |
declare !dbg !212 dso_local i32 @fclose(%struct._IO_FILE*) #3 | |
; Function Attrs: argmemonly nofree nosync nounwind willreturn | |
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #2 | |
; Function Attrs: nounwind uwtable | |
define dso_local i32 @diff_files_with_tolerance(i8* %path_a, i8* %path_b, double %absolute_tolerance, double %relative_tolerance, i32 %ignore_whitespace) #0 !dbg !215 { | |
entry: | |
%retval = alloca i32, align 4 | |
%path_a.addr = alloca i8*, align 8 | |
%path_b.addr = alloca i8*, align 8 | |
%absolute_tolerance.addr = alloca double, align 8 | |
%relative_tolerance.addr = alloca double, align 8 | |
%ignore_whitespace.addr = alloca i32, align 4 | |
%A_size = alloca i64, align 8 | |
%B_size = alloca i64, align 8 | |
%data_a = alloca i8*, align 8 | |
%data_b = alloca i8*, align 8 | |
%cleanup.dest.slot = alloca i32, align 4 | |
%File1Start = alloca i8*, align 8 | |
%File2Start = alloca i8*, align 8 | |
%File1End = alloca i8*, align 8 | |
%File2End = alloca i8*, align 8 | |
%F1P = alloca i8*, align 8 | |
%F2P = alloca i8*, align 8 | |
%F1NumStart = alloca i8*, align 8 | |
%F2NumStart = alloca i8*, align 8 | |
%F1NumEnd = alloca i8*, align 8 | |
%F2NumEnd = alloca i8*, align 8 | |
%F1AtEnd = alloca i32, align 4 | |
%F2AtEnd = alloca i32, align 4 | |
store i8* %path_a, i8** %path_a.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i8** %path_a.addr, metadata !220, metadata !DIExpression()), !dbg !242 | |
store i8* %path_b, i8** %path_b.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i8** %path_b.addr, metadata !221, metadata !DIExpression()), !dbg !243 | |
store double %absolute_tolerance, double* %absolute_tolerance.addr, align 8, !tbaa !244 | |
call void @llvm.dbg.declare(metadata double* %absolute_tolerance.addr, metadata !222, metadata !DIExpression()), !dbg !246 | |
store double %relative_tolerance, double* %relative_tolerance.addr, align 8, !tbaa !244 | |
call void @llvm.dbg.declare(metadata double* %relative_tolerance.addr, metadata !223, metadata !DIExpression()), !dbg !247 | |
store i32 %ignore_whitespace, i32* %ignore_whitespace.addr, align 4, !tbaa !248 | |
call void @llvm.dbg.declare(metadata i32* %ignore_whitespace.addr, metadata !224, metadata !DIExpression()), !dbg !250 | |
%0 = bitcast i64* %A_size to i8*, !dbg !251 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %0) #9, !dbg !251 | |
call void @llvm.dbg.declare(metadata i64* %A_size, metadata !225, metadata !DIExpression()), !dbg !252 | |
%1 = bitcast i64* %B_size to i8*, !dbg !251 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %1) #9, !dbg !251 | |
call void @llvm.dbg.declare(metadata i64* %B_size, metadata !226, metadata !DIExpression()), !dbg !253 | |
%2 = bitcast i8** %data_a to i8*, !dbg !254 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %2) #9, !dbg !254 | |
call void @llvm.dbg.declare(metadata i8** %data_a, metadata !227, metadata !DIExpression()), !dbg !255 | |
%3 = load i8*, i8** %path_a.addr, align 8, !dbg !256, !tbaa !106 | |
%call = call i8* @load_file(i8* %3, i64* %A_size), !dbg !257 | |
store i8* %call, i8** %data_a, align 8, !dbg !255, !tbaa !106 | |
%4 = bitcast i8** %data_b to i8*, !dbg !258 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %4) #9, !dbg !258 | |
call void @llvm.dbg.declare(metadata i8** %data_b, metadata !228, metadata !DIExpression()), !dbg !259 | |
%5 = load i8*, i8** %path_b.addr, align 8, !dbg !260, !tbaa !106 | |
%call1 = call i8* @load_file(i8* %5, i64* %B_size), !dbg !261 | |
store i8* %call1, i8** %data_b, align 8, !dbg !259, !tbaa !106 | |
%6 = load i64, i64* %A_size, align 8, !dbg !262, !tbaa !144 | |
%7 = load i64, i64* %B_size, align 8, !dbg !264, !tbaa !144 | |
%cmp = icmp eq i64 %6, %7, !dbg !265 | |
br i1 %cmp, label %land.lhs.true, label %if.end, !dbg !266 | |
land.lhs.true: ; preds = %entry | |
%8 = load i8*, i8** %data_a, align 8, !dbg !267, !tbaa !106 | |
%9 = load i8*, i8** %data_b, align 8, !dbg !268, !tbaa !106 | |
%10 = load i64, i64* %A_size, align 8, !dbg !269, !tbaa !144 | |
%call2 = call i32 @memcmp(i8* %8, i8* %9, i64 %10) #11, !dbg !270 | |
%cmp3 = icmp eq i32 %call2, 0, !dbg !271 | |
br i1 %cmp3, label %if.then, label %if.end, !dbg !272 | |
if.then: ; preds = %land.lhs.true | |
%11 = load i8*, i8** %data_a, align 8, !dbg !273, !tbaa !106 | |
call void @free(i8* %11) #9, !dbg !275 | |
%12 = load i8*, i8** %data_b, align 8, !dbg !276, !tbaa !106 | |
call void @free(i8* %12) #9, !dbg !277 | |
store i32 0, i32* %retval, align 4, !dbg !278 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup81, !dbg !278 | |
if.end: ; preds = %land.lhs.true, %entry | |
%13 = bitcast i8** %File1Start to i8*, !dbg !279 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %13) #9, !dbg !279 | |
call void @llvm.dbg.declare(metadata i8** %File1Start, metadata !229, metadata !DIExpression()), !dbg !280 | |
%14 = load i8*, i8** %data_a, align 8, !dbg !281, !tbaa !106 | |
store i8* %14, i8** %File1Start, align 8, !dbg !280, !tbaa !106 | |
%15 = bitcast i8** %File2Start to i8*, !dbg !282 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %15) #9, !dbg !282 | |
call void @llvm.dbg.declare(metadata i8** %File2Start, metadata !230, metadata !DIExpression()), !dbg !283 | |
%16 = load i8*, i8** %data_b, align 8, !dbg !284, !tbaa !106 | |
store i8* %16, i8** %File2Start, align 8, !dbg !283, !tbaa !106 | |
%17 = bitcast i8** %File1End to i8*, !dbg !285 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %17) #9, !dbg !285 | |
call void @llvm.dbg.declare(metadata i8** %File1End, metadata !231, metadata !DIExpression()), !dbg !286 | |
%18 = load i8*, i8** %data_a, align 8, !dbg !287, !tbaa !106 | |
%19 = load i64, i64* %A_size, align 8, !dbg !288, !tbaa !144 | |
%add.ptr = getelementptr inbounds i8, i8* %18, i64 %19, !dbg !289 | |
store i8* %add.ptr, i8** %File1End, align 8, !dbg !286, !tbaa !106 | |
%20 = bitcast i8** %File2End to i8*, !dbg !290 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %20) #9, !dbg !290 | |
call void @llvm.dbg.declare(metadata i8** %File2End, metadata !232, metadata !DIExpression()), !dbg !291 | |
%21 = load i8*, i8** %data_b, align 8, !dbg !292, !tbaa !106 | |
%22 = load i64, i64* %B_size, align 8, !dbg !293, !tbaa !144 | |
%add.ptr4 = getelementptr inbounds i8, i8* %21, i64 %22, !dbg !294 | |
store i8* %add.ptr4, i8** %File2End, align 8, !dbg !291, !tbaa !106 | |
%23 = bitcast i8** %F1P to i8*, !dbg !295 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %23) #9, !dbg !295 | |
call void @llvm.dbg.declare(metadata i8** %F1P, metadata !233, metadata !DIExpression()), !dbg !296 | |
%24 = load i8*, i8** %File1Start, align 8, !dbg !297, !tbaa !106 | |
store i8* %24, i8** %F1P, align 8, !dbg !296, !tbaa !106 | |
%25 = bitcast i8** %F2P to i8*, !dbg !298 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %25) #9, !dbg !298 | |
call void @llvm.dbg.declare(metadata i8** %F2P, metadata !234, metadata !DIExpression()), !dbg !299 | |
%26 = load i8*, i8** %File2Start, align 8, !dbg !300, !tbaa !106 | |
store i8* %26, i8** %F2P, align 8, !dbg !299, !tbaa !106 | |
br label %while.cond, !dbg !301 | |
while.cond: ; preds = %cleanup.cont, %cleanup52, %if.then19, %if.end | |
br label %while.body, !dbg !301 | |
while.body: ; preds = %while.cond | |
%27 = load i8*, i8** %F1P, align 8, !dbg !302, !tbaa !106 | |
%28 = load i8*, i8** %File1End, align 8, !dbg !304, !tbaa !106 | |
%cmp5 = icmp uge i8* %27, %28, !dbg !305 | |
br i1 %cmp5, label %if.then7, label %lor.lhs.false, !dbg !306 | |
lor.lhs.false: ; preds = %while.body | |
%29 = load i8*, i8** %F2P, align 8, !dbg !307, !tbaa !106 | |
%30 = load i8*, i8** %File2End, align 8, !dbg !308, !tbaa !106 | |
%cmp6 = icmp uge i8* %29, %30, !dbg !309 | |
br i1 %cmp6, label %if.then7, label %if.end12, !dbg !310 | |
if.then7: ; preds = %lor.lhs.false, %while.body | |
%31 = load i32, i32* %ignore_whitespace.addr, align 4, !dbg !311, !tbaa !248 | |
%tobool = icmp ne i32 %31, 0, !dbg !311 | |
br i1 %tobool, label %if.then8, label %if.end11, !dbg !314 | |
if.then8: ; preds = %if.then7 | |
%32 = load i8*, i8** %File1End, align 8, !dbg !315, !tbaa !106 | |
%call9 = call i32 @skip_whitespace(i8** %F1P, i8* %32), !dbg !317 | |
%33 = load i8*, i8** %File2End, align 8, !dbg !318, !tbaa !106 | |
%call10 = call i32 @skip_whitespace(i8** %F2P, i8* %33), !dbg !319 | |
br label %if.end11, !dbg !320 | |
if.end11: ; preds = %if.then8, %if.then7 | |
br label %while.end, !dbg !321 | |
if.end12: ; preds = %lor.lhs.false | |
%34 = load i8*, i8** %F1P, align 8, !dbg !322, !tbaa !106 | |
%35 = load i8, i8* %34, align 1, !dbg !324, !tbaa !182 | |
%conv = sext i8 %35 to i32, !dbg !324 | |
%36 = load i8*, i8** %F2P, align 8, !dbg !325, !tbaa !106 | |
%37 = load i8, i8* %36, align 1, !dbg !326, !tbaa !182 | |
%conv13 = sext i8 %37 to i32, !dbg !326 | |
%cmp14 = icmp eq i32 %conv, %conv13, !dbg !327 | |
br i1 %cmp14, label %land.lhs.true16, label %if.end21, !dbg !328 | |
land.lhs.true16: ; preds = %if.end12 | |
%38 = load i8*, i8** %F1P, align 8, !dbg !329, !tbaa !106 | |
%39 = load i8, i8* %38, align 1, !dbg !330, !tbaa !182 | |
%call17 = call i32 @isPossibleStartOfNumber(i8 signext %39), !dbg !331 | |
%tobool18 = icmp ne i32 %call17, 0, !dbg !331 | |
br i1 %tobool18, label %if.end21, label %if.then19, !dbg !332 | |
if.then19: ; preds = %land.lhs.true16 | |
%40 = load i8*, i8** %F1P, align 8, !dbg !333, !tbaa !106 | |
%incdec.ptr = getelementptr inbounds i8, i8* %40, i32 1, !dbg !333 | |
store i8* %incdec.ptr, i8** %F1P, align 8, !dbg !333, !tbaa !106 | |
%41 = load i8*, i8** %F2P, align 8, !dbg !335, !tbaa !106 | |
%incdec.ptr20 = getelementptr inbounds i8, i8* %41, i32 1, !dbg !335 | |
store i8* %incdec.ptr20, i8** %F2P, align 8, !dbg !335, !tbaa !106 | |
br label %while.cond, !dbg !336, !llvm.loop !337 | |
if.end21: ; preds = %land.lhs.true16, %if.end12 | |
%42 = bitcast i8** %F1NumStart to i8*, !dbg !339 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %42) #9, !dbg !339 | |
call void @llvm.dbg.declare(metadata i8** %F1NumStart, metadata !235, metadata !DIExpression()), !dbg !340 | |
%43 = load i8*, i8** %F1P, align 8, !dbg !341, !tbaa !106 | |
store i8* %43, i8** %F1NumStart, align 8, !dbg !340, !tbaa !106 | |
%44 = bitcast i8** %F2NumStart to i8*, !dbg !342 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %44) #9, !dbg !342 | |
call void @llvm.dbg.declare(metadata i8** %F2NumStart, metadata !237, metadata !DIExpression()), !dbg !343 | |
%45 = load i8*, i8** %F2P, align 8, !dbg !344, !tbaa !106 | |
store i8* %45, i8** %F2NumStart, align 8, !dbg !343, !tbaa !106 | |
%46 = load i32, i32* %ignore_whitespace.addr, align 4, !dbg !345, !tbaa !248 | |
%tobool22 = icmp ne i32 %46, 0, !dbg !345 | |
br i1 %tobool22, label %if.then23, label %if.else, !dbg !347 | |
if.then23: ; preds = %if.end21 | |
%47 = load i8*, i8** %File1End, align 8, !dbg !348, !tbaa !106 | |
%call24 = call i32 @skip_whitespace(i8** %F1P, i8* %47), !dbg !351 | |
%48 = load i8*, i8** %File2End, align 8, !dbg !352, !tbaa !106 | |
%call25 = call i32 @skip_whitespace(i8** %F2P, i8* %48), !dbg !353 | |
%or = or i32 %call24, %call25, !dbg !354 | |
%tobool26 = icmp ne i32 %or, 0, !dbg !354 | |
br i1 %tobool26, label %if.then27, label %if.end28, !dbg !355 | |
if.then27: ; preds = %if.then23 | |
store i32 2, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup52, !dbg !356, !llvm.loop !337 | |
if.end28: ; preds = %if.then23 | |
br label %if.end31, !dbg !357 | |
if.else: ; preds = %if.end21 | |
%49 = load i8*, i8** %File1End, align 8, !dbg !358, !tbaa !106 | |
%call29 = call i32 @skip_whitespace(i8** %F1NumStart, i8* %49), !dbg !360 | |
%50 = load i8*, i8** %File2End, align 8, !dbg !361, !tbaa !106 | |
%call30 = call i32 @skip_whitespace(i8** %F2NumStart, i8* %50), !dbg !362 | |
br label %if.end31 | |
if.end31: ; preds = %if.else, %if.end28 | |
%51 = bitcast i8** %F1NumEnd to i8*, !dbg !363 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %51) #9, !dbg !363 | |
call void @llvm.dbg.declare(metadata i8** %F1NumEnd, metadata !238, metadata !DIExpression()), !dbg !364 | |
%52 = load i8*, i8** %F1NumStart, align 8, !dbg !365, !tbaa !106 | |
%53 = load i8*, i8** %File1End, align 8, !dbg !366, !tbaa !106 | |
%call32 = call i8* @AdvanceNumber(i8* %52, i8* %53), !dbg !367 | |
store i8* %call32, i8** %F1NumEnd, align 8, !dbg !364, !tbaa !106 | |
%54 = bitcast i8** %F2NumEnd to i8*, !dbg !368 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %54) #9, !dbg !368 | |
call void @llvm.dbg.declare(metadata i8** %F2NumEnd, metadata !239, metadata !DIExpression()), !dbg !369 | |
%55 = load i8*, i8** %F2NumStart, align 8, !dbg !370, !tbaa !106 | |
%56 = load i8*, i8** %File2End, align 8, !dbg !371, !tbaa !106 | |
%call33 = call i8* @AdvanceNumber(i8* %55, i8* %56), !dbg !372 | |
store i8* %call33, i8** %F2NumEnd, align 8, !dbg !369, !tbaa !106 | |
%57 = load i8*, i8** %F1NumEnd, align 8, !dbg !373, !tbaa !106 | |
%tobool34 = icmp ne i8* %57, null, !dbg !373 | |
br i1 %tobool34, label %lor.lhs.false35, label %if.then37, !dbg !375 | |
lor.lhs.false35: ; preds = %if.end31 | |
%58 = load i8*, i8** %F2NumEnd, align 8, !dbg !376, !tbaa !106 | |
%tobool36 = icmp ne i8* %58, null, !dbg !376 | |
br i1 %tobool36, label %if.end46, label %if.then37, !dbg !377 | |
if.then37: ; preds = %lor.lhs.false35, %if.end31 | |
%59 = load i8*, i8** %F1P, align 8, !dbg !378, !tbaa !106 | |
%60 = load i8, i8* %59, align 1, !dbg !381, !tbaa !182 | |
%conv38 = sext i8 %60 to i32, !dbg !381 | |
%61 = load i8*, i8** %F2P, align 8, !dbg !382, !tbaa !106 | |
%62 = load i8, i8* %61, align 1, !dbg !383, !tbaa !182 | |
%conv39 = sext i8 %62 to i32, !dbg !383 | |
%cmp40 = icmp ne i32 %conv38, %conv39, !dbg !384 | |
br i1 %cmp40, label %if.then42, label %if.end43, !dbg !385 | |
if.then42: ; preds = %if.then37 | |
store i32 3, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup, !dbg !386 | |
if.end43: ; preds = %if.then37 | |
%63 = load i8*, i8** %F1P, align 8, !dbg !387, !tbaa !106 | |
%incdec.ptr44 = getelementptr inbounds i8, i8* %63, i32 1, !dbg !387 | |
store i8* %incdec.ptr44, i8** %F1P, align 8, !dbg !387, !tbaa !106 | |
%64 = load i8*, i8** %F2P, align 8, !dbg !388, !tbaa !106 | |
%incdec.ptr45 = getelementptr inbounds i8, i8* %64, i32 1, !dbg !388 | |
store i8* %incdec.ptr45, i8** %F2P, align 8, !dbg !388, !tbaa !106 | |
store i32 2, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup, !dbg !389, !llvm.loop !337 | |
if.end46: ; preds = %lor.lhs.false35 | |
%65 = load i8*, i8** %F1NumStart, align 8, !dbg !390, !tbaa !106 | |
%66 = load i8*, i8** %F2NumStart, align 8, !dbg !392, !tbaa !106 | |
%67 = load i8*, i8** %F1NumEnd, align 8, !dbg !393, !tbaa !106 | |
%68 = load i8*, i8** %F2NumEnd, align 8, !dbg !394, !tbaa !106 | |
%69 = load double, double* %absolute_tolerance.addr, align 8, !dbg !395, !tbaa !244 | |
%70 = load double, double* %relative_tolerance.addr, align 8, !dbg !396, !tbaa !244 | |
%call47 = call i32 @CompareNumbers(i8* %65, i8* %66, i8* %67, i8* %68, double %69, double %70), !dbg !397 | |
%tobool48 = icmp ne i32 %call47, 0, !dbg !397 | |
br i1 %tobool48, label %if.then49, label %if.end50, !dbg !398 | |
if.then49: ; preds = %if.end46 | |
%71 = load i8*, i8** %data_a, align 8, !dbg !399, !tbaa !106 | |
call void @free(i8* %71) #9, !dbg !401 | |
%72 = load i8*, i8** %data_b, align 8, !dbg !402, !tbaa !106 | |
call void @free(i8* %72) #9, !dbg !403 | |
store i32 1, i32* %retval, align 4, !dbg !404 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup, !dbg !404 | |
if.end50: ; preds = %if.end46 | |
%73 = load i8*, i8** %F1NumEnd, align 8, !dbg !405, !tbaa !106 | |
store i8* %73, i8** %F1P, align 8, !dbg !406, !tbaa !106 | |
%74 = load i8*, i8** %F2NumEnd, align 8, !dbg !407, !tbaa !106 | |
store i8* %74, i8** %F2P, align 8, !dbg !408, !tbaa !106 | |
store i32 0, i32* %cleanup.dest.slot, align 4, !dbg !338 | |
br label %cleanup, !dbg !338 | |
cleanup: ; preds = %if.end50, %if.then49, %if.end43, %if.then42 | |
%75 = bitcast i8** %F2NumEnd to i8*, !dbg !338 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %75) #9, !dbg !338 | |
%76 = bitcast i8** %F1NumEnd to i8*, !dbg !338 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %76) #9, !dbg !338 | |
br label %cleanup52 | |
cleanup52: ; preds = %cleanup, %if.then27 | |
%77 = bitcast i8** %F2NumStart to i8*, !dbg !338 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %77) #9, !dbg !338 | |
%78 = bitcast i8** %F1NumStart to i8*, !dbg !338 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %78) #9, !dbg !338 | |
%cleanup.dest = load i32, i32* %cleanup.dest.slot, align 4 | |
switch i32 %cleanup.dest, label %cleanup75 [ | |
i32 0, label %cleanup.cont | |
i32 2, label %while.cond | |
i32 3, label %while.end | |
] | |
cleanup.cont: ; preds = %cleanup52 | |
br label %while.cond, !dbg !301, !llvm.loop !337 | |
while.end: ; preds = %cleanup52, %if.end11 | |
%79 = bitcast i32* %F1AtEnd to i8*, !dbg !409 | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* %79) #9, !dbg !409 | |
call void @llvm.dbg.declare(metadata i32* %F1AtEnd, metadata !240, metadata !DIExpression()), !dbg !410 | |
%80 = load i8*, i8** %F1P, align 8, !dbg !411, !tbaa !106 | |
%81 = load i8*, i8** %File1End, align 8, !dbg !412, !tbaa !106 | |
%cmp54 = icmp uge i8* %80, %81, !dbg !413 | |
%conv55 = zext i1 %cmp54 to i32, !dbg !413 | |
store i32 %conv55, i32* %F1AtEnd, align 4, !dbg !410, !tbaa !248 | |
%82 = bitcast i32* %F2AtEnd to i8*, !dbg !414 | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* %82) #9, !dbg !414 | |
call void @llvm.dbg.declare(metadata i32* %F2AtEnd, metadata !241, metadata !DIExpression()), !dbg !415 | |
%83 = load i8*, i8** %F2P, align 8, !dbg !416, !tbaa !106 | |
%84 = load i8*, i8** %File2End, align 8, !dbg !417, !tbaa !106 | |
%cmp56 = icmp uge i8* %83, %84, !dbg !418 | |
%conv57 = zext i1 %cmp56 to i32, !dbg !418 | |
store i32 %conv57, i32* %F2AtEnd, align 4, !dbg !415, !tbaa !248 | |
%85 = load i32, i32* %F1AtEnd, align 4, !dbg !419, !tbaa !248 | |
%tobool58 = icmp ne i32 %85, 0, !dbg !419 | |
br i1 %tobool58, label %if.end66, label %land.lhs.true59, !dbg !421 | |
land.lhs.true59: ; preds = %while.end | |
%86 = load i32, i32* %F2AtEnd, align 4, !dbg !422, !tbaa !248 | |
%tobool60 = icmp ne i32 %86, 0, !dbg !422 | |
br i1 %tobool60, label %if.end66, label %if.then61, !dbg !423 | |
if.then61: ; preds = %land.lhs.true59 | |
%87 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !424, !tbaa !106 | |
%88 = load i8*, i8** @g_program, align 8, !dbg !426, !tbaa !106 | |
%89 = load i8*, i8** %F1P, align 8, !dbg !427, !tbaa !106 | |
%arrayidx = getelementptr inbounds i8, i8* %89, i64 0, !dbg !427 | |
%90 = load i8, i8* %arrayidx, align 1, !dbg !427, !tbaa !182 | |
%conv62 = sext i8 %90 to i32, !dbg !427 | |
%91 = load i8*, i8** %F2P, align 8, !dbg !428, !tbaa !106 | |
%arrayidx63 = getelementptr inbounds i8, i8* %91, i64 0, !dbg !428 | |
%92 = load i8, i8* %arrayidx63, align 1, !dbg !428, !tbaa !182 | |
%conv64 = sext i8 %92 to i32, !dbg !428 | |
%call65 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %87, i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.5, i64 0, i64 0), i8* %88, i32 %conv62, i32 %conv64), !dbg !429 | |
%93 = load i8*, i8** %data_a, align 8, !dbg !430, !tbaa !106 | |
call void @free(i8* %93) #9, !dbg !431 | |
%94 = load i8*, i8** %data_b, align 8, !dbg !432, !tbaa !106 | |
call void @free(i8* %94) #9, !dbg !433 | |
store i32 1, i32* %retval, align 4, !dbg !434 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup73, !dbg !434 | |
if.end66: ; preds = %land.lhs.true59, %while.end | |
%95 = load i32, i32* %F1AtEnd, align 4, !dbg !435, !tbaa !248 | |
%tobool67 = icmp ne i32 %95, 0, !dbg !435 | |
br i1 %tobool67, label %lor.lhs.false68, label %if.then70, !dbg !437 | |
lor.lhs.false68: ; preds = %if.end66 | |
%96 = load i32, i32* %F2AtEnd, align 4, !dbg !438, !tbaa !248 | |
%tobool69 = icmp ne i32 %96, 0, !dbg !438 | |
br i1 %tobool69, label %if.end72, label %if.then70, !dbg !439 | |
if.then70: ; preds = %lor.lhs.false68, %if.end66 | |
%97 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !440, !tbaa !106 | |
%98 = load i8*, i8** @g_program, align 8, !dbg !442, !tbaa !106 | |
%call71 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %97, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.6, i64 0, i64 0), i8* %98), !dbg !443 | |
%99 = load i8*, i8** %data_a, align 8, !dbg !444, !tbaa !106 | |
call void @free(i8* %99) #9, !dbg !445 | |
%100 = load i8*, i8** %data_b, align 8, !dbg !446, !tbaa !106 | |
call void @free(i8* %100) #9, !dbg !447 | |
store i32 1, i32* %retval, align 4, !dbg !448 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup73, !dbg !448 | |
if.end72: ; preds = %lor.lhs.false68 | |
%101 = load i8*, i8** %data_a, align 8, !dbg !449, !tbaa !106 | |
call void @free(i8* %101) #9, !dbg !450 | |
%102 = load i8*, i8** %data_b, align 8, !dbg !451, !tbaa !106 | |
call void @free(i8* %102) #9, !dbg !452 | |
store i32 0, i32* %retval, align 4, !dbg !453 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup73, !dbg !453 | |
cleanup73: ; preds = %if.end72, %if.then70, %if.then61 | |
%103 = bitcast i32* %F2AtEnd to i8*, !dbg !454 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* %103) #9, !dbg !454 | |
%104 = bitcast i32* %F1AtEnd to i8*, !dbg !454 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* %104) #9, !dbg !454 | |
br label %cleanup75 | |
cleanup75: ; preds = %cleanup73, %cleanup52 | |
%105 = bitcast i8** %F2P to i8*, !dbg !454 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %105) #9, !dbg !454 | |
%106 = bitcast i8** %F1P to i8*, !dbg !454 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %106) #9, !dbg !454 | |
%107 = bitcast i8** %File2End to i8*, !dbg !454 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %107) #9, !dbg !454 | |
%108 = bitcast i8** %File1End to i8*, !dbg !454 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %108) #9, !dbg !454 | |
%109 = bitcast i8** %File2Start to i8*, !dbg !454 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %109) #9, !dbg !454 | |
%110 = bitcast i8** %File1Start to i8*, !dbg !454 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %110) #9, !dbg !454 | |
br label %cleanup81 | |
cleanup81: ; preds = %cleanup75, %if.then | |
%111 = bitcast i8** %data_b to i8*, !dbg !454 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %111) #9, !dbg !454 | |
%112 = bitcast i8** %data_a to i8*, !dbg !454 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %112) #9, !dbg !454 | |
%113 = bitcast i64* %B_size to i8*, !dbg !454 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %113) #9, !dbg !454 | |
%114 = bitcast i64* %A_size to i8*, !dbg !454 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %114) #9, !dbg !454 | |
%115 = load i32, i32* %retval, align 4, !dbg !454 | |
ret i32 %115, !dbg !454 | |
} | |
; Function Attrs: nounwind readonly willreturn | |
declare dso_local i32 @memcmp(i8*, i8*, i64) #6 | |
; Function Attrs: nounwind | |
declare dso_local void @free(i8*) #5 | |
; Function Attrs: nounwind uwtable | |
define internal i32 @skip_whitespace(i8** %FP, i8* %FEnd) #0 !dbg !455 { | |
entry: | |
%FP.addr = alloca i8**, align 8 | |
%FEnd.addr = alloca i8*, align 8 | |
%skipped_some = alloca i32, align 4 | |
store i8** %FP, i8*** %FP.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i8*** %FP.addr, metadata !460, metadata !DIExpression()), !dbg !463 | |
store i8* %FEnd, i8** %FEnd.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i8** %FEnd.addr, metadata !461, metadata !DIExpression()), !dbg !464 | |
%0 = bitcast i32* %skipped_some to i8*, !dbg !465 | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #9, !dbg !465 | |
call void @llvm.dbg.declare(metadata i32* %skipped_some, metadata !462, metadata !DIExpression()), !dbg !466 | |
store i32 0, i32* %skipped_some, align 4, !dbg !466, !tbaa !248 | |
br label %while.cond, !dbg !467 | |
while.cond: ; preds = %while.body, %entry | |
%1 = load i8**, i8*** %FP.addr, align 8, !dbg !468, !tbaa !106 | |
%2 = load i8*, i8** %1, align 8, !dbg !469, !tbaa !106 | |
%3 = load i8*, i8** %FEnd.addr, align 8, !dbg !470, !tbaa !106 | |
%cmp = icmp ult i8* %2, %3, !dbg !471 | |
br i1 %cmp, label %land.rhs, label %land.end, !dbg !472 | |
land.rhs: ; preds = %while.cond | |
%call = call i16** @__ctype_b_loc() #12, !dbg !473 | |
%4 = load i16*, i16** %call, align 8, !dbg !473, !tbaa !106 | |
%5 = load i8**, i8*** %FP.addr, align 8, !dbg !473, !tbaa !106 | |
%6 = load i8*, i8** %5, align 8, !dbg !473, !tbaa !106 | |
%7 = load i8, i8* %6, align 1, !dbg !473, !tbaa !182 | |
%conv = zext i8 %7 to i32, !dbg !473 | |
%idxprom = sext i32 %conv to i64, !dbg !473 | |
%arrayidx = getelementptr inbounds i16, i16* %4, i64 %idxprom, !dbg !473 | |
%8 = load i16, i16* %arrayidx, align 2, !dbg !473, !tbaa !474 | |
%conv1 = zext i16 %8 to i32, !dbg !473 | |
%and = and i32 %conv1, 8192, !dbg !473 | |
%tobool = icmp ne i32 %and, 0, !dbg !472 | |
br label %land.end | |
land.end: ; preds = %land.rhs, %while.cond | |
%9 = phi i1 [ false, %while.cond ], [ %tobool, %land.rhs ], !dbg !476 | |
br i1 %9, label %while.body, label %while.end, !dbg !467 | |
while.body: ; preds = %land.end | |
store i32 1, i32* %skipped_some, align 4, !dbg !477, !tbaa !248 | |
%10 = load i8**, i8*** %FP.addr, align 8, !dbg !479, !tbaa !106 | |
%11 = load i8*, i8** %10, align 8, !dbg !480, !tbaa !106 | |
%incdec.ptr = getelementptr inbounds i8, i8* %11, i32 1, !dbg !480 | |
store i8* %incdec.ptr, i8** %10, align 8, !dbg !480, !tbaa !106 | |
br label %while.cond, !dbg !467, !llvm.loop !481 | |
while.end: ; preds = %land.end | |
%12 = load i32, i32* %skipped_some, align 4, !dbg !484, !tbaa !248 | |
%13 = bitcast i32* %skipped_some to i8*, !dbg !485 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* %13) #9, !dbg !485 | |
ret i32 %12, !dbg !486 | |
} | |
; Function Attrs: nounwind uwtable | |
define internal i32 @isPossibleStartOfNumber(i8 signext %C) #0 !dbg !487 { | |
entry: | |
%C.addr = alloca i8, align 1 | |
store i8 %C, i8* %C.addr, align 1, !tbaa !182 | |
call void @llvm.dbg.declare(metadata i8* %C.addr, metadata !491, metadata !DIExpression()), !dbg !492 | |
%0 = load i8, i8* %C.addr, align 1, !dbg !493, !tbaa !182 | |
%call = call i32 @isDigitChar(i8 signext %0), !dbg !494 | |
%tobool = icmp ne i32 %call, 0, !dbg !494 | |
br i1 %tobool, label %lor.end, label %lor.lhs.false, !dbg !495 | |
lor.lhs.false: ; preds = %entry | |
%1 = load i8, i8* %C.addr, align 1, !dbg !496, !tbaa !182 | |
%call1 = call i32 @isSignedChar(i8 signext %1), !dbg !497 | |
%tobool2 = icmp ne i32 %call1, 0, !dbg !497 | |
br i1 %tobool2, label %lor.end, label %lor.rhs, !dbg !498 | |
lor.rhs: ; preds = %lor.lhs.false | |
%2 = load i8, i8* %C.addr, align 1, !dbg !499, !tbaa !182 | |
%conv = sext i8 %2 to i32, !dbg !499 | |
%cmp = icmp eq i32 %conv, 46, !dbg !500 | |
br label %lor.end, !dbg !498 | |
lor.end: ; preds = %lor.rhs, %lor.lhs.false, %entry | |
%3 = phi i1 [ true, %lor.lhs.false ], [ true, %entry ], [ %cmp, %lor.rhs ] | |
%lor.ext = zext i1 %3 to i32, !dbg !498 | |
ret i32 %lor.ext, !dbg !501 | |
} | |
; Function Attrs: nounwind uwtable | |
define internal i8* @AdvanceNumber(i8* %StartPos, i8* %End) #0 !dbg !502 { | |
entry: | |
%retval = alloca i8*, align 8 | |
%StartPos.addr = alloca i8*, align 8 | |
%End.addr = alloca i8*, align 8 | |
%Pos = alloca i8*, align 8 | |
%EndOfNumber = alloca i8*, align 8 | |
%HasPostDecimalDigit = alloca i32, align 4 | |
%cleanup.dest.slot = alloca i32, align 4 | |
store i8* %StartPos, i8** %StartPos.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i8** %StartPos.addr, metadata !506, metadata !DIExpression()), !dbg !513 | |
store i8* %End, i8** %End.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i8** %End.addr, metadata !507, metadata !DIExpression()), !dbg !514 | |
%0 = bitcast i8** %Pos to i8*, !dbg !515 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %0) #9, !dbg !515 | |
call void @llvm.dbg.declare(metadata i8** %Pos, metadata !508, metadata !DIExpression()), !dbg !516 | |
%1 = load i8*, i8** %StartPos.addr, align 8, !dbg !517, !tbaa !106 | |
store i8* %1, i8** %Pos, align 8, !dbg !516, !tbaa !106 | |
%2 = bitcast i8** %EndOfNumber to i8*, !dbg !518 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %2) #9, !dbg !518 | |
call void @llvm.dbg.declare(metadata i8** %EndOfNumber, metadata !509, metadata !DIExpression()), !dbg !519 | |
store i8* null, i8** %EndOfNumber, align 8, !dbg !519, !tbaa !106 | |
%3 = load i8*, i8** %Pos, align 8, !dbg !520, !tbaa !106 | |
%4 = load i8*, i8** %End.addr, align 8, !dbg !522, !tbaa !106 | |
%cmp = icmp ult i8* %3, %4, !dbg !523 | |
br i1 %cmp, label %land.lhs.true, label %if.end, !dbg !524 | |
land.lhs.true: ; preds = %entry | |
%5 = load i8*, i8** %Pos, align 8, !dbg !525, !tbaa !106 | |
%6 = load i8, i8* %5, align 1, !dbg !526, !tbaa !182 | |
%call = call i32 @isSignedChar(i8 signext %6), !dbg !527 | |
%tobool = icmp ne i32 %call, 0, !dbg !527 | |
br i1 %tobool, label %if.then, label %if.end, !dbg !528 | |
if.then: ; preds = %land.lhs.true | |
%7 = load i8*, i8** %Pos, align 8, !dbg !529, !tbaa !106 | |
%incdec.ptr = getelementptr inbounds i8, i8* %7, i32 1, !dbg !529 | |
store i8* %incdec.ptr, i8** %Pos, align 8, !dbg !529, !tbaa !106 | |
br label %if.end, !dbg !529 | |
if.end: ; preds = %if.then, %land.lhs.true, %entry | |
br label %while.cond, !dbg !530 | |
while.cond: ; preds = %while.body, %if.end | |
%8 = load i8*, i8** %Pos, align 8, !dbg !531, !tbaa !106 | |
%9 = load i8*, i8** %End.addr, align 8, !dbg !532, !tbaa !106 | |
%cmp1 = icmp ult i8* %8, %9, !dbg !533 | |
br i1 %cmp1, label %land.rhs, label %land.end, !dbg !534 | |
land.rhs: ; preds = %while.cond | |
%10 = load i8*, i8** %Pos, align 8, !dbg !535, !tbaa !106 | |
%11 = load i8, i8* %10, align 1, !dbg !536, !tbaa !182 | |
%call2 = call i32 @isDigitChar(i8 signext %11), !dbg !537 | |
%tobool3 = icmp ne i32 %call2, 0, !dbg !534 | |
br label %land.end | |
land.end: ; preds = %land.rhs, %while.cond | |
%12 = phi i1 [ false, %while.cond ], [ %tobool3, %land.rhs ], !dbg !538 | |
br i1 %12, label %while.body, label %while.end, !dbg !530 | |
while.body: ; preds = %land.end | |
%13 = load i8*, i8** %Pos, align 8, !dbg !539, !tbaa !106 | |
%incdec.ptr4 = getelementptr inbounds i8, i8* %13, i32 1, !dbg !539 | |
store i8* %incdec.ptr4, i8** %Pos, align 8, !dbg !539, !tbaa !106 | |
%14 = load i8*, i8** %Pos, align 8, !dbg !541, !tbaa !106 | |
store i8* %14, i8** %EndOfNumber, align 8, !dbg !542, !tbaa !106 | |
br label %while.cond, !dbg !530, !llvm.loop !543 | |
while.end: ; preds = %land.end | |
%15 = load i8*, i8** %Pos, align 8, !dbg !545, !tbaa !106 | |
%16 = load i8*, i8** %End.addr, align 8, !dbg !546, !tbaa !106 | |
%cmp5 = icmp ult i8* %15, %16, !dbg !547 | |
br i1 %cmp5, label %land.lhs.true6, label %if.end24, !dbg !548 | |
land.lhs.true6: ; preds = %while.end | |
%17 = load i8*, i8** %Pos, align 8, !dbg !549, !tbaa !106 | |
%18 = load i8, i8* %17, align 1, !dbg !550, !tbaa !182 | |
%conv = sext i8 %18 to i32, !dbg !550 | |
%cmp7 = icmp eq i32 %conv, 46, !dbg !551 | |
br i1 %cmp7, label %if.then9, label %if.end24, !dbg !552 | |
if.then9: ; preds = %land.lhs.true6 | |
%19 = load i8*, i8** %Pos, align 8, !dbg !553, !tbaa !106 | |
%incdec.ptr10 = getelementptr inbounds i8, i8* %19, i32 1, !dbg !553 | |
store i8* %incdec.ptr10, i8** %Pos, align 8, !dbg !553, !tbaa !106 | |
%20 = bitcast i32* %HasPostDecimalDigit to i8*, !dbg !554 | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* %20) #9, !dbg !554 | |
call void @llvm.dbg.declare(metadata i32* %HasPostDecimalDigit, metadata !510, metadata !DIExpression()), !dbg !555 | |
store i32 0, i32* %HasPostDecimalDigit, align 4, !dbg !555, !tbaa !248 | |
br label %while.cond11, !dbg !556 | |
while.cond11: ; preds = %while.body18, %if.then9 | |
%21 = load i8*, i8** %Pos, align 8, !dbg !557, !tbaa !106 | |
%22 = load i8*, i8** %End.addr, align 8, !dbg !558, !tbaa !106 | |
%cmp12 = icmp ult i8* %21, %22, !dbg !559 | |
br i1 %cmp12, label %land.rhs14, label %land.end17, !dbg !560 | |
land.rhs14: ; preds = %while.cond11 | |
%23 = load i8*, i8** %Pos, align 8, !dbg !561, !tbaa !106 | |
%24 = load i8, i8* %23, align 1, !dbg !562, !tbaa !182 | |
%call15 = call i32 @isDigitChar(i8 signext %24), !dbg !563 | |
%tobool16 = icmp ne i32 %call15, 0, !dbg !560 | |
br label %land.end17 | |
land.end17: ; preds = %land.rhs14, %while.cond11 | |
%25 = phi i1 [ false, %while.cond11 ], [ %tobool16, %land.rhs14 ], !dbg !564 | |
br i1 %25, label %while.body18, label %while.end20, !dbg !556 | |
while.body18: ; preds = %land.end17 | |
store i32 1, i32* %HasPostDecimalDigit, align 4, !dbg !565, !tbaa !248 | |
%26 = load i8*, i8** %Pos, align 8, !dbg !567, !tbaa !106 | |
%incdec.ptr19 = getelementptr inbounds i8, i8* %26, i32 1, !dbg !567 | |
store i8* %incdec.ptr19, i8** %Pos, align 8, !dbg !567, !tbaa !106 | |
%27 = load i8*, i8** %Pos, align 8, !dbg !568, !tbaa !106 | |
store i8* %27, i8** %EndOfNumber, align 8, !dbg !569, !tbaa !106 | |
br label %while.cond11, !dbg !556, !llvm.loop !570 | |
while.end20: ; preds = %land.end17 | |
%28 = load i32, i32* %HasPostDecimalDigit, align 4, !dbg !572, !tbaa !248 | |
%tobool21 = icmp ne i32 %28, 0, !dbg !572 | |
br i1 %tobool21, label %if.end23, label %if.then22, !dbg !574 | |
if.then22: ; preds = %while.end20 | |
%29 = load i8*, i8** %EndOfNumber, align 8, !dbg !575, !tbaa !106 | |
store i8* %29, i8** %retval, align 8, !dbg !576 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup, !dbg !576 | |
if.end23: ; preds = %while.end20 | |
store i32 0, i32* %cleanup.dest.slot, align 4, !dbg !577 | |
br label %cleanup, !dbg !577 | |
cleanup: ; preds = %if.end23, %if.then22 | |
%30 = bitcast i32* %HasPostDecimalDigit to i8*, !dbg !577 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* %30) #9, !dbg !577 | |
%cleanup.dest = load i32, i32* %cleanup.dest.slot, align 4 | |
switch i32 %cleanup.dest, label %cleanup54 [ | |
i32 0, label %cleanup.cont | |
] | |
cleanup.cont: ; preds = %cleanup | |
br label %if.end24, !dbg !578 | |
if.end24: ; preds = %cleanup.cont, %land.lhs.true6, %while.end | |
%31 = load i8*, i8** %EndOfNumber, align 8, !dbg !579, !tbaa !106 | |
%tobool25 = icmp ne i8* %31, null, !dbg !579 | |
br i1 %tobool25, label %if.end27, label %if.then26, !dbg !581 | |
if.then26: ; preds = %if.end24 | |
%32 = load i8*, i8** %EndOfNumber, align 8, !dbg !582, !tbaa !106 | |
store i8* %32, i8** %retval, align 8, !dbg !583 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup54, !dbg !583 | |
if.end27: ; preds = %if.end24 | |
%33 = load i8*, i8** %Pos, align 8, !dbg !584, !tbaa !106 | |
%34 = load i8*, i8** %End.addr, align 8, !dbg !586, !tbaa !106 | |
%cmp28 = icmp ult i8* %33, %34, !dbg !587 | |
br i1 %cmp28, label %land.lhs.true30, label %if.end53, !dbg !588 | |
land.lhs.true30: ; preds = %if.end27 | |
%35 = load i8*, i8** %Pos, align 8, !dbg !589, !tbaa !106 | |
%36 = load i8, i8* %35, align 1, !dbg !590, !tbaa !182 | |
%call31 = call i32 @isExponentChar(i8 signext %36), !dbg !591 | |
%tobool32 = icmp ne i32 %call31, 0, !dbg !591 | |
br i1 %tobool32, label %if.then33, label %if.end53, !dbg !592 | |
if.then33: ; preds = %land.lhs.true30 | |
%37 = load i8*, i8** %Pos, align 8, !dbg !593, !tbaa !106 | |
%incdec.ptr34 = getelementptr inbounds i8, i8* %37, i32 1, !dbg !593 | |
store i8* %incdec.ptr34, i8** %Pos, align 8, !dbg !593, !tbaa !106 | |
%38 = load i8*, i8** %Pos, align 8, !dbg !595, !tbaa !106 | |
%39 = load i8*, i8** %End.addr, align 8, !dbg !597, !tbaa !106 | |
%cmp35 = icmp ult i8* %38, %39, !dbg !598 | |
br i1 %cmp35, label %land.lhs.true37, label %if.end42, !dbg !599 | |
land.lhs.true37: ; preds = %if.then33 | |
%40 = load i8*, i8** %Pos, align 8, !dbg !600, !tbaa !106 | |
%41 = load i8, i8* %40, align 1, !dbg !601, !tbaa !182 | |
%call38 = call i32 @isSignedChar(i8 signext %41), !dbg !602 | |
%tobool39 = icmp ne i32 %call38, 0, !dbg !602 | |
br i1 %tobool39, label %if.then40, label %if.end42, !dbg !603 | |
if.then40: ; preds = %land.lhs.true37 | |
%42 = load i8*, i8** %Pos, align 8, !dbg !604, !tbaa !106 | |
%incdec.ptr41 = getelementptr inbounds i8, i8* %42, i32 1, !dbg !604 | |
store i8* %incdec.ptr41, i8** %Pos, align 8, !dbg !604, !tbaa !106 | |
br label %if.end42, !dbg !604 | |
if.end42: ; preds = %if.then40, %land.lhs.true37, %if.then33 | |
br label %while.cond43, !dbg !605 | |
while.cond43: ; preds = %while.body50, %if.end42 | |
%43 = load i8*, i8** %Pos, align 8, !dbg !606, !tbaa !106 | |
%44 = load i8*, i8** %End.addr, align 8, !dbg !607, !tbaa !106 | |
%cmp44 = icmp ult i8* %43, %44, !dbg !608 | |
br i1 %cmp44, label %land.rhs46, label %land.end49, !dbg !609 | |
land.rhs46: ; preds = %while.cond43 | |
%45 = load i8*, i8** %Pos, align 8, !dbg !610, !tbaa !106 | |
%46 = load i8, i8* %45, align 1, !dbg !611, !tbaa !182 | |
%call47 = call i32 @isDigitChar(i8 signext %46), !dbg !612 | |
%tobool48 = icmp ne i32 %call47, 0, !dbg !609 | |
br label %land.end49 | |
land.end49: ; preds = %land.rhs46, %while.cond43 | |
%47 = phi i1 [ false, %while.cond43 ], [ %tobool48, %land.rhs46 ], !dbg !613 | |
br i1 %47, label %while.body50, label %while.end52, !dbg !605 | |
while.body50: ; preds = %land.end49 | |
%48 = load i8*, i8** %Pos, align 8, !dbg !614, !tbaa !106 | |
%incdec.ptr51 = getelementptr inbounds i8, i8* %48, i32 1, !dbg !614 | |
store i8* %incdec.ptr51, i8** %Pos, align 8, !dbg !614, !tbaa !106 | |
%49 = load i8*, i8** %Pos, align 8, !dbg !616, !tbaa !106 | |
store i8* %49, i8** %EndOfNumber, align 8, !dbg !617, !tbaa !106 | |
br label %while.cond43, !dbg !605, !llvm.loop !618 | |
while.end52: ; preds = %land.end49 | |
br label %if.end53, !dbg !620 | |
if.end53: ; preds = %while.end52, %land.lhs.true30, %if.end27 | |
%50 = load i8*, i8** %EndOfNumber, align 8, !dbg !621, !tbaa !106 | |
store i8* %50, i8** %retval, align 8, !dbg !622 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup54, !dbg !622 | |
cleanup54: ; preds = %if.end53, %if.then26, %cleanup | |
%51 = bitcast i8** %EndOfNumber to i8*, !dbg !623 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %51) #9, !dbg !623 | |
%52 = bitcast i8** %Pos to i8*, !dbg !623 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %52) #9, !dbg !623 | |
%53 = load i8*, i8** %retval, align 8, !dbg !623 | |
ret i8* %53, !dbg !623 | |
} | |
; Function Attrs: nounwind uwtable | |
define internal i32 @CompareNumbers(i8* %F1P, i8* %F2P, i8* %F1End, i8* %F2End, double %AbsTolerance, double %RelTolerance) #0 !dbg !624 { | |
entry: | |
%retval = alloca i32, align 4 | |
%F1P.addr = alloca i8*, align 8 | |
%F2P.addr = alloca i8*, align 8 | |
%F1End.addr = alloca i8*, align 8 | |
%F2End.addr = alloca i8*, align 8 | |
%AbsTolerance.addr = alloca double, align 8 | |
%RelTolerance.addr = alloca double, align 8 | |
%F1NumEnd = alloca i8*, align 8 | |
%F2NumEnd = alloca i8*, align 8 | |
%F1Len = alloca i64, align 8 | |
%F2Len = alloca i64, align 8 | |
%V1 = alloca double, align 8 | |
%V2 = alloca double, align 8 | |
%cleanup.dest.slot = alloca i32, align 4 | |
%StrTmp = alloca i8*, align 8 | |
%StrTmp34 = alloca i8*, align 8 | |
%Diff = alloca double, align 8 | |
store i8* %F1P, i8** %F1P.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i8** %F1P.addr, metadata !628, metadata !DIExpression()), !dbg !651 | |
store i8* %F2P, i8** %F2P.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i8** %F2P.addr, metadata !629, metadata !DIExpression()), !dbg !652 | |
store i8* %F1End, i8** %F1End.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i8** %F1End.addr, metadata !630, metadata !DIExpression()), !dbg !653 | |
store i8* %F2End, i8** %F2End.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i8** %F2End.addr, metadata !631, metadata !DIExpression()), !dbg !654 | |
store double %AbsTolerance, double* %AbsTolerance.addr, align 8, !tbaa !244 | |
call void @llvm.dbg.declare(metadata double* %AbsTolerance.addr, metadata !632, metadata !DIExpression()), !dbg !655 | |
store double %RelTolerance, double* %RelTolerance.addr, align 8, !tbaa !244 | |
call void @llvm.dbg.declare(metadata double* %RelTolerance.addr, metadata !633, metadata !DIExpression()), !dbg !656 | |
%0 = bitcast i8** %F1NumEnd to i8*, !dbg !657 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %0) #9, !dbg !657 | |
call void @llvm.dbg.declare(metadata i8** %F1NumEnd, metadata !634, metadata !DIExpression()), !dbg !658 | |
%1 = bitcast i8** %F2NumEnd to i8*, !dbg !657 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %1) #9, !dbg !657 | |
call void @llvm.dbg.declare(metadata i8** %F2NumEnd, metadata !635, metadata !DIExpression()), !dbg !659 | |
%2 = bitcast i64* %F1Len to i8*, !dbg !660 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %2) #9, !dbg !660 | |
call void @llvm.dbg.declare(metadata i64* %F1Len, metadata !636, metadata !DIExpression()), !dbg !661 | |
%3 = load i8*, i8** %F1End.addr, align 8, !dbg !662, !tbaa !106 | |
%4 = load i8*, i8** %F1P.addr, align 8, !dbg !663, !tbaa !106 | |
%sub.ptr.lhs.cast = ptrtoint i8* %3 to i64, !dbg !664 | |
%sub.ptr.rhs.cast = ptrtoint i8* %4 to i64, !dbg !664 | |
%sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast, !dbg !664 | |
store i64 %sub.ptr.sub, i64* %F1Len, align 8, !dbg !661, !tbaa !144 | |
%5 = bitcast i64* %F2Len to i8*, !dbg !665 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %5) #9, !dbg !665 | |
call void @llvm.dbg.declare(metadata i64* %F2Len, metadata !639, metadata !DIExpression()), !dbg !666 | |
%6 = load i8*, i8** %F2End.addr, align 8, !dbg !667, !tbaa !106 | |
%7 = load i8*, i8** %F2P.addr, align 8, !dbg !668, !tbaa !106 | |
%sub.ptr.lhs.cast1 = ptrtoint i8* %6 to i64, !dbg !669 | |
%sub.ptr.rhs.cast2 = ptrtoint i8* %7 to i64, !dbg !669 | |
%sub.ptr.sub3 = sub i64 %sub.ptr.lhs.cast1, %sub.ptr.rhs.cast2, !dbg !669 | |
store i64 %sub.ptr.sub3, i64* %F2Len, align 8, !dbg !666, !tbaa !144 | |
%8 = bitcast double* %V1 to i8*, !dbg !670 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %8) #9, !dbg !670 | |
call void @llvm.dbg.declare(metadata double* %V1, metadata !640, metadata !DIExpression()), !dbg !671 | |
store double 0.000000e+00, double* %V1, align 8, !dbg !671, !tbaa !244 | |
%9 = bitcast double* %V2 to i8*, !dbg !670 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %9) #9, !dbg !670 | |
call void @llvm.dbg.declare(metadata double* %V2, metadata !641, metadata !DIExpression()), !dbg !672 | |
store double 0.000000e+00, double* %V2, align 8, !dbg !672, !tbaa !244 | |
%10 = load i64, i64* %F1Len, align 8, !dbg !673, !tbaa !144 | |
%11 = load i64, i64* %F2Len, align 8, !dbg !675, !tbaa !144 | |
%cmp = icmp eq i64 %10, %11, !dbg !676 | |
br i1 %cmp, label %land.lhs.true, label %if.end, !dbg !677 | |
land.lhs.true: ; preds = %entry | |
%12 = load i8*, i8** %F1P.addr, align 8, !dbg !678, !tbaa !106 | |
%13 = load i8*, i8** %F2P.addr, align 8, !dbg !679, !tbaa !106 | |
%14 = load i64, i64* %F1Len, align 8, !dbg !680, !tbaa !144 | |
%call = call i32 @memcmp(i8* %12, i8* %13, i64 %14) #11, !dbg !681 | |
%cmp4 = icmp eq i32 %call, 0, !dbg !682 | |
br i1 %cmp4, label %if.then, label %if.end, !dbg !683 | |
if.then: ; preds = %land.lhs.true | |
store i32 0, i32* %retval, align 4, !dbg !684 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup93, !dbg !684 | |
if.end: ; preds = %land.lhs.true, %entry | |
%15 = load i8*, i8** %F1P.addr, align 8, !dbg !685, !tbaa !106 | |
%call5 = call double @strtod(i8* %15, i8** %F1NumEnd) #9, !dbg !686 | |
store double %call5, double* %V1, align 8, !dbg !687, !tbaa !244 | |
%16 = load i8*, i8** %F2P.addr, align 8, !dbg !688, !tbaa !106 | |
%call6 = call double @strtod(i8* %16, i8** %F2NumEnd) #9, !dbg !689 | |
store double %call6, double* %V2, align 8, !dbg !690, !tbaa !244 | |
%17 = load i8*, i8** %F1NumEnd, align 8, !dbg !691, !tbaa !106 | |
%18 = load i8, i8* %17, align 1, !dbg !692, !tbaa !182 | |
%conv = sext i8 %18 to i32, !dbg !692 | |
%cmp7 = icmp eq i32 %conv, 68, !dbg !693 | |
br i1 %cmp7, label %if.then12, label %lor.lhs.false, !dbg !694 | |
lor.lhs.false: ; preds = %if.end | |
%19 = load i8*, i8** %F1NumEnd, align 8, !dbg !695, !tbaa !106 | |
%20 = load i8, i8* %19, align 1, !dbg !696, !tbaa !182 | |
%conv9 = sext i8 %20 to i32, !dbg !696 | |
%cmp10 = icmp eq i32 %conv9, 100, !dbg !697 | |
br i1 %cmp10, label %if.then12, label %if.end25, !dbg !698 | |
if.then12: ; preds = %lor.lhs.false, %if.end | |
%21 = bitcast i8** %StrTmp to i8*, !dbg !699 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %21) #9, !dbg !699 | |
call void @llvm.dbg.declare(metadata i8** %StrTmp, metadata !642, metadata !DIExpression()), !dbg !700 | |
%22 = load i64, i64* %F1Len, align 8, !dbg !701, !tbaa !144 | |
%add = add nsw i64 %22, 1, !dbg !702 | |
%call13 = call noalias align 16 i8* @malloc(i64 %add) #9, !dbg !703 | |
store i8* %call13, i8** %StrTmp, align 8, !dbg !700, !tbaa !106 | |
%23 = load i8*, i8** %StrTmp, align 8, !dbg !704, !tbaa !106 | |
%24 = load i8*, i8** %F1P.addr, align 8, !dbg !706, !tbaa !106 | |
%25 = load i64, i64* %F1Len, align 8, !dbg !707, !tbaa !144 | |
%add14 = add nsw i64 %25, 1, !dbg !708 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %23, i8* align 1 %24, i64 %add14, i1 false), !dbg !709 | |
%26 = load i8*, i8** %StrTmp, align 8, !dbg !710, !tbaa !106 | |
%27 = load i8*, i8** %F1NumEnd, align 8, !dbg !711, !tbaa !106 | |
%28 = load i8*, i8** %F1P.addr, align 8, !dbg !712, !tbaa !106 | |
%sub.ptr.lhs.cast15 = ptrtoint i8* %27 to i64, !dbg !713 | |
%sub.ptr.rhs.cast16 = ptrtoint i8* %28 to i64, !dbg !713 | |
%sub.ptr.sub17 = sub i64 %sub.ptr.lhs.cast15, %sub.ptr.rhs.cast16, !dbg !713 | |
%conv18 = trunc i64 %sub.ptr.sub17 to i32, !dbg !714 | |
%idxprom = zext i32 %conv18 to i64, !dbg !710 | |
%arrayidx = getelementptr inbounds i8, i8* %26, i64 %idxprom, !dbg !710 | |
store i8 101, i8* %arrayidx, align 1, !dbg !715, !tbaa !182 | |
%29 = load i8*, i8** %StrTmp, align 8, !dbg !716, !tbaa !106 | |
%arrayidx19 = getelementptr inbounds i8, i8* %29, i64 0, !dbg !716 | |
%call20 = call double @strtod(i8* %arrayidx19, i8** %F1NumEnd) #9, !dbg !717 | |
store double %call20, double* %V1, align 8, !dbg !718, !tbaa !244 | |
%30 = load i8*, i8** %F1P.addr, align 8, !dbg !719, !tbaa !106 | |
%31 = load i8*, i8** %F1NumEnd, align 8, !dbg !720, !tbaa !106 | |
%32 = load i8*, i8** %StrTmp, align 8, !dbg !721, !tbaa !106 | |
%arrayidx21 = getelementptr inbounds i8, i8* %32, i64 0, !dbg !721 | |
%sub.ptr.lhs.cast22 = ptrtoint i8* %31 to i64, !dbg !722 | |
%sub.ptr.rhs.cast23 = ptrtoint i8* %arrayidx21 to i64, !dbg !722 | |
%sub.ptr.sub24 = sub i64 %sub.ptr.lhs.cast22, %sub.ptr.rhs.cast23, !dbg !722 | |
%add.ptr = getelementptr inbounds i8, i8* %30, i64 %sub.ptr.sub24, !dbg !723 | |
store i8* %add.ptr, i8** %F1NumEnd, align 8, !dbg !724, !tbaa !106 | |
%33 = load i8*, i8** %StrTmp, align 8, !dbg !725, !tbaa !106 | |
call void @free(i8* %33) #9, !dbg !726 | |
%34 = bitcast i8** %StrTmp to i8*, !dbg !727 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %34) #9, !dbg !727 | |
br label %if.end25, !dbg !728 | |
if.end25: ; preds = %if.then12, %lor.lhs.false | |
%35 = load i8*, i8** %F2NumEnd, align 8, !dbg !729, !tbaa !106 | |
%36 = load i8, i8* %35, align 1, !dbg !730, !tbaa !182 | |
%conv26 = sext i8 %36 to i32, !dbg !730 | |
%cmp27 = icmp eq i32 %conv26, 68, !dbg !731 | |
br i1 %cmp27, label %if.then33, label %lor.lhs.false29, !dbg !732 | |
lor.lhs.false29: ; preds = %if.end25 | |
%37 = load i8*, i8** %F2NumEnd, align 8, !dbg !733, !tbaa !106 | |
%38 = load i8, i8* %37, align 1, !dbg !734, !tbaa !182 | |
%conv30 = sext i8 %38 to i32, !dbg !734 | |
%cmp31 = icmp eq i32 %conv30, 100, !dbg !735 | |
br i1 %cmp31, label %if.then33, label %if.end51, !dbg !736 | |
if.then33: ; preds = %lor.lhs.false29, %if.end25 | |
%39 = bitcast i8** %StrTmp34 to i8*, !dbg !737 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %39) #9, !dbg !737 | |
call void @llvm.dbg.declare(metadata i8** %StrTmp34, metadata !645, metadata !DIExpression()), !dbg !738 | |
%40 = load i64, i64* %F2Len, align 8, !dbg !739, !tbaa !144 | |
%add35 = add nsw i64 %40, 1, !dbg !740 | |
%call36 = call noalias align 16 i8* @malloc(i64 %add35) #9, !dbg !741 | |
store i8* %call36, i8** %StrTmp34, align 8, !dbg !738, !tbaa !106 | |
%41 = load i8*, i8** %StrTmp34, align 8, !dbg !742, !tbaa !106 | |
%42 = load i8*, i8** %F2P.addr, align 8, !dbg !744, !tbaa !106 | |
%43 = load i64, i64* %F2Len, align 8, !dbg !745, !tbaa !144 | |
%add37 = add nsw i64 %43, 1, !dbg !746 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %41, i8* align 1 %42, i64 %add37, i1 false), !dbg !747 | |
%44 = load i8*, i8** %StrTmp34, align 8, !dbg !748, !tbaa !106 | |
%45 = load i8*, i8** %F2NumEnd, align 8, !dbg !749, !tbaa !106 | |
%46 = load i8*, i8** %F2P.addr, align 8, !dbg !750, !tbaa !106 | |
%sub.ptr.lhs.cast38 = ptrtoint i8* %45 to i64, !dbg !751 | |
%sub.ptr.rhs.cast39 = ptrtoint i8* %46 to i64, !dbg !751 | |
%sub.ptr.sub40 = sub i64 %sub.ptr.lhs.cast38, %sub.ptr.rhs.cast39, !dbg !751 | |
%conv41 = trunc i64 %sub.ptr.sub40 to i32, !dbg !752 | |
%idxprom42 = zext i32 %conv41 to i64, !dbg !748 | |
%arrayidx43 = getelementptr inbounds i8, i8* %44, i64 %idxprom42, !dbg !748 | |
store i8 101, i8* %arrayidx43, align 1, !dbg !753, !tbaa !182 | |
%47 = load i8*, i8** %StrTmp34, align 8, !dbg !754, !tbaa !106 | |
%arrayidx44 = getelementptr inbounds i8, i8* %47, i64 0, !dbg !754 | |
%call45 = call double @strtod(i8* %arrayidx44, i8** %F2NumEnd) #9, !dbg !755 | |
store double %call45, double* %V2, align 8, !dbg !756, !tbaa !244 | |
%48 = load i8*, i8** %F2P.addr, align 8, !dbg !757, !tbaa !106 | |
%49 = load i8*, i8** %F2NumEnd, align 8, !dbg !758, !tbaa !106 | |
%50 = load i8*, i8** %StrTmp34, align 8, !dbg !759, !tbaa !106 | |
%arrayidx46 = getelementptr inbounds i8, i8* %50, i64 0, !dbg !759 | |
%sub.ptr.lhs.cast47 = ptrtoint i8* %49 to i64, !dbg !760 | |
%sub.ptr.rhs.cast48 = ptrtoint i8* %arrayidx46 to i64, !dbg !760 | |
%sub.ptr.sub49 = sub i64 %sub.ptr.lhs.cast47, %sub.ptr.rhs.cast48, !dbg !760 | |
%add.ptr50 = getelementptr inbounds i8, i8* %48, i64 %sub.ptr.sub49, !dbg !761 | |
store i8* %add.ptr50, i8** %F2NumEnd, align 8, !dbg !762, !tbaa !106 | |
%51 = load i8*, i8** %StrTmp34, align 8, !dbg !763, !tbaa !106 | |
call void @free(i8* %51) #9, !dbg !764 | |
%52 = bitcast i8** %StrTmp34 to i8*, !dbg !765 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %52) #9, !dbg !765 | |
br label %if.end51, !dbg !766 | |
if.end51: ; preds = %if.then33, %lor.lhs.false29 | |
%53 = load i8*, i8** %F1NumEnd, align 8, !dbg !767, !tbaa !106 | |
%54 = load i8*, i8** %F1P.addr, align 8, !dbg !769, !tbaa !106 | |
%cmp52 = icmp eq i8* %53, %54, !dbg !770 | |
br i1 %cmp52, label %if.then57, label %lor.lhs.false54, !dbg !771 | |
lor.lhs.false54: ; preds = %if.end51 | |
%55 = load i8*, i8** %F2NumEnd, align 8, !dbg !772, !tbaa !106 | |
%56 = load i8*, i8** %F2P.addr, align 8, !dbg !773, !tbaa !106 | |
%cmp55 = icmp eq i8* %55, %56, !dbg !774 | |
br i1 %cmp55, label %if.then57, label %if.end63, !dbg !775 | |
if.then57: ; preds = %lor.lhs.false54, %if.end51 | |
%57 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !776, !tbaa !106 | |
%58 = load i8*, i8** @g_program, align 8, !dbg !778, !tbaa !106 | |
%59 = load i8*, i8** %F1P.addr, align 8, !dbg !779, !tbaa !106 | |
%arrayidx58 = getelementptr inbounds i8, i8* %59, i64 0, !dbg !779 | |
%60 = load i8, i8* %arrayidx58, align 1, !dbg !779, !tbaa !182 | |
%conv59 = sext i8 %60 to i32, !dbg !779 | |
%61 = load i8*, i8** %F2P.addr, align 8, !dbg !780, !tbaa !106 | |
%arrayidx60 = getelementptr inbounds i8, i8* %61, i64 0, !dbg !780 | |
%62 = load i8, i8* %arrayidx60, align 1, !dbg !780, !tbaa !182 | |
%conv61 = sext i8 %62 to i32, !dbg !780 | |
%call62 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %57, i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.5, i64 0, i64 0), i8* %58, i32 %conv59, i32 %conv61), !dbg !781 | |
store i32 1, i32* %retval, align 4, !dbg !782 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup93, !dbg !782 | |
if.end63: ; preds = %lor.lhs.false54 | |
%63 = load double, double* %V1, align 8, !dbg !783, !tbaa !244 | |
%64 = load double, double* %V2, align 8, !dbg !785, !tbaa !244 | |
%cmp64 = fcmp oeq double %63, %64, !dbg !786 | |
br i1 %cmp64, label %if.then66, label %if.end67, !dbg !787 | |
if.then66: ; preds = %if.end63 | |
store i32 0, i32* %retval, align 4, !dbg !788 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup93, !dbg !788 | |
if.end67: ; preds = %if.end63 | |
%65 = load double, double* %AbsTolerance.addr, align 8, !dbg !789, !tbaa !244 | |
%cmp68 = fcmp oeq double %65, 0.000000e+00, !dbg !790 | |
br i1 %cmp68, label %if.then73, label %lor.lhs.false70, !dbg !791 | |
lor.lhs.false70: ; preds = %if.end67 | |
%66 = load double, double* %AbsTolerance.addr, align 8, !dbg !792, !tbaa !244 | |
%67 = load double, double* %V1, align 8, !dbg !793, !tbaa !244 | |
%68 = load double, double* %V2, align 8, !dbg !794, !tbaa !244 | |
%sub = fsub double %67, %68, !dbg !795 | |
%69 = call double @llvm.fabs.f64(double %sub), !dbg !796 | |
%cmp71 = fcmp olt double %66, %69, !dbg !797 | |
br i1 %cmp71, label %if.then73, label %if.end92, !dbg !798 | |
if.then73: ; preds = %lor.lhs.false70, %if.end67 | |
%70 = bitcast double* %Diff to i8*, !dbg !799 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %70) #9, !dbg !799 | |
call void @llvm.dbg.declare(metadata double* %Diff, metadata !648, metadata !DIExpression()), !dbg !800 | |
%71 = load double, double* %V2, align 8, !dbg !801, !tbaa !244 | |
%tobool = fcmp une double %71, 0.000000e+00, !dbg !801 | |
br i1 %tobool, label %if.then74, label %if.else, !dbg !803 | |
if.then74: ; preds = %if.then73 | |
%72 = load double, double* %V1, align 8, !dbg !804, !tbaa !244 | |
%73 = load double, double* %V2, align 8, !dbg !805, !tbaa !244 | |
%div = fdiv double %72, %73, !dbg !806 | |
%sub75 = fsub double %div, 1.000000e+00, !dbg !807 | |
%74 = call double @llvm.fabs.f64(double %sub75), !dbg !808 | |
store double %74, double* %Diff, align 8, !dbg !809, !tbaa !244 | |
br label %if.end82, !dbg !810 | |
if.else: ; preds = %if.then73 | |
%75 = load double, double* %V1, align 8, !dbg !811, !tbaa !244 | |
%tobool76 = fcmp une double %75, 0.000000e+00, !dbg !811 | |
br i1 %tobool76, label %if.then77, label %if.else80, !dbg !813 | |
if.then77: ; preds = %if.else | |
%76 = load double, double* %V2, align 8, !dbg !814, !tbaa !244 | |
%77 = load double, double* %V1, align 8, !dbg !815, !tbaa !244 | |
%div78 = fdiv double %76, %77, !dbg !816 | |
%sub79 = fsub double %div78, 1.000000e+00, !dbg !817 | |
%78 = call double @llvm.fabs.f64(double %sub79), !dbg !818 | |
store double %78, double* %Diff, align 8, !dbg !819, !tbaa !244 | |
br label %if.end81, !dbg !820 | |
if.else80: ; preds = %if.else | |
store double 0.000000e+00, double* %Diff, align 8, !dbg !821, !tbaa !244 | |
br label %if.end81 | |
if.end81: ; preds = %if.else80, %if.then77 | |
br label %if.end82 | |
if.end82: ; preds = %if.end81, %if.then74 | |
%79 = load double, double* %RelTolerance.addr, align 8, !dbg !822, !tbaa !244 | |
%cmp83 = fcmp oeq double %79, 0.000000e+00, !dbg !824 | |
br i1 %cmp83, label %if.then88, label %lor.lhs.false85, !dbg !825 | |
lor.lhs.false85: ; preds = %if.end82 | |
%80 = load double, double* %Diff, align 8, !dbg !826, !tbaa !244 | |
%81 = load double, double* %RelTolerance.addr, align 8, !dbg !827, !tbaa !244 | |
%cmp86 = fcmp ogt double %80, %81, !dbg !828 | |
br i1 %cmp86, label %if.then88, label %if.end91, !dbg !829 | |
if.then88: ; preds = %lor.lhs.false85, %if.end82 | |
%82 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !830, !tbaa !106 | |
%83 = load i8*, i8** @g_program, align 8, !dbg !832, !tbaa !106 | |
%84 = load double, double* %V1, align 8, !dbg !833, !tbaa !244 | |
%85 = load double, double* %V2, align 8, !dbg !834, !tbaa !244 | |
%86 = load double, double* %V1, align 8, !dbg !835, !tbaa !244 | |
%87 = load double, double* %V2, align 8, !dbg !836, !tbaa !244 | |
%sub89 = fsub double %86, %87, !dbg !837 | |
%88 = call double @llvm.fabs.f64(double %sub89), !dbg !838 | |
%89 = load double, double* %Diff, align 8, !dbg !839, !tbaa !244 | |
%90 = load double, double* %RelTolerance.addr, align 8, !dbg !840, !tbaa !244 | |
%91 = load double, double* %AbsTolerance.addr, align 8, !dbg !841, !tbaa !244 | |
%call90 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %82, i8* getelementptr inbounds ([87 x i8], [87 x i8]* @.str.16, i64 0, i64 0), i8* %83, double %84, double %85, double %88, double %89, double %90, double %91), !dbg !842 | |
store i32 1, i32* %retval, align 4, !dbg !843 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup, !dbg !843 | |
if.end91: ; preds = %lor.lhs.false85 | |
store i32 0, i32* %cleanup.dest.slot, align 4, !dbg !844 | |
br label %cleanup, !dbg !844 | |
cleanup: ; preds = %if.end91, %if.then88 | |
%92 = bitcast double* %Diff to i8*, !dbg !844 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %92) #9, !dbg !844 | |
%cleanup.dest = load i32, i32* %cleanup.dest.slot, align 4 | |
switch i32 %cleanup.dest, label %cleanup93 [ | |
i32 0, label %cleanup.cont | |
] | |
cleanup.cont: ; preds = %cleanup | |
br label %if.end92, !dbg !845 | |
if.end92: ; preds = %cleanup.cont, %lor.lhs.false70 | |
store i32 0, i32* %retval, align 4, !dbg !846 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup93, !dbg !846 | |
cleanup93: ; preds = %if.end92, %cleanup, %if.then66, %if.then57, %if.then | |
%93 = bitcast double* %V2 to i8*, !dbg !847 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %93) #9, !dbg !847 | |
%94 = bitcast double* %V1 to i8*, !dbg !847 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %94) #9, !dbg !847 | |
%95 = bitcast i64* %F2Len to i8*, !dbg !847 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %95) #9, !dbg !847 | |
%96 = bitcast i64* %F1Len to i8*, !dbg !847 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %96) #9, !dbg !847 | |
%97 = bitcast i8** %F2NumEnd to i8*, !dbg !847 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %97) #9, !dbg !847 | |
%98 = bitcast i8** %F1NumEnd to i8*, !dbg !847 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %98) #9, !dbg !847 | |
%99 = load i32, i32* %retval, align 4, !dbg !847 | |
ret i32 %99, !dbg !847 | |
} | |
; Function Attrs: nounwind uwtable | |
define dso_local void @usage() #0 !dbg !848 { | |
entry: | |
%0 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !851, !tbaa !106 | |
%1 = load i8*, i8** @g_program, align 8, !dbg !852, !tbaa !106 | |
%call = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %0, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.7, i64 0, i64 0), i8* %1), !dbg !853 | |
%2 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !854, !tbaa !106 | |
%call1 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %2, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.8, i64 0, i64 0)), !dbg !855 | |
%3 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !856, !tbaa !106 | |
%call2 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %3, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.9, i64 0, i64 0)), !dbg !857 | |
%4 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !858, !tbaa !106 | |
%call3 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %4, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.10, i64 0, i64 0)), !dbg !859 | |
%5 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !860, !tbaa !106 | |
%call4 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %5, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0)), !dbg !861 | |
call void @exit(i32 2) #10, !dbg !862 | |
unreachable, !dbg !862 | |
} | |
; Function Attrs: nounwind uwtable | |
define dso_local i32 @main(i32 %argc, i8** %argv) #0 !dbg !863 { | |
entry: | |
%retval = alloca i32, align 4 | |
%argc.addr = alloca i32, align 4 | |
%argv.addr = alloca i8**, align 8 | |
%relative_tolerance = alloca double, align 8 | |
%absolute_tolerance = alloca double, align 8 | |
%ignore_whitespace = alloca i32, align 4 | |
%i = alloca i32, align 4 | |
%arg = alloca i8*, align 8 | |
%cleanup.dest.slot = alloca i32, align 4 | |
%endp = alloca i8*, align 8 | |
%value = alloca double, align 8 | |
store i32 0, i32* %retval, align 4 | |
store i32 %argc, i32* %argc.addr, align 4, !tbaa !248 | |
call void @llvm.dbg.declare(metadata i32* %argc.addr, metadata !869, metadata !DIExpression()), !dbg !884 | |
store i8** %argv, i8*** %argv.addr, align 8, !tbaa !106 | |
call void @llvm.dbg.declare(metadata i8*** %argv.addr, metadata !870, metadata !DIExpression()), !dbg !885 | |
%0 = bitcast double* %relative_tolerance to i8*, !dbg !886 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %0) #9, !dbg !886 | |
call void @llvm.dbg.declare(metadata double* %relative_tolerance, metadata !871, metadata !DIExpression()), !dbg !887 | |
store double 0.000000e+00, double* %relative_tolerance, align 8, !dbg !887, !tbaa !244 | |
%1 = bitcast double* %absolute_tolerance to i8*, !dbg !888 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %1) #9, !dbg !888 | |
call void @llvm.dbg.declare(metadata double* %absolute_tolerance, metadata !872, metadata !DIExpression()), !dbg !889 | |
store double 0.000000e+00, double* %absolute_tolerance, align 8, !dbg !889, !tbaa !244 | |
%2 = bitcast i32* %ignore_whitespace to i8*, !dbg !890 | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* %2) #9, !dbg !890 | |
call void @llvm.dbg.declare(metadata i32* %ignore_whitespace, metadata !873, metadata !DIExpression()), !dbg !891 | |
store i32 0, i32* %ignore_whitespace, align 4, !dbg !891, !tbaa !248 | |
%3 = bitcast i32* %i to i8*, !dbg !892 | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* %3) #9, !dbg !892 | |
call void @llvm.dbg.declare(metadata i32* %i, metadata !874, metadata !DIExpression()), !dbg !893 | |
%4 = load i8**, i8*** %argv.addr, align 8, !dbg !894, !tbaa !106 | |
%arrayidx = getelementptr inbounds i8*, i8** %4, i64 0, !dbg !894 | |
%5 = load i8*, i8** %arrayidx, align 8, !dbg !894, !tbaa !106 | |
store i8* %5, i8** @g_program, align 8, !dbg !895, !tbaa !106 | |
store i32 1, i32* %i, align 4, !dbg !896, !tbaa !248 | |
br label %for.cond, !dbg !897 | |
for.cond: ; preds = %for.inc, %entry | |
%6 = load i32, i32* %i, align 4, !dbg !898, !tbaa !248 | |
%7 = load i32, i32* %argc.addr, align 4, !dbg !899, !tbaa !248 | |
%cmp = icmp ne i32 %6, %7, !dbg !900 | |
br i1 %cmp, label %for.body, label %for.end, !dbg !901 | |
for.body: ; preds = %for.cond | |
%8 = bitcast i8** %arg to i8*, !dbg !902 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %8) #9, !dbg !902 | |
call void @llvm.dbg.declare(metadata i8** %arg, metadata !875, metadata !DIExpression()), !dbg !903 | |
%9 = load i8**, i8*** %argv.addr, align 8, !dbg !904, !tbaa !106 | |
%10 = load i32, i32* %i, align 4, !dbg !905, !tbaa !248 | |
%idxprom = sext i32 %10 to i64, !dbg !904 | |
%arrayidx1 = getelementptr inbounds i8*, i8** %9, i64 %idxprom, !dbg !904 | |
%11 = load i8*, i8** %arrayidx1, align 8, !dbg !904, !tbaa !106 | |
store i8* %11, i8** %arg, align 8, !dbg !903, !tbaa !106 | |
%12 = load i8*, i8** %arg, align 8, !dbg !906, !tbaa !106 | |
%arrayidx2 = getelementptr inbounds i8, i8* %12, i64 0, !dbg !906 | |
%13 = load i8, i8* %arrayidx2, align 1, !dbg !906, !tbaa !182 | |
%conv = sext i8 %13 to i32, !dbg !906 | |
%cmp3 = icmp ne i32 %conv, 45, !dbg !908 | |
br i1 %cmp3, label %if.then, label %if.end, !dbg !909 | |
if.then: ; preds = %for.body | |
store i32 2, i32* %cleanup.dest.slot, align 4 | |
br label %cleanup, !dbg !910 | |
if.end: ; preds = %for.body | |
%14 = load i8*, i8** %arg, align 8, !dbg !911, !tbaa !106 | |
%call = call i64 @strlen(i8* %14) #11, !dbg !913 | |
%cmp5 = icmp ne i64 %call, 2, !dbg !914 | |
br i1 %cmp5, label %if.then7, label %if.end9, !dbg !915 | |
if.then7: ; preds = %if.end | |
%15 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !916, !tbaa !106 | |
%16 = load i8*, i8** %arg, align 8, !dbg !918, !tbaa !106 | |
%call8 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %15, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.12, i64 0, i64 0), i8* %16), !dbg !919 | |
call void @usage(), !dbg !920 | |
br label %if.end9, !dbg !921 | |
if.end9: ; preds = %if.then7, %if.end | |
%17 = load i8*, i8** %arg, align 8, !dbg !922, !tbaa !106 | |
%arrayidx10 = getelementptr inbounds i8, i8* %17, i64 1, !dbg !922 | |
%18 = load i8, i8* %arrayidx10, align 1, !dbg !922, !tbaa !182 | |
%conv11 = sext i8 %18 to i32, !dbg !922 | |
switch i32 %conv11, label %sw.default [ | |
i32 97, label %sw.bb | |
i32 114, label %sw.bb | |
i32 105, label %sw.bb37 | |
], !dbg !923 | |
sw.bb: ; preds = %if.end9, %if.end9 | |
%19 = load i32, i32* %i, align 4, !dbg !924, !tbaa !248 | |
%add = add nsw i32 %19, 1, !dbg !925 | |
%20 = load i32, i32* %argc.addr, align 4, !dbg !926, !tbaa !248 | |
%cmp12 = icmp eq i32 %add, %20, !dbg !927 | |
br i1 %cmp12, label %if.then14, label %if.else, !dbg !928 | |
if.then14: ; preds = %sw.bb | |
%21 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !929, !tbaa !106 | |
%22 = load i8*, i8** %arg, align 8, !dbg !931, !tbaa !106 | |
%call15 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %21, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.13, i64 0, i64 0), i8* %22), !dbg !932 | |
call void @usage(), !dbg !933 | |
br label %if.end36, !dbg !934 | |
if.else: ; preds = %sw.bb | |
%23 = bitcast i8** %endp to i8*, !dbg !935 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %23) #9, !dbg !935 | |
call void @llvm.dbg.declare(metadata i8** %endp, metadata !879, metadata !DIExpression()), !dbg !936 | |
store i8* null, i8** %endp, align 8, !dbg !936, !tbaa !106 | |
%24 = bitcast double* %value to i8*, !dbg !937 | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* %24) #9, !dbg !937 | |
call void @llvm.dbg.declare(metadata double* %value, metadata !883, metadata !DIExpression()), !dbg !938 | |
%25 = load i8**, i8*** %argv.addr, align 8, !dbg !939, !tbaa !106 | |
%26 = load i32, i32* %i, align 4, !dbg !940, !tbaa !248 | |
%inc = add nsw i32 %26, 1, !dbg !940 | |
store i32 %inc, i32* %i, align 4, !dbg !940, !tbaa !248 | |
%idxprom16 = sext i32 %inc to i64, !dbg !939 | |
%arrayidx17 = getelementptr inbounds i8*, i8** %25, i64 %idxprom16, !dbg !939 | |
%27 = load i8*, i8** %arrayidx17, align 8, !dbg !939, !tbaa !106 | |
%call18 = call double @strtod(i8* %27, i8** %endp) #9, !dbg !941 | |
store double %call18, double* %value, align 8, !dbg !938, !tbaa !244 | |
%28 = load i8*, i8** %endp, align 8, !dbg !942, !tbaa !106 | |
%cmp19 = icmp eq i8* %28, null, !dbg !944 | |
br i1 %cmp19, label %if.then24, label %lor.lhs.false, !dbg !945 | |
lor.lhs.false: ; preds = %if.else | |
%29 = load i8*, i8** %endp, align 8, !dbg !946, !tbaa !106 | |
%30 = load i8, i8* %29, align 1, !dbg !947, !tbaa !182 | |
%conv21 = sext i8 %30 to i32, !dbg !947 | |
%cmp22 = icmp ne i32 %conv21, 0, !dbg !948 | |
br i1 %cmp22, label %if.then24, label %if.end28, !dbg !949 | |
if.then24: ; preds = %lor.lhs.false, %if.else | |
%31 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !950, !tbaa !106 | |
%32 = load i8*, i8** %arg, align 8, !dbg !952, !tbaa !106 | |
%33 = load i8**, i8*** %argv.addr, align 8, !dbg !953, !tbaa !106 | |
%34 = load i32, i32* %i, align 4, !dbg !954, !tbaa !248 | |
%idxprom25 = sext i32 %34 to i64, !dbg !953 | |
%arrayidx26 = getelementptr inbounds i8*, i8** %33, i64 %idxprom25, !dbg !953 | |
%35 = load i8*, i8** %arrayidx26, align 8, !dbg !953, !tbaa !106 | |
%call27 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %31, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.14, i64 0, i64 0), i8* %32, i8* %35), !dbg !955 | |
call void @usage(), !dbg !956 | |
br label %if.end28, !dbg !957 | |
if.end28: ; preds = %if.then24, %lor.lhs.false | |
%36 = load i8*, i8** %arg, align 8, !dbg !958, !tbaa !106 | |
%arrayidx29 = getelementptr inbounds i8, i8* %36, i64 1, !dbg !958 | |
%37 = load i8, i8* %arrayidx29, align 1, !dbg !958, !tbaa !182 | |
%conv30 = sext i8 %37 to i32, !dbg !958 | |
%cmp31 = icmp eq i32 %conv30, 97, !dbg !960 | |
br i1 %cmp31, label %if.then33, label %if.else34, !dbg !961 | |
if.then33: ; preds = %if.end28 | |
%38 = load double, double* %value, align 8, !dbg !962, !tbaa !244 | |
store double %38, double* %absolute_tolerance, align 8, !dbg !963, !tbaa !244 | |
br label %if.end35, !dbg !964 | |
if.else34: ; preds = %if.end28 | |
%39 = load double, double* %value, align 8, !dbg !965, !tbaa !244 | |
store double %39, double* %relative_tolerance, align 8, !dbg !966, !tbaa !244 | |
br label %if.end35 | |
if.end35: ; preds = %if.else34, %if.then33 | |
%40 = bitcast double* %value to i8*, !dbg !967 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %40) #9, !dbg !967 | |
%41 = bitcast i8** %endp to i8*, !dbg !967 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %41) #9, !dbg !967 | |
br label %if.end36 | |
if.end36: ; preds = %if.end35, %if.then14 | |
br label %sw.epilog, !dbg !968 | |
sw.bb37: ; preds = %if.end9 | |
store i32 1, i32* %ignore_whitespace, align 4, !dbg !969, !tbaa !248 | |
br label %sw.epilog, !dbg !970 | |
sw.default: ; preds = %if.end9 | |
%42 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !971, !tbaa !106 | |
%43 = load i8*, i8** %arg, align 8, !dbg !972, !tbaa !106 | |
%call38 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %42, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.12, i64 0, i64 0), i8* %43), !dbg !973 | |
call void @usage(), !dbg !974 | |
br label %sw.epilog, !dbg !975 | |
sw.epilog: ; preds = %sw.default, %sw.bb37, %if.end36 | |
store i32 0, i32* %cleanup.dest.slot, align 4, !dbg !976 | |
br label %cleanup, !dbg !976 | |
cleanup: ; preds = %sw.epilog, %if.then | |
%44 = bitcast i8** %arg to i8*, !dbg !976 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %44) #9, !dbg !976 | |
%cleanup.dest = load i32, i32* %cleanup.dest.slot, align 4 | |
switch i32 %cleanup.dest, label %unreachable [ | |
i32 0, label %cleanup.cont | |
i32 2, label %for.end | |
] | |
cleanup.cont: ; preds = %cleanup | |
br label %for.inc, !dbg !977 | |
for.inc: ; preds = %cleanup.cont | |
%45 = load i32, i32* %i, align 4, !dbg !978, !tbaa !248 | |
%inc39 = add nsw i32 %45, 1, !dbg !978 | |
store i32 %inc39, i32* %i, align 4, !dbg !978, !tbaa !248 | |
br label %for.cond, !dbg !979, !llvm.loop !980 | |
for.end: ; preds = %cleanup, %for.cond | |
%46 = load i32, i32* %i, align 4, !dbg !982, !tbaa !248 | |
%add40 = add nsw i32 %46, 2, !dbg !984 | |
%47 = load i32, i32* %argc.addr, align 4, !dbg !985, !tbaa !248 | |
%cmp41 = icmp ne i32 %add40, %47, !dbg !986 | |
br i1 %cmp41, label %if.then43, label %if.end45, !dbg !987 | |
if.then43: ; preds = %for.end | |
%48 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !988, !tbaa !106 | |
%call44 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %48, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.15, i64 0, i64 0)), !dbg !990 | |
call void @usage(), !dbg !991 | |
br label %if.end45, !dbg !992 | |
if.end45: ; preds = %if.then43, %for.end | |
%49 = load i8**, i8*** %argv.addr, align 8, !dbg !993, !tbaa !106 | |
%50 = load i32, i32* %i, align 4, !dbg !994, !tbaa !248 | |
%idxprom46 = sext i32 %50 to i64, !dbg !993 | |
%arrayidx47 = getelementptr inbounds i8*, i8** %49, i64 %idxprom46, !dbg !993 | |
%51 = load i8*, i8** %arrayidx47, align 8, !dbg !993, !tbaa !106 | |
%52 = load i8**, i8*** %argv.addr, align 8, !dbg !995, !tbaa !106 | |
%53 = load i32, i32* %i, align 4, !dbg !996, !tbaa !248 | |
%add48 = add nsw i32 %53, 1, !dbg !997 | |
%idxprom49 = sext i32 %add48 to i64, !dbg !995 | |
%arrayidx50 = getelementptr inbounds i8*, i8** %52, i64 %idxprom49, !dbg !995 | |
%54 = load i8*, i8** %arrayidx50, align 8, !dbg !995, !tbaa !106 | |
%55 = load double, double* %absolute_tolerance, align 8, !dbg !998, !tbaa !244 | |
%56 = load double, double* %relative_tolerance, align 8, !dbg !999, !tbaa !244 | |
%57 = load i32, i32* %ignore_whitespace, align 4, !dbg !1000, !tbaa !248 | |
%call51 = call i32 @diff_files_with_tolerance(i8* %51, i8* %54, double %55, double %56, i32 %57), !dbg !1001 | |
store i32 %call51, i32* %retval, align 4, !dbg !1002 | |
store i32 1, i32* %cleanup.dest.slot, align 4 | |
%58 = bitcast i32* %i to i8*, !dbg !1003 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* %58) #9, !dbg !1003 | |
%59 = bitcast i32* %ignore_whitespace to i8*, !dbg !1003 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* %59) #9, !dbg !1003 | |
%60 = bitcast double* %absolute_tolerance to i8*, !dbg !1003 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %60) #9, !dbg !1003 | |
%61 = bitcast double* %relative_tolerance to i8*, !dbg !1003 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* %61) #9, !dbg !1003 | |
%62 = load i32, i32* %retval, align 4, !dbg !1003 | |
ret i32 %62, !dbg !1003 | |
unreachable: ; preds = %cleanup | |
unreachable | |
} | |
; Function Attrs: nounwind readonly willreturn | |
declare dso_local i64 @strlen(i8*) #6 | |
; Function Attrs: nounwind | |
declare dso_local double @strtod(i8*, i8**) #5 | |
; Function Attrs: nounwind readnone willreturn | |
declare dso_local i16** @__ctype_b_loc() #7 | |
; Function Attrs: nounwind uwtable | |
define internal i32 @isDigitChar(i8 signext %C) #0 !dbg !1004 { | |
entry: | |
%retval = alloca i32, align 4 | |
%C.addr = alloca i8, align 1 | |
store i8 %C, i8* %C.addr, align 1, !tbaa !182 | |
call void @llvm.dbg.declare(metadata i8* %C.addr, metadata !1006, metadata !DIExpression()), !dbg !1007 | |
%0 = load i8, i8* %C.addr, align 1, !dbg !1008, !tbaa !182 | |
%conv = sext i8 %0 to i32, !dbg !1008 | |
switch i32 %conv, label %sw.default [ | |
i32 48, label %sw.bb | |
i32 49, label %sw.bb | |
i32 50, label %sw.bb | |
i32 51, label %sw.bb | |
i32 52, label %sw.bb | |
i32 53, label %sw.bb | |
i32 54, label %sw.bb | |
i32 55, label %sw.bb | |
i32 56, label %sw.bb | |
i32 57, label %sw.bb | |
], !dbg !1009 | |
sw.bb: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry | |
store i32 1, i32* %retval, align 4, !dbg !1010 | |
br label %return, !dbg !1010 | |
sw.default: ; preds = %entry | |
store i32 0, i32* %retval, align 4, !dbg !1012 | |
br label %return, !dbg !1012 | |
return: ; preds = %sw.default, %sw.bb | |
%1 = load i32, i32* %retval, align 4, !dbg !1013 | |
ret i32 %1, !dbg !1013 | |
} | |
; Function Attrs: nounwind uwtable | |
define internal i32 @isSignedChar(i8 signext %C) #0 !dbg !1014 { | |
entry: | |
%C.addr = alloca i8, align 1 | |
store i8 %C, i8* %C.addr, align 1, !tbaa !182 | |
call void @llvm.dbg.declare(metadata i8* %C.addr, metadata !1016, metadata !DIExpression()), !dbg !1017 | |
%0 = load i8, i8* %C.addr, align 1, !dbg !1018, !tbaa !182 | |
%conv = sext i8 %0 to i32, !dbg !1018 | |
%cmp = icmp eq i32 %conv, 43, !dbg !1019 | |
br i1 %cmp, label %lor.end, label %lor.rhs, !dbg !1020 | |
lor.rhs: ; preds = %entry | |
%1 = load i8, i8* %C.addr, align 1, !dbg !1021, !tbaa !182 | |
%conv2 = sext i8 %1 to i32, !dbg !1021 | |
%cmp3 = icmp eq i32 %conv2, 45, !dbg !1022 | |
br label %lor.end, !dbg !1020 | |
lor.end: ; preds = %lor.rhs, %entry | |
%2 = phi i1 [ true, %entry ], [ %cmp3, %lor.rhs ] | |
%lor.ext = zext i1 %2 to i32, !dbg !1020 | |
ret i32 %lor.ext, !dbg !1023 | |
} | |
; Function Attrs: nounwind uwtable | |
define internal i32 @isExponentChar(i8 signext %C) #0 !dbg !1024 { | |
entry: | |
%retval = alloca i32, align 4 | |
%C.addr = alloca i8, align 1 | |
store i8 %C, i8* %C.addr, align 1, !tbaa !182 | |
call void @llvm.dbg.declare(metadata i8* %C.addr, metadata !1026, metadata !DIExpression()), !dbg !1027 | |
%0 = load i8, i8* %C.addr, align 1, !dbg !1028, !tbaa !182 | |
%conv = sext i8 %0 to i32, !dbg !1028 | |
switch i32 %conv, label %sw.default [ | |
i32 68, label %sw.bb | |
i32 100, label %sw.bb | |
i32 101, label %sw.bb | |
i32 69, label %sw.bb | |
], !dbg !1029 | |
sw.bb: ; preds = %entry, %entry, %entry, %entry | |
store i32 1, i32* %retval, align 4, !dbg !1030 | |
br label %return, !dbg !1030 | |
sw.default: ; preds = %entry | |
store i32 0, i32* %retval, align 4, !dbg !1032 | |
br label %return, !dbg !1032 | |
return: ; preds = %sw.default, %sw.bb | |
%1 = load i32, i32* %retval, align 4, !dbg !1033 | |
ret i32 %1, !dbg !1033 | |
} | |
; Function Attrs: argmemonly nofree nounwind willreturn | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #8 | |
; Function Attrs: nofree nosync nounwind readnone speculatable willreturn | |
declare double @llvm.fabs.f64(double) #1 | |
attributes #0 = { nounwind uwtable "frame-pointer"="none" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } | |
attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } | |
attributes #2 = { argmemonly nofree nosync nounwind willreturn } | |
attributes #3 = { "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } | |
attributes #4 = { noreturn nounwind "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } | |
attributes #5 = { nounwind "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } | |
attributes #6 = { nounwind readonly willreturn "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } | |
attributes #7 = { nounwind readnone willreturn "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } | |
attributes #8 = { argmemonly nofree nounwind willreturn } | |
attributes #9 = { nounwind } | |
attributes #10 = { noreturn nounwind } | |
attributes #11 = { nounwind readonly willreturn } | |
attributes #12 = { nounwind readnone willreturn } | |
!llvm.dbg.cu = !{!2} | |
!llvm.module.flags = !{!32, !33, !34, !35} | |
!llvm.ident = !{!36} | |
!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) | |
!1 = distinct !DIGlobalVariable(name: "g_program", scope: !2, file: !3, line: 20, type: !30, isLocal: false, isDefinition: true) | |
!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 14.0.0", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !21, globals: !29, splitDebugInlining: false, nameTableKind: None) | |
!3 = !DIFile(filename: "../tools/fpcmp.c", directory: "/home/nikic/llvm-test-suite/build-O3") | |
!4 = !{!5} | |
!5 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !6, line: 46, baseType: !7, size: 32, elements: !8) | |
!6 = !DIFile(filename: "/usr/include/ctype.h", directory: "") | |
!7 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) | |
!8 = !{!9, !10, !11, !12, !13, !14, !15, !16, !17, !18, !19, !20} | |
!9 = !DIEnumerator(name: "_ISupper", value: 256) | |
!10 = !DIEnumerator(name: "_ISlower", value: 512) | |
!11 = !DIEnumerator(name: "_ISalpha", value: 1024) | |
!12 = !DIEnumerator(name: "_ISdigit", value: 2048) | |
!13 = !DIEnumerator(name: "_ISxdigit", value: 4096) | |
!14 = !DIEnumerator(name: "_ISspace", value: 8192) | |
!15 = !DIEnumerator(name: "_ISprint", value: 16384) | |
!16 = !DIEnumerator(name: "_ISgraph", value: 32768) | |
!17 = !DIEnumerator(name: "_ISblank", value: 1) | |
!18 = !DIEnumerator(name: "_IScntrl", value: 2) | |
!19 = !DIEnumerator(name: "_ISpunct", value: 4) | |
!20 = !DIEnumerator(name: "_ISalnum", value: 8) | |
!21 = !{!22, !23, !24, !25, !26, !7} | |
!22 = !DIDerivedType(tag: DW_TAG_typedef, name: "bool", file: !3, line: 24, baseType: !23) | |
!23 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) | |
!24 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) | |
!25 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) | |
!26 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !27, size: 64) | |
!27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !28, size: 64) | |
!28 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) | |
!29 = !{!0} | |
!30 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !31, size: 64) | |
!31 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !28) | |
!32 = !{i32 7, !"Dwarf Version", i32 4} | |
!33 = !{i32 2, !"Debug Info Version", i32 3} | |
!34 = !{i32 1, !"wchar_size", i32 4} | |
!35 = !{i32 7, !"uwtable", i32 1} | |
!36 = !{!"clang version 14.0.0"} | |
!37 = distinct !DISubprogram(name: "load_file", scope: !3, file: !3, line: 199, type: !38, scopeLine: 199, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !42) | |
!38 = !DISubroutineType(types: !39) | |
!39 = !{!27, !30, !40} | |
!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) | |
!41 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) | |
!42 = !{!43, !44, !45, !104, !105} | |
!43 = !DILocalVariable(name: "path", arg: 1, scope: !37, file: !3, line: 199, type: !30) | |
!44 = !DILocalVariable(name: "size_out", arg: 2, scope: !37, file: !3, line: 199, type: !40) | |
!45 = !DILocalVariable(name: "fp", scope: !37, file: !3, line: 200, type: !46) | |
!46 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !47, size: 64) | |
!47 = !DIDerivedType(tag: DW_TAG_typedef, name: "FILE", file: !48, line: 7, baseType: !49) | |
!48 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types/FILE.h", directory: "") | |
!49 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_FILE", file: !50, line: 49, size: 1728, elements: !51) | |
!50 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h", directory: "") | |
!51 = !{!52, !53, !54, !55, !56, !57, !58, !59, !60, !61, !62, !63, !64, !67, !69, !70, !71, !74, !75, !77, !81, !84, !86, !89, !92, !93, !95, !99, !100} | |
!52 = !DIDerivedType(tag: DW_TAG_member, name: "_flags", scope: !49, file: !50, line: 51, baseType: !23, size: 32) | |
!53 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_ptr", scope: !49, file: !50, line: 54, baseType: !27, size: 64, offset: 64) | |
!54 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_end", scope: !49, file: !50, line: 55, baseType: !27, size: 64, offset: 128) | |
!55 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_base", scope: !49, file: !50, line: 56, baseType: !27, size: 64, offset: 192) | |
!56 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_base", scope: !49, file: !50, line: 57, baseType: !27, size: 64, offset: 256) | |
!57 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_ptr", scope: !49, file: !50, line: 58, baseType: !27, size: 64, offset: 320) | |
!58 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_end", scope: !49, file: !50, line: 59, baseType: !27, size: 64, offset: 384) | |
!59 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_buf_base", scope: !49, file: !50, line: 60, baseType: !27, size: 64, offset: 448) | |
!60 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_buf_end", scope: !49, file: !50, line: 61, baseType: !27, size: 64, offset: 512) | |
!61 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_save_base", scope: !49, file: !50, line: 64, baseType: !27, size: 64, offset: 576) | |
!62 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_backup_base", scope: !49, file: !50, line: 65, baseType: !27, size: 64, offset: 640) | |
!63 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_save_end", scope: !49, file: !50, line: 66, baseType: !27, size: 64, offset: 704) | |
!64 = !DIDerivedType(tag: DW_TAG_member, name: "_markers", scope: !49, file: !50, line: 68, baseType: !65, size: 64, offset: 768) | |
!65 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !66, size: 64) | |
!66 = !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_marker", file: !50, line: 36, flags: DIFlagFwdDecl) | |
!67 = !DIDerivedType(tag: DW_TAG_member, name: "_chain", scope: !49, file: !50, line: 70, baseType: !68, size: 64, offset: 832) | |
!68 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !49, size: 64) | |
!69 = !DIDerivedType(tag: DW_TAG_member, name: "_fileno", scope: !49, file: !50, line: 72, baseType: !23, size: 32, offset: 896) | |
!70 = !DIDerivedType(tag: DW_TAG_member, name: "_flags2", scope: !49, file: !50, line: 73, baseType: !23, size: 32, offset: 928) | |
!71 = !DIDerivedType(tag: DW_TAG_member, name: "_old_offset", scope: !49, file: !50, line: 74, baseType: !72, size: 64, offset: 960) | |
!72 = !DIDerivedType(tag: DW_TAG_typedef, name: "__off_t", file: !73, line: 152, baseType: !41) | |
!73 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "") | |
!74 = !DIDerivedType(tag: DW_TAG_member, name: "_cur_column", scope: !49, file: !50, line: 77, baseType: !25, size: 16, offset: 1024) | |
!75 = !DIDerivedType(tag: DW_TAG_member, name: "_vtable_offset", scope: !49, file: !50, line: 78, baseType: !76, size: 8, offset: 1040) | |
!76 = !DIBasicType(name: "signed char", size: 8, encoding: DW_ATE_signed_char) | |
!77 = !DIDerivedType(tag: DW_TAG_member, name: "_shortbuf", scope: !49, file: !50, line: 79, baseType: !78, size: 8, offset: 1048) | |
!78 = !DICompositeType(tag: DW_TAG_array_type, baseType: !28, size: 8, elements: !79) | |
!79 = !{!80} | |
!80 = !DISubrange(count: 1) | |
!81 = !DIDerivedType(tag: DW_TAG_member, name: "_lock", scope: !49, file: !50, line: 81, baseType: !82, size: 64, offset: 1088) | |
!82 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !83, size: 64) | |
!83 = !DIDerivedType(tag: DW_TAG_typedef, name: "_IO_lock_t", file: !50, line: 43, baseType: null) | |
!84 = !DIDerivedType(tag: DW_TAG_member, name: "_offset", scope: !49, file: !50, line: 89, baseType: !85, size: 64, offset: 1152) | |
!85 = !DIDerivedType(tag: DW_TAG_typedef, name: "__off64_t", file: !73, line: 153, baseType: !41) | |
!86 = !DIDerivedType(tag: DW_TAG_member, name: "_codecvt", scope: !49, file: !50, line: 91, baseType: !87, size: 64, offset: 1216) | |
!87 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !88, size: 64) | |
!88 = !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_codecvt", file: !50, line: 37, flags: DIFlagFwdDecl) | |
!89 = !DIDerivedType(tag: DW_TAG_member, name: "_wide_data", scope: !49, file: !50, line: 92, baseType: !90, size: 64, offset: 1280) | |
!90 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !91, size: 64) | |
!91 = !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_wide_data", file: !50, line: 38, flags: DIFlagFwdDecl) | |
!92 = !DIDerivedType(tag: DW_TAG_member, name: "_freeres_list", scope: !49, file: !50, line: 93, baseType: !68, size: 64, offset: 1344) | |
!93 = !DIDerivedType(tag: DW_TAG_member, name: "_freeres_buf", scope: !49, file: !50, line: 94, baseType: !94, size: 64, offset: 1408) | |
!94 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) | |
!95 = !DIDerivedType(tag: DW_TAG_member, name: "__pad5", scope: !49, file: !50, line: 95, baseType: !96, size: 64, offset: 1472) | |
!96 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !97, line: 46, baseType: !98) | |
!97 = !DIFile(filename: "llvm-project/build/lib/clang/14.0.0/include/stddef.h", directory: "/home/nikic") | |
!98 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) | |
!99 = !DIDerivedType(tag: DW_TAG_member, name: "_mode", scope: !49, file: !50, line: 96, baseType: !23, size: 32, offset: 1536) | |
!100 = !DIDerivedType(tag: DW_TAG_member, name: "_unused2", scope: !49, file: !50, line: 98, baseType: !101, size: 160, offset: 1568) | |
!101 = !DICompositeType(tag: DW_TAG_array_type, baseType: !28, size: 160, elements: !102) | |
!102 = !{!103} | |
!103 = !DISubrange(count: 20) | |
!104 = !DILocalVariable(name: "size", scope: !37, file: !3, line: 201, type: !41) | |
!105 = !DILocalVariable(name: "data", scope: !37, file: !3, line: 202, type: !27) | |
!106 = !{!107, !107, i64 0} | |
!107 = !{!"any pointer", !108, i64 0} | |
!108 = !{!"omnipotent char", !109, i64 0} | |
!109 = !{!"Simple C/C++ TBAA"} | |
!110 = !DILocation(line: 199, column: 29, scope: !37) | |
!111 = !DILocation(line: 199, column: 41, scope: !37) | |
!112 = !DILocation(line: 200, column: 3, scope: !37) | |
!113 = !DILocation(line: 200, column: 9, scope: !37) | |
!114 = !DILocation(line: 201, column: 3, scope: !37) | |
!115 = !DILocation(line: 201, column: 8, scope: !37) | |
!116 = !DILocation(line: 202, column: 3, scope: !37) | |
!117 = !DILocation(line: 202, column: 9, scope: !37) | |
!118 = !DILocation(line: 205, column: 14, scope: !37) | |
!119 = !DILocation(line: 205, column: 8, scope: !37) | |
!120 = !DILocation(line: 205, column: 6, scope: !37) | |
!121 = !DILocation(line: 206, column: 8, scope: !122) | |
!122 = distinct !DILexicalBlock(scope: !37, file: !3, line: 206, column: 7) | |
!123 = !DILocation(line: 206, column: 7, scope: !37) | |
!124 = !DILocation(line: 207, column: 13, scope: !125) | |
!125 = distinct !DILexicalBlock(scope: !122, file: !3, line: 206, column: 12) | |
!126 = !DILocation(line: 207, column: 57, scope: !125) | |
!127 = !DILocation(line: 207, column: 68, scope: !125) | |
!128 = !DILocation(line: 207, column: 5, scope: !125) | |
!129 = !DILocation(line: 208, column: 5, scope: !125) | |
!130 = !DILocation(line: 212, column: 13, scope: !131) | |
!131 = distinct !DILexicalBlock(scope: !37, file: !3, line: 212, column: 7) | |
!132 = !DILocation(line: 212, column: 7, scope: !131) | |
!133 = !DILocation(line: 212, column: 30, scope: !131) | |
!134 = !DILocation(line: 212, column: 7, scope: !37) | |
!135 = !DILocation(line: 213, column: 13, scope: !136) | |
!136 = distinct !DILexicalBlock(scope: !131, file: !3, line: 212, column: 37) | |
!137 = !DILocation(line: 213, column: 57, scope: !136) | |
!138 = !DILocation(line: 213, column: 68, scope: !136) | |
!139 = !DILocation(line: 213, column: 5, scope: !136) | |
!140 = !DILocation(line: 214, column: 5, scope: !136) | |
!141 = !DILocation(line: 216, column: 16, scope: !37) | |
!142 = !DILocation(line: 216, column: 10, scope: !37) | |
!143 = !DILocation(line: 216, column: 8, scope: !37) | |
!144 = !{!145, !145, i64 0} | |
!145 = !{!"long", !108, i64 0} | |
!146 = !DILocation(line: 217, column: 13, scope: !147) | |
!147 = distinct !DILexicalBlock(scope: !37, file: !3, line: 217, column: 7) | |
!148 = !DILocation(line: 217, column: 7, scope: !147) | |
!149 = !DILocation(line: 217, column: 30, scope: !147) | |
!150 = !DILocation(line: 217, column: 7, scope: !37) | |
!151 = !DILocation(line: 218, column: 13, scope: !152) | |
!152 = distinct !DILexicalBlock(scope: !147, file: !3, line: 217, column: 37) | |
!153 = !DILocation(line: 218, column: 57, scope: !152) | |
!154 = !DILocation(line: 218, column: 68, scope: !152) | |
!155 = !DILocation(line: 218, column: 5, scope: !152) | |
!156 = !DILocation(line: 219, column: 5, scope: !152) | |
!157 = !DILocation(line: 223, column: 7, scope: !158) | |
!158 = distinct !DILexicalBlock(scope: !37, file: !3, line: 223, column: 7) | |
!159 = !DILocation(line: 223, column: 12, scope: !158) | |
!160 = !DILocation(line: 223, column: 7, scope: !37) | |
!161 = !DILocation(line: 224, column: 6, scope: !162) | |
!162 = distinct !DILexicalBlock(scope: !158, file: !3, line: 223, column: 18) | |
!163 = !DILocation(line: 224, column: 15, scope: !162) | |
!164 = !DILocation(line: 225, column: 5, scope: !162) | |
!165 = !DILocation(line: 229, column: 17, scope: !37) | |
!166 = !DILocation(line: 229, column: 22, scope: !37) | |
!167 = !DILocation(line: 229, column: 10, scope: !37) | |
!168 = !DILocation(line: 229, column: 8, scope: !37) | |
!169 = !DILocation(line: 230, column: 8, scope: !170) | |
!170 = distinct !DILexicalBlock(scope: !171, file: !3, line: 230, column: 7) | |
!171 = !DILexicalBlockFile(scope: !37, file: !3, discriminator: 0) | |
!172 = !DILocation(line: 230, column: 7, scope: !171) | |
!173 = !DILocation(line: 231, column: 13, scope: !174) | |
!174 = distinct !DILexicalBlock(scope: !170, file: !3, line: 230, column: 14) | |
!175 = !DILocation(line: 232, column: 13, scope: !174) | |
!176 = !DILocation(line: 232, column: 24, scope: !174) | |
!177 = !DILocation(line: 231, column: 5, scope: !174) | |
!178 = !DILocation(line: 233, column: 5, scope: !174) | |
!179 = !DILocation(line: 237, column: 3, scope: !171) | |
!180 = !DILocation(line: 237, column: 8, scope: !171) | |
!181 = !DILocation(line: 237, column: 14, scope: !171) | |
!182 = !{!108, !108, i64 0} | |
!183 = !DILocation(line: 238, column: 13, scope: !184) | |
!184 = distinct !DILexicalBlock(scope: !171, file: !3, line: 238, column: 7) | |
!185 = !DILocation(line: 238, column: 19, scope: !184) | |
!186 = !DILocation(line: 238, column: 28, scope: !184) | |
!187 = !DILocation(line: 238, column: 7, scope: !184) | |
!188 = !DILocation(line: 238, column: 32, scope: !184) | |
!189 = !DILocation(line: 238, column: 7, scope: !171) | |
!190 = !DILocation(line: 239, column: 13, scope: !191) | |
!191 = distinct !DILexicalBlock(scope: !184, file: !3, line: 238, column: 38) | |
!192 = !DILocation(line: 240, column: 13, scope: !191) | |
!193 = !DILocation(line: 240, column: 24, scope: !191) | |
!194 = !DILocation(line: 239, column: 5, scope: !191) | |
!195 = !DILocation(line: 241, column: 5, scope: !191) | |
!196 = !DILocation(line: 245, column: 10, scope: !171) | |
!197 = !DILocation(line: 245, column: 3, scope: !171) | |
!198 = !DILocation(line: 246, column: 15, scope: !171) | |
!199 = !DILocation(line: 246, column: 4, scope: !171) | |
!200 = !DILocation(line: 246, column: 13, scope: !171) | |
!201 = !DILocation(line: 247, column: 10, scope: !171) | |
!202 = !DILocation(line: 247, column: 3, scope: !171) | |
!203 = !DILocation(line: 248, column: 1, scope: !171) | |
!204 = !DISubprogram(name: "fseek", scope: !205, file: !205, line: 684, type: !206, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !208) | |
!205 = !DIFile(filename: "/usr/include/stdio.h", directory: "") | |
!206 = !DISubroutineType(types: !207) | |
!207 = !{!23, !46, !41, !23} | |
!208 = !{} | |
!209 = !DISubprogram(name: "ftell", scope: !205, file: !205, line: 689, type: !210, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !208) | |
!210 = !DISubroutineType(types: !211) | |
!211 = !{!41, !46} | |
!212 = !DISubprogram(name: "fclose", scope: !205, file: !205, line: 213, type: !213, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !208) | |
!213 = !DISubroutineType(types: !214) | |
!214 = !{!23, !46} | |
!215 = distinct !DISubprogram(name: "diff_files_with_tolerance", scope: !3, file: !3, line: 250, type: !216, scopeLine: 253, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !219) | |
!216 = !DISubroutineType(types: !217) | |
!217 = !{!23, !30, !30, !218, !218, !22} | |
!218 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float) | |
!219 = !{!220, !221, !222, !223, !224, !225, !226, !227, !228, !229, !230, !231, !232, !233, !234, !235, !237, !238, !239, !240, !241} | |
!220 = !DILocalVariable(name: "path_a", arg: 1, scope: !215, file: !3, line: 250, type: !30) | |
!221 = !DILocalVariable(name: "path_b", arg: 2, scope: !215, file: !3, line: 250, type: !30) | |
!222 = !DILocalVariable(name: "absolute_tolerance", arg: 3, scope: !215, file: !3, line: 251, type: !218) | |
!223 = !DILocalVariable(name: "relative_tolerance", arg: 4, scope: !215, file: !3, line: 252, type: !218) | |
!224 = !DILocalVariable(name: "ignore_whitespace", arg: 5, scope: !215, file: !3, line: 253, type: !22) | |
!225 = !DILocalVariable(name: "A_size", scope: !215, file: !3, line: 255, type: !41) | |
!226 = !DILocalVariable(name: "B_size", scope: !215, file: !3, line: 255, type: !41) | |
!227 = !DILocalVariable(name: "data_a", scope: !215, file: !3, line: 256, type: !27) | |
!228 = !DILocalVariable(name: "data_b", scope: !215, file: !3, line: 257, type: !27) | |
!229 = !DILocalVariable(name: "File1Start", scope: !215, file: !3, line: 269, type: !30) | |
!230 = !DILocalVariable(name: "File2Start", scope: !215, file: !3, line: 270, type: !30) | |
!231 = !DILocalVariable(name: "File1End", scope: !215, file: !3, line: 271, type: !30) | |
!232 = !DILocalVariable(name: "File2End", scope: !215, file: !3, line: 272, type: !30) | |
!233 = !DILocalVariable(name: "F1P", scope: !215, file: !3, line: 273, type: !30) | |
!234 = !DILocalVariable(name: "F2P", scope: !215, file: !3, line: 274, type: !30) | |
!235 = !DILocalVariable(name: "F1NumStart", scope: !236, file: !3, line: 295, type: !30) | |
!236 = distinct !DILexicalBlock(scope: !215, file: !3, line: 276, column: 13) | |
!237 = !DILocalVariable(name: "F2NumStart", scope: !236, file: !3, line: 296, type: !30) | |
!238 = !DILocalVariable(name: "F1NumEnd", scope: !236, file: !3, line: 305, type: !30) | |
!239 = !DILocalVariable(name: "F2NumEnd", scope: !236, file: !3, line: 306, type: !30) | |
!240 = !DILocalVariable(name: "F1AtEnd", scope: !215, file: !3, line: 344, type: !22) | |
!241 = !DILocalVariable(name: "F2AtEnd", scope: !215, file: !3, line: 345, type: !22) | |
!242 = !DILocation(line: 250, column: 43, scope: !215) | |
!243 = !DILocation(line: 250, column: 63, scope: !215) | |
!244 = !{!245, !245, i64 0} | |
!245 = !{!"double", !108, i64 0} | |
!246 = !DILocation(line: 251, column: 38, scope: !215) | |
!247 = !DILocation(line: 252, column: 38, scope: !215) | |
!248 = !{!249, !249, i64 0} | |
!249 = !{!"int", !108, i64 0} | |
!250 = !DILocation(line: 253, column: 36, scope: !215) | |
!251 = !DILocation(line: 255, column: 3, scope: !215) | |
!252 = !DILocation(line: 255, column: 8, scope: !215) | |
!253 = !DILocation(line: 255, column: 16, scope: !215) | |
!254 = !DILocation(line: 256, column: 3, scope: !215) | |
!255 = !DILocation(line: 256, column: 9, scope: !215) | |
!256 = !DILocation(line: 256, column: 28, scope: !215) | |
!257 = !DILocation(line: 256, column: 18, scope: !215) | |
!258 = !DILocation(line: 257, column: 3, scope: !215) | |
!259 = !DILocation(line: 257, column: 9, scope: !215) | |
!260 = !DILocation(line: 257, column: 28, scope: !215) | |
!261 = !DILocation(line: 257, column: 18, scope: !215) | |
!262 = !DILocation(line: 260, column: 7, scope: !263) | |
!263 = distinct !DILexicalBlock(scope: !215, file: !3, line: 260, column: 7) | |
!264 = !DILocation(line: 260, column: 17, scope: !263) | |
!265 = !DILocation(line: 260, column: 14, scope: !263) | |
!266 = !DILocation(line: 260, column: 24, scope: !263) | |
!267 = !DILocation(line: 260, column: 34, scope: !263) | |
!268 = !DILocation(line: 260, column: 42, scope: !263) | |
!269 = !DILocation(line: 260, column: 50, scope: !263) | |
!270 = !DILocation(line: 260, column: 27, scope: !263) | |
!271 = !DILocation(line: 260, column: 58, scope: !263) | |
!272 = !DILocation(line: 260, column: 7, scope: !215) | |
!273 = !DILocation(line: 261, column: 10, scope: !274) | |
!274 = distinct !DILexicalBlock(scope: !263, file: !3, line: 260, column: 64) | |
!275 = !DILocation(line: 261, column: 5, scope: !274) | |
!276 = !DILocation(line: 262, column: 10, scope: !274) | |
!277 = !DILocation(line: 262, column: 5, scope: !274) | |
!278 = !DILocation(line: 263, column: 5, scope: !274) | |
!279 = !DILocation(line: 269, column: 3, scope: !215) | |
!280 = !DILocation(line: 269, column: 15, scope: !215) | |
!281 = !DILocation(line: 269, column: 28, scope: !215) | |
!282 = !DILocation(line: 270, column: 3, scope: !215) | |
!283 = !DILocation(line: 270, column: 15, scope: !215) | |
!284 = !DILocation(line: 270, column: 28, scope: !215) | |
!285 = !DILocation(line: 271, column: 3, scope: !215) | |
!286 = !DILocation(line: 271, column: 15, scope: !215) | |
!287 = !DILocation(line: 271, column: 26, scope: !215) | |
!288 = !DILocation(line: 271, column: 35, scope: !215) | |
!289 = !DILocation(line: 271, column: 33, scope: !215) | |
!290 = !DILocation(line: 272, column: 3, scope: !215) | |
!291 = !DILocation(line: 272, column: 15, scope: !215) | |
!292 = !DILocation(line: 272, column: 26, scope: !215) | |
!293 = !DILocation(line: 272, column: 35, scope: !215) | |
!294 = !DILocation(line: 272, column: 33, scope: !215) | |
!295 = !DILocation(line: 273, column: 3, scope: !215) | |
!296 = !DILocation(line: 273, column: 15, scope: !215) | |
!297 = !DILocation(line: 273, column: 21, scope: !215) | |
!298 = !DILocation(line: 274, column: 3, scope: !215) | |
!299 = !DILocation(line: 274, column: 15, scope: !215) | |
!300 = !DILocation(line: 274, column: 21, scope: !215) | |
!301 = !DILocation(line: 276, column: 3, scope: !215) | |
!302 = !DILocation(line: 278, column: 9, scope: !303) | |
!303 = distinct !DILexicalBlock(scope: !236, file: !3, line: 278, column: 9) | |
!304 = !DILocation(line: 278, column: 16, scope: !303) | |
!305 = !DILocation(line: 278, column: 13, scope: !303) | |
!306 = !DILocation(line: 278, column: 25, scope: !303) | |
!307 = !DILocation(line: 278, column: 28, scope: !303) | |
!308 = !DILocation(line: 278, column: 35, scope: !303) | |
!309 = !DILocation(line: 278, column: 32, scope: !303) | |
!310 = !DILocation(line: 278, column: 9, scope: !236) | |
!311 = !DILocation(line: 280, column: 11, scope: !312) | |
!312 = distinct !DILexicalBlock(scope: !313, file: !3, line: 280, column: 11) | |
!313 = distinct !DILexicalBlock(scope: !303, file: !3, line: 278, column: 45) | |
!314 = !DILocation(line: 280, column: 11, scope: !313) | |
!315 = !DILocation(line: 281, column: 31, scope: !316) | |
!316 = distinct !DILexicalBlock(scope: !312, file: !3, line: 280, column: 30) | |
!317 = !DILocation(line: 281, column: 9, scope: !316) | |
!318 = !DILocation(line: 282, column: 31, scope: !316) | |
!319 = !DILocation(line: 282, column: 9, scope: !316) | |
!320 = !DILocation(line: 283, column: 7, scope: !316) | |
!321 = !DILocation(line: 284, column: 7, scope: !313) | |
!322 = !DILocation(line: 288, column: 10, scope: !323) | |
!323 = distinct !DILexicalBlock(scope: !236, file: !3, line: 288, column: 9) | |
!324 = !DILocation(line: 288, column: 9, scope: !323) | |
!325 = !DILocation(line: 288, column: 18, scope: !323) | |
!326 = !DILocation(line: 288, column: 17, scope: !323) | |
!327 = !DILocation(line: 288, column: 14, scope: !323) | |
!328 = !DILocation(line: 288, column: 22, scope: !323) | |
!329 = !DILocation(line: 288, column: 51, scope: !323) | |
!330 = !DILocation(line: 288, column: 50, scope: !323) | |
!331 = !DILocation(line: 288, column: 26, scope: !323) | |
!332 = !DILocation(line: 288, column: 9, scope: !236) | |
!333 = !DILocation(line: 289, column: 7, scope: !334) | |
!334 = distinct !DILexicalBlock(scope: !323, file: !3, line: 288, column: 57) | |
!335 = !DILocation(line: 289, column: 14, scope: !334) | |
!336 = !DILocation(line: 290, column: 7, scope: !334) | |
!337 = distinct !{!337, !301, !338} | |
!338 = !DILocation(line: 340, column: 3, scope: !215) | |
!339 = !DILocation(line: 295, column: 5, scope: !236) | |
!340 = !DILocation(line: 295, column: 17, scope: !236) | |
!341 = !DILocation(line: 295, column: 30, scope: !236) | |
!342 = !DILocation(line: 296, column: 5, scope: !236) | |
!343 = !DILocation(line: 296, column: 17, scope: !236) | |
!344 = !DILocation(line: 296, column: 30, scope: !236) | |
!345 = !DILocation(line: 297, column: 9, scope: !346) | |
!346 = distinct !DILexicalBlock(scope: !236, file: !3, line: 297, column: 9) | |
!347 = !DILocation(line: 297, column: 9, scope: !236) | |
!348 = !DILocation(line: 298, column: 33, scope: !349) | |
!349 = distinct !DILexicalBlock(scope: !350, file: !3, line: 298, column: 11) | |
!350 = distinct !DILexicalBlock(scope: !346, file: !3, line: 297, column: 28) | |
!351 = !DILocation(line: 298, column: 11, scope: !349) | |
!352 = !DILocation(line: 298, column: 67, scope: !349) | |
!353 = !DILocation(line: 298, column: 45, scope: !349) | |
!354 = !DILocation(line: 298, column: 43, scope: !349) | |
!355 = !DILocation(line: 298, column: 11, scope: !350) | |
!356 = !DILocation(line: 299, column: 9, scope: !349) | |
!357 = !DILocation(line: 300, column: 5, scope: !350) | |
!358 = !DILocation(line: 301, column: 36, scope: !359) | |
!359 = distinct !DILexicalBlock(scope: !346, file: !3, line: 300, column: 12) | |
!360 = !DILocation(line: 301, column: 7, scope: !359) | |
!361 = !DILocation(line: 302, column: 36, scope: !359) | |
!362 = !DILocation(line: 302, column: 7, scope: !359) | |
!363 = !DILocation(line: 305, column: 5, scope: !236) | |
!364 = !DILocation(line: 305, column: 17, scope: !236) | |
!365 = !DILocation(line: 305, column: 42, scope: !236) | |
!366 = !DILocation(line: 305, column: 54, scope: !236) | |
!367 = !DILocation(line: 305, column: 28, scope: !236) | |
!368 = !DILocation(line: 306, column: 5, scope: !236) | |
!369 = !DILocation(line: 306, column: 17, scope: !236) | |
!370 = !DILocation(line: 306, column: 42, scope: !236) | |
!371 = !DILocation(line: 306, column: 54, scope: !236) | |
!372 = !DILocation(line: 306, column: 28, scope: !236) | |
!373 = !DILocation(line: 309, column: 10, scope: !374) | |
!374 = distinct !DILexicalBlock(scope: !236, file: !3, line: 309, column: 9) | |
!375 = !DILocation(line: 309, column: 19, scope: !374) | |
!376 = !DILocation(line: 309, column: 23, scope: !374) | |
!377 = !DILocation(line: 309, column: 9, scope: !236) | |
!378 = !DILocation(line: 312, column: 12, scope: !379) | |
!379 = distinct !DILexicalBlock(scope: !380, file: !3, line: 312, column: 11) | |
!380 = distinct !DILexicalBlock(scope: !374, file: !3, line: 309, column: 33) | |
!381 = !DILocation(line: 312, column: 11, scope: !379) | |
!382 = !DILocation(line: 312, column: 20, scope: !379) | |
!383 = !DILocation(line: 312, column: 19, scope: !379) | |
!384 = !DILocation(line: 312, column: 16, scope: !379) | |
!385 = !DILocation(line: 312, column: 11, scope: !380) | |
!386 = !DILocation(line: 313, column: 9, scope: !379) | |
!387 = !DILocation(line: 324, column: 7, scope: !380) | |
!388 = !DILocation(line: 324, column: 14, scope: !380) | |
!389 = !DILocation(line: 325, column: 7, scope: !380) | |
!390 = !DILocation(line: 330, column: 24, scope: !391) | |
!391 = distinct !DILexicalBlock(scope: !236, file: !3, line: 330, column: 9) | |
!392 = !DILocation(line: 330, column: 36, scope: !391) | |
!393 = !DILocation(line: 330, column: 48, scope: !391) | |
!394 = !DILocation(line: 330, column: 58, scope: !391) | |
!395 = !DILocation(line: 331, column: 24, scope: !391) | |
!396 = !DILocation(line: 331, column: 44, scope: !391) | |
!397 = !DILocation(line: 330, column: 9, scope: !391) | |
!398 = !DILocation(line: 330, column: 9, scope: !236) | |
!399 = !DILocation(line: 332, column: 12, scope: !400) | |
!400 = distinct !DILexicalBlock(scope: !391, file: !3, line: 331, column: 65) | |
!401 = !DILocation(line: 332, column: 7, scope: !400) | |
!402 = !DILocation(line: 333, column: 12, scope: !400) | |
!403 = !DILocation(line: 333, column: 7, scope: !400) | |
!404 = !DILocation(line: 334, column: 7, scope: !400) | |
!405 = !DILocation(line: 338, column: 11, scope: !236) | |
!406 = !DILocation(line: 338, column: 9, scope: !236) | |
!407 = !DILocation(line: 339, column: 11, scope: !236) | |
!408 = !DILocation(line: 339, column: 9, scope: !236) | |
!409 = !DILocation(line: 344, column: 3, scope: !215) | |
!410 = !DILocation(line: 344, column: 8, scope: !215) | |
!411 = !DILocation(line: 344, column: 18, scope: !215) | |
!412 = !DILocation(line: 344, column: 25, scope: !215) | |
!413 = !DILocation(line: 344, column: 22, scope: !215) | |
!414 = !DILocation(line: 345, column: 3, scope: !215) | |
!415 = !DILocation(line: 345, column: 8, scope: !215) | |
!416 = !DILocation(line: 345, column: 18, scope: !215) | |
!417 = !DILocation(line: 345, column: 25, scope: !215) | |
!418 = !DILocation(line: 345, column: 22, scope: !215) | |
!419 = !DILocation(line: 346, column: 8, scope: !420) | |
!420 = distinct !DILexicalBlock(scope: !215, file: !3, line: 346, column: 7) | |
!421 = !DILocation(line: 346, column: 16, scope: !420) | |
!422 = !DILocation(line: 346, column: 20, scope: !420) | |
!423 = !DILocation(line: 346, column: 7, scope: !215) | |
!424 = !DILocation(line: 347, column: 13, scope: !425) | |
!425 = distinct !DILexicalBlock(scope: !420, file: !3, line: 346, column: 29) | |
!426 = !DILocation(line: 350, column: 13, scope: !425) | |
!427 = !DILocation(line: 350, column: 24, scope: !425) | |
!428 = !DILocation(line: 350, column: 32, scope: !425) | |
!429 = !DILocation(line: 347, column: 5, scope: !425) | |
!430 = !DILocation(line: 351, column: 10, scope: !425) | |
!431 = !DILocation(line: 351, column: 5, scope: !425) | |
!432 = !DILocation(line: 352, column: 10, scope: !425) | |
!433 = !DILocation(line: 352, column: 5, scope: !425) | |
!434 = !DILocation(line: 353, column: 5, scope: !425) | |
!435 = !DILocation(line: 355, column: 8, scope: !436) | |
!436 = distinct !DILexicalBlock(scope: !215, file: !3, line: 355, column: 7) | |
!437 = !DILocation(line: 355, column: 16, scope: !436) | |
!438 = !DILocation(line: 355, column: 20, scope: !436) | |
!439 = !DILocation(line: 355, column: 7, scope: !215) | |
!440 = !DILocation(line: 356, column: 13, scope: !441) | |
!441 = distinct !DILexicalBlock(scope: !436, file: !3, line: 355, column: 29) | |
!442 = !DILocation(line: 358, column: 13, scope: !441) | |
!443 = !DILocation(line: 356, column: 5, scope: !441) | |
!444 = !DILocation(line: 359, column: 10, scope: !441) | |
!445 = !DILocation(line: 359, column: 5, scope: !441) | |
!446 = !DILocation(line: 360, column: 10, scope: !441) | |
!447 = !DILocation(line: 360, column: 5, scope: !441) | |
!448 = !DILocation(line: 361, column: 5, scope: !441) | |
!449 = !DILocation(line: 364, column: 8, scope: !215) | |
!450 = !DILocation(line: 364, column: 3, scope: !215) | |
!451 = !DILocation(line: 365, column: 8, scope: !215) | |
!452 = !DILocation(line: 365, column: 3, scope: !215) | |
!453 = !DILocation(line: 367, column: 3, scope: !215) | |
!454 = !DILocation(line: 368, column: 1, scope: !215) | |
!455 = distinct !DISubprogram(name: "skip_whitespace", scope: !3, file: !3, line: 109, type: !456, scopeLine: 109, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !459) | |
!456 = !DISubroutineType(types: !457) | |
!457 = !{!22, !458, !30} | |
!458 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !30, size: 64) | |
!459 = !{!460, !461, !462} | |
!460 = !DILocalVariable(name: "FP", arg: 1, scope: !455, file: !3, line: 109, type: !458) | |
!461 = !DILocalVariable(name: "FEnd", arg: 2, scope: !455, file: !3, line: 109, type: !30) | |
!462 = !DILocalVariable(name: "skipped_some", scope: !455, file: !3, line: 110, type: !22) | |
!463 = !DILocation(line: 109, column: 42, scope: !455) | |
!464 = !DILocation(line: 109, column: 58, scope: !455) | |
!465 = !DILocation(line: 110, column: 3, scope: !455) | |
!466 = !DILocation(line: 110, column: 8, scope: !455) | |
!467 = !DILocation(line: 111, column: 3, scope: !455) | |
!468 = !DILocation(line: 111, column: 11, scope: !455) | |
!469 = !DILocation(line: 111, column: 10, scope: !455) | |
!470 = !DILocation(line: 111, column: 16, scope: !455) | |
!471 = !DILocation(line: 111, column: 14, scope: !455) | |
!472 = !DILocation(line: 111, column: 21, scope: !455) | |
!473 = !DILocation(line: 111, column: 24, scope: !455) | |
!474 = !{!475, !475, i64 0} | |
!475 = !{!"short", !108, i64 0} | |
!476 = !DILocation(line: 0, scope: !455) | |
!477 = !DILocation(line: 112, column: 18, scope: !478) | |
!478 = distinct !DILexicalBlock(scope: !455, file: !3, line: 111, column: 54) | |
!479 = !DILocation(line: 113, column: 8, scope: !478) | |
!480 = !DILocation(line: 113, column: 5, scope: !478) | |
!481 = distinct !{!481, !467, !482, !483} | |
!482 = !DILocation(line: 114, column: 3, scope: !455) | |
!483 = !{!"llvm.loop.mustprogress"} | |
!484 = !DILocation(line: 115, column: 10, scope: !455) | |
!485 = !DILocation(line: 116, column: 1, scope: !455) | |
!486 = !DILocation(line: 115, column: 3, scope: !455) | |
!487 = distinct !DISubprogram(name: "isPossibleStartOfNumber", scope: !3, file: !3, line: 52, type: !488, scopeLine: 52, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !490) | |
!488 = !DISubroutineType(types: !489) | |
!489 = !{!22, !28} | |
!490 = !{!491} | |
!491 = !DILocalVariable(name: "C", arg: 1, scope: !487, file: !3, line: 52, type: !28) | |
!492 = !DILocation(line: 52, column: 42, scope: !487) | |
!493 = !DILocation(line: 53, column: 22, scope: !487) | |
!494 = !DILocation(line: 53, column: 10, scope: !487) | |
!495 = !DILocation(line: 53, column: 25, scope: !487) | |
!496 = !DILocation(line: 53, column: 41, scope: !487) | |
!497 = !DILocation(line: 53, column: 28, scope: !487) | |
!498 = !DILocation(line: 53, column: 44, scope: !487) | |
!499 = !DILocation(line: 53, column: 47, scope: !487) | |
!500 = !DILocation(line: 53, column: 49, scope: !487) | |
!501 = !DILocation(line: 53, column: 3, scope: !487) | |
!502 = distinct !DISubprogram(name: "AdvanceNumber", scope: !3, file: !3, line: 56, type: !503, scopeLine: 56, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !505) | |
!503 = !DISubroutineType(types: !504) | |
!504 = !{!30, !30, !30} | |
!505 = !{!506, !507, !508, !509, !510} | |
!506 = !DILocalVariable(name: "StartPos", arg: 1, scope: !502, file: !3, line: 56, type: !30) | |
!507 = !DILocalVariable(name: "End", arg: 2, scope: !502, file: !3, line: 56, type: !30) | |
!508 = !DILocalVariable(name: "Pos", scope: !502, file: !3, line: 57, type: !30) | |
!509 = !DILocalVariable(name: "EndOfNumber", scope: !502, file: !3, line: 58, type: !30) | |
!510 = !DILocalVariable(name: "HasPostDecimalDigit", scope: !511, file: !3, line: 75, type: !22) | |
!511 = distinct !DILexicalBlock(scope: !512, file: !3, line: 71, column: 33) | |
!512 = distinct !DILexicalBlock(scope: !502, file: !3, line: 71, column: 7) | |
!513 = !DILocation(line: 56, column: 46, scope: !502) | |
!514 = !DILocation(line: 56, column: 68, scope: !502) | |
!515 = !DILocation(line: 57, column: 3, scope: !502) | |
!516 = !DILocation(line: 57, column: 15, scope: !502) | |
!517 = !DILocation(line: 57, column: 21, scope: !502) | |
!518 = !DILocation(line: 58, column: 3, scope: !502) | |
!519 = !DILocation(line: 58, column: 15, scope: !502) | |
!520 = !DILocation(line: 61, column: 7, scope: !521) | |
!521 = distinct !DILexicalBlock(scope: !502, file: !3, line: 61, column: 7) | |
!522 = !DILocation(line: 61, column: 13, scope: !521) | |
!523 = !DILocation(line: 61, column: 11, scope: !521) | |
!524 = !DILocation(line: 61, column: 17, scope: !521) | |
!525 = !DILocation(line: 61, column: 34, scope: !521) | |
!526 = !DILocation(line: 61, column: 33, scope: !521) | |
!527 = !DILocation(line: 61, column: 20, scope: !521) | |
!528 = !DILocation(line: 61, column: 7, scope: !502) | |
!529 = !DILocation(line: 62, column: 5, scope: !521) | |
!530 = !DILocation(line: 65, column: 3, scope: !502) | |
!531 = !DILocation(line: 65, column: 10, scope: !502) | |
!532 = !DILocation(line: 65, column: 16, scope: !502) | |
!533 = !DILocation(line: 65, column: 14, scope: !502) | |
!534 = !DILocation(line: 65, column: 20, scope: !502) | |
!535 = !DILocation(line: 65, column: 36, scope: !502) | |
!536 = !DILocation(line: 65, column: 35, scope: !502) | |
!537 = !DILocation(line: 65, column: 23, scope: !502) | |
!538 = !DILocation(line: 0, scope: !502) | |
!539 = !DILocation(line: 66, column: 5, scope: !540) | |
!540 = distinct !DILexicalBlock(scope: !502, file: !3, line: 65, column: 42) | |
!541 = !DILocation(line: 67, column: 19, scope: !540) | |
!542 = !DILocation(line: 67, column: 17, scope: !540) | |
!543 = distinct !{!543, !530, !544, !483} | |
!544 = !DILocation(line: 68, column: 3, scope: !502) | |
!545 = !DILocation(line: 71, column: 7, scope: !512) | |
!546 = !DILocation(line: 71, column: 13, scope: !512) | |
!547 = !DILocation(line: 71, column: 11, scope: !512) | |
!548 = !DILocation(line: 71, column: 17, scope: !512) | |
!549 = !DILocation(line: 71, column: 21, scope: !512) | |
!550 = !DILocation(line: 71, column: 20, scope: !512) | |
!551 = !DILocation(line: 71, column: 25, scope: !512) | |
!552 = !DILocation(line: 71, column: 7, scope: !502) | |
!553 = !DILocation(line: 72, column: 5, scope: !511) | |
!554 = !DILocation(line: 75, column: 5, scope: !511) | |
!555 = !DILocation(line: 75, column: 10, scope: !511) | |
!556 = !DILocation(line: 76, column: 5, scope: !511) | |
!557 = !DILocation(line: 76, column: 12, scope: !511) | |
!558 = !DILocation(line: 76, column: 18, scope: !511) | |
!559 = !DILocation(line: 76, column: 16, scope: !511) | |
!560 = !DILocation(line: 76, column: 22, scope: !511) | |
!561 = !DILocation(line: 76, column: 38, scope: !511) | |
!562 = !DILocation(line: 76, column: 37, scope: !511) | |
!563 = !DILocation(line: 76, column: 25, scope: !511) | |
!564 = !DILocation(line: 0, scope: !511) | |
!565 = !DILocation(line: 77, column: 27, scope: !566) | |
!566 = distinct !DILexicalBlock(scope: !511, file: !3, line: 76, column: 44) | |
!567 = !DILocation(line: 79, column: 7, scope: !566) | |
!568 = !DILocation(line: 80, column: 21, scope: !566) | |
!569 = !DILocation(line: 80, column: 19, scope: !566) | |
!570 = distinct !{!570, !556, !571, !483} | |
!571 = !DILocation(line: 81, column: 5, scope: !511) | |
!572 = !DILocation(line: 82, column: 10, scope: !573) | |
!573 = distinct !DILexicalBlock(scope: !511, file: !3, line: 82, column: 9) | |
!574 = !DILocation(line: 82, column: 9, scope: !511) | |
!575 = !DILocation(line: 83, column: 14, scope: !573) | |
!576 = !DILocation(line: 83, column: 7, scope: !573) | |
!577 = !DILocation(line: 84, column: 3, scope: !512) | |
!578 = !DILocation(line: 84, column: 3, scope: !511) | |
!579 = !DILocation(line: 88, column: 8, scope: !580) | |
!580 = distinct !DILexicalBlock(scope: !502, file: !3, line: 88, column: 7) | |
!581 = !DILocation(line: 88, column: 7, scope: !502) | |
!582 = !DILocation(line: 89, column: 12, scope: !580) | |
!583 = !DILocation(line: 89, column: 5, scope: !580) | |
!584 = !DILocation(line: 92, column: 7, scope: !585) | |
!585 = distinct !DILexicalBlock(scope: !502, file: !3, line: 92, column: 7) | |
!586 = !DILocation(line: 92, column: 13, scope: !585) | |
!587 = !DILocation(line: 92, column: 11, scope: !585) | |
!588 = !DILocation(line: 92, column: 17, scope: !585) | |
!589 = !DILocation(line: 92, column: 36, scope: !585) | |
!590 = !DILocation(line: 92, column: 35, scope: !585) | |
!591 = !DILocation(line: 92, column: 20, scope: !585) | |
!592 = !DILocation(line: 92, column: 7, scope: !502) | |
!593 = !DILocation(line: 93, column: 5, scope: !594) | |
!594 = distinct !DILexicalBlock(scope: !585, file: !3, line: 92, column: 42) | |
!595 = !DILocation(line: 96, column: 9, scope: !596) | |
!596 = distinct !DILexicalBlock(scope: !594, file: !3, line: 96, column: 9) | |
!597 = !DILocation(line: 96, column: 15, scope: !596) | |
!598 = !DILocation(line: 96, column: 13, scope: !596) | |
!599 = !DILocation(line: 96, column: 19, scope: !596) | |
!600 = !DILocation(line: 96, column: 36, scope: !596) | |
!601 = !DILocation(line: 96, column: 35, scope: !596) | |
!602 = !DILocation(line: 96, column: 22, scope: !596) | |
!603 = !DILocation(line: 96, column: 9, scope: !594) | |
!604 = !DILocation(line: 97, column: 7, scope: !596) | |
!605 = !DILocation(line: 100, column: 5, scope: !594) | |
!606 = !DILocation(line: 100, column: 12, scope: !594) | |
!607 = !DILocation(line: 100, column: 18, scope: !594) | |
!608 = !DILocation(line: 100, column: 16, scope: !594) | |
!609 = !DILocation(line: 100, column: 22, scope: !594) | |
!610 = !DILocation(line: 100, column: 38, scope: !594) | |
!611 = !DILocation(line: 100, column: 37, scope: !594) | |
!612 = !DILocation(line: 100, column: 25, scope: !594) | |
!613 = !DILocation(line: 0, scope: !594) | |
!614 = !DILocation(line: 101, column: 7, scope: !615) | |
!615 = distinct !DILexicalBlock(scope: !594, file: !3, line: 100, column: 44) | |
!616 = !DILocation(line: 102, column: 21, scope: !615) | |
!617 = !DILocation(line: 102, column: 19, scope: !615) | |
!618 = distinct !{!618, !605, !619, !483} | |
!619 = !DILocation(line: 103, column: 5, scope: !594) | |
!620 = !DILocation(line: 104, column: 3, scope: !594) | |
!621 = !DILocation(line: 106, column: 10, scope: !502) | |
!622 = !DILocation(line: 106, column: 3, scope: !502) | |
!623 = !DILocation(line: 107, column: 1, scope: !502) | |
!624 = distinct !DISubprogram(name: "CompareNumbers", scope: !3, file: !3, line: 119, type: !625, scopeLine: 121, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !627) | |
!625 = !DISubroutineType(types: !626) | |
!626 = !{!22, !30, !30, !30, !30, !218, !218} | |
!627 = !{!628, !629, !630, !631, !632, !633, !634, !635, !636, !639, !640, !641, !642, !645, !648} | |
!628 = !DILocalVariable(name: "F1P", arg: 1, scope: !624, file: !3, line: 119, type: !30) | |
!629 = !DILocalVariable(name: "F2P", arg: 2, scope: !624, file: !3, line: 119, type: !30) | |
!630 = !DILocalVariable(name: "F1End", arg: 3, scope: !624, file: !3, line: 119, type: !30) | |
!631 = !DILocalVariable(name: "F2End", arg: 4, scope: !624, file: !3, line: 120, type: !30) | |
!632 = !DILocalVariable(name: "AbsTolerance", arg: 5, scope: !624, file: !3, line: 120, type: !218) | |
!633 = !DILocalVariable(name: "RelTolerance", arg: 6, scope: !624, file: !3, line: 121, type: !218) | |
!634 = !DILocalVariable(name: "F1NumEnd", scope: !624, file: !3, line: 122, type: !30) | |
!635 = !DILocalVariable(name: "F2NumEnd", scope: !624, file: !3, line: 122, type: !30) | |
!636 = !DILocalVariable(name: "F1Len", scope: !624, file: !3, line: 123, type: !637) | |
!637 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !638) | |
!638 = !DIDerivedType(tag: DW_TAG_typedef, name: "ptrdiff_t", file: !97, line: 35, baseType: !41) | |
!639 = !DILocalVariable(name: "F2Len", scope: !624, file: !3, line: 124, type: !637) | |
!640 = !DILocalVariable(name: "V1", scope: !624, file: !3, line: 125, type: !218) | |
!641 = !DILocalVariable(name: "V2", scope: !624, file: !3, line: 125, type: !218) | |
!642 = !DILocalVariable(name: "StrTmp", scope: !643, file: !3, line: 139, type: !27) | |
!643 = distinct !DILexicalBlock(scope: !644, file: !3, line: 137, column: 45) | |
!644 = distinct !DILexicalBlock(scope: !624, file: !3, line: 137, column: 7) | |
!645 = !DILocalVariable(name: "StrTmp", scope: !646, file: !3, line: 153, type: !27) | |
!646 = distinct !DILexicalBlock(scope: !647, file: !3, line: 151, column: 45) | |
!647 = distinct !DILexicalBlock(scope: !624, file: !3, line: 151, column: 7) | |
!648 = !DILocalVariable(name: "Diff", scope: !649, file: !3, line: 178, type: !218) | |
!649 = distinct !DILexicalBlock(scope: !650, file: !3, line: 176, column: 60) | |
!650 = distinct !DILexicalBlock(scope: !624, file: !3, line: 176, column: 7) | |
!651 = !DILocation(line: 119, column: 40, scope: !624) | |
!652 = !DILocation(line: 119, column: 57, scope: !624) | |
!653 = !DILocation(line: 119, column: 74, scope: !624) | |
!654 = !DILocation(line: 120, column: 40, scope: !624) | |
!655 = !DILocation(line: 120, column: 54, scope: !624) | |
!656 = !DILocation(line: 121, column: 35, scope: !624) | |
!657 = !DILocation(line: 122, column: 3, scope: !624) | |
!658 = !DILocation(line: 122, column: 15, scope: !624) | |
!659 = !DILocation(line: 122, column: 26, scope: !624) | |
!660 = !DILocation(line: 123, column: 3, scope: !624) | |
!661 = !DILocation(line: 123, column: 19, scope: !624) | |
!662 = !DILocation(line: 123, column: 27, scope: !624) | |
!663 = !DILocation(line: 123, column: 35, scope: !624) | |
!664 = !DILocation(line: 123, column: 33, scope: !624) | |
!665 = !DILocation(line: 124, column: 3, scope: !624) | |
!666 = !DILocation(line: 124, column: 19, scope: !624) | |
!667 = !DILocation(line: 124, column: 27, scope: !624) | |
!668 = !DILocation(line: 124, column: 35, scope: !624) | |
!669 = !DILocation(line: 124, column: 33, scope: !624) | |
!670 = !DILocation(line: 125, column: 3, scope: !624) | |
!671 = !DILocation(line: 125, column: 10, scope: !624) | |
!672 = !DILocation(line: 125, column: 20, scope: !624) | |
!673 = !DILocation(line: 128, column: 7, scope: !674) | |
!674 = distinct !DILexicalBlock(scope: !624, file: !3, line: 128, column: 7) | |
!675 = !DILocation(line: 128, column: 16, scope: !674) | |
!676 = !DILocation(line: 128, column: 13, scope: !674) | |
!677 = !DILocation(line: 128, column: 22, scope: !674) | |
!678 = !DILocation(line: 128, column: 32, scope: !674) | |
!679 = !DILocation(line: 128, column: 37, scope: !674) | |
!680 = !DILocation(line: 128, column: 42, scope: !674) | |
!681 = !DILocation(line: 128, column: 25, scope: !674) | |
!682 = !DILocation(line: 128, column: 49, scope: !674) | |
!683 = !DILocation(line: 128, column: 7, scope: !624) | |
!684 = !DILocation(line: 129, column: 5, scope: !674) | |
!685 = !DILocation(line: 134, column: 15, scope: !624) | |
!686 = !DILocation(line: 134, column: 8, scope: !624) | |
!687 = !DILocation(line: 134, column: 6, scope: !624) | |
!688 = !DILocation(line: 135, column: 15, scope: !624) | |
!689 = !DILocation(line: 135, column: 8, scope: !624) | |
!690 = !DILocation(line: 135, column: 6, scope: !624) | |
!691 = !DILocation(line: 137, column: 8, scope: !644) | |
!692 = !DILocation(line: 137, column: 7, scope: !644) | |
!693 = !DILocation(line: 137, column: 17, scope: !644) | |
!694 = !DILocation(line: 137, column: 24, scope: !644) | |
!695 = !DILocation(line: 137, column: 28, scope: !644) | |
!696 = !DILocation(line: 137, column: 27, scope: !644) | |
!697 = !DILocation(line: 137, column: 37, scope: !644) | |
!698 = !DILocation(line: 137, column: 7, scope: !624) | |
!699 = !DILocation(line: 139, column: 5, scope: !643) | |
!700 = !DILocation(line: 139, column: 11, scope: !643) | |
!701 = !DILocation(line: 139, column: 27, scope: !643) | |
!702 = !DILocation(line: 139, column: 33, scope: !643) | |
!703 = !DILocation(line: 139, column: 20, scope: !643) | |
!704 = !DILocation(line: 140, column: 12, scope: !705) | |
!705 = !DILexicalBlockFile(scope: !643, file: !3, discriminator: 0) | |
!706 = !DILocation(line: 140, column: 20, scope: !705) | |
!707 = !DILocation(line: 140, column: 25, scope: !705) | |
!708 = !DILocation(line: 140, column: 31, scope: !705) | |
!709 = !DILocation(line: 140, column: 5, scope: !705) | |
!710 = !DILocation(line: 143, column: 5, scope: !705) | |
!711 = !DILocation(line: 143, column: 23, scope: !705) | |
!712 = !DILocation(line: 143, column: 34, scope: !705) | |
!713 = !DILocation(line: 143, column: 32, scope: !705) | |
!714 = !DILocation(line: 143, column: 12, scope: !705) | |
!715 = !DILocation(line: 143, column: 40, scope: !705) | |
!716 = !DILocation(line: 145, column: 18, scope: !705) | |
!717 = !DILocation(line: 145, column: 10, scope: !705) | |
!718 = !DILocation(line: 145, column: 8, scope: !705) | |
!719 = !DILocation(line: 146, column: 16, scope: !705) | |
!720 = !DILocation(line: 146, column: 23, scope: !705) | |
!721 = !DILocation(line: 146, column: 35, scope: !705) | |
!722 = !DILocation(line: 146, column: 32, scope: !705) | |
!723 = !DILocation(line: 146, column: 20, scope: !705) | |
!724 = !DILocation(line: 146, column: 14, scope: !705) | |
!725 = !DILocation(line: 148, column: 10, scope: !705) | |
!726 = !DILocation(line: 148, column: 5, scope: !705) | |
!727 = !DILocation(line: 149, column: 3, scope: !644) | |
!728 = !DILocation(line: 149, column: 3, scope: !705) | |
!729 = !DILocation(line: 151, column: 8, scope: !647) | |
!730 = !DILocation(line: 151, column: 7, scope: !647) | |
!731 = !DILocation(line: 151, column: 17, scope: !647) | |
!732 = !DILocation(line: 151, column: 24, scope: !647) | |
!733 = !DILocation(line: 151, column: 28, scope: !647) | |
!734 = !DILocation(line: 151, column: 27, scope: !647) | |
!735 = !DILocation(line: 151, column: 37, scope: !647) | |
!736 = !DILocation(line: 151, column: 7, scope: !624) | |
!737 = !DILocation(line: 153, column: 5, scope: !646) | |
!738 = !DILocation(line: 153, column: 11, scope: !646) | |
!739 = !DILocation(line: 153, column: 27, scope: !646) | |
!740 = !DILocation(line: 153, column: 33, scope: !646) | |
!741 = !DILocation(line: 153, column: 20, scope: !646) | |
!742 = !DILocation(line: 154, column: 12, scope: !743) | |
!743 = !DILexicalBlockFile(scope: !646, file: !3, discriminator: 0) | |
!744 = !DILocation(line: 154, column: 20, scope: !743) | |
!745 = !DILocation(line: 154, column: 25, scope: !743) | |
!746 = !DILocation(line: 154, column: 31, scope: !743) | |
!747 = !DILocation(line: 154, column: 5, scope: !743) | |
!748 = !DILocation(line: 157, column: 5, scope: !743) | |
!749 = !DILocation(line: 157, column: 23, scope: !743) | |
!750 = !DILocation(line: 157, column: 34, scope: !743) | |
!751 = !DILocation(line: 157, column: 32, scope: !743) | |
!752 = !DILocation(line: 157, column: 12, scope: !743) | |
!753 = !DILocation(line: 157, column: 40, scope: !743) | |
!754 = !DILocation(line: 159, column: 18, scope: !743) | |
!755 = !DILocation(line: 159, column: 10, scope: !743) | |
!756 = !DILocation(line: 159, column: 8, scope: !743) | |
!757 = !DILocation(line: 160, column: 16, scope: !743) | |
!758 = !DILocation(line: 160, column: 23, scope: !743) | |
!759 = !DILocation(line: 160, column: 35, scope: !743) | |
!760 = !DILocation(line: 160, column: 32, scope: !743) | |
!761 = !DILocation(line: 160, column: 20, scope: !743) | |
!762 = !DILocation(line: 160, column: 14, scope: !743) | |
!763 = !DILocation(line: 162, column: 10, scope: !743) | |
!764 = !DILocation(line: 162, column: 5, scope: !743) | |
!765 = !DILocation(line: 163, column: 3, scope: !647) | |
!766 = !DILocation(line: 163, column: 3, scope: !743) | |
!767 = !DILocation(line: 165, column: 7, scope: !768) | |
!768 = distinct !DILexicalBlock(scope: !624, file: !3, line: 165, column: 7) | |
!769 = !DILocation(line: 165, column: 19, scope: !768) | |
!770 = !DILocation(line: 165, column: 16, scope: !768) | |
!771 = !DILocation(line: 165, column: 23, scope: !768) | |
!772 = !DILocation(line: 165, column: 26, scope: !768) | |
!773 = !DILocation(line: 165, column: 38, scope: !768) | |
!774 = !DILocation(line: 165, column: 35, scope: !768) | |
!775 = !DILocation(line: 165, column: 7, scope: !624) | |
!776 = !DILocation(line: 166, column: 13, scope: !777) | |
!777 = distinct !DILexicalBlock(scope: !768, file: !3, line: 165, column: 43) | |
!778 = !DILocation(line: 167, column: 50, scope: !777) | |
!779 = !DILocation(line: 167, column: 61, scope: !777) | |
!780 = !DILocation(line: 167, column: 69, scope: !777) | |
!781 = !DILocation(line: 166, column: 5, scope: !777) | |
!782 = !DILocation(line: 168, column: 5, scope: !777) | |
!783 = !DILocation(line: 172, column: 7, scope: !784) | |
!784 = distinct !DILexicalBlock(scope: !624, file: !3, line: 172, column: 7) | |
!785 = !DILocation(line: 172, column: 13, scope: !784) | |
!786 = !DILocation(line: 172, column: 10, scope: !784) | |
!787 = !DILocation(line: 172, column: 7, scope: !624) | |
!788 = !DILocation(line: 173, column: 5, scope: !784) | |
!789 = !DILocation(line: 176, column: 7, scope: !650) | |
!790 = !DILocation(line: 176, column: 20, scope: !650) | |
!791 = !DILocation(line: 176, column: 27, scope: !650) | |
!792 = !DILocation(line: 176, column: 30, scope: !650) | |
!793 = !DILocation(line: 176, column: 50, scope: !650) | |
!794 = !DILocation(line: 176, column: 55, scope: !650) | |
!795 = !DILocation(line: 176, column: 53, scope: !650) | |
!796 = !DILocation(line: 176, column: 45, scope: !650) | |
!797 = !DILocation(line: 176, column: 43, scope: !650) | |
!798 = !DILocation(line: 176, column: 7, scope: !624) | |
!799 = !DILocation(line: 178, column: 5, scope: !649) | |
!800 = !DILocation(line: 178, column: 12, scope: !649) | |
!801 = !DILocation(line: 179, column: 9, scope: !802) | |
!802 = distinct !DILexicalBlock(scope: !649, file: !3, line: 179, column: 9) | |
!803 = !DILocation(line: 179, column: 9, scope: !649) | |
!804 = !DILocation(line: 180, column: 19, scope: !802) | |
!805 = !DILocation(line: 180, column: 22, scope: !802) | |
!806 = !DILocation(line: 180, column: 21, scope: !802) | |
!807 = !DILocation(line: 180, column: 25, scope: !802) | |
!808 = !DILocation(line: 180, column: 14, scope: !802) | |
!809 = !DILocation(line: 180, column: 12, scope: !802) | |
!810 = !DILocation(line: 180, column: 7, scope: !802) | |
!811 = !DILocation(line: 181, column: 14, scope: !812) | |
!812 = distinct !DILexicalBlock(scope: !802, file: !3, line: 181, column: 14) | |
!813 = !DILocation(line: 181, column: 14, scope: !802) | |
!814 = !DILocation(line: 182, column: 19, scope: !812) | |
!815 = !DILocation(line: 182, column: 22, scope: !812) | |
!816 = !DILocation(line: 182, column: 21, scope: !812) | |
!817 = !DILocation(line: 182, column: 25, scope: !812) | |
!818 = !DILocation(line: 182, column: 14, scope: !812) | |
!819 = !DILocation(line: 182, column: 12, scope: !812) | |
!820 = !DILocation(line: 182, column: 7, scope: !812) | |
!821 = !DILocation(line: 184, column: 12, scope: !812) | |
!822 = !DILocation(line: 185, column: 9, scope: !823) | |
!823 = distinct !DILexicalBlock(scope: !649, file: !3, line: 185, column: 9) | |
!824 = !DILocation(line: 185, column: 22, scope: !823) | |
!825 = !DILocation(line: 185, column: 29, scope: !823) | |
!826 = !DILocation(line: 185, column: 32, scope: !823) | |
!827 = !DILocation(line: 185, column: 39, scope: !823) | |
!828 = !DILocation(line: 185, column: 37, scope: !823) | |
!829 = !DILocation(line: 185, column: 9, scope: !649) | |
!830 = !DILocation(line: 186, column: 15, scope: !831) | |
!831 = distinct !DILexicalBlock(scope: !823, file: !3, line: 185, column: 53) | |
!832 = !DILocation(line: 189, column: 15, scope: !831) | |
!833 = !DILocation(line: 189, column: 26, scope: !831) | |
!834 = !DILocation(line: 189, column: 30, scope: !831) | |
!835 = !DILocation(line: 189, column: 39, scope: !831) | |
!836 = !DILocation(line: 189, column: 42, scope: !831) | |
!837 = !DILocation(line: 189, column: 41, scope: !831) | |
!838 = !DILocation(line: 189, column: 34, scope: !831) | |
!839 = !DILocation(line: 189, column: 47, scope: !831) | |
!840 = !DILocation(line: 189, column: 53, scope: !831) | |
!841 = !DILocation(line: 189, column: 67, scope: !831) | |
!842 = !DILocation(line: 186, column: 7, scope: !831) | |
!843 = !DILocation(line: 190, column: 7, scope: !831) | |
!844 = !DILocation(line: 192, column: 3, scope: !650) | |
!845 = !DILocation(line: 192, column: 3, scope: !649) | |
!846 = !DILocation(line: 194, column: 3, scope: !624) | |
!847 = !DILocation(line: 195, column: 1, scope: !624) | |
!848 = distinct !DISubprogram(name: "usage", scope: !3, file: !3, line: 370, type: !849, scopeLine: 370, flags: DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !208) | |
!849 = !DISubroutineType(types: !850) | |
!850 = !{null} | |
!851 = !DILocation(line: 371, column: 11, scope: !848) | |
!852 = !DILocation(line: 372, column: 11, scope: !848) | |
!853 = !DILocation(line: 371, column: 3, scope: !848) | |
!854 = !DILocation(line: 373, column: 11, scope: !848) | |
!855 = !DILocation(line: 373, column: 3, scope: !848) | |
!856 = !DILocation(line: 374, column: 11, scope: !848) | |
!857 = !DILocation(line: 374, column: 3, scope: !848) | |
!858 = !DILocation(line: 375, column: 11, scope: !848) | |
!859 = !DILocation(line: 375, column: 3, scope: !848) | |
!860 = !DILocation(line: 376, column: 11, scope: !848) | |
!861 = !DILocation(line: 376, column: 3, scope: !848) | |
!862 = !DILocation(line: 377, column: 3, scope: !848) | |
!863 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 380, type: !864, scopeLine: 380, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !868) | |
!864 = !DISubroutineType(types: !865) | |
!865 = !{!23, !23, !866} | |
!866 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !867, size: 64) | |
!867 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !27) | |
!868 = !{!869, !870, !871, !872, !873, !874, !875, !879, !883} | |
!869 = !DILocalVariable(name: "argc", arg: 1, scope: !863, file: !3, line: 380, type: !23) | |
!870 = !DILocalVariable(name: "argv", arg: 2, scope: !863, file: !3, line: 380, type: !866) | |
!871 = !DILocalVariable(name: "relative_tolerance", scope: !863, file: !3, line: 381, type: !218) | |
!872 = !DILocalVariable(name: "absolute_tolerance", scope: !863, file: !3, line: 382, type: !218) | |
!873 = !DILocalVariable(name: "ignore_whitespace", scope: !863, file: !3, line: 383, type: !22) | |
!874 = !DILocalVariable(name: "i", scope: !863, file: !3, line: 384, type: !23) | |
!875 = !DILocalVariable(name: "arg", scope: !876, file: !3, line: 388, type: !30) | |
!876 = distinct !DILexicalBlock(scope: !877, file: !3, line: 387, column: 31) | |
!877 = distinct !DILexicalBlock(scope: !878, file: !3, line: 387, column: 3) | |
!878 = distinct !DILexicalBlock(scope: !863, file: !3, line: 387, column: 3) | |
!879 = !DILocalVariable(name: "endp", scope: !880, file: !3, line: 404, type: !27) | |
!880 = distinct !DILexicalBlock(scope: !881, file: !3, line: 403, column: 14) | |
!881 = distinct !DILexicalBlock(scope: !882, file: !3, line: 400, column: 11) | |
!882 = distinct !DILexicalBlock(scope: !876, file: !3, line: 397, column: 21) | |
!883 = !DILocalVariable(name: "value", scope: !880, file: !3, line: 405, type: !218) | |
!884 = !DILocation(line: 380, column: 14, scope: !863) | |
!885 = !DILocation(line: 380, column: 33, scope: !863) | |
!886 = !DILocation(line: 381, column: 3, scope: !863) | |
!887 = !DILocation(line: 381, column: 10, scope: !863) | |
!888 = !DILocation(line: 382, column: 3, scope: !863) | |
!889 = !DILocation(line: 382, column: 10, scope: !863) | |
!890 = !DILocation(line: 383, column: 3, scope: !863) | |
!891 = !DILocation(line: 383, column: 8, scope: !863) | |
!892 = !DILocation(line: 384, column: 3, scope: !863) | |
!893 = !DILocation(line: 384, column: 7, scope: !863) | |
!894 = !DILocation(line: 386, column: 15, scope: !863) | |
!895 = !DILocation(line: 386, column: 13, scope: !863) | |
!896 = !DILocation(line: 387, column: 10, scope: !878) | |
!897 = !DILocation(line: 387, column: 8, scope: !878) | |
!898 = !DILocation(line: 387, column: 15, scope: !877) | |
!899 = !DILocation(line: 387, column: 20, scope: !877) | |
!900 = !DILocation(line: 387, column: 17, scope: !877) | |
!901 = !DILocation(line: 387, column: 3, scope: !878) | |
!902 = !DILocation(line: 388, column: 5, scope: !876) | |
!903 = !DILocation(line: 388, column: 17, scope: !876) | |
!904 = !DILocation(line: 388, column: 23, scope: !876) | |
!905 = !DILocation(line: 388, column: 28, scope: !876) | |
!906 = !DILocation(line: 389, column: 9, scope: !907) | |
!907 = distinct !DILexicalBlock(scope: !876, file: !3, line: 389, column: 9) | |
!908 = !DILocation(line: 389, column: 16, scope: !907) | |
!909 = !DILocation(line: 389, column: 9, scope: !876) | |
!910 = !DILocation(line: 390, column: 9, scope: !907) | |
!911 = !DILocation(line: 392, column: 16, scope: !912) | |
!912 = distinct !DILexicalBlock(scope: !876, file: !3, line: 392, column: 9) | |
!913 = !DILocation(line: 392, column: 9, scope: !912) | |
!914 = !DILocation(line: 392, column: 21, scope: !912) | |
!915 = !DILocation(line: 392, column: 9, scope: !876) | |
!916 = !DILocation(line: 393, column: 15, scope: !917) | |
!917 = distinct !DILexicalBlock(scope: !912, file: !3, line: 392, column: 27) | |
!918 = !DILocation(line: 393, column: 59, scope: !917) | |
!919 = !DILocation(line: 393, column: 7, scope: !917) | |
!920 = !DILocation(line: 394, column: 7, scope: !917) | |
!921 = !DILocation(line: 395, column: 5, scope: !917) | |
!922 = !DILocation(line: 397, column: 13, scope: !876) | |
!923 = !DILocation(line: 397, column: 5, scope: !876) | |
!924 = !DILocation(line: 400, column: 11, scope: !881) | |
!925 = !DILocation(line: 400, column: 13, scope: !881) | |
!926 = !DILocation(line: 400, column: 20, scope: !881) | |
!927 = !DILocation(line: 400, column: 17, scope: !881) | |
!928 = !DILocation(line: 400, column: 11, scope: !882) | |
!929 = !DILocation(line: 401, column: 17, scope: !930) | |
!930 = distinct !DILexicalBlock(scope: !881, file: !3, line: 400, column: 26) | |
!931 = !DILocation(line: 401, column: 64, scope: !930) | |
!932 = !DILocation(line: 401, column: 9, scope: !930) | |
!933 = !DILocation(line: 402, column: 9, scope: !930) | |
!934 = !DILocation(line: 403, column: 7, scope: !930) | |
!935 = !DILocation(line: 404, column: 9, scope: !880) | |
!936 = !DILocation(line: 404, column: 15, scope: !880) | |
!937 = !DILocation(line: 405, column: 9, scope: !880) | |
!938 = !DILocation(line: 405, column: 16, scope: !880) | |
!939 = !DILocation(line: 405, column: 31, scope: !880) | |
!940 = !DILocation(line: 405, column: 36, scope: !880) | |
!941 = !DILocation(line: 405, column: 24, scope: !880) | |
!942 = !DILocation(line: 406, column: 13, scope: !943) | |
!943 = distinct !DILexicalBlock(scope: !880, file: !3, line: 406, column: 13) | |
!944 = !DILocation(line: 406, column: 18, scope: !943) | |
!945 = !DILocation(line: 406, column: 23, scope: !943) | |
!946 = !DILocation(line: 406, column: 27, scope: !943) | |
!947 = !DILocation(line: 406, column: 26, scope: !943) | |
!948 = !DILocation(line: 406, column: 32, scope: !943) | |
!949 = !DILocation(line: 406, column: 13, scope: !880) | |
!950 = !DILocation(line: 407, column: 19, scope: !951) | |
!951 = distinct !DILexicalBlock(scope: !943, file: !3, line: 406, column: 41) | |
!952 = !DILocation(line: 407, column: 72, scope: !951) | |
!953 = !DILocation(line: 408, column: 19, scope: !951) | |
!954 = !DILocation(line: 408, column: 24, scope: !951) | |
!955 = !DILocation(line: 407, column: 11, scope: !951) | |
!956 = !DILocation(line: 409, column: 11, scope: !951) | |
!957 = !DILocation(line: 410, column: 9, scope: !951) | |
!958 = !DILocation(line: 411, column: 13, scope: !959) | |
!959 = distinct !DILexicalBlock(scope: !880, file: !3, line: 411, column: 13) | |
!960 = !DILocation(line: 411, column: 20, scope: !959) | |
!961 = !DILocation(line: 411, column: 13, scope: !880) | |
!962 = !DILocation(line: 412, column: 32, scope: !959) | |
!963 = !DILocation(line: 412, column: 30, scope: !959) | |
!964 = !DILocation(line: 412, column: 11, scope: !959) | |
!965 = !DILocation(line: 414, column: 32, scope: !959) | |
!966 = !DILocation(line: 414, column: 30, scope: !959) | |
!967 = !DILocation(line: 415, column: 7, scope: !881) | |
!968 = !DILocation(line: 416, column: 7, scope: !882) | |
!969 = !DILocation(line: 419, column: 25, scope: !882) | |
!970 = !DILocation(line: 420, column: 7, scope: !882) | |
!971 = !DILocation(line: 423, column: 15, scope: !882) | |
!972 = !DILocation(line: 423, column: 59, scope: !882) | |
!973 = !DILocation(line: 423, column: 7, scope: !882) | |
!974 = !DILocation(line: 424, column: 7, scope: !882) | |
!975 = !DILocation(line: 425, column: 5, scope: !882) | |
!976 = !DILocation(line: 426, column: 3, scope: !877) | |
!977 = !DILocation(line: 426, column: 3, scope: !876) | |
!978 = !DILocation(line: 387, column: 26, scope: !877) | |
!979 = !DILocation(line: 387, column: 3, scope: !877) | |
!980 = distinct !{!980, !901, !981, !483} | |
!981 = !DILocation(line: 426, column: 3, scope: !878) | |
!982 = !DILocation(line: 428, column: 7, scope: !983) | |
!983 = distinct !DILexicalBlock(scope: !863, file: !3, line: 428, column: 7) | |
!984 = !DILocation(line: 428, column: 9, scope: !983) | |
!985 = !DILocation(line: 428, column: 16, scope: !983) | |
!986 = !DILocation(line: 428, column: 13, scope: !983) | |
!987 = !DILocation(line: 428, column: 7, scope: !863) | |
!988 = !DILocation(line: 429, column: 13, scope: !989) | |
!989 = distinct !DILexicalBlock(scope: !983, file: !3, line: 428, column: 22) | |
!990 = !DILocation(line: 429, column: 5, scope: !989) | |
!991 = !DILocation(line: 430, column: 5, scope: !989) | |
!992 = !DILocation(line: 431, column: 3, scope: !989) | |
!993 = !DILocation(line: 433, column: 36, scope: !863) | |
!994 = !DILocation(line: 433, column: 41, scope: !863) | |
!995 = !DILocation(line: 433, column: 45, scope: !863) | |
!996 = !DILocation(line: 433, column: 50, scope: !863) | |
!997 = !DILocation(line: 433, column: 52, scope: !863) | |
!998 = !DILocation(line: 433, column: 58, scope: !863) | |
!999 = !DILocation(line: 434, column: 36, scope: !863) | |
!1000 = !DILocation(line: 434, column: 56, scope: !863) | |
!1001 = !DILocation(line: 433, column: 10, scope: !863) | |
!1002 = !DILocation(line: 433, column: 3, scope: !863) | |
!1003 = !DILocation(line: 435, column: 1, scope: !863) | |
!1004 = distinct !DISubprogram(name: "isDigitChar", scope: !3, file: !3, line: 42, type: !488, scopeLine: 42, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1005) | |
!1005 = !{!1006} | |
!1006 = !DILocalVariable(name: "C", arg: 1, scope: !1004, file: !3, line: 42, type: !28) | |
!1007 = !DILocation(line: 42, column: 30, scope: !1004) | |
!1008 = !DILocation(line: 43, column: 11, scope: !1004) | |
!1009 = !DILocation(line: 43, column: 3, scope: !1004) | |
!1010 = !DILocation(line: 46, column: 5, scope: !1011) | |
!1011 = distinct !DILexicalBlock(scope: !1004, file: !3, line: 43, column: 14) | |
!1012 = !DILocation(line: 48, column: 5, scope: !1011) | |
!1013 = !DILocation(line: 50, column: 1, scope: !1004) | |
!1014 = distinct !DISubprogram(name: "isSignedChar", scope: !3, file: !3, line: 28, type: !488, scopeLine: 28, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1015) | |
!1015 = !{!1016} | |
!1016 = !DILocalVariable(name: "C", arg: 1, scope: !1014, file: !3, line: 28, type: !28) | |
!1017 = !DILocation(line: 28, column: 31, scope: !1014) | |
!1018 = !DILocation(line: 29, column: 11, scope: !1014) | |
!1019 = !DILocation(line: 29, column: 13, scope: !1014) | |
!1020 = !DILocation(line: 29, column: 20, scope: !1014) | |
!1021 = !DILocation(line: 29, column: 23, scope: !1014) | |
!1022 = !DILocation(line: 29, column: 25, scope: !1014) | |
!1023 = !DILocation(line: 29, column: 3, scope: !1014) | |
!1024 = distinct !DISubprogram(name: "isExponentChar", scope: !3, file: !3, line: 32, type: !488, scopeLine: 32, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1025) | |
!1025 = !{!1026} | |
!1026 = !DILocalVariable(name: "C", arg: 1, scope: !1024, file: !3, line: 32, type: !28) | |
!1027 = !DILocation(line: 32, column: 33, scope: !1024) | |
!1028 = !DILocation(line: 33, column: 11, scope: !1024) | |
!1029 = !DILocation(line: 33, column: 3, scope: !1024) | |
!1030 = !DILocation(line: 37, column: 13, scope: !1031) | |
!1031 = distinct !DILexicalBlock(scope: !1024, file: !3, line: 33, column: 14) | |
!1032 = !DILocation(line: 38, column: 12, scope: !1031) | |
!1033 = !DILocation(line: 40, column: 1, scope: !1024) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment