diff options
author | Alexey Samsonov <samsonov@google.com> | 2012-05-04 07:39:27 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2012-05-04 07:39:27 +0000 |
commit | 74a3868dbba7f8b82fd2985a009713b239d237a9 (patch) | |
tree | a7fed5d515bab70dd166e15d5488142c1be2b18f /clang/test/CodeGen/debug-info-gline-tables-only.c | |
parent | bdd2e34b1fcb1e69abeb075b18335a9dcefaf015 (diff) | |
download | bcm5719-llvm-74a3868dbba7f8b82fd2985a009713b239d237a9.tar.gz bcm5719-llvm-74a3868dbba7f8b82fd2985a009713b239d237a9.zip |
This patch adds a new Clang compiler flag "-gline-tables-only".
It reduces the amount of emitted debug information:
1) DIEs in .debug_info have types DW_TAG_compile_unit, DW_TAG_subprogram,
DW_TAG_inlined_subroutine (for opt builds) and DW_TAG_lexical_block only.
2) .debug_str contains only function names.
3) No debug data for types/namespaces/variables is emitted.
4) The data in .debug_line is enough to produce valid stack traces with
function names and line numbers.
Reviewed by Eric Christopher.
llvm-svn: 156160
Diffstat (limited to 'clang/test/CodeGen/debug-info-gline-tables-only.c')
-rw-r--r-- | clang/test/CodeGen/debug-info-gline-tables-only.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/clang/test/CodeGen/debug-info-gline-tables-only.c b/clang/test/CodeGen/debug-info-gline-tables-only.c new file mode 100644 index 00000000000..067d8e77218 --- /dev/null +++ b/clang/test/CodeGen/debug-info-gline-tables-only.c @@ -0,0 +1,33 @@ +// RUN: %clang_cc1 %s -gline-tables-only -S -emit-llvm -o - | FileCheck %s +// Checks that clang with "-gline-tables-only" doesn't emit debug info +// for variables and types. + +// CHECK-NOT: DW_TAG_variable +int global = 42; + +// CHECK-NOT: DW_TAG_typedef +// CHECK-NOT: DW_TAG_const_type +// CHECK-NOT: DW_TAG_pointer_type +// CHECK-NOT: DW_TAG_array_type +typedef const char* constCharPtrArray[10]; + +// CHECK-NOT: DW_TAG_structure_type +struct S { + // CHECK-NOT: DW_TAG_member + char a; + double b; + constCharPtrArray c; +}; + +// CHECK-NOT: DW_TAG_enumerator +// CHECK-NOT: DW_TAG_enumeration_type +enum E { ZERO = 0, ONE = 1 }; + +// CHECK-NOT: DW_TAG_arg_variable +int sum(int p, int q) { + // CHECK-NOT: DW_TAG_auto_variable + int r = p + q; + struct S s; + enum E e; + return r; +} |