diff --git a/RSCCOptions.td b/RSCCOptions.td
index 5e137c1..ebd7f36 100644
--- a/RSCCOptions.td
+++ b/RSCCOptions.td
@@ -1,5 +1,5 @@
 /*
- * Copyright 2010, The Android Open Source Project
+ * Copyright 2010-2012, The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -108,6 +108,13 @@
 def _additional_dep_target : Separate<"-a">, Alias<additional_dep_target>;
 
 //===----------------------------------------------------------------------===//
+// Reflection Options
+//===----------------------------------------------------------------------===//
+
+def reflect_cpp : Flag<"-reflect-c++">,
+  HelpText<"Reflect C++ classes">;
+
+//===----------------------------------------------------------------------===//
 // Misc Options
 //===----------------------------------------------------------------------===//
 
diff --git a/llvm-rs-cc.cpp b/llvm-rs-cc.cpp
index d6a3b8d..2cd7bb0 100644
--- a/llvm-rs-cc.cpp
+++ b/llvm-rs-cc.cpp
@@ -273,6 +273,10 @@
           << OptParser->getOptionName(OPT_bitcode_storage)
           << BitcodeStorageValue;
 
+    if (Args->hasArg(OPT_reflect_cpp)) {
+      Opts.mBitcodeStorage = slang::BCST_CPP_CODE;
+    }
+
     Opts.mOutputDepDir =
         Args->getLastArgValue(OPT_output_dep_dir, Opts.mOutputDir);
     Opts.mAdditionalDepTargets =
@@ -475,6 +479,7 @@
                                          Opts.mOptimizationLevel,
                                          Opts.mJavaReflectionPathBase,
                                          Opts.mJavaReflectionPackageName);
+
   Compiler->reset();
 
   return CompileFailed;
diff --git a/slang_rs.cpp b/slang_rs.cpp
index 8b52931..13413c0 100644
--- a/slang_rs.cpp
+++ b/slang_rs.cpp
@@ -319,26 +319,34 @@
       return false;
 
     if (OutputType != Slang::OT_Dependency) {
-      if (!reflectToJava(JavaReflectionPathBase,
-                         JavaReflectionPackageName,
-                         &RealPackageName))
-        return false;
 
-      for (std::vector<std::string>::const_iterator
-               I = mGeneratedFileNames.begin(), E = mGeneratedFileNames.end();
-           I != E;
-           I++) {
-        std::string ReflectedName = RSSlangReflectUtils::ComputePackagedPath(
-            JavaReflectionPathBase.c_str(),
-            (RealPackageName + OS_PATH_SEPARATOR_STR + *I).c_str());
-        appendGeneratedFileName(ReflectedName + ".java");
-      }
+      if (BitcodeStorage == BCST_CPP_CODE) {
+        // TODO: Call C++ reflection routines + appendGeneratedFileName().
+      } else {
 
-      if ((OutputType == Slang::OT_Bitcode) &&
-          (BitcodeStorage == BCST_JAVA_CODE) &&
-          !generateBitcodeAccessor(JavaReflectionPathBase,
-                                     RealPackageName.c_str()))
+        if (!reflectToJava(JavaReflectionPathBase,
+                           JavaReflectionPackageName,
+                           &RealPackageName)) {
           return false;
+        }
+
+        for (std::vector<std::string>::const_iterator
+                 I = mGeneratedFileNames.begin(), E = mGeneratedFileNames.end();
+             I != E;
+             I++) {
+          std::string ReflectedName = RSSlangReflectUtils::ComputePackagedPath(
+              JavaReflectionPathBase.c_str(),
+              (RealPackageName + OS_PATH_SEPARATOR_STR + *I).c_str());
+          appendGeneratedFileName(ReflectedName + ".java");
+        }
+
+        if ((OutputType == Slang::OT_Bitcode) &&
+            (BitcodeStorage == BCST_JAVA_CODE) &&
+            !generateBitcodeAccessor(JavaReflectionPathBase,
+                                     RealPackageName.c_str())) {
+          return false;
+        }
+      }
     }
 
     if (OutputDep) {
diff --git a/slang_rs_reflect_utils.h b/slang_rs_reflect_utils.h
index f6cfd57..01b93f0 100644
--- a/slang_rs_reflect_utils.h
+++ b/slang_rs_reflect_utils.h
@@ -24,7 +24,8 @@
 // BitCode storage type
 enum BitCodeStorageType {
   BCST_APK_RESOURCE,
-  BCST_JAVA_CODE
+  BCST_JAVA_CODE,
+  BCST_CPP_CODE
 };
 
 class RSSlangReflectUtils {
