From fdddd8e734c73a13619d13bfde3e44aae2d2852f Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Fri, 2 Nov 2018 01:31:52 +0000 Subject: [PATCH] test/DebugInfo: Convert some tests to MIR These tests are meant to test dwarf emission (or prolog/epilogue generation) so we can convert them to .mir and only run the relevant part of the pipeline. This way they become independent of changes in earlier passes such as my planned changes to RegAllocFast. llvm-svn: 345919 --- llvm/test/DebugInfo/AArch64/asan-stack-vars.ll | 324 ---------- llvm/test/DebugInfo/AArch64/asan-stack-vars.mir | 682 +++++++++++++++++++++ .../AArch64/compiler-gen-bbs-livedebugvalues.ll | 66 -- .../AArch64/compiler-gen-bbs-livedebugvalues.mir | 110 ++++ llvm/test/DebugInfo/ARM/cfi-eof-prologue.ll | 114 ---- llvm/test/DebugInfo/ARM/cfi-eof-prologue.mir | 212 +++++++ llvm/test/DebugInfo/X86/debug-loc-asan.ll | 190 ------ llvm/test/DebugInfo/X86/debug-loc-asan.mir | 346 +++++++++++ llvm/test/DebugInfo/X86/debug-loc-offset.ll | 171 ------ llvm/test/DebugInfo/X86/debug-loc-offset.mir | 276 +++++++++ llvm/test/DebugInfo/X86/dw_op_minus.ll | 80 --- llvm/test/DebugInfo/X86/dw_op_minus.mir | 119 ++++ llvm/test/DebugInfo/X86/pr19307.ll | 144 ----- llvm/test/DebugInfo/X86/pr19307.mir | 224 +++++++ 14 files changed, 1969 insertions(+), 1089 deletions(-) delete mode 100644 llvm/test/DebugInfo/AArch64/asan-stack-vars.ll create mode 100644 llvm/test/DebugInfo/AArch64/asan-stack-vars.mir delete mode 100644 llvm/test/DebugInfo/AArch64/compiler-gen-bbs-livedebugvalues.ll create mode 100644 llvm/test/DebugInfo/AArch64/compiler-gen-bbs-livedebugvalues.mir delete mode 100644 llvm/test/DebugInfo/ARM/cfi-eof-prologue.ll create mode 100644 llvm/test/DebugInfo/ARM/cfi-eof-prologue.mir delete mode 100644 llvm/test/DebugInfo/X86/debug-loc-asan.ll create mode 100644 llvm/test/DebugInfo/X86/debug-loc-asan.mir delete mode 100644 llvm/test/DebugInfo/X86/debug-loc-offset.ll create mode 100644 llvm/test/DebugInfo/X86/debug-loc-offset.mir delete mode 100644 llvm/test/DebugInfo/X86/dw_op_minus.ll create mode 100644 llvm/test/DebugInfo/X86/dw_op_minus.mir delete mode 100644 llvm/test/DebugInfo/X86/pr19307.ll create mode 100644 llvm/test/DebugInfo/X86/pr19307.mir diff --git a/llvm/test/DebugInfo/AArch64/asan-stack-vars.ll b/llvm/test/DebugInfo/AArch64/asan-stack-vars.ll deleted file mode 100644 index 5db4606..0000000 --- a/llvm/test/DebugInfo/AArch64/asan-stack-vars.ll +++ /dev/null @@ -1,324 +0,0 @@ -; RUN: llc -O0 -fast-isel -filetype=obj -o - %s | llvm-dwarfdump -v - | FileCheck %s -; -; Derived from (clang -O0 -g -fsanitize=address -fobjc-arc) -; @protocol NSObject -; @end -; @interface NSObject{} -; + (instancetype)alloc; -; @end -; struct CGSize { -; double width; -; double height; -; }; -; typedef struct CGSize CGSize; -; @interface Object : NSObject -; - (instancetype)initWithSize:(CGSize)size; -; - (id)aMessage; -; @end -; @implementation MyObject -; + (id)doWithSize:(CGSize)imageSize andObject:(id)object { -; return [object aMessage]; -; } -; @end -; -; CHECK: .debug_info contents: -; CHECK: DW_TAG_subprogram -; CHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) -; CHECK-NEXT: DW_AT_high_pc [DW_FORM_addr] ([[FN_END:.*]]) -; CHECK: "_cmd" -; CHECK: DW_TAG_formal_parameter -; CHECK-NEXT: DW_AT_location -; CHECK-NEXT: [0x{{0*}}, 0x{{.*}}): -; CHECK-NOT: DW_AT_ -; CHECK: [0x{{.*}}, [[FN_END]]): -; CHECK-NEXT: DW_AT_name {{.*}}"imageSize" - -; ModuleID = 'm.m' -source_filename = "m.m" -target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" -target triple = "arm64-apple-ios" - -%0 = type opaque -%struct._class_t = type { %struct._class_t*, %struct._class_t*, %struct._objc_cache*, i8* (i8*, i8*)**, %struct._class_ro_t* } -%struct._objc_cache = type opaque -%struct._class_ro_t = type { i32, i32, i32, i8*, i8*, %struct.__method_list_t*, %struct._objc_protocol_list*, %struct._ivar_list_t*, i8*, %struct._prop_list_t* } -%struct.__method_list_t = type { i32, i32, [0 x %struct._objc_method] } -%struct._objc_method = type { i8*, i8*, i8* } -%struct._objc_protocol_list = type { i64, [0 x %struct._protocol_t*] } -%struct._protocol_t = type { i8*, i8*, %struct._objc_protocol_list*, %struct.__method_list_t*, %struct.__method_list_t*, %struct.__method_list_t*, %struct.__method_list_t*, %struct._prop_list_t*, i32, i32, i8**, i8*, %struct._prop_list_t* } -%struct._ivar_list_t = type { i32, i32, [0 x %struct._ivar_t] } -%struct._ivar_t = type { i32*, i8*, i8*, i32, i32 } -%struct._prop_list_t = type { i32, i32, [0 x %struct._prop_t] } -%struct._prop_t = type { i8*, i8* } -%struct.CGSize = type { double, double } - -@"OBJC_CLASS_$_Object" = external global %struct._class_t -@"OBJC_CLASSLIST_REFERENCES_$_" = private global %struct._class_t* @"OBJC_CLASS_$_Object", section "__DATA, __objc_classrefs, regular, no_dead_strip", align 8 -@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [6 x i8] c"alloc\00", section "__TEXT,__objc_methname,cstring_literals", align 1 -@OBJC_SELECTOR_REFERENCES_ = private externally_initialized global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @OBJC_METH_VAR_NAME_, i32 0, i32 0), section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip", align 8 -@OBJC_METH_VAR_NAME_.1 = private unnamed_addr constant [14 x i8] c"initWithSize:\00", section "__TEXT,__objc_methname,cstring_literals", align 1 -@OBJC_SELECTOR_REFERENCES_.2 = private externally_initialized global i8* getelementptr inbounds ([14 x i8], [14 x i8]* @OBJC_METH_VAR_NAME_.1, i32 0, i32 0), section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip", align 8 -@OBJC_METH_VAR_NAME_.3 = private unnamed_addr constant [9 x i8] c"aMessage\00", section "__TEXT,__objc_methname,cstring_literals", align 1 -@OBJC_SELECTOR_REFERENCES_.4 = private externally_initialized global i8* getelementptr inbounds ([9 x i8], [9 x i8]* @OBJC_METH_VAR_NAME_.3, i32 0, i32 0), section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip", align 8 -@_objc_empty_cache = external global %struct._objc_cache -@"OBJC_CLASS_$_MyObject" = global %struct._class_t { %struct._class_t* @"OBJC_METACLASS_$_MyObject", %struct._class_t* null, %struct._objc_cache* @_objc_empty_cache, i8* (i8*, i8*)** null, %struct._class_ro_t* @"\01l_OBJC_CLASS_RO_$_MyObject" }, section "__DATA, __objc_data", align 8 -@"OBJC_METACLASS_$_MyObject" = global %struct._class_t { %struct._class_t* @"OBJC_METACLASS_$_MyObject", %struct._class_t* @"OBJC_CLASS_$_MyObject", %struct._objc_cache* @_objc_empty_cache, i8* (i8*, i8*)** null, %struct._class_ro_t* @"\01l_OBJC_METACLASS_RO_$_MyObject" }, section "__DATA, __objc_data", align 8 -@OBJC_CLASS_NAME_ = private unnamed_addr constant [9 x i8] c"MyObject\00", section "__TEXT,__objc_classname,cstring_literals", align 1 -@OBJC_METH_VAR_NAME_.5 = private unnamed_addr constant [12 x i8] c"doWithSize:\00", section "__TEXT,__objc_methname,cstring_literals", align 1 -@OBJC_METH_VAR_TYPE_ = private unnamed_addr constant [21 x i8] c"@32@0:8{CGSize=dd}16\00", section "__TEXT,__objc_methtype,cstring_literals", align 1 -@"\01l_OBJC_$_CLASS_METHODS_MyObject" = private global { i32, i32, [1 x %struct._objc_method] } { i32 24, i32 1, [1 x %struct._objc_method] [%struct._objc_method { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @OBJC_METH_VAR_NAME_.5, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @OBJC_METH_VAR_TYPE_, i32 0, i32 0), i8* bitcast (i8* (i8*, i8*, [2 x double])* @"\01+[MyObject doWithSize:]" to i8*) }] }, section "__DATA, __objc_const", align 8 -@"\01l_OBJC_METACLASS_RO_$_MyObject" = private global %struct._class_ro_t { i32 131, i32 40, i32 40, i8* null, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @OBJC_CLASS_NAME_, i32 0, i32 0), %struct.__method_list_t* bitcast ({ i32, i32, [1 x %struct._objc_method] }* @"\01l_OBJC_$_CLASS_METHODS_MyObject" to %struct.__method_list_t*), %struct._objc_protocol_list* null, %struct._ivar_list_t* null, i8* null, %struct._prop_list_t* null }, section "__DATA, __objc_const", align 8 -@"\01l_OBJC_CLASS_RO_$_MyObject" = private global %struct._class_ro_t { i32 130, i32 0, i32 0, i8* null, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @OBJC_CLASS_NAME_, i32 0, i32 0), %struct.__method_list_t* null, %struct._objc_protocol_list* null, %struct._ivar_list_t* null, i8* null, %struct._prop_list_t* null }, section "__DATA, __objc_const", align 8 -@"OBJC_LABEL_CLASS_$" = private global [1 x i8*] [i8* bitcast (%struct._class_t* @"OBJC_CLASS_$_MyObject" to i8*)], section "__DATA, __objc_classlist, regular, no_dead_strip", align 8 -@llvm.compiler.used = appending global [12 x i8*] [i8* bitcast (%struct._class_t** @"OBJC_CLASSLIST_REFERENCES_$_" to i8*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @OBJC_METH_VAR_NAME_, i32 0, i32 0), i8* bitcast (i8** @OBJC_SELECTOR_REFERENCES_ to i8*), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @OBJC_METH_VAR_NAME_.1, i32 0, i32 0), i8* bitcast (i8** @OBJC_SELECTOR_REFERENCES_.2 to i8*), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @OBJC_METH_VAR_NAME_.3, i32 0, i32 0), i8* bitcast (i8** @OBJC_SELECTOR_REFERENCES_.4 to i8*), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @OBJC_CLASS_NAME_, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @OBJC_METH_VAR_NAME_.5, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @OBJC_METH_VAR_TYPE_, i32 0, i32 0), i8* bitcast ({ i32, i32, [1 x %struct._objc_method] }* @"\01l_OBJC_$_CLASS_METHODS_MyObject" to i8*), i8* bitcast ([1 x i8*]* @"OBJC_LABEL_CLASS_$" to i8*)], section "llvm.metadata" -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* @asan.module_ctor, i8* null }] -@__asan_shadow_memory_dynamic_address = external global i64 -@___asan_gen_ = private unnamed_addr constant [34 x i8] c"2 32 16 9 imageSize 64 8 6 object\00", align 1 - -; Function Attrs: noinline sanitize_address ssp uwtable -define internal i8* @"\01+[MyObject doWithSize:]"(i8* %self, i8* %_cmd, [2 x double] %imageSize.coerce) #0 !dbg !14 { -entry: - %0 = load i64, i64* @__asan_shadow_memory_dynamic_address - %self.addr = alloca i8*, align 8 - %_cmd.addr = alloca i8*, align 8 - %MyAlloca = alloca [96 x i8], align 32, !dbg !35 - %1 = ptrtoint [96 x i8]* %MyAlloca to i64, !dbg !35 - %2 = add i64 %1, 32, !dbg !35 - %3 = inttoptr i64 %2 to %struct.CGSize*, !dbg !35 - %4 = add i64 %1, 64, !dbg !35 - %5 = inttoptr i64 %4 to %0**, !dbg !35 - %6 = inttoptr i64 %1 to i64*, !dbg !35 - store i64 1102416563, i64* %6, !dbg !35 - %7 = add i64 %1, 8, !dbg !35 - %8 = inttoptr i64 %7 to i64*, !dbg !35 - store i64 ptrtoint ([34 x i8]* @___asan_gen_ to i64), i64* %8, !dbg !35 - %9 = add i64 %1, 16, !dbg !35 - %10 = inttoptr i64 %9 to i64*, !dbg !35 - store i64 ptrtoint (i8* (i8*, i8*, [2 x double])* @"\01+[MyObject doWithSize:]" to i64), i64* %10, !dbg !35 - %11 = lshr i64 %1, 3, !dbg !35 - %12 = add i64 %11, %0, !dbg !35 - %13 = add i64 %12, 0, !dbg !35 - %14 = inttoptr i64 %13 to i64*, !dbg !35 - store i64 -940689368107847183, i64* %14, align 1, !dbg !35 - %15 = add i64 %12, 9, !dbg !35 - %16 = inttoptr i64 %15 to i16*, !dbg !35 - store i16 -3085, i16* %16, align 1, !dbg !35 - %17 = add i64 %12, 11, !dbg !35 - %18 = inttoptr i64 %17 to i8*, !dbg !35 - store i8 -13, i8* %18, align 1, !dbg !35 - call void @llvm.dbg.declare(metadata %struct.CGSize* %3, metadata !36, metadata !37), !dbg !38 - call void @llvm.dbg.declare(metadata %0** %5, metadata !39, metadata !37), !dbg !45 - %19 = bitcast %struct.CGSize* %3 to [2 x double]* - %20 = ptrtoint [2 x double]* %19 to i64 - %21 = lshr i64 %20, 3 - %22 = add i64 %21, %0 - %23 = inttoptr i64 %22 to i16* - %24 = load i16, i16* %23 - %25 = icmp ne i16 %24, 0 - br i1 %25, label %26, label %27 - -;