diff --git a/behavior_tests/behavior_tests.xml b/behavior_tests/behavior_tests.xml
index 7b87145db..a85a235c3 100644
--- a/behavior_tests/behavior_tests.xml
+++ b/behavior_tests/behavior_tests.xml
@@ -44,6 +44,7 @@
+
diff --git a/behavior_tests/src/cmp_cmds_c_opt_test/Makefile b/behavior_tests/src/cmp_cmds_c_opt_test/Makefile
new file mode 100644
index 000000000..4b4e378d6
--- /dev/null
+++ b/behavior_tests/src/cmp_cmds_c_opt_test/Makefile
@@ -0,0 +1,10 @@
+all: one two three
+
+one: one.cu
+ $(CC) -O2 --use_fast_math -DKERNEL_USE_PROFILE=1 -gencode arch=compute_${USE_SM},code=sm_${USE_SM} -DRUN_ON_GPU=1 one.cu -o one -allow-unsupported-compiler
+
+two: two.cu
+ $(CC) -O2 --use_fast_math -DKERNEL_USE_PROFILE=1 -gencode arch=compute_${USE_SM},code=sm_${USE_SM} -DRUN_ON_GPU=1 two.cu
+
+three: three.cu four.cu
+ $(CC) -O2 --use_fast_math -DKERNEL_USE_PROFILE=1 -gencode arch=compute_${USE_SM},code=sm_${USE_SM} -DRUN_ON_GPU=1 three.cu four.cu
diff --git a/behavior_tests/src/cmp_cmds_c_opt_test/compile_commands.json_ref b/behavior_tests/src/cmp_cmds_c_opt_test/compile_commands.json_ref
new file mode 100644
index 000000000..dc49b7317
--- /dev/null
+++ b/behavior_tests/src/cmp_cmds_c_opt_test/compile_commands.json_ref
@@ -0,0 +1,22 @@
+[
+ {
+ "command": "nvcc -O2 -DKERNEL_USE_PROFILE=1 -DRUN_ON_GPU=1 -o one -allow-unsupported-compiler -D__CUDACC__=1 one.cu",
+ "directory": "${TEST_DIRECTORY}",
+ "file": "${TEST_DIRECTORY}/one.cu"
+ },
+ {
+ "command": "nvcc -c -O2 -DKERNEL_USE_PROFILE=1 -DRUN_ON_GPU=1 -D__CUDACC__=1 two.cu",
+ "directory": "${TEST_DIRECTORY}",
+ "file": "${TEST_DIRECTORY}/two.cu"
+ },
+ {
+ "command": "nvcc -c -O2 -DKERNEL_USE_PROFILE=1 -DRUN_ON_GPU=1 -D__CUDACC__=1 three.cu",
+ "directory": "${TEST_DIRECTORY}",
+ "file": "${TEST_DIRECTORY}/three.cu"
+ },
+ {
+ "command": "nvcc -c -O2 -DKERNEL_USE_PROFILE=1 -DRUN_ON_GPU=1 -D__CUDACC__=1 four.cu",
+ "directory": "${TEST_DIRECTORY}",
+ "file": "${TEST_DIRECTORY}/four.cu"
+ }
+]
\ No newline at end of file
diff --git a/behavior_tests/src/cmp_cmds_c_opt_test/do_test.py b/behavior_tests/src/cmp_cmds_c_opt_test/do_test.py
new file mode 100644
index 000000000..16c038035
--- /dev/null
+++ b/behavior_tests/src/cmp_cmds_c_opt_test/do_test.py
@@ -0,0 +1,60 @@
+# ====------ do_test.py---------- *- Python -* ----===##
+#
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#
+#
+# ===----------------------------------------------------------------------===#
+import filecmp
+import subprocess
+import platform
+import os
+import sys
+import json
+
+from test_utils import *
+
+
+def setup_test():
+ change_dir(test_config.current_test)
+ return True
+
+
+def parse_compilation_database(compilation_database_name):
+ if (not os.path.isfile(compilation_database_name)):
+ print("The compilation database is not existed, please double check\n")
+
+ with open(compilation_database_name) as compilation_database:
+ compilation_database_items = json.load(compilation_database)
+ database_source_files = []
+ for entry in compilation_database_items:
+ compilation_item = entry['file']
+ database_source_files.append(os.path.basename(compilation_item))
+ return database_source_files
+
+
+def migrate_test():
+ call_subprocess("intercept-build make -f Makefile CC=nvcc USE_SM=70 -B")
+ test_dir = os.path.join(os.getcwd())
+ print(test_dir)
+ ref_cmp_db_file = open(test_dir+"/compile_commands.json_ref", "rt")
+ cmp_cmds = ref_cmp_db_file.read()
+ cmp_cmds = cmp_cmds.replace('${TEST_DIRECTORY}', test_dir)
+ ref_cmp_db_file.close()
+ ref_cmp_db_file = open(test_dir+"/compile_commands.json_ref", "wt")
+ ref_cmp_db_file.write(cmp_cmds)
+ ref_cmp_db_file.close()
+
+ result = filecmp.cmp(test_dir+"/compile_commands.json",
+ test_dir+"/compile_commands.json_ref", shallow=False)
+
+ return result
+
+
+def build_test():
+ return True
+
+
+def run_test():
+ return True
diff --git a/behavior_tests/src/cmp_cmds_c_opt_test/four.cu b/behavior_tests/src/cmp_cmds_c_opt_test/four.cu
new file mode 100644
index 000000000..5cad78566
--- /dev/null
+++ b/behavior_tests/src/cmp_cmds_c_opt_test/four.cu
@@ -0,0 +1,4 @@
+// RUN: echo
+__global__ void foo(){
+
+}
diff --git a/behavior_tests/src/cmp_cmds_c_opt_test/one.cu b/behavior_tests/src/cmp_cmds_c_opt_test/one.cu
new file mode 100644
index 000000000..4cce7f667
--- /dev/null
+++ b/behavior_tests/src/cmp_cmds_c_opt_test/one.cu
@@ -0,0 +1,3 @@
+int main() {
+ return 0;
+}
diff --git a/behavior_tests/src/cmp_cmds_c_opt_test/three.cu b/behavior_tests/src/cmp_cmds_c_opt_test/three.cu
new file mode 100644
index 000000000..5cad78566
--- /dev/null
+++ b/behavior_tests/src/cmp_cmds_c_opt_test/three.cu
@@ -0,0 +1,4 @@
+// RUN: echo
+__global__ void foo(){
+
+}
diff --git a/behavior_tests/src/cmp_cmds_c_opt_test/two.cu b/behavior_tests/src/cmp_cmds_c_opt_test/two.cu
new file mode 100644
index 000000000..5cad78566
--- /dev/null
+++ b/behavior_tests/src/cmp_cmds_c_opt_test/two.cu
@@ -0,0 +1,4 @@
+// RUN: echo
+__global__ void foo(){
+
+}