ccc: Infer action type upfront.
 - More straightforward, e.g. -E should always imply action =
   'preprocess' (I think).
 - Pass another option through for OS X.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56884 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/ccc b/utils/ccc
index e2ede50..d4e9799 100755
--- a/utils/ccc
+++ b/utils/ccc
@@ -171,8 +171,18 @@
     else:
         return ""
 
+def inferaction(args):
+    if '-E' in args:
+        return 'preprocess'
+    if '-c' in args:
+        return 'compile'
+    for arg in args:
+        if arg.startswith('-print-prog-name'):
+            return 'pring-prog-name'
+    return 'link'
+
 def main(args):
-    action = 'link'
+    action = inferaction(args)
     output = ''
     compile_opts = []
     link_opts = []
@@ -186,12 +196,6 @@
         arg = args[i]
 
         # Modes ccc supports
-        if arg == '-E':
-            action = 'preprocess'
-        if arg == '-c':
-            action = 'compile'
-        if arg.startswith('-print-prog-name'):
-            action = 'print-prog-name'
         if arg == '-save-temps':
             save_temps = 1
         if arg == '-emit-llvm' or arg == '--emit-llvm':
@@ -229,7 +233,7 @@
             i += 1
 
         # Options with no arguments that should pass through
-        if arg in ('-dynamiclib',):
+        if arg in ('-dynamiclib','-bundle'):
             link_opts.append(arg)
 
         # Options with one argument that should pass through
@@ -280,7 +284,7 @@
             i += 1
 
         i += 1
-
+    
     if action == 'print-prog-name':
         # assume we can handle everything
         print sys.argv[0]