Clang Migration TF Windows
> Can you please note which clang version and any other dependencies that were needed to be installed so internal builds / containers can be updated.

clang version: LLVM-15.0.7-win64.exe downloaded from https://github.com/llvm/llvm-project/releases/tag/llvmorg-15.0.7, 
$ set BAZEL_LLVM=LLVM installation root path e.g. C:/Program Files/LLVM
$ set Path=LLVM installation root path\bin e.g. C:/Program Files/LLVM/bin @MichaelHudgins, all the above-suggested changes have been made. Please review and let me know if any further change is needed @mraunak What test suites (bazel flags, etc.) have been run against this? > @mraunak What test suites (bazel flags, etc.) have been run against this?

Hi @angerson,

bazel --output_user_root=d:/ --windows_enable_symlinks test ^
--experimental_cc_shared_library --enable_runfiles --nodistinct_host_configuration ^
--dynamic_mode=off --config=xla --config=short_logs --announce_rc ^
--build_tag_filters=-no_pip,-no_windows,-no_oss,-gpu,-tpu --build_tests_only --config=monolithic ^
--config=opt --copt=/std:c++latest --copt=/clang:-Weverything --linkopt=/FORCE:MULTIPLE ^
--extra_execution_platforms=//tensorflow/tools/toolchains/win:x64_windows-clang-cl --compiler=clang-cl ^
--repo_env=TF_PYTHON_VERSION=3.10 -k --test_output=errors ^
--test_tag_filters=-no_windows,-no_oss,-gpu,-tpu --discard_analysis_cache ^
--test_size_filters=small,medium --jobs=16 --test_timeout=300,450,1200,3600 --verbose_failures ^
 -- //tensorflow/... -//tensorflow/java/... -//tensorflow/lite/... -//tensorflow/compiler/... -//tensorflow/python/data/experimental/kernel_tests/... ^
1>run.log 2>&1 > Please also add a comment about the current plan to submit it with clang 15, and then move it to 17 skipping 16, as it is important to have linux and windows on the same version of clang.

Note: 
Currently, we have migrated the TensorFlow build from MSVC to the Clang-cl compiler with Clang version 15.0.7, it is compatible with the Windows platform unlike Clang 16.0 as we observed a few errors while using Clang 16 on Windows. Next, we will upgrade Clang 15.0.7 to Clang 17 skipping 16 due to compatibility issues
This PR migrates TensorFlow builds on Windows from the MSVC to the clang-cl compiler.

Reason for migration:
Bring TensorFlow Build on Windows and Linux on the same compiler platform to facilitate convenient debugging for the issues related to compiler

Comments:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/def_file_filter/def_file_filter.py.tpl#L309
Deleted #def_fp.write("\t ??0CoordinatedTask@tensorflow@@qeaa@XZ\n") # for _pywrap_tfe
#Fix the issue of being unable to export the symbol tensorflow::CoordinatedTask::CoordinatedTask(void)
as the symbol was not found and the above command was responsible for exporting the symbol

https://github.com/tensorflow/tensorflow/blob/master/.bazelrc#L410
#clang-cl supports /arch:AVX instead of /arch=AVX

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/ir/utils/shape_inference_utils.h#L30
This specific issue is caused by the OpRegistrationData type being defined as [struct OpRegistrationData](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/framework/op_def_builder.h#L67) but declared in failing translation unit as [class OpRegistrationData](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/ir/utils/shape_inference_utils.h#L30). Clang apparently makes the difference here (unlike msvc) and it can't find the symbol with class attribute while it is defined only as a struct. Changing [class OpRegistrationData](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/ir/utils/shape_inference_utils.h#L30) to struct OpRegistrationData fixes this specific issue.