vleschuk created this revision.
vleschuk added reviewers: mehdi_amini, echristo, dblaikie, aprantl.
vleschuk added a subscriber: cfe-commits.
Mark C11 _Atomic variables with DW_TAG_atomic_type tag.
This is the simplest way to achieve the goal: modifying Qualifiers results in
much more changes and putting emission of tag into CreateQualifiedType() along
with DW_TAG_const_type and friends seems more logic but requires way more
changes and could break something else (my first attempt to add atomic to
qualifiers resulted in lots of failures in OpenCL tests for some reason).
https://reviews.llvm.org/D26145
Files:
lib/CodeGen/CGDebugInfo.cpp
test/CodeGen/debug-info-atomic.c
Index: test/CodeGen/debug-info-atomic.c
===================================================================
--- /dev/null
+++ test/CodeGen/debug-info-atomic.c
@@ -0,0 +1,5 @@
+// RUN: %clang -g -c -std=c11 -S -emit-llvm -o - %s | FileCheck %s
+
+// CHECK: !DIDerivedType(tag: DW_TAG_const_type
+// CHECK: !DIDerivedType(tag: DW_TAG_atomic_type
+_Atomic const int i;
Index: lib/CodeGen/CGDebugInfo.cpp
===================================================================
--- lib/CodeGen/CGDebugInfo.cpp
+++ lib/CodeGen/CGDebugInfo.cpp
@@ -2287,9 +2287,8 @@
}
llvm::DIType *CGDebugInfo::CreateType(const AtomicType *Ty, llvm::DIFile *U) {
- // Ignore the atomic wrapping
- // FIXME: What is the correct representation?
- return getOrCreateType(Ty->getValueType(), U);
+ auto *FromTy = getOrCreateType(Ty->getValueType(), U);
+ return DBuilder.createQualifiedType(llvm::dwarf::DW_TAG_atomic_type, FromTy);
}
llvm::DIType* CGDebugInfo::CreateType(const PipeType *Ty,
Index: test/CodeGen/debug-info-atomic.c
===================================================================
--- /dev/null
+++ test/CodeGen/debug-info-atomic.c
@@ -0,0 +1,5 @@
+// RUN: %clang -g -c -std=c11 -S -emit-llvm -o - %s | FileCheck %s
+
+// CHECK: !DIDerivedType(tag: DW_TAG_const_type
+// CHECK: !DIDerivedType(tag: DW_TAG_atomic_type
+_Atomic const int i;
Index: lib/CodeGen/CGDebugInfo.cpp
===================================================================
--- lib/CodeGen/CGDebugInfo.cpp
+++ lib/CodeGen/CGDebugInfo.cpp
@@ -2287,9 +2287,8 @@
}
llvm::DIType *CGDebugInfo::CreateType(const AtomicType *Ty, llvm::DIFile *U) {
- // Ignore the atomic wrapping
- // FIXME: What is the correct representation?
- return getOrCreateType(Ty->getValueType(), U);
+ auto *FromTy = getOrCreateType(Ty->getValueType(), U);
+ return DBuilder.createQualifiedType(llvm::dwarf::DW_TAG_atomic_type, FromTy);
}
llvm::DIType* CGDebugInfo::CreateType(const PipeType *Ty,
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits