diff --git a/tools/ccc/ccclib/Arguments.py b/tools/ccc/ccclib/Arguments.py
index 2aefa04..2ed0597 100644
--- a/tools/ccc/ccclib/Arguments.py
+++ b/tools/ccc/ccclib/Arguments.py
@@ -713,7 +713,9 @@
         # FIXME: What to do about the ambiguity of options like
         # -dumpspecs? How is this handled in gcc?
         # FIXME: Naming convention.
-        self.dOption = self.addOption(FlagOption('-d'))
+        self.dGroup = OptionGroup('-d')
+        self.dAOption = self.addOption(FlagOption('-dA', self.dGroup))
+        self.addOption(FlagOption('-d', self.dGroup))
 
         # Use a group for this in anticipation of adding more -d
         # options explicitly. Note that we don't put many -d things in
@@ -744,12 +746,15 @@
         self.f_appleKextOption = self.addOption(FlagOption('-fapple-kext', self.fGroup))
         self.f_constantCfstringsOption = self.addOption(FlagOption('-fconstant-cfstrings', self.fGroup))
         self.f_createProfileOption = self.addOption(FlagOption('-fcreate-profile', self.fGroup))
+        self.f_debugPassArgumentsOption = self.addOption(FlagOption('-fdebug-pass-arguments', self.fGroup))
+        self.f_debugPassStructureOption = self.addOption(FlagOption('-fdebug-pass-structure', self.fGroup))
         self.f_eliminateUnusedDebugSymbolsOption = self.addOption(FlagOption('-feliminate-unused-debug-symbols', self.fGroup))
         self.f_exceptionsOption = self.addOption(FlagOption('-fexceptions', self.fGroup))
         self.f_gnuRuntimeOption = self.addOption(FlagOption('-fgnu-runtime', self.fGroup))
         self.f_gnuRuntimeOption = self.addOption(FlagOption('-fgnu-runtime', self.fGroup))
         self.f_indirectVirtualCallsOption = self.addOption(FlagOption('-findirect-virtual-calls', self.fGroup))
         self.f_laxVectorConversionsOption = self.addOption(FlagOption('-flax-vector-conversions', self.fGroup))
+        self.f_limitedPrecisionOption = self.addOption(JoinedOption('-flimited-precision=', self.fGroup))
         self.f_msExtensionsOption = self.addOption(FlagOption('-fms-extensions', self.fGroup))
         self.f_mudflapOption = self.addOption(FlagOption('-fmudflap', self.fGroup))
         self.f_mudflapthOption = self.addOption(FlagOption('-fmudflapth', self.fGroup))
@@ -764,14 +769,21 @@
         self.f_objcGcOnlyOption = self.addOption(FlagOption('-fobjc-gc-only', self.fGroup))
         self.f_objcGcOption = self.addOption(FlagOption('-fobjc-gc', self.fGroup))
         self.f_objcOption = self.addOption(FlagOption('-fobjc', self.fGroup))
+        self.f_omitFramePointerOption = self.addOption(FlagOption('-fomit-frame-pointer', self.fGroup))
         self.f_openmpOption = self.addOption(FlagOption('-fopenmp', self.fGroup))
         self.f_pascalStringsOption = self.addOption(FlagOption('-fpascal-strings', self.fGroup))
         self.f_pieOption = self.addOption(FlagOption('-fpie', self.fGroup))
+        self.f_PIEOption = self.addOption(FlagOption('-fPIE', self.fGroup))
+        self.f_picOption = self.addOption(FlagOption('-fpic', self.fGroup))
+        self.f_PICOption = self.addOption(FlagOption('-fPIC', self.fGroup))
         self.f_profileArcsOption = self.addOption(FlagOption('-fprofile-arcs', self.fGroup))
         self.f_profileGenerateOption = self.addOption(FlagOption('-fprofile-generate', self.fGroup))
         self.f_terminatedVtablesOption = self.addOption(FlagOption('-fterminated-vtables', self.fGroup))
+        self.f_timeReportOption = self.addOption(FlagOption('-ftime-report', self.fGroup))
         self.f_traditionalOption = self.addOption(FlagOption('-ftraditional', self.fGroup))
+        self.f_unwindTablesOption = self.addOption(FlagOption('-funwind-tables', self.fGroup))
         self.f_writableStringsOption = self.addOption(FlagOption('-fwritable-strings', self.fGroup))
+        self.f_zeroInitializedInBssOption = self.addOption(FlagOption('-fzero-initialized-in-bss', self.fGroup))
         self.addOption(JoinedOption('-f', self.fGroup))
 
         self.coverageOption = self.addOption(FlagOption('-coverage'))
diff --git a/tools/ccc/ccclib/Tools.py b/tools/ccc/ccclib/Tools.py
index fbf17cb..b1087d3 100644
--- a/tools/ccc/ccclib/Tools.py
+++ b/tools/ccc/ccclib/Tools.py
@@ -219,6 +219,58 @@
             # Add -WA, arguments when running as analyzer.
             for arg in arglist.getArgs(arglist.parser.WAOption):
                 cmd_args.extend(arglist.renderAsInput(arg))
+        else:
+            # Perform argument translation for LLVM backend. This
+            # performs some care in reconciling with llvm-gcc. The
+            # issue is that llvm-gcc translates these options based on
+            # the values in cc1, whereas we are processing based on
+            # the driver arguments.
+            #
+            # FIXME: This is currently broken for -f flags when -fno
+            # variants are present.
+
+            # This comes from the default translation the driver + cc1
+            # would do to enable flag_pic.
+            # 
+            # FIXME: Centralize this code.
+            picEnabled = (arglist.getLastArg(arglist.parser.f_PICOption) or
+                          arglist.getLastArg(arglist.parser.f_picOption) or
+                          arglist.getLastArg(arglist.parser.f_PIEOption) or
+                          arglist.getLastArg(arglist.parser.f_pieOption) or
+                          (not arglist.getLastArg(arglist.parser.m_kernelOption) and
+                          not arglist.getLastArg(arglist.parser.staticOption) and
+                          not arglist.getLastArg(arglist.parser.m_dynamicNoPicOption)))
+
+            archName = arglist.getValue(arch)
+            if (archName == 'x86_64' or 
+                picEnabled):
+                cmd_args.append('--relocation-model=pic')
+            else:
+                cmd_args.append('--relocation-model=static')
+
+            if arglist.getLastArg(arglist.parser.f_timeReportOption):
+                cmd_args.append('--time-passes')
+            # FIXME: Set --enable-unsafe-fp-math.
+            if not arglist.getLastArg(arglist.parser.f_omitFramePointerOption):
+                cmd_args.append('--disable-fp-elim')
+            if not arglist.getLastArg(arglist.parser.f_zeroInitializedInBssOption):
+                cmd_args.append('--nozero-initialized-in-bss')
+            if arglist.getLastArg(arglist.parser.dAOption):
+                cmd_args.append('--asm-verbose')
+            if arglist.getLastArg(arglist.parser.f_debugPassStructureOption):
+                cmd_args.append('--debug-pass=Structure')
+            if arglist.getLastArg(arglist.parser.f_debugPassArgumentsOption):
+                cmd_args.append('--debug-pass=Arguments')
+            # FIXME: set --inline-threshhold=50 if (optimize_size || optimize < 3)
+            if arglist.getLastArg(arglist.parser.f_unwindTablesOption):
+                cmd_args.append('--unwind-tables')
+
+            arg = arglist.getLastArg(arglist.parser.f_limitedPrecisionOption)
+            if arg:
+                cmd_args.append('--limit-float-precision')
+                cmd_args.append(arglist.getValue(arg))
+            
+            # FIXME: Add --stack-protector-buffer-size=<xxx> on -fstack-protect.
 
         arglist.addAllArgs(cmd_args, arglist.parser.vOption)
         arglist.addAllArgs2(cmd_args, arglist.parser.DOption, arglist.parser.UOption)
@@ -937,7 +989,7 @@
 
         # FIXME: gcc has %{x} in here. How could this ever happen?
         # Cruft?
-        arglist.addLastArg(cmd_args, arglist.parser.dOption)
+        arglist.addLastArg(cmd_args, arglist.parser.dGroup)
         arglist.addLastArg(cmd_args, arglist.parser.tOption)
         arglist.addLastArg(cmd_args, arglist.parser.ZOption)
         arglist.addAllArgs(cmd_args, arglist.parser.uGroup)
