Misc fixes:
- make an overload of Launch() that takes an init list of const char* if all you need to tweak in the launch info are the command-line arguments
- make Run() return an int that you can use as an exit-code
- make dynamic values work properly when recursing in FetchVariables()
- make the po output more obvious in verbose mode

llvm-svn: 178578
diff --git a/lldb/tools/lldb-perf/lib/TestCase.cpp b/lldb/tools/lldb-perf/lib/TestCase.cpp
index c4b0199..ac8c402 100644
--- a/lldb/tools/lldb-perf/lib/TestCase.cpp
+++ b/lldb/tools/lldb-perf/lib/TestCase.cpp
@@ -117,6 +117,15 @@
     return false;
 }
 
+bool
+TestCase::Launch (std::initializer_list<const char*> args)
+{
+    std::vector<const char*> args_vect(args);
+    args_vect.push_back(NULL);
+    lldb::SBLaunchInfo launch_info((const char**)&args_vect[0]);
+    return Launch(launch_info);
+}
+
 void
 TestCase::SetVerbose (bool b)
 {
@@ -296,7 +305,7 @@
 	if (GetVerbose()) printf("I am gonna die at step %d\n",m_step);
 }
 
-void
+int
 TestCase::Run (TestCase& test, int argc, const char** argv)
 {
     if (test.Setup(argc, argv))
@@ -304,6 +313,9 @@
         test.Loop();
         Results results;
         test.WriteResults(results);
+        return RUN_SUCCESS;
     }
+    else
+        return RUN_SETUP_ERROR;
 }
 
diff --git a/lldb/tools/lldb-perf/lib/TestCase.h b/lldb/tools/lldb-perf/lib/TestCase.h
index d9a7c9f..3d2e0e94 100644
--- a/lldb/tools/lldb-perf/lib/TestCase.h
+++ b/lldb/tools/lldb-perf/lib/TestCase.h
@@ -83,6 +83,9 @@
 	bool
 	Launch (lldb::SBLaunchInfo &launch_info);
 	
+    bool
+	Launch (std::initializer_list<const char*> args = {});
+    
 	void
 	Loop();
     
@@ -113,7 +116,7 @@
         return MemoryMeasurement<A> (a,name, description);
     }
     
-    static void
+    static int
     Run (TestCase& test, int argc, const char** argv);
     
     virtual bool
@@ -158,6 +161,9 @@
         return m_step;
     }
     
+    static const int RUN_SUCCESS = 0;
+    static const int RUN_SETUP_ERROR = 100;
+    
 protected:
     lldb::SBDebugger m_debugger;
 	lldb::SBTarget m_target;
diff --git a/lldb/tools/lldb-perf/lib/Xcode.cpp b/lldb/tools/lldb-perf/lib/Xcode.cpp
index c095ea4..7b35e1c 100644
--- a/lldb/tools/lldb-perf/lib/Xcode.cpp
+++ b/lldb/tools/lldb-perf/lib/Xcode.cpp
@@ -33,7 +33,7 @@
 		auto count = value.GetNumChildren();
 		for (int i = 0; i < count; i++)
 		{
-			SBValue child(value.GetChildAtIndex(i,value.IsDynamic() ? lldb::eDynamicCanRunTarget : lldb::eNoDynamicValues, true));
+			SBValue child(value.GetChildAtIndex(i, lldb::eDynamicCanRunTarget, true));
 			FetchVariable (child,expand-1,verbose);
 		}
 	}
@@ -117,7 +117,7 @@
 	{
 		auto descr = value.GetObjectDescription();
 		if (descr)
-			printf("%s\n",descr);
+			printf("po = %s\n",descr);
 	}
 }