<div dir="ltr">I went ahead and reverted in r186329.  This test passes for me on Linux, and is excluded on Windows due to the shell glob usage.  I'm still not sure what the root cause is.</div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Mon, Jul 15, 2013 at 12:00 PM, David Dean <span dir="ltr"><<a href="mailto:david_dean@apple.com" target="_blank">david_dean@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This has broken one of the tests. Please have a look and fix/revert as soon as you can.<br>
<br>
<a href="http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/4406" target="_blank">http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/4406</a><br>

<br>
******************** TEST 'Clang :: Driver/crash-report.c' FAILED ********************<br>
Script:<br>
--<br>
rm -rf /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang-build/tools/clang/test/Driver/Output/crash-report.c.tmp<br>
mkdir /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang-build/tools/clang/test/Driver/Output/crash-report.c.tmp<br>
not env TMPDIR=/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang-build/tools/clang/test/Driver/Output/crash-report.c.tmp TEMP=/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang-build/tools/clang/test/Driver/Output/crash-report.c.tmp TMP=/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang-build/tools/clang/test/Driver/Output/crash-report.c.tmp RC_DEBUG_OPTIONS=1  /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang-build/Release+Asserts/bin/clang  -fsyntax-only /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang.src/test/Driver/crash-report.c   -F/tmp/ -I /tmp/ -idirafter /tmp/ -iquote /tmp/ -isystem /tmp/   -iprefix /the/prefix -iwithprefix /tmp -iwithprefixbefore /tmp/   -inter!<br>

 nal-isystem /tmp/ -internal-externc-isystem /tmp/   -DFOO=BAR 2>&1 | FileCheck /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang.src/test/Driver/crash-report.c<br>

cat /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang-build/tools/clang/test/Driver/Output/crash-report.c.tmp/crash-report-*.c | FileCheck --check-prefix=CHECKSRC /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang.src/test/Driver/crash-report.c<br>

cat /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang-build/tools/clang/test/Driver/Output/crash-report.c.tmp/crash-report-*.sh | FileCheck --check-prefix=CHECKSH /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang.src/test/Driver/crash-report.c<br>

not env FORCE_CLANG_DIAGNOSTICS_CRASH=1  /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang-build/Release+Asserts/bin/clang  -fsyntax-only -x c /dev/null 2>&1 | FileCheck /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang.src/test/Driver/crash-report.c<br>

--<br>
Exit Code: 1<br>
Command Output (stderr):<br>
--<br>
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang.src/test/Driver/crash-report.c:18:11: error: expected string not found in input<br>
// CHECK: Preprocessed source(s) and associated run script(s) are located at:<br>
          ^<br>
<stdin>:1:1: note: scanning from here<br>
clang: warning: argument unused during compilation: '-internal-isystem /tmp/'<br>
^<br>
<stdin>:29:112: note: possible intended match here<br>
clang: note: diagnostic msg: PLEASE submit a bug report to <a href="http://llvm.org/bugs/" target="_blank">http://llvm.org/bugs/</a> and include the crash backtrace, preprocessed source, and associated run script.<br>
                                                                                                               ^<br>
--<br>
<br>
********************<br>
<div class="HOEnZb"><div class="h5"><br>
On 15 Jul 2013, at 6:46 AM, Reid Kleckner <<a href="mailto:reid@kleckner.net">reid@kleckner.net</a>> wrote:<br>
<br>
> Author: rnk<br>
> Date: Mon Jul 15 08:46:24 2013<br>
> New Revision: 186319<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=186319&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=186319&view=rev</a><br>
> Log:<br>
> [Option] Store arg strings in a set backed by a BumpPtrAllocator<br>
><br>
> No functionality change.<br>
><br>
> This is preparing to move response file parsing into lib/Option so it<br>
> can be shared between clang and lld.  This change isn't just a<br>
> micro-optimization.  Clang's driver uses a std::set<std::string> to<br>
> unique arguments while parsing response files, so this matches that.<br>
><br>
> Modified:<br>
>    llvm/trunk/include/llvm/Option/ArgList.h<br>
>    llvm/trunk/lib/Option/ArgList.cpp<br>
><br>
> Modified: llvm/trunk/include/llvm/Option/ArgList.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Option/ArgList.h?rev=186319&r1=186318&r2=186319&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Option/ArgList.h?rev=186319&r1=186318&r2=186319&view=diff</a><br>

> ==============================================================================<br>
> --- llvm/trunk/include/llvm/Option/ArgList.h (original)<br>
> +++ llvm/trunk/include/llvm/Option/ArgList.h Mon Jul 15 08:46:24 2013<br>
> @@ -12,9 +12,10 @@<br>
><br>
> #include "llvm/ADT/SmallVector.h"<br>
> #include "llvm/ADT/StringRef.h"<br>
> +#include "llvm/ADT/StringSet.h"<br>
> #include "llvm/Option/OptSpecifier.h"<br>
> #include "llvm/Option/Option.h"<br>
> -#include <list><br>
> +#include "llvm/Support/Allocator.h"<br>
> #include <string><br>
> #include <vector><br>
><br>
> @@ -298,7 +299,7 @@ private:<br>
>   /// This is mutable since we treat the ArgList as being the list<br>
>   /// of Args, and allow routines to add new strings (to have a<br>
>   /// convenient place to store the memory) via MakeIndex.<br>
> -  mutable std::list<std::string> SynthesizedStrings;<br>
> +  mutable StringSet<BumpPtrAllocator> SynthesizedStrings;<br>
><br>
>   /// The number of original input argument strings.<br>
>   unsigned NumInputArgStrings;<br>
><br>
> Modified: llvm/trunk/lib/Option/ArgList.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Option/ArgList.cpp?rev=186319&r1=186318&r2=186319&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Option/ArgList.cpp?rev=186319&r1=186318&r2=186319&view=diff</a><br>

> ==============================================================================<br>
> --- llvm/trunk/lib/Option/ArgList.cpp (original)<br>
> +++ llvm/trunk/lib/Option/ArgList.cpp Mon Jul 15 08:46:24 2013<br>
> @@ -323,9 +323,18 @@ InputArgList::~InputArgList() {<br>
> unsigned InputArgList::MakeIndex(StringRef String0) const {<br>
>   unsigned Index = ArgStrings.size();<br>
><br>
> +  // If necessary, make a copy so we can null terminate it.<br>
> +  std::string NullTerminated;<br>
> +  if (String0.back() != '\0') {<br>
> +    NullTerminated.append(String0.data(), String0.size());<br>
> +    NullTerminated.push_back('\0');<br>
> +    String0 = StringRef(&NullTerminated[0], NullTerminated.size());<br>
> +  }<br>
> +<br>
>   // Tuck away so we have a reliable const char *.<br>
> -  SynthesizedStrings.push_back(String0);<br>
> -  ArgStrings.push_back(SynthesizedStrings.back().c_str());<br>
> +  String0 = SynthesizedStrings.GetOrCreateValue(String0).getKey();<br>
> +  assert(String0.back() == '\0');<br>
> +  ArgStrings.push_back(String0.data());<br>
><br>
>   return Index;<br>
> }<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">-David<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div>