summaryrefslogtreecommitdiffstats
path: root/llvm/docs
Commit message (Collapse)AuthorAgeFilesLines
...
* [docs] Add out-of-date warnings to the BuildingAJIT tutorial text.Lang Hames2018-02-063-0/+15
| | | | | | The text will be updated once the ORC API churn dies down. llvm-svn: 324406
* Add release note on change to memcpy/memmove/memset builtin signaturesDaniel Neilson2018-02-051-0/+4
| | | | | | | | | | | Summary: The signatures for the builtins @llvm.memcpy, @llvm.memmove, and @llvm.memset where changed in rL322965. The number of arguments has decreased from five to four with the removal of the alignment argument. Alignment is now conveyed by supplying the align parameter attribute on the destination and/or source of the cpy/move/set. llvm-svn: 324265
* Coding Standards: Document library layering requirements & header isolation.David Blaikie2018-02-011-19/+46
| | | | | | | | | | | | | | | | (I suppose these two pieces could be separated - but seemed related enough) As discussed on llvm-dev, this documents the general expectation of how library layering should be handled. There are a few existing cases where these constraints are not met, but as with most style guide things - this is forward looking and provides guidance when cleaning up existing code, it doesn't immediately require that all previous code be cleaned up to match. (see: naming conventions, etc) Differential Revision: https://reviews.llvm.org/D42771 llvm-svn: 324004
* docs: wordsmith some of the linker option extensionSaleem Abdulrasool2018-01-311-4/+5
| | | | | | | Apply the grammatical improvements suggested by Rafael Avila de Espindola in post-commit review. llvm-svn: 323839
* [AMDGPU] Update relocation documentation and elf flag machine architecture ↵Tony Tye2018-01-301-24/+25
| | | | | | | | numbers Differential Revision: https://reviews.llvm.org/D42714 llvm-svn: 323835
* Rename path libpath in .linker-options.Rui Ueyama2018-01-301-1/+1
| | | | | | | | | | "path" is too generic name for -L or --library-path because a lot of linker options take paths as arguments. This change renames the option to avoid confusion. Differential Revision: https://reviews.llvm.org/D42705 llvm-svn: 323833
* [AMDGPU] Clarify ReqdWorkGroupSize and MaxFlatWorkGroupSize metadataTony Tye2018-01-301-40/+9
| | | | | | | | - If ReqdWorkGroupSize is present it must have all elements >=1. - If MaxFlatWorkGroupSize must be consistent with ReqdWorkGroupSize. - Remove FixedWorkGroupSize as now equivalent to ReqdWorkGroupSize. llvm-svn: 323829
* [dsymutil] Enable -minimize feature.Jonas Devlieghere2018-01-301-0/+7
| | | | | | | | | | | | | Passing -minimize to dsymutil prevents the emission of .debug_inlines, .debug_pubnames, and .debug_pubtypes in favor of the Apple accelerator tables. The actual check in the DWARF linker was added in r323655. This patch simply enables it. Differential revision: https://reviews.llvm.org/D42688 llvm-svn: 323812
* CodeGen: support an extension to pass linker options on ELFSaleem Abdulrasool2018-01-301-0/+38
| | | | | | | | | | | | | | | | | | Introduce an extension to support passing linker options to the linker. These would be ignored by older linkers, but newer linkers which support this feature would be able to process the linker. Emit a special discarded section `.linker-option`. The content of this section is a pair of strings (key, value). The key is a type identifier for the parameter. This allows for an argument free parameter that will be processed by the linker with the value being the parameter. As an example, `lib` identifies a library to be linked against, traditionally the `-l` argument for Unix-based linkers with the parameter being the library name. Thanks to James Henderson, Cary Coutant, Rafael Espinolda, Sean Silva for the valuable discussion on the design of this feature. llvm-svn: 323783
* [NFC] fix trivial typos in comments and documentsHiroshi Inoue2018-01-292-2/+2
| | | | | | "to to" -> "to" llvm-svn: 323628
* [LangRef] Update out-of-date instrprof namesVedant Kumar2018-01-261-15/+15
| | | | llvm-svn: 323575
* [NFC] Remove apostrophe to use 'it' in the possessive form.Matt Davis2018-01-261-1/+1
| | | | | | | | | | Summary: This is a simple change to test commit access with. Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D42586 llvm-svn: 323544
* [NFC] fix trivial typos in comments and documentsHiroshi Inoue2018-01-264-4/+4
| | | | | | "in in" -> "in", "on on" -> "on" etc. llvm-svn: 323508
* Another try to commit 323321 (aggressive instruction combine).Amjad Aboud2018-01-251-0/+15
| | | | llvm-svn: 323416
* Fix up and document controlling ccache via CMake options.Paul Robinson2018-01-241-0/+8
| | | | | | | | Patch by Matthew Davis! Differential Revision: https://reviews.llvm.org/D41757 llvm-svn: 323357
* Reverted 323321.Amjad Aboud2018-01-241-15/+0
| | | | llvm-svn: 323326
* [InstCombine] Introducing Aggressive Instruction Combine pass ↵Amjad Aboud2018-01-241-0/+15
| | | | | | | | | | | | | | | | | | (-aggressive-instcombine). Combine expression patterns to form expressions with fewer, simple instructions. This pass does not modify the CFG. For example, this pass reduce width of expressions post-dominated by TruncInst into smaller width when applicable. It differs from instcombine pass in that it contains pattern optimization that requires higher complexity than the O(1), thus, it should run fewer times than instcombine pass. Differential Revision: https://reviews.llvm.org/D38313 llvm-svn: 323321
* Fixes Sphinx issue ('undefined label') introduced in r323313.Sander de Smalen2018-01-241-3/+7
| | | | | | | (and also slightly reformatted the related lines to look better in the rendered HTML) llvm-svn: 323317
* [Metadata] Extend 'count' field of DISubrange to take a metadata nodeSander de Smalen2018-01-241-0/+16
| | | | | | | | | | | | | | | | | | | | | | | Summary: This patch extends the DISubrange 'count' field to take either a (signed) constant integer value or a reference to a DILocalVariable or DIGlobalVariable. This is patch [1/3] in a series to extend LLVM's DISubrange Metadata node to support debugging of C99 variable length arrays and vectors with runtime length like the Scalable Vector Extension for AArch64. It is also a first step towards representing more complex cases like arrays in Fortran. Reviewers: echristo, pcc, aprantl, dexonsmith, clayborg, kristof.beyls, dblaikie Reviewed By: aprantl Subscribers: rnk, probinson, fhahn, aemerson, rengolin, JDevlieghere, llvm-commits Differential Revision: https://reviews.llvm.org/D41695 llvm-svn: 323313
* [Doc] Guideline on adding exception handling support for a targetDavid Chisnall2018-01-241-0/+63
| | | | | | | | | | | | | | | | | Summary: This is the first attempt to write down a guideline on adding exception handling support for a target. The content basically bases on the discussion on [1]. If you guys know who is exception handling expert, please add him as the reviewer. Thanks. [1] http://lists.llvm.org/pipermail/llvm-dev/2018-January/120405.html Reviewers: t.p.northover, theraven, nemanjai Reviewed By: theraven Subscribers: sdardis, llvm-commits Differential Revision: https://reviews.llvm.org/D42178 llvm-svn: 323311
* docs: Remove reference to a deprecated flagVedant Kumar2018-01-231-9/+0
| | | | llvm-svn: 323254
* Additional fixes for docs in addition to r322968.Daniel Neilson2018-01-191-2/+2
| | | | llvm-svn: 322969
* Fix docs build break caused by r322965Daniel Neilson2018-01-191-1/+1
| | | | llvm-svn: 322968
* Remove alignment argument from memcpy/memmove/memset in favour of alignment ↵Daniel Neilson2018-01-191-28/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | attributes (Step 1) Summary: This is a resurrection of work first proposed and discussed in Aug 2015: http://lists.llvm.org/pipermail/llvm-dev/2015-August/089384.html and initially landed (but then backed out) in Nov 2015: http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20151109/312083.html The @llvm.memcpy/memmove/memset intrinsics currently have an explicit argument which is required to be a constant integer. It represents the alignment of the dest (and source), and so must be the minimum of the actual alignment of the two. This change is the first in a series that allows source and dest to each have their own alignments by using the alignment attribute on their arguments. In this change we: 1) Remove the alignment argument. 2) Add alignment attributes to the source & dest arguments. We, temporarily, require that the alignments for source & dest be equal. For example, code which used to read: call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src, i32 100, i32 4, i1 false) will now read call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %dest, i8* align 4 %src, i32 100, i1 false) Downstream users may have to update their lit tests that check for @llvm.memcpy/memmove/memset call/declaration patterns. The following extended sed script may help with updating the majority of your tests, but it does not catch all possible patterns so some manual checking and updating will be required. s~declare void @llvm\.mem(set|cpy|move)\.p([^(]*)\((.*), i32, i1\)~declare void @llvm.mem\1.p\2(\3, i1)~g s~call void @llvm\.memset\.p([^(]*)i8\(i8([^*]*)\* (.*), i8 (.*), i8 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.memset.p\1i8(i8\2* \3, i8 \4, i8 \5, i1 \6)~g s~call void @llvm\.memset\.p([^(]*)i16\(i8([^*]*)\* (.*), i8 (.*), i16 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.memset.p\1i16(i8\2* \3, i8 \4, i16 \5, i1 \6)~g s~call void @llvm\.memset\.p([^(]*)i32\(i8([^*]*)\* (.*), i8 (.*), i32 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.memset.p\1i32(i8\2* \3, i8 \4, i32 \5, i1 \6)~g s~call void @llvm\.memset\.p([^(]*)i64\(i8([^*]*)\* (.*), i8 (.*), i64 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.memset.p\1i64(i8\2* \3, i8 \4, i64 \5, i1 \6)~g s~call void @llvm\.memset\.p([^(]*)i128\(i8([^*]*)\* (.*), i8 (.*), i128 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.memset.p\1i128(i8\2* \3, i8 \4, i128 \5, i1 \6)~g s~call void @llvm\.memset\.p([^(]*)i8\(i8([^*]*)\* (.*), i8 (.*), i8 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.memset.p\1i8(i8\2* align \6 \3, i8 \4, i8 \5, i1 \7)~g s~call void @llvm\.memset\.p([^(]*)i16\(i8([^*]*)\* (.*), i8 (.*), i16 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.memset.p\1i16(i8\2* align \6 \3, i8 \4, i16 \5, i1 \7)~g s~call void @llvm\.memset\.p([^(]*)i32\(i8([^*]*)\* (.*), i8 (.*), i32 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.memset.p\1i32(i8\2* align \6 \3, i8 \4, i32 \5, i1 \7)~g s~call void @llvm\.memset\.p([^(]*)i64\(i8([^*]*)\* (.*), i8 (.*), i64 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.memset.p\1i64(i8\2* align \6 \3, i8 \4, i64 \5, i1 \7)~g s~call void @llvm\.memset\.p([^(]*)i128\(i8([^*]*)\* (.*), i8 (.*), i128 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.memset.p\1i128(i8\2* align \6 \3, i8 \4, i128 \5, i1 \7)~g s~call void @llvm\.mem(cpy|move)\.p([^(]*)i8\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i8 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i8(i8\3* \4, i8\5* \6, i8 \7, i1 \8)~g s~call void @llvm\.mem(cpy|move)\.p([^(]*)i16\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i16 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i16(i8\3* \4, i8\5* \6, i16 \7, i1 \8)~g s~call void @llvm\.mem(cpy|move)\.p([^(]*)i32\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i32 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i32(i8\3* \4, i8\5* \6, i32 \7, i1 \8)~g s~call void @llvm\.mem(cpy|move)\.p([^(]*)i64\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i64 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i64(i8\3* \4, i8\5* \6, i64 \7, i1 \8)~g s~call void @llvm\.mem(cpy|move)\.p([^(]*)i128\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i128 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i128(i8\3* \4, i8\5* \6, i128 \7, i1 \8)~g s~call void @llvm\.mem(cpy|move)\.p([^(]*)i8\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i8 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.mem\1.p\2i8(i8\3* align \8 \4, i8\5* align \8 \6, i8 \7, i1 \9)~g s~call void @llvm\.mem(cpy|move)\.p([^(]*)i16\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i16 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.mem\1.p\2i16(i8\3* align \8 \4, i8\5* align \8 \6, i16 \7, i1 \9)~g s~call void @llvm\.mem(cpy|move)\.p([^(]*)i32\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i32 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.mem\1.p\2i32(i8\3* align \8 \4, i8\5* align \8 \6, i32 \7, i1 \9)~g s~call void @llvm\.mem(cpy|move)\.p([^(]*)i64\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i64 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.mem\1.p\2i64(i8\3* align \8 \4, i8\5* align \8 \6, i64 \7, i1 \9)~g s~call void @llvm\.mem(cpy|move)\.p([^(]*)i128\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i128 (.*), i32 ([0-9]*), i1 ([^)]*)\)~call void @llvm.mem\1.p\2i128(i8\3* align \8 \4, i8\5* align \8 \6, i128 \7, i1 \9)~g The remaining changes in the series will: Step 2) Expand the IRBuilder API to allow creation of memcpy/memmove with differing source and dest alignments. Step 3) Update Clang to use the new IRBuilder API. Step 4) Update Polly to use the new IRBuilder API. Step 5) Update LLVM passes that create memcpy/memmove calls to use the new IRBuilder API, and those that use use MemIntrinsicInst::[get|set]Alignment() to use getDestAlignment() and getSourceAlignment() instead. Step 6) Remove the single-alignment IRBuilder API for memcpy/memmove, and the MemIntrinsicInst::[get|set]Alignment() methods. Reviewers: pete, hfinkel, lhames, reames, bollu Reviewed By: reames Subscribers: niosHD, reames, jholewinski, qcolombet, jfb, sanjoy, arsenm, dschuff, dylanmckay, mehdi_amini, sdardis, nemanjai, david2050, nhaehnle, javed.absar, sbc100, jgravelle-google, eraman, aheejin, kbarton, JDevlieghere, asb, rbar, johnrusso, simoncook, jordy.potman.lists, apazos, sabuasal, llvm-commits Differential Revision: https://reviews.llvm.org/D41675 llvm-svn: 322965
* [docs] Make ReleaseProcess.rst 80 column. NFCIJoel Jones2018-01-181-59/+80
| | | | llvm-svn: 322849
* [LangRef] Clarify Varargs forwarding for musttail calls.Florian Hahn2018-01-171-3/+5
| | | | | | | | | | | | | This clarification was suggested by @efriedma in D41335, which uses this behavior to inline musttail calls with varargs. Reviewers: hfinkel, efriedma, rnk Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D41861 llvm-svn: 322786
* [MC] Fix -stack-size-section on ARMSean Eveson2018-01-172-2/+2
| | | | | | | | Change symbol values in the stack_size section from being 8 bytes, to being a target dependent size. Differential Revision: https://reviews.llvm.org/D42108 llvm-svn: 322619
* [NFC] fix trivial typos in documentsHiroshi Inoue2018-01-163-4/+4
| | | | | | "the the" -> "the" llvm-svn: 322552
* [docs] Only LLVM IR bitstreams begin with 'BC'Brian Gesiak2018-01-151-8/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The LLVM Bitcode File Format documentation states that all bitstreams begin with the magic number 'BC', and that generic bitstream analyzer tools may check for this number in order to determine whether the stream is a bitstream. However, in practice: * Only LLVM IR bitcode begins with 'BC'. Other bitstreams -- Clang AST files and precompiled headers, Clang serialized diagnostics, Swift modules -- do not start with 'BC'. A tool that actually checked for 'BC' would only be able to recognize LLVM IR. * The `llvm-bcanalyzer`, arguably the most used generic bitstream analyzer tool, does not check for a magic number 'BC' (except to determine whether the file is LLVM IR). Update the bitcode format documentation to make it clear that not all bitstreams begin with 'BC', and that tools should not rely on that particular magic number value. Test Plan: Build the `docs-llvm-html` target and confirm the changes render in a Safari web browser. Reviewers: harlanhaskins, eugenis, mehdi_amini, pcc, angerman Reviewed By: angerman Subscribers: angerman, llvm-commits Differential Revision: https://reviews.llvm.org/D42002 llvm-svn: 322520
* [docs] Fix mention of GCC frontendJan Korous2018-01-151-1/+1
| | | | llvm-svn: 322491
* Update MSF File Documentation.Zachary Turner2018-01-121-12/+70
| | | | | | | | | | This adds some more detail about the PDB container format, specifically surrounding the layout of the Free Page Map. Patch by Colden Cullen Differential Revision: https://reviews.llvm.org/D41825 llvm-svn: 322404
* [docs] Tweak update to Phabricator docs about setting repository for diffs ↵Ben Hamilton2018-01-121-4/+6
| | | | | | | | | | | | | | | | | | uploaded via web Summary: In D41919, I missed that there was a *second* step when uploading diffs via web where the repository should be specified. Reviewers: asb, probinson Reviewed By: asb Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D41956 llvm-svn: 322375
* [docs] Update Phabricator docs about setting repository for diffs uploaded ↵Ben Hamilton2018-01-111-5/+5
| | | | | | | | | | | | | | | | via web Summary: Docs are out of date now that we have separate repositories for LLVM, Clang, etc. Reviewers: asb Reviewed By: asb Differential Revision: https://reviews.llvm.org/D41919 llvm-svn: 322290
* [MIR] Update MIRLangRef with documentation on bundled instructionsFrancis Visoiu Mistrih2018-01-101-1/+15
| | | | | | Differential Revision: https://reviews.llvm.org/D41872 llvm-svn: 322198
* [WebAssembly] Add COMDAT supportSam Clegg2018-01-091-2/+2
| | | | | | | | | | | | | | This adds COMDAT support to the Wasm object-file format. Spec: https://github.com/WebAssembly/tool-conventions/pull/31 Corresponding LLD change: https://bugs.llvm.org/show_bug.cgi?id=35533, and D40845 Patch by Nicholas Wilson Differential Revision: https://reviews.llvm.org/D40844 llvm-svn: 322135
* [MIR] Add support for the frame-destroy MachineInstr flagFrancis Visoiu Mistrih2018-01-091-1/+6
| | | | | | | | | We are printing / parsing the `frame-setup` MachineInstr flag but not the `frame-destroy` one. Differential Revision: https://reviews.llvm.org/D41509 llvm-svn: 322071
* remove unreferenced footnotesTim Hammerquist2018-01-051-1/+1
| | | | llvm-svn: 321840
* fix invalid footnote syntaxTim Hammerquist2018-01-051-3/+0
| | | | llvm-svn: 321839
* [llvm-cov] Refactor "export" command implementation and add support for SOURCES.Max Moroz2018-01-041-2/+3
| | | | | | | | | | | | | | Summary: Define an interface for Exporter + split JSON exporter into .h and .cpp. Reviewers: vsk, morehouse Reviewed By: vsk Subscribers: llvm-commits, Dor1s, kcc Differential Revision: https://reviews.llvm.org/D41600 llvm-svn: 321815
* [docs] Update Scudo documentationKostya Kortchinsky2018-01-041-9/+30
| | | | | | | | | | | | | | | | | | | Summary: The documentation has fallen a bit behind, update it with the latest evolution of the allocator: - clarify a couple of expectations regarding what is meant to be achieved; - update the header format; - document `-fsanitize=scudo`. Reviewers: alekseyshl, flowerhack Reviewed By: alekseyshl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D41670 llvm-svn: 321811
* [Docs] Add Contributing page.Florian Hahn2018-01-043-0/+130
| | | | | | | | | | | | | | | | | | | | | | This new page acts as an entry point for (new) contributors to LLVM and provides information about * What to contribute * How to submit a patch * Where to start to learn more about LLVM's architecture and internals. This version of the page duplicates some information from the DeveloperPolicy and Phabricator pages. Subsequent changes should work towards moving information for new developers to this page, where it makes sense. Reviewers: reames, probinson, kristof.beyls, silvas, rengolin, asb Reviewed By: silvas Differential Revision: https://reviews.llvm.org/D41665 llvm-svn: 321804
* Clear release notes for 7.0.0Hans Wennborg2018-01-031-18/+4
| | | | llvm-svn: 321727
* The trunk version is now 7.0.0svnHans Wennborg2018-01-031-2/+2
| | | | llvm-svn: 321712
* [docs] Use dbgs() instead of errs() for DEBUG()Jonas Devlieghere2017-12-251-5/+5
| | | | | | | | | | | | The examples in llvm/Support/Debug.h use `DEBUG(dbgs() << ...)` instead of `errs()`, so the examples in the Programmer's Manual should match that. Patch by: Moritz Sichert <moritz.sichert@googlemail.com> Differential revision: https://reviews.llvm.org/D41170 llvm-svn: 321444
* PR35705: Fix Chapter 9 example code for API changes to DIBuilderDavid Blaikie2017-12-201-2/+3
| | | | llvm-svn: 321214
* [AArch64] Implement stack probing for windowsMartin Storsjo2017-12-201-0/+28
| | | | | | Differential Revision: https://reviews.llvm.org/D41131 llvm-svn: 321150
* [CodeGen] Move printing MO_IntrinsicID operands to MachineOperand::printFrancis Visoiu Mistrih2017-12-191-0/+12
| | | | | | | Work towards the unification of MIR and debug output by refactoring the interfaces. llvm-svn: 321112
* [CodeGen] Move printing MO_IntrinsicID operands to MachineOperand::printFrancis Visoiu Mistrih2017-12-191-0/+11
| | | | | | | | | | Work towards the unification of MIR and debug output by refactoring the interfaces. Also add support for printing with a null TargetIntrinsicInfo and no MachineFunction. llvm-svn: 321111
* [CodeGen] Move printing MO_CFIIndex operands to MachineOperand::printFrancis Visoiu Mistrih2017-12-191-1/+21
| | | | | | | | | | Work towards the unification of MIR and debug output by refactoring the interfaces. Before this patch we printed "<call frame instruction>" in the debug output. llvm-svn: 321084
* [YAML] Add support for non-printable charactersFrancis Visoiu Mistrih2017-12-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | LLVM IR function names which disable mangling start with '\01' (https://www.llvm.org/docs/LangRef.html#identifiers). When an identifier like "\01@abc@" gets dumped to MIR, it is quoted, but only with single quotes. http://www.yaml.org/spec/1.2/spec.html#id2770814: "The allowed character range explicitly excludes the C0 control block allowed), the surrogate block #xD800-#xDFFF, #xFFFE, and #xFFFF." http://www.yaml.org/spec/1.2/spec.html#id2776092: "All non-printable characters must be escaped. [...] Note that escape sequences are only interpreted in double-quoted scalars." This patch adds support for printing escaped non-printable characters between double quotes if needed. Should also fix PR31743. Differential Revision: https://reviews.llvm.org/D41290 llvm-svn: 320996
OpenPOWER on IntegriCloud