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;