<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Yes, I am looking into it.<div><br></div><div>The strange thing here is that it looks like the option does not parse correctly for ARM:</div><div><pre style="font-family: 'Courier New', courier, monotype, monospace; font-size: medium;"><span class="stdout">llc: for the -warn-stack-size option: Cannot find option named '80'!</span></pre><div>Whereas it works perfectly for X86.</div></div><div><br></div><div>Any ideas?</div><div><br></div><div><div apple-content-edited="true">
<div style="color: rgb(0, 0, 0); font-family: Helvetica;  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">-Quentin</div>

</div>
<br><div><div>On Jun 7, 2013, at 2:58 PM, Rafael Espíndola <<a href="mailto:rafael.espindola@gmail.com">rafael.espindola@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">looks like this is failing on some bots:<br><br><a href="http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-debian-fast">http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-debian-fast</a><br><br>On 7 June 2013 16:18, Quentin Colombet <<a href="mailto:qcolombet@apple.com">qcolombet@apple.com</a>> wrote:<br><blockquote type="cite">Author: qcolombet<br>Date: Fri Jun  7 15:18:12 2013<br>New Revision: 183552<br><br>URL: <a href="http://llvm.org/viewvc/llvm-project?rev=183552&view=rev">http://llvm.org/viewvc/llvm-project?rev=183552&view=rev</a><br>Log:<br>Add a backend option to warn on a given stack size limit.<br>Option: -mllvm -warn-stack-size=<limit><br>Output (if limit is exceeded):<br>warning: Stack size limit exceeded (<actual size>) in <functionName>.<br><br>The longer term plan is to hook that to a clang warning.<br>PR:4072<br><<a href="rdar://problem/13987214">rdar://problem/13987214</a>><br><br>Added:<br>   llvm/trunk/test/CodeGen/ARM/warn-stack.ll<br>   llvm/trunk/test/CodeGen/X86/warn-stack.ll<br>Modified:<br>   llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp<br><br>Modified: llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp?rev=183552&r1=183551&r2=183552&view=diff">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp?rev=183552&r1=183551&r2=183552&view=diff</a><br>==============================================================================<br>--- llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp (original)<br>+++ llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp Fri Jun  7 15:18:12 2013<br>@@ -35,6 +35,7 @@<br>#include "llvm/Support/CommandLine.h"<br>#include "llvm/Support/Compiler.h"<br>#include "llvm/Support/Debug.h"<br>+#include "llvm/Support/raw_ostream.h"<br>#include "llvm/Target/TargetFrameLowering.h"<br>#include "llvm/Target/TargetInstrInfo.h"<br>#include "llvm/Target/TargetMachine.h"<br>@@ -46,6 +47,11 @@ using namespace llvm;<br>char PEI::ID = 0;<br>char &llvm::PrologEpilogCodeInserterID = PEI::ID;<br><br>+static cl::opt<uint64_t><br>+WarnStackSize("warn-stack-size", cl::Hidden,<br>+              cl::desc("Warn for stack size bigger than the given"<br>+                       " number"));<br>+<br>INITIALIZE_PASS_BEGIN(PEI, "prologepilog",<br>                "Prologue/Epilogue Insertion", false, false)<br>INITIALIZE_PASS_DEPENDENCY(MachineLoopInfo)<br>@@ -128,6 +134,13 @@ bool PEI::runOnMachineFunction(MachineFu<br>  // Clear any vregs created by virtual scavenging.<br>  Fn.getRegInfo().clearVirtRegs();<br><br>+  // Warn on stack size when we exceeds the given limit.<br>+  MachineFrameInfo *MFI = Fn.getFrameInfo();<br>+  if (WarnStackSize.getNumOccurrences() > 0 &&<br>+      WarnStackSize < MFI->getStackSize())<br>+    errs() << "warning: Stack size limit exceeded (" << MFI->getStackSize()<br>+           << ") in " << Fn.getName()  << ".\n";<br>+<br>  delete RS;<br>  clearAllSets();<br>  return true;<br><br>Added: llvm/trunk/test/CodeGen/ARM/warn-stack.ll<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/warn-stack.ll?rev=183552&view=auto">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/warn-stack.ll?rev=183552&view=auto</a><br>==============================================================================<br>--- llvm/trunk/test/CodeGen/ARM/warn-stack.ll (added)<br>+++ llvm/trunk/test/CodeGen/ARM/warn-stack.ll Fri Jun  7 15:18:12 2013<br>@@ -0,0 +1,24 @@<br>+; RUN: llc -march arm -warn-stack-size=80 < %s 2>&1 >/dev/null | FileCheck %s<br>+; Check the internal option that warns when the stack size exceeds the<br>+; given amount.<br>+; <<a href="rdar://13987214">rdar://13987214</a>><br>+<br>+; CHECK-NOT: nowarn<br>+define void @nowarn() nounwind ssp {<br>+entry:<br>+  %buffer = alloca [12 x i8], align 1<br>+  %arraydecay = getelementptr inbounds [12 x i8]* %buffer, i64 0, i64 0<br>+  call void @doit(i8* %arraydecay) nounwind<br>+  ret void<br>+}<br>+<br>+; CHECK: warning: Stack size limit exceeded (92) in warn.<br>+define void @warn() nounwind ssp {<br>+entry:<br>+  %buffer = alloca [80 x i8], align 1<br>+  %arraydecay = getelementptr inbounds [80 x i8]* %buffer, i64 0, i64 0<br>+  call void @doit(i8* %arraydecay) nounwind<br>+  ret void<br>+}<br>+<br>+declare void @doit(i8*)<br><br>Added: llvm/trunk/test/CodeGen/X86/warn-stack.ll<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/warn-stack.ll?rev=183552&view=auto">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/warn-stack.ll?rev=183552&view=auto</a><br>==============================================================================<br>--- llvm/trunk/test/CodeGen/X86/warn-stack.ll (added)<br>+++ llvm/trunk/test/CodeGen/X86/warn-stack.ll Fri Jun  7 15:18:12 2013<br>@@ -0,0 +1,24 @@<br>+; RUN: llc -march x86 -warn-stack-size=80 < %s 2>&1 >/dev/null | FileCheck %s<br>+; Check the internal option that warns when the stack size exceeds the<br>+; given amount.<br>+; <<a href="rdar://13987214">rdar://13987214</a>><br>+<br>+; CHECK-NOT: nowarn<br>+define void @nowarn() nounwind ssp {<br>+entry:<br>+  %buffer = alloca [12 x i8], align 1<br>+  %arraydecay = getelementptr inbounds [12 x i8]* %buffer, i64 0, i64 0<br>+  call void @doit(i8* %arraydecay) nounwind<br>+  ret void<br>+}<br>+<br>+; CHECK: warning: Stack size limit exceeded (92) in warn.<br>+define void @warn() nounwind ssp {<br>+entry:<br>+  %buffer = alloca [80 x i8], align 1<br>+  %arraydecay = getelementptr inbounds [80 x i8]* %buffer, i64 0, i64 0<br>+  call void @doit(i8* %arraydecay) nounwind<br>+  ret void<br>+}<br>+<br>+declare void @doit(i8*)<br><br><br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</blockquote></div></blockquote></div><br></div></body></html>