<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Oct 4, 2013 at 12:07 AM, Katya Romanova <span dir="ltr"><<a href="mailto:Katya_Romanova@playstation.sony.com" target="_blank" class="cremed">Katya_Romanova@playstation.sony.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Few more minor corrections are done based on the feedback.<br>
I was wondering what is the common set of options to pass to clang-format for formatting the patch to comply with the Clang/LLVM style?<br></blockquote><div><br></div><div>You basically don't need options. clang-format should already default to LLVM style. You can use cfe/tools/clang-format/clang-format-diff.py (it has usage instructions in comments) to just reformat the changed lines in your patch.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thanks!<br>
<div class="im"><br>
Hi rafael,<br>
<br>
<a href="http://llvm-reviews.chandlerc.com/D1806" target="_blank" class="cremed">http://llvm-reviews.chandlerc.com/D1806</a><br>
<br>
CHANGE SINCE LAST DIFF<br>
</div> <a href="http://llvm-reviews.chandlerc.com/D1806?vs=4643&id=4644#toc" target="_blank" class="cremed">http://llvm-reviews.chandlerc.com/D1806?vs=4643&id=4644#toc</a><br>
<div class="im"><br>
Files:<br>
test/CodeGen/X86/ident-metadata.ll<br>
test/Verifier/ident-meta2.ll<br>
test/Verifier/ident-meta1.ll<br>
test/Verifier/ident-meta3.ll<br>
include/llvm/CodeGen/AsmPrinter.h<br>
lib/CodeGen/AsmPrinter/AsmPrinter.cpp<br>
lib/IR/Verifier.cpp<br>
<br>
Index: test/CodeGen/X86/ident-metadata.ll<br>
===================================================================<br>
--- test/CodeGen/X86/ident-metadata.ll<br>
+++ test/CodeGen/X86/ident-metadata.ll<br>
</div>@@ -0,0 +1,9 @@<br>
<div class="im">+; RUN: llc -march=x86 < %s | FileCheck %s<br>
</div><div class="im">+; Verify that llvm.ident metadata is emitted as .ident<br>
+; directives in assembly files, and in the .comment section in ELF object files.<br>
+<br>
+; CHECK: .ident "clang version x.x"<br>
+; CHECK-NEXT: .ident "something else"<br>
</div><div><div class="h5">+!llvm.ident = !{!0, !1}<br>
+!0 = metadata !{metadata !"clang version x.x"}<br>
+!1 = metadata !{metadata !"something else"}<br>
Index: test/Verifier/ident-meta2.ll<br>
===================================================================<br>
--- test/Verifier/ident-meta2.ll<br>
+++ test/Verifier/ident-meta2.ll<br>
@@ -0,0 +1,13 @@<br>
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s<br>
+; Verify that llvm.ident is properly structured.<br>
+; llvm.ident takes a list of metadata entries.<br>
+; Each metadata entry can contain one string only.<br>
+<br>
+!llvm.ident = !{!0, !1, !2, !3}<br>
+!0 = metadata !{metadata !"str1"}<br>
+!1 = metadata !{metadata !"str2"}<br>
+!2 = metadata !{metadata !"str3"}<br>
+!3 = metadata !{i32 1}<br>
+; CHECK: assembly parsed, but does not verify as correct!<br>
+; CHECK-NEXT: invalid value for llvm.ident metadata entry operand(the operand should be a string)<br>
+; CHECK-NEXT: i32 1<br>
Index: test/Verifier/ident-meta1.ll<br>
===================================================================<br>
--- test/Verifier/ident-meta1.ll<br>
+++ test/Verifier/ident-meta1.ll<br>
@@ -0,0 +1,12 @@<br>
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s<br>
+; Verify that llvm.ident is properly structured.<br>
+; llvm.ident takes a list of metadata entries.<br>
+; Each metadata entry can have only one string.<br>
+<br>
+!llvm.ident = !{!0, !1}<br>
+!0 = metadata !{metadata !"version string"}<br>
+!1 = metadata !{metadata !"string1", metadata !"string2"}<br>
+; CHECK: assembly parsed, but does not verify as correct!<br>
+; CHECK-NEXT: incorrect number of operands in llvm.ident metadata<br>
+; CHECK-NEXT: metadata !1<br>
+<br>
Index: test/Verifier/ident-meta3.ll<br>
===================================================================<br>
--- test/Verifier/ident-meta3.ll<br>
+++ test/Verifier/ident-meta3.ll<br>
@@ -0,0 +1,10 @@<br>
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s<br>
+; Verify that llvm.ident is properly structured.<br>
+; llvm.ident takes a list of metadata entries.<br>
+; Each metadata entry can contain one string only.<br>
+<br>
+!llvm.ident = !{!0}<br>
+!0 = metadata !{metadata !{metadata !"nested metadata"}}<br>
+; CHECK: assembly parsed, but does not verify as correct!<br>
+; CHECK-NEXT: invalid value for llvm.ident metadata entry operand(the operand should be a string)<br>
+; CHECK-NEXT: metadata !1<br>
Index: include/llvm/CodeGen/AsmPrinter.h<br>
===================================================================<br>
--- include/llvm/CodeGen/AsmPrinter.h<br>
+++ include/llvm/CodeGen/AsmPrinter.h<br>
@@ -487,6 +487,8 @@<br>
const MachineBasicBlock *MBB,<br>
unsigned uid) const;<br>
void EmitLLVMUsedList(const ConstantArray *InitList);<br>
+ /// Emit llvm.ident metadata in an '.ident' directive.<br>
+ void EmitModuleIdents(Module &M);<br>
void EmitXXStructorList(const Constant *List, bool isCtor);<br>
GCMetadataPrinter *GetOrCreateGCPrinter(GCStrategy *C);<br>
};<br>
Index: lib/CodeGen/AsmPrinter/AsmPrinter.cpp<br>
===================================================================<br>
--- lib/CodeGen/AsmPrinter/AsmPrinter.cpp<br>
+++ lib/CodeGen/AsmPrinter/AsmPrinter.cpp<br>
@@ -953,6 +953,9 @@<br>
if (GCMetadataPrinter *MP = GetOrCreateGCPrinter(*--I))<br>
MP->finishAssembly(*this);<br>
<br>
+ // Emit llvm.ident metadata in an '.ident' directive.<br>
+ EmitModuleIdents(M);<br>
+<br>
// If we don't have any trampolines, then we don't require stack memory<br>
// to be executable. Some targets have a directive to declare this.<br>
Function *InitTrampolineIntrinsic = M.getFunction("llvm.init.trampoline");<br>
@@ -1332,6 +1335,21 @@<br>
}<br>
}<br>
<br>
+void AsmPrinter::EmitModuleIdents(Module &M) {<br>
+ if (!MAI->hasIdentDirective())<br>
+ return;<br>
+<br>
+ if (const NamedMDNode *NMD = M.getNamedMetadata("llvm.ident")) {<br>
+ for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i) {<br>
+ const MDNode *N = NMD->getOperand(i);<br>
+ assert(N->getNumOperands() == 1 &&<br>
</div></div><div class="im">+ "llvm.ident metadata entry can have only one operand");<br>
</div>+ const MDString *S = cast<MDString>(N->getOperand(0));<br>
<div><div class="h5">+ OutStreamer.EmitIdent(S->getString());<br>
+ }<br>
+ }<br>
+}<br>
+<br>
//===--------------------------------------------------------------------===//<br>
// Emission and print routines<br>
//<br>
Index: lib/IR/Verifier.cpp<br>
===================================================================<br>
--- lib/IR/Verifier.cpp<br>
+++ lib/IR/Verifier.cpp<br>
@@ -216,6 +216,7 @@<br>
visitNamedMDNode(*I);<br>
<br>
visitModuleFlags(M);<br>
+ visitModuleIdents(M);<br>
<br>
// Verify Debug Info.<br>
verifyDebugInfo(M);<br>
@@ -260,6 +261,7 @@<br>
void visitGlobalAlias(GlobalAlias &GA);<br>
void visitNamedMDNode(NamedMDNode &NMD);<br>
void visitMDNode(MDNode &MD, Function *F);<br>
+ void visitModuleIdents(Module &M);<br>
void visitModuleFlags(Module &M);<br>
void visitModuleFlag(MDNode *Op, DenseMap<MDString*, MDNode*> &SeenIDs,<br>
SmallVectorImpl<MDNode*> &Requirements);<br>
</div></div>@@ -614,6 +616,24 @@<br>
}<br>
}<br>
<br>
+void Verifier::visitModuleIdents(Module &M) {<br>
<div class="im HOEnZb">+ const NamedMDNode *Idents = M.getNamedMetadata("llvm.ident");<br>
+ if (!Idents)<br>
</div><div class="HOEnZb"><div class="h5">+ return;<br>
+<br>
+ // llvm.ident takes a list of metadata entry. Each entry has only one string.<br>
+ // Scan each llvm.ident entry and make sure that this requirement is met.<br>
+ for (unsigned i = 0, e = Idents->getNumOperands(); i != e; ++i) {<br>
+ const MDNode *N = Idents->getOperand(i);<br>
+ Assert1(N->getNumOperands() == 1,<br>
+ "incorrect number of operands in llvm.ident metadata", N);<br>
+ Assert1(isa<MDString>(N->getOperand(0)),<br>
+ ("invalid value for llvm.ident metadata entry operand"<br>
+ "(the operand should be a string)"),<br>
+ N->getOperand(0));<br>
+ }<br>
+}<br>
+<br>
void Verifier::visitModuleFlags(Module &M) {<br>
const NamedMDNode *Flags = M.getModuleFlagsMetadata();<br>
if (!Flags) return;<br>
</div></div><br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" class="cremed">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank" class="cremed">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div></div>