[llvm] r322391 - [DWARFv5] CodeGen support for MD5 file checksums
Michael Zolotukhin via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 12 20:51:35 PST 2018
Thanks, the dragon build is green again!
Michael
> On Jan 12, 2018, at 5:41 PM, Robinson, Paul <paul.robinson at sony.com> wrote:
>
> Ah, forgot that Darwin is stuck in the DWARF dark ages. I XFAIL'd it in r322430, I'll check back later to make sure it stuck.
> Thanks,
> --paulr
> <>
> From: mzolotukhin at apple.com [mailto:mzolotukhin at apple.com]
> Sent: Friday, January 12, 2018 5:03 PM
> To: Robinson, Paul
> Cc: llvm-commits at lists.llvm.org
> Subject: Re: [llvm] r322391 - [DWARFv5] CodeGen support for MD5 file checksums
>
>
>
>
> On Jan 12, 2018, at 4:54 PM, Robinson, Paul <paul.robinson at sony.com <mailto:paul.robinson at sony.com>> wrote:
>
> Looks like that was building r322394, should already be fixed in r322400. Let me know if it isn't.
> It isn't. This is a build for r322400: http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental/45623/console <http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental/45623/console>
> It's been red since r322394.
>
> Michael
>
> --paulr
>
> From: mzolotukhin at apple.com <mailto:mzolotukhin at apple.com> [mailto:mzolotukhin at apple.com <mailto:mzolotukhin at apple.com>]
> Sent: Friday, January 12, 2018 4:40 PM
> To: Robinson, Paul
> Cc: llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
> Subject: Re: [llvm] r322391 - [DWARFv5] CodeGen support for MD5 file checksums
>
> Hi,
>
> This broke green dragon build [1]. Could you please take a look?
>
> Thanks,
> Michael
>
> [1] http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental/45621/consoleFull#-144947796949ba4694-19c4-4d7e-bec5-911270d8a58c <http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental/45621/consoleFull#-144947796949ba4694-19c4-4d7e-bec5-911270d8a58c>
>
>
>
>
> On Jan 12, 2018, at 11:17 AM, Paul Robinson via llvm-commits <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>> wrote:
>
> Author: probinson
> Date: Fri Jan 12 11:17:50 2018
> New Revision: 322391
>
> URL: http://llvm.org/viewvc/llvm-project?rev=322391&view=rev <http://llvm.org/viewvc/llvm-project?rev=322391&view=rev>
> Log:
> [DWARFv5] CodeGen support for MD5 file checksums
>
> Pass MD5 checksums through from IR to assembly/object files.
> After this, getting Clang to compute the MD5 should be the last step
> to supporting MD5 in the DWARF v5 line table header.
>
> Differential Revision: https://reviews.llvm.org/D41926 <https://reviews.llvm.org/D41926>
>
> Added:
> llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll
> Modified:
> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h
> llvm/trunk/lib/MC/MCAsmStreamer.cpp
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp?rev=322391&r1=322390&r2=322391&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp?rev=322391&r1=322390&r2=322391&view=diff>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp Fri Jan 12 11:17:50 2018
> @@ -94,17 +94,17 @@ void DwarfCompileUnit::addLocalLabelAddr
> DIEInteger(0));
> }
>
> -unsigned DwarfCompileUnit::getOrCreateSourceID(StringRef FileName,
> - StringRef DirName,
> - MD5::MD5Result *Checksum) {
> +unsigned DwarfCompileUnit::getOrCreateSourceID(const DIFile *File) {
> // If we print assembly, we can't separate .file entries according to
> // compile units. Thus all files will belong to the default compile unit.
>
> // FIXME: add a better feature test than hasRawTextSupport. Even better,
> // extend .file to support this.
> + unsigned CUID = Asm->OutStreamer->hasRawTextSupport() ? 0 : getUniqueID();
> + if (!File)
> + return Asm->OutStreamer->EmitDwarfFileDirective(0, "", "", nullptr, CUID);
> return Asm->OutStreamer->EmitDwarfFileDirective(
> - 0, DirName, FileName, Checksum,
> - Asm->OutStreamer->hasRawTextSupport() ? 0 : getUniqueID());
> + 0, File->getDirectory(), File->getFilename(), getMD5AsBytes(File), CUID);
> }
>
> DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE(
> @@ -444,7 +444,7 @@ DIE *DwarfCompileUnit::constructInlinedS
> // Add the call site information to the DIE.
> const DILocation *IA = Scope->getInlinedAt();
> addUInt(*ScopeDIE, dwarf::DW_AT_call_file, None,
> - getOrCreateSourceID(IA->getFilename(), IA->getDirectory(), nullptr));
> + getOrCreateSourceID(IA->getFile()));
> addUInt(*ScopeDIE, dwarf::DW_AT_call_line, None, IA->getLine());
> if (IA->getDiscriminator() && DD->getDwarfVersion() >= 4)
> addUInt(*ScopeDIE, dwarf::DW_AT_GNU_discriminator, None,
> @@ -688,9 +688,7 @@ DIE *DwarfCompileUnit::constructImported
> else
> EntityDie = getDIE(Entity);
> assert(EntityDie);
> - auto *File = Module->getFile();
> - addSourceLine(*IMDie, Module->getLine(), File ? File->getFilename() : "",
> - File ? File->getDirectory() : "");
> + addSourceLine(*IMDie, Module->getLine(), Module->getFile());
> addDIEEntry(*IMDie, dwarf::DW_AT_import, *EntityDie);
> StringRef Name = Module->getName();
> if (!Name.empty())
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h?rev=322391&r1=322390&r2=322391&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h?rev=322391&r1=322390&r2=322391&view=diff>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h Fri Jan 12 11:17:50 2018
> @@ -141,8 +141,7 @@ public:
>
> DwarfCompileUnit &getCU() override { return *this; }
>
> - unsigned getOrCreateSourceID(StringRef FileName, StringRef DirName,
> - MD5::MD5Result *Checksum) override;
> + unsigned getOrCreateSourceID(const DIFile *File) override;
>
> void addImportedEntity(const DIImportedEntity* IE) {
> DIScope *Scope = IE->getScope();
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=322391&r1=322390&r2=322391&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=322391&r1=322390&r2=322391&view=diff>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Fri Jan 12 11:17:50 2018
> @@ -1366,19 +1366,17 @@ void DwarfDebug::endFunctionImpl(const M
> void DwarfDebug::recordSourceLine(unsigned Line, unsigned Col, const MDNode *S,
> unsigned Flags) {
> StringRef Fn;
> - StringRef Dir;
> unsigned Src = 1;
> unsigned Discriminator = 0;
> if (auto *Scope = cast_or_null<DIScope>(S)) {
> Fn = Scope->getFilename();
> - Dir = Scope->getDirectory();
> if (Line != 0 && getDwarfVersion() >= 4)
> if (auto *LBF = dyn_cast<DILexicalBlockFile>(Scope))
> Discriminator = LBF->getDiscriminator();
>
> unsigned CUID = Asm->OutStreamer->getContext().getDwarfCompileUnitID();
> Src = static_cast<DwarfCompileUnit &>(*InfoHolder.getUnits()[CUID])
> - .getOrCreateSourceID(Fn, Dir, nullptr);
> + .getOrCreateSourceID(Scope->getFile());
> }
> Asm->OutStreamer->EmitDwarfLocDirective(Src, Line, Col, Flags, 0,
> Discriminator, Fn);
> @@ -1973,11 +1971,7 @@ void DwarfDebug::emitMacroFile(DIMacroFi
> assert(F.getMacinfoType() == dwarf::DW_MACINFO_start_file);
> Asm->EmitULEB128(dwarf::DW_MACINFO_start_file);
> Asm->EmitULEB128(F.getLine());
> - DIFile *File = F.getFile();
> - unsigned FID =
> - U.getOrCreateSourceID(File->getFilename(), File->getDirectory(),
> - nullptr); // FIXME: MD5?
> - Asm->EmitULEB128(FID);
> + Asm->EmitULEB128(U.getOrCreateSourceID(F.getFile()));
> handleMacroNodes(F.getElements(), U);
> Asm->EmitULEB128(dwarf::DW_MACINFO_end_file);
> }
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=322391&r1=322390&r2=322391&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=322391&r1=322390&r2=322391&view=diff>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Fri Jan 12 11:17:50 2018
> @@ -19,6 +19,7 @@
> #include "llvm/ADT/APFloat.h"
> #include "llvm/ADT/APInt.h"
> #include "llvm/ADT/None.h"
> +#include "llvm/ADT/StringExtras.h"
> #include "llvm/ADT/iterator_range.h"
> #include "llvm/CodeGen/MachineFunction.h"
> #include "llvm/CodeGen/MachineOperand.h"
> @@ -30,6 +31,7 @@
> #include "llvm/IR/GlobalValue.h"
> #include "llvm/IR/Metadata.h"
> #include "llvm/MC/MCAsmInfo.h"
> +#include "llvm/MC/MCContext.h"
> #include "llvm/MC/MCDwarf.h"
> #include "llvm/MC/MCSection.h"
> #include "llvm/MC/MCStreamer.h"
> @@ -263,12 +265,25 @@ void DwarfUnit::addSectionOffset(DIE &Di
> addUInt(Die, Attribute, dwarf::DW_FORM_data4, Integer);
> }
>
> -unsigned DwarfTypeUnit::getOrCreateSourceID(StringRef FileName,
> - StringRef DirName,
> - MD5::MD5Result *Checksum) {
> +MD5::MD5Result *DwarfUnit::getMD5AsBytes(const DIFile *File) {
> + assert(File);
> + if (File->getChecksumKind() != DIFile::CSK_MD5)
> + return nullptr;
> +
> + // Convert the string checksum to an MD5Result for the streamer.
> + // The verifier validates the checksum so we assume it's okay.
> + // An MD5 checksum is 16 bytes.
> + std::string Checksum = fromHex(File->getChecksum());
> + void *CKMem = Asm->OutStreamer->getContext().allocate(16, 1);
> + memcpy(CKMem, Checksum.data(), 16);
> + return reinterpret_cast<MD5::MD5Result *>(CKMem);
> +}
> +
> +unsigned DwarfTypeUnit::getOrCreateSourceID(const DIFile *File) {
> return SplitLineTable
> - ? SplitLineTable->getFile(DirName, FileName, Checksum)
> - : getCU().getOrCreateSourceID(FileName, DirName, Checksum);
> + ? SplitLineTable->getFile(File->getDirectory(),
> + File->getFilename(), getMD5AsBytes(File))
> + : getCU().getOrCreateSourceID(File);
> }
>
> void DwarfUnit::addOpAddress(DIELoc &Die, const MCSymbol *Sym) {
> @@ -338,12 +353,11 @@ void DwarfUnit::addBlock(DIE &Die, dwarf
> Die.addValue(DIEValueAllocator, Attribute, Block->BestForm(), Block);
> }
>
> -void DwarfUnit::addSourceLine(DIE &Die, unsigned Line, StringRef File,
> - StringRef Directory) {
> +void DwarfUnit::addSourceLine(DIE &Die, unsigned Line, const DIFile *File) {
> if (Line == 0)
> return;
>
> - unsigned FileID = getOrCreateSourceID(File, Directory, nullptr);
> + unsigned FileID = getOrCreateSourceID(File);
> assert(FileID && "Invalid file id");
> addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
> addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> @@ -352,32 +366,31 @@ void DwarfUnit::addSourceLine(DIE &Die,
> void DwarfUnit::addSourceLine(DIE &Die, const DILocalVariable *V) {
> assert(V);
>
> - addSourceLine(Die, V->getLine(), V->getScope()->getFilename(),
> - V->getScope()->getDirectory());
> + addSourceLine(Die, V->getLine(), V->getFile());
> }
>
> void DwarfUnit::addSourceLine(DIE &Die, const DIGlobalVariable *G) {
> assert(G);
>
> - addSourceLine(Die, G->getLine(), G->getFilename(), G->getDirectory());
> + addSourceLine(Die, G->getLine(), G->getFile());
> }
>
> void DwarfUnit::addSourceLine(DIE &Die, const DISubprogram *SP) {
> assert(SP);
>
> - addSourceLine(Die, SP->getLine(), SP->getFilename(), SP->getDirectory());
> + addSourceLine(Die, SP->getLine(), SP->getFile());
> }
>
> void DwarfUnit::addSourceLine(DIE &Die, const DIType *Ty) {
> assert(Ty);
>
> - addSourceLine(Die, Ty->getLine(), Ty->getFilename(), Ty->getDirectory());
> + addSourceLine(Die, Ty->getLine(), Ty->getFile());
> }
>
> void DwarfUnit::addSourceLine(DIE &Die, const DIObjCProperty *Ty) {
> assert(Ty);
>
> - addSourceLine(Die, Ty->getLine(), Ty->getFilename(), Ty->getDirectory());
> + addSourceLine(Die, Ty->getLine(), Ty->getFile());
> }
>
> /* Byref variables, in Blocks, are declared by the programmer as "SomeType
> @@ -1164,10 +1177,8 @@ bool DwarfUnit::applySubprogramDefinitio
> // Look at the Decl's linkage name only if we emitted it.
> if (DD->useAllLinkageNames())
> DeclLinkageName = SPDecl->getLinkageName();
> - unsigned DeclID = getOrCreateSourceID(SPDecl->getFilename(),
> - SPDecl->getDirectory(), nullptr);
> - unsigned DefID =
> - getOrCreateSourceID(SP->getFilename(), SP->getDirectory(), nullptr);
> + unsigned DeclID = getOrCreateSourceID(SPDecl->getFile());
> + unsigned DefID = getOrCreateSourceID(SP->getFile());
> if (DeclID != DefID)
> addUInt(SPDie, dwarf::DW_AT_decl_file, None, DefID);
>
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h?rev=322391&r1=322390&r2=322391&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h?rev=322391&r1=322390&r2=322391&view=diff>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h Fri Jan 12 11:17:50 2018
> @@ -207,8 +207,7 @@ public:
> void addBlock(DIE &Die, dwarf::Attribute Attribute, DIEBlock *Block);
>
> /// Add location information to specified debug information entry.
> - void addSourceLine(DIE &Die, unsigned Line, StringRef File,
> - StringRef Directory);
> + void addSourceLine(DIE &Die, unsigned Line, const DIFile *File);
> void addSourceLine(DIE &Die, const DILocalVariable *V);
> void addSourceLine(DIE &Die, const DIGlobalVariable *G);
> void addSourceLine(DIE &Die, const DISubprogram *SP);
> @@ -306,10 +305,13 @@ protected:
> /// Create new static data member DIE.
> DIE *getOrCreateStaticMemberDIE(const DIDerivedType *DT);
>
> - /// Look up the source ID with the given directory and source file names. If
> - /// none currently exists, create a new ID and insert it in the line table.
> - virtual unsigned getOrCreateSourceID(StringRef File, StringRef Directory,
> - MD5::MD5Result *Checksum) = 0;
> + /// Look up the source ID for the given file. If none currently exists,
> + /// create a new ID and insert it in the line table.
> + virtual unsigned getOrCreateSourceID(const DIFile *File) = 0;
> +
> + /// If the \p File has an MD5 checksum, return it as an MD5Result
> + /// allocated in the MCContext.
> + MD5::MD5Result *getMD5AsBytes(const DIFile *File);
>
> /// Look in the DwarfDebug map for the MDNode that corresponds to the
> /// reference.
> @@ -359,8 +361,7 @@ class DwarfTypeUnit final : public Dwarf
> DwarfCompileUnit &CU;
> MCDwarfDwoLineTable *SplitLineTable;
>
> - unsigned getOrCreateSourceID(StringRef File, StringRef Directory,
> - MD5::MD5Result *Checksum) override;
> + unsigned getOrCreateSourceID(const DIFile *File) override;
> bool isDwoUnit() const override;
>
> public:
>
> Modified: llvm/trunk/lib/MC/MCAsmStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmStreamer.cpp?rev=322391&r1=322390&r2=322391&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmStreamer.cpp?rev=322391&r1=322390&r2=322391&view=diff>
> ==============================================================================
> --- llvm/trunk/lib/MC/MCAsmStreamer.cpp (original)
> +++ llvm/trunk/lib/MC/MCAsmStreamer.cpp Fri Jan 12 11:17:50 2018
> @@ -1109,6 +1109,10 @@ unsigned MCAsmStreamer::EmitDwarfFileDir
> OS1 << ' ';
> }
> PrintQuotedString(Filename, OS1);
> + if (Checksum) {
> + OS1 << " md5 ";
> + PrintQuotedString(Checksum->digest(), OS1);
> + }
> if (MCTargetStreamer *TS = getTargetStreamer()) {
> TS->emitDwarfFileDirective(OS1.str());
> } else {
>
> Added: llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll?rev=322391&view=auto <http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll?rev=322391&view=auto>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll (added)
> +++ llvm/trunk/test/CodeGen/Generic/dwarf-md5.ll Fri Jan 12 11:17:50 2018
> @@ -0,0 +1,49 @@
> +; MD5 checksums provided by IR should be passed through to asm.
> +; They'll be emitted to an object file only for DWARF 5 or later.
> +
> +; REQUIRES: object-emission
> +; RUN: %llc_dwarf -dwarf-version 4 -filetype=asm -o - %s | FileCheck %s --check-prefix=ASM
> +; RUN: %llc_dwarf -dwarf-version 5 -filetype=asm -o - %s | FileCheck %s --check-prefix=ASM
> +; RUN: %llc_dwarf -dwarf-version 4 -filetype=obj -o %t4.o %s
> +; RUN: llvm-dwarfdump -debug-line %t4.o | FileCheck %s --check-prefix=OBJ-4
> +; RUN: %llc_dwarf -dwarf-version 5 -filetype=obj -o %t5.o %s
> +; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s --check-prefix=OBJ-5
> +
> +; FIXME: Need to convey the MD5 for the primary source file.
> +; ASM: .file "t.c"{{$}}
> +; ASM: .file 1 "./t1.h" md5 "11111111111111111111111111111111"
> +; ASM: .file 2 "./t2.h" md5 "22222222222222222222222222222222"
> +
> +; OBJ-4: Dir Mod Time File Len File Name
> +; OBJ-4: file_names[ 1] 1 0x00000000 0x00000000 t1.h
> +; OBJ-4: file_names[ 2] 1 0x00000000 0x00000000 t2.h
> +
> +; OBJ-5: Dir MD5 Checksum File Name
> +; OBJ-5: file_names[ 1] 1 11111111111111111111111111111111 t1.h
> +; OBJ-5: file_names[ 2] 1 22222222222222222222222222222222 t2.h
> +
> +; ModuleID = 't.c'
> +source_filename = "t.c"
> +
> + at t1 = global i32 1, align 4, !dbg !0
> + at t2 = global i32 0, align 4, !dbg !6
> +
> +!llvm.dbg.cu = !{!2}
> +!llvm.module.flags = !{!11, !12, !13}
> +!llvm.ident = !{!14}
> +
> +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
> +!1 = distinct !DIGlobalVariable(name: "t1", scope: !2, file: !10, line: 1, type: !9, isLocal: false, isDefinition: true)
> +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 322159)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !5)
> +!3 = !DIFile(filename: "t.c", directory: "/home/probinson/projects/scratch", checksumkind: CSK_MD5, checksum: "00000000000000000000000000000000")
> +!4 = !{}
> +!5 = !{!0, !6}
> +!6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression())
> +!7 = distinct !DIGlobalVariable(name: "t2", scope: !2, file: !8, line: 1, type: !9, isLocal: false, isDefinition: true)
> +!8 = !DIFile(filename: "./t2.h", directory: "/home/probinson/projects/scratch", checksumkind: CSK_MD5, checksum: "22222222222222222222222222222222")
> +!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
> +!10 = !DIFile(filename: "./t1.h", directory: "/home/probinson/projects/scratch", checksumkind: CSK_MD5, checksum: "11111111111111111111111111111111")
> +!11 = !{i32 2, !"Dwarf Version", i32 4}
> +!12 = !{i32 2, !"Debug Info Version", i32 3}
> +!13 = !{i32 1, !"wchar_size", i32 4}
> +!14 = !{!"clang version 7.0.0 (trunk 322159)"}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180112/3dee5974/attachment.html>
More information about the llvm-commits
mailing list