[llvm] r317135 - [LLVM-C] Expose functions to create debug locations via DIBuilder.
Harlan Haskins via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 2 13:26:39 PDT 2017
Seems like the module map just uses “.” for the umbrella directory. Not sure why this isn’t automatically inferred as part of the module…
— Harlan
> On Nov 2, 2017, at 4:21 PM, Adrian Prantl <aprantl at apple.com> wrote:
>
> +Harlan
>
>> On Nov 2, 2017, at 1:20 PM, Adrian Prantl <aprantl at apple.com> wrote:
>>
>> It looks like this commit forgot to update the module map / or the umbrella header:
>>
>> /Data/llvm/lib/IR/DebugInfo.cpp:15:2: warning: missing submodule 'LLVM_C.DebugInfo' [-Wincomplete-umbrella]
>>
>> -- adrian
>>
>>> On Nov 1, 2017, at 3:18 PM, whitequark via llvm-commits <llvm-commits at lists.llvm.org> wrote:
>>>
>>> Author: whitequark
>>> Date: Wed Nov 1 15:18:52 2017
>>> New Revision: 317135
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=317135&view=rev
>>> Log:
>>> [LLVM-C] Expose functions to create debug locations via DIBuilder.
>>>
>>> These include:
>>> * Several functions for creating an LLVMDIBuilder,
>>> * LLVMDIBuilderCreateCompileUnit,
>>> * LLVMDIBuilderCreateFile,
>>> * LLVMDIBuilderCreateDebugLocation.
>>>
>>> Patch by Harlan Haskins.
>>>
>>> Differential Revision: https://reviews.llvm.org/D32368
>>>
>>> Added:
>>> llvm/trunk/include/llvm-c/DebugInfo.h
>>> llvm/trunk/test/Bindings/llvm-c/debug_info.ll
>>> llvm/trunk/tools/llvm-c-test/debuginfo.c
>>> Modified:
>>> llvm/trunk/lib/IR/DebugInfo.cpp
>>> llvm/trunk/tools/llvm-c-test/CMakeLists.txt
>>> llvm/trunk/tools/llvm-c-test/llvm-c-test.h
>>> llvm/trunk/tools/llvm-c-test/main.c
>>>
>>> Added: llvm/trunk/include/llvm-c/DebugInfo.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/DebugInfo.h?rev=317135&view=auto
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm-c/DebugInfo.h (added)
>>> +++ llvm/trunk/include/llvm-c/DebugInfo.h Wed Nov 1 15:18:52 2017
>>> @@ -0,0 +1,202 @@
>>> +//===------------ DebugInfo.h - LLVM C API Debug Info API -----------------===//
>>> +//
>>> +// The LLVM Compiler Infrastructure
>>> +//
>>> +// This file is distributed under the University of Illinois Open Source
>>> +// License. See LICENSE.TXT for details.
>>> +//
>>> +//===----------------------------------------------------------------------===//
>>> +///
>>> +/// This file declares the C API endpoints for generating DWARF Debug Info
>>> +///
>>> +/// Note: This interface is experimental. It is *NOT* stable, and may be
>>> +/// changed without warning.
>>> +///
>>> +//===----------------------------------------------------------------------===//
>>> +
>>> +#include "llvm-c/Core.h"
>>> +
>>> +#ifdef __cplusplus
>>> +extern "C" {
>>> +#endif
>>> +
>>> +/// Debug info flags.
>>> +typedef enum {
>>> + LLVMDIFlagZero = 0,
>>> + LLVMDIFlagPrivate = 1,
>>> + LLVMDIFlagProtected = 2,
>>> + LLVMDIFlagPublic = 3,
>>> + LLVMDIFlagFwdDecl = 1 << 2,
>>> + LLVMDIFlagAppleBlock = 1 << 3,
>>> + LLVMDIFlagBlockByrefStruct = 1 << 4,
>>> + LLVMDIFlagVirtual = 1 << 5,
>>> + LLVMDIFlagArtificial = 1 << 6,
>>> + LLVMDIFlagExplicit = 1 << 7,
>>> + LLVMDIFlagPrototyped = 1 << 8,
>>> + LLVMDIFlagObjcClassComplete = 1 << 9,
>>> + LLVMDIFlagObjectPointer = 1 << 10,
>>> + LLVMDIFlagVector = 1 << 11,
>>> + LLVMDIFlagStaticMember = 1 << 12,
>>> + LLVMDIFlagLValueReference = 1 << 13,
>>> + LLVMDIFlagRValueReference = 1 << 14,
>>> + LLVMDIFlagReserved = 1 << 15,
>>> + LLVMDIFlagSingleInheritance = 1 << 16,
>>> + LLVMDIFlagMultipleInheritance = 2 << 16,
>>> + LLVMDIFlagVirtualInheritance = 3 << 16,
>>> + LLVMDIFlagIntroducedVirtual = 1 << 18,
>>> + LLVMDIFlagBitField = 1 << 19,
>>> + LLVMDIFlagNoReturn = 1 << 20,
>>> + LLVMDIFlagMainSubprogram = 1 << 21,
>>> + LLVMDIFlagIndirectVirtualBase = (1 << 2) | (1 << 5),
>>> + LLVMDIFlagAccessibility = LLVMDIFlagPrivate | LLVMDIFlagProtected |
>>> + LLVMDIFlagPublic,
>>> + LLVMDIFlagPtrToMemberRep = LLVMDIFlagSingleInheritance |
>>> + LLVMDIFlagMultipleInheritance |
>>> + LLVMDIFlagVirtualInheritance
>>> +} LLVMDIFlags;
>>> +
>>> +/// Source languages known by DWARF.
>>> +typedef enum {
>>> + LLVMDWARFSourceLanguageC89,
>>> + LLVMDWARFSourceLanguageC,
>>> + LLVMDWARFSourceLanguageAda83,
>>> + LLVMDWARFSourceLanguageC_plus_plus,
>>> + LLVMDWARFSourceLanguageCobol74,
>>> + LLVMDWARFSourceLanguageCobol85,
>>> + LLVMDWARFSourceLanguageFortran77,
>>> + LLVMDWARFSourceLanguageFortran90,
>>> + LLVMDWARFSourceLanguagePascal83,
>>> + LLVMDWARFSourceLanguageModula2,
>>> + // New in DWARF v3:
>>> + LLVMDWARFSourceLanguageJava,
>>> + LLVMDWARFSourceLanguageC99,
>>> + LLVMDWARFSourceLanguageAda95,
>>> + LLVMDWARFSourceLanguageFortran95,
>>> + LLVMDWARFSourceLanguagePLI,
>>> + LLVMDWARFSourceLanguageObjC,
>>> + LLVMDWARFSourceLanguageObjC_plus_plus,
>>> + LLVMDWARFSourceLanguageUPC,
>>> + LLVMDWARFSourceLanguageD,
>>> + // New in DWARF v4:
>>> + LLVMDWARFSourceLanguagePython,
>>> + // New in DWARF v5:
>>> + LLVMDWARFSourceLanguageOpenCL,
>>> + LLVMDWARFSourceLanguageGo,
>>> + LLVMDWARFSourceLanguageModula3,
>>> + LLVMDWARFSourceLanguageHaskell,
>>> + LLVMDWARFSourceLanguageC_plus_plus_03,
>>> + LLVMDWARFSourceLanguageC_plus_plus_11,
>>> + LLVMDWARFSourceLanguageOCaml,
>>> + LLVMDWARFSourceLanguageRust,
>>> + LLVMDWARFSourceLanguageC11,
>>> + LLVMDWARFSourceLanguageSwift,
>>> + LLVMDWARFSourceLanguageJulia,
>>> + LLVMDWARFSourceLanguageDylan,
>>> + LLVMDWARFSourceLanguageC_plus_plus_14,
>>> + LLVMDWARFSourceLanguageFortran03,
>>> + LLVMDWARFSourceLanguageFortran08,
>>> + LLVMDWARFSourceLanguageRenderScript,
>>> + LLVMDWARFSourceLanguageBLISS,
>>> + // Vendor extensions:
>>> + LLVMDWARFSourceLanguageMips_Assembler,
>>> + LLVMDWARFSourceLanguageGOOGLE_RenderScript,
>>> + LLVMDWARFSourceLanguageBORLAND_Delphi
>>> +} LLVMDWARFSourceLanguage;
>>> +
>>> +/// The amount of debug information to emit.
>>> +typedef enum {
>>> + LLVMDWARFEmissionNone = 0,
>>> + LLVMDWARFEmissionFull,
>>> + LLVMDWARFEmissionLineTablesOnly
>>> +} LLVMDWARFEmissionKind;
>>> +
>>> +/// The current debug metadata version number.
>>> +unsigned LLVMDebugMetadataVersion(void);
>>> +
>>> +/// The version of debug metadata that's present in the provided \c Module.
>>> +unsigned LLVMGetModuleDebugMetadataVersion(LLVMModuleRef Module);
>>> +
>>> +/// Strip debug info in the module if it exists.
>>> +///
>>> +/// To do this, we remove all calls to the debugger intrinsics and any named
>>> +/// metadata for debugging. We also remove debug locations for instructions.
>>> +/// Return true if module is modified.
>>> +LLVMBool LLVMStripModuleDebugInfo(LLVMModuleRef Module);
>>> +
>>> +/// Construct a builder for a module, and do not allow for unresolved nodes
>>> +/// attached to the module.
>>> +LLVMDIBuilderRef LLVMCreateDIBuilderDisallowUnresolved(LLVMModuleRef M);
>>> +
>>> +/// Construct a builder for a module and collect unresolved nodes attached
>>> +/// to the module in order to resolve cycles during a call to
>>> +/// \c LLVMDIBuilderFinalize.
>>> +LLVMDIBuilderRef LLVMCreateDIBuilder(LLVMModuleRef M);
>>> +
>>> +/// Deallocates the DIBuilder and everything it owns.
>>> +/// @note You must call \c LLVMDIBuilderFinalize before this
>>> +void LLVMDisposeDIBuilder(LLVMDIBuilderRef Builder);
>>> +
>>> +/// Construct any deferred debug info descriptors.
>>> +void LLVMDIBuilderFinalize(LLVMDIBuilderRef Builder);
>>> +
>>> +/// A CompileUnit provides an anchor for all debugging
>>> +/// information generated during this instance of compilation.
>>> +/// \param Lang Source programming language, eg.
>>> +/// \c LLVMDWARFSourceLanguageC99
>>> +/// \param File File info.
>>> +/// \param Producer Identify the producer of debugging information
>>> +/// and code. Usually this is a compiler
>>> +/// version string.
>>> +/// \param ProducerLen The length of the C string passed to \c Producer.
>>> +/// \param isOptimized A boolean flag which indicates whether optimization
>>> +/// is enabled or not.
>>> +/// \param Flags This string lists command line options. This
>>> +/// string is directly embedded in debug info
>>> +/// output which may be used by a tool
>>> +/// analyzing generated debugging information.
>>> +/// \param FlagsLen The length of the C string passed to \c Flags.
>>> +/// \param RuntimeVer This indicates runtime version for languages like
>>> +/// Objective-C.
>>> +/// \param SplitName The name of the file that we'll split debug info
>>> +/// out into.
>>> +/// \param SplitNameLen The length of the C string passed to \c SplitName.
>>> +/// \param Kind The kind of debug information to generate.
>>> +/// \param DWOId The DWOId if this is a split skeleton compile unit.
>>> +/// \param SplitDebugInlining Whether to emit inline debug info.
>>> +/// \param DebugInfoForProfiling Whether to emit extra debug info for
>>> +/// profile collection.
>>> +LLVMMetadataRef LLVMDIBuilderCreateCompileUnit(
>>> + LLVMDIBuilderRef Builder, LLVMDWARFSourceLanguage Lang,
>>> + LLVMMetadataRef FileRef, const char *Producer, size_t ProducerLen,
>>> + LLVMBool isOptimized, const char *Flags, size_t FlagsLen,
>>> + unsigned RuntimeVer, const char *SplitName, size_t SplitNameLen,
>>> + LLVMDWARFEmissionKind Kind, unsigned DWOId, LLVMBool SplitDebugInlining,
>>> + LLVMBool DebugInfoForProfiling);
>>> +
>>> +/// Create a file descriptor to hold debugging information for a file.
>>> +/// \param Builder The DIBuilder.
>>> +/// \param Filename File name.
>>> +/// \param FilenameLen The length of the C string passed to \c Filename.
>>> +/// \param Directory Directory.
>>> +/// \param DirectoryLen The length of the C string passed to \c Directory.
>>> +LLVMMetadataRef
>>> +LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const char *Filename,
>>> + size_t FilenameLen, const char *Directory,
>>> + size_t DirectoryLen);
>>> +
>>> +/// Creates a new DebugLocation that describes a source location.
>>> +/// \param Line The line in the source file.
>>> +/// \param Column The column in the source file.
>>> +/// \param Scope The scope in which the location resides.
>>> +/// \param InlinedAt The scope where this location was inlined, if at all.
>>> +/// (optional).
>>> +/// \note If the item to which this location is attached cannot be
>>> +/// attributed to a source line, pass 0 for the line and column.
>>> +LLVMMetadataRef
>>> +LLVMDIBuilderCreateDebugLocation(LLVMContextRef Ctx, unsigned Line,
>>> + unsigned Column, LLVMMetadataRef Scope,
>>> + LLVMMetadataRef InlinedAt);
>>> +
>>> +#ifdef __cplusplus
>>> +} // end extern "C"
>>> +#endif
>>>
>>> Modified: llvm/trunk/lib/IR/DebugInfo.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=317135&r1=317134&r2=317135&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/lib/IR/DebugInfo.cpp (original)
>>> +++ llvm/trunk/lib/IR/DebugInfo.cpp Wed Nov 1 15:18:52 2017
>>> @@ -12,10 +12,12 @@
>>> //
>>> //===----------------------------------------------------------------------===//
>>>
>>> -#include "llvm/IR/DebugInfo.h"
>>> +#include "llvm-c/DebugInfo.h"
>>> +#include "LLVMContextImpl.h"
>>> #include "llvm/ADT/DenseMap.h"
>>> #include "llvm/ADT/DenseSet.h"
>>> #include "llvm/ADT/None.h"
>>> +#include "llvm/ADT/STLExtras.h"
>>> #include "llvm/ADT/SmallPtrSet.h"
>>> #include "llvm/ADT/SmallVector.h"
>>> #include "llvm/ADT/StringRef.h"
>>> @@ -23,6 +25,8 @@
>>> #include "llvm/IR/Constants.h"
>>> #include "llvm/IR/DebugInfoMetadata.h"
>>> #include "llvm/IR/DebugLoc.h"
>>> +#include "llvm/IR/DebugInfo.h"
>>> +#include "llvm/IR/DIBuilder.h"
>>> #include "llvm/IR/Function.h"
>>> #include "llvm/IR/GVMaterializer.h"
>>> #include "llvm/IR/Instruction.h"
>>> @@ -692,3 +696,79 @@ void Instruction::applyMergedLocation(co
>>> setDebugLoc(DILocation::get(
>>> Result->getContext(), 0, 0, Result->getScope(), Result->getInlinedAt()));
>>> }
>>> +
>>> +//===----------------------------------------------------------------------===//
>>> +// LLVM C API implementations.
>>> +//===----------------------------------------------------------------------===//
>>> +
>>> +static unsigned map_from_llvmDWARFsourcelanguage(LLVMDWARFSourceLanguage lang) {
>>> + switch (lang) {
>>> +#define HANDLE_DW_LANG(ID, NAME, VERSION, VENDOR) \
>>> +case LLVMDWARFSourceLanguage##NAME: return ID;
>>> +#include "llvm/BinaryFormat/Dwarf.def"
>>> +#undef HANDLE_DW_LANG
>>> + }
>>> + llvm_unreachable("Unhandled Tag");
>>> +}
>>> +
>>> +unsigned LLVMDebugMetadataVersion() {
>>> + return DEBUG_METADATA_VERSION;
>>> +}
>>> +
>>> +LLVMDIBuilderRef LLVMCreateDIBuilderDisallowUnresolved(LLVMModuleRef M) {
>>> + return wrap(new DIBuilder(*unwrap(M), false));
>>> +}
>>> +
>>> +LLVMDIBuilderRef LLVMCreateDIBuilder(LLVMModuleRef M) {
>>> + return wrap(new DIBuilder(*unwrap(M)));
>>> +}
>>> +
>>> +unsigned LLVMGetModuleDebugMetadataVersion(LLVMModuleRef M) {
>>> + return getDebugMetadataVersionFromModule(*unwrap(M));
>>> +}
>>> +
>>> +LLVMBool LLVMStripModuleDebugInfo(LLVMModuleRef M) {
>>> + return StripDebugInfo(*unwrap(M));
>>> +}
>>> +
>>> +void LLVMDisposeDIBuilder(LLVMDIBuilderRef Builder) {
>>> + delete unwrap(Builder);
>>> +}
>>> +
>>> +void LLVMDIBuilderFinalize(LLVMDIBuilderRef Builder) {
>>> + unwrap(Builder)->finalize();
>>> +}
>>> +
>>> +LLVMMetadataRef LLVMDIBuilderCreateCompileUnit(
>>> + LLVMDIBuilderRef Builder, LLVMDWARFSourceLanguage Lang,
>>> + LLVMMetadataRef FileRef, const char *Producer, size_t ProducerLen,
>>> + LLVMBool isOptimized, const char *Flags, size_t FlagsLen,
>>> + unsigned RuntimeVer, const char *SplitName, size_t SplitNameLen,
>>> + LLVMDWARFEmissionKind Kind, unsigned DWOId, LLVMBool SplitDebugInlining,
>>> + LLVMBool DebugInfoForProfiling) {
>>> + auto File = unwrap<DIFile>(FileRef);
>>> +
>>> + return wrap(unwrap(Builder)->createCompileUnit(
>>> + map_from_llvmDWARFsourcelanguage(Lang), File,
>>> + StringRef(Producer, ProducerLen), isOptimized,
>>> + StringRef(Flags, FlagsLen), RuntimeVer,
>>> + StringRef(SplitName, SplitNameLen),
>>> + static_cast<DICompileUnit::DebugEmissionKind>(Kind), DWOId,
>>> + SplitDebugInlining, DebugInfoForProfiling));
>>> +}
>>> +
>>> +LLVMMetadataRef
>>> +LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const char *Filename,
>>> + size_t FilenameLen, const char *Directory,
>>> + size_t DirectoryLen) {
>>> + return wrap(unwrap(Builder)->createFile(StringRef(Filename, FilenameLen),
>>> + StringRef(Directory, DirectoryLen)));
>>> +}
>>> +
>>> +LLVMMetadataRef
>>> +LLVMDIBuilderCreateDebugLocation(LLVMContextRef Ctx, unsigned Line,
>>> + unsigned Column, LLVMMetadataRef Scope,
>>> + LLVMMetadataRef InlinedAt) {
>>> + return wrap(DILocation::get(*unwrap(Ctx), Line, Column, unwrap(Scope),
>>> + unwrap(InlinedAt)));
>>> +}
>>>
>>> Added: llvm/trunk/test/Bindings/llvm-c/debug_info.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bindings/llvm-c/debug_info.ll?rev=317135&view=auto
>>> ==============================================================================
>>> --- llvm/trunk/test/Bindings/llvm-c/debug_info.ll (added)
>>> +++ llvm/trunk/test/Bindings/llvm-c/debug_info.ll Wed Nov 1 15:18:52 2017
>>> @@ -0,0 +1,8 @@
>>> +; RUN: llvm-c-test --test-dibuilder | FileCheck %s
>>> +
>>> +; CHECK: ; ModuleID = 'debuginfo.c'
>>> +; CHECK-NEXT: source_filename = "debuginfo.c"
>>> +
>>> +; CHECK: !llvm.dbg.cu = !{!0}
>>> +; CHECK: !0 = distinct !DICompileUnit(language: DW_LANG_C, file: !1, producer: "llvm-c-test", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false)
>>> +; CHECK-NEXT: !1 = !DIFile(filename: "debuginfo.c\00", directory: ".")
>>>
>>> Modified: llvm/trunk/tools/llvm-c-test/CMakeLists.txt
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-c-test/CMakeLists.txt?rev=317135&r1=317134&r2=317135&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/tools/llvm-c-test/CMakeLists.txt (original)
>>> +++ llvm/trunk/tools/llvm-c-test/CMakeLists.txt Wed Nov 1 15:18:52 2017
>>> @@ -38,6 +38,7 @@ endif ()
>>> add_llvm_tool(llvm-c-test
>>> attributes.c
>>> calc.c
>>> + debuginfo.c
>>> diagnostic.c
>>> disassemble.c
>>> echo.cpp
>>>
>>> Added: llvm/trunk/tools/llvm-c-test/debuginfo.c
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-c-test/debuginfo.c?rev=317135&view=auto
>>> ==============================================================================
>>> --- llvm/trunk/tools/llvm-c-test/debuginfo.c (added)
>>> +++ llvm/trunk/tools/llvm-c-test/debuginfo.c Wed Nov 1 15:18:52 2017
>>> @@ -0,0 +1,38 @@
>>> +/*===-- debuginfo.c - tool for testing libLLVM and llvm-c API -------------===*\
>>> +|* *|
>>> +|* The LLVM Compiler Infrastructure *|
>>> +|* *|
>>> +|* This file is distributed under the University of Illinois Open Source *|
>>> +|* License. See LICENSE.TXT for details. *|
>>> +|* *|
>>> +|*===----------------------------------------------------------------------===*|
>>> +|* *|
>>> +|* Tests for the LLVM C DebugInfo API *|
>>> +|* *|
>>> +\*===----------------------------------------------------------------------===*/
>>> +
>>> +#include "llvm-c-test.h"
>>> +#include "llvm-c/DebugInfo.h"
>>> +#include <string.h>
>>> +#include <stdio.h>
>>> +
>>> +int llvm_test_dibuilder() {
>>> + LLVMModuleRef M = LLVMModuleCreateWithName("debuginfo.c");
>>> + LLVMDIBuilderRef DIB = LLVMCreateDIBuilder(M);
>>> +
>>> + LLVMMetadataRef File = LLVMDIBuilderCreateFile(DIB, "debuginfo.c", 12,
>>> + ".", 1);
>>> +
>>> + LLVMDIBuilderCreateCompileUnit(DIB,
>>> + LLVMDWARFSourceLanguageC, File,"llvm-c-test", 11, 0, NULL, 0, 0,
>>> + NULL, 0, LLVMDWARFEmissionFull, 0, 0, 0);
>>> +
>>> + char *MStr = LLVMPrintModuleToString(M);
>>> + puts(MStr);
>>> + LLVMDisposeMessage(MStr);
>>> +
>>> + LLVMDisposeDIBuilder(DIB);
>>> + LLVMDisposeModule(M);
>>> +
>>> + return 0;
>>> +}
>>>
>>> Modified: llvm/trunk/tools/llvm-c-test/llvm-c-test.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-c-test/llvm-c-test.h?rev=317135&r1=317134&r2=317135&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/tools/llvm-c-test/llvm-c-test.h (original)
>>> +++ llvm/trunk/tools/llvm-c-test/llvm-c-test.h Wed Nov 1 15:18:52 2017
>>> @@ -35,6 +35,9 @@ int llvm_calc(void);
>>> // disassemble.c
>>> int llvm_disassemble(void);
>>>
>>> +// debuginfo.c
>>> +int llvm_test_dibuilder(void);
>>> +
>>> // metadata.c
>>> int llvm_add_named_metadata_operand(void);
>>> int llvm_set_metadata(void);
>>>
>>> Modified: llvm/trunk/tools/llvm-c-test/main.c
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-c-test/main.c?rev=317135&r1=317134&r2=317135&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/tools/llvm-c-test/main.c (original)
>>> +++ llvm/trunk/tools/llvm-c-test/main.c Wed Nov 1 15:18:52 2017
>>> @@ -55,6 +55,9 @@ static void print_usage(void) {
>>> fprintf(stderr, " * --test-diagnostic-handler\n");
>>> fprintf(stderr,
>>> " Read bitcode file form stdin with a diagnostic handler set\n\n");
>>> + fprintf(stderr, " * --test-dibuilder\n");
>>> + fprintf(stderr,
>>> + " Run tests for the DIBuilder C API - print generated module\n\n");
>>> }
>>>
>>> int main(int argc, char **argv) {
>>> @@ -96,6 +99,8 @@ int main(int argc, char **argv) {
>>> return llvm_echo();
>>> } else if (argc == 2 && !strcmp(argv[1], "--test-diagnostic-handler")) {
>>> return llvm_test_diagnostic_handler();
>>> + } else if (argc == 2 && !strcmp(argv[1], "--test-dibuilder")) {
>>> + return llvm_test_dibuilder();
>>> } else {
>>> print_usage();
>>> }
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
More information about the llvm-commits
mailing list