<div dir="ltr"><div>This email motivated by D71948, but the question has come up before without resolution.<br></div><div><div><br></div><div>The compiler and runtime need to agree on various things. Values of enums, other constants, typedefs, prototype of functions. Currently we achieve that through careful programming and review which is slow and a bit fragile.</div><div><br></div><div>I don't think building the compiler should depend on the openmp runtime source (so the compiler can build without openmp).</div><div><br></div><div>Someone in a previous review didn't want building the runtime to depend on the compiler source (so that the runtime can be easily built with other compilers).<br><br>Options seem to be:<br>1/ Status quo - copy/paste/hope. This is working for us but I don't like the hope part<br>2/ Put header files somewhere outside of the llvm / openmp / clang projects and include<br>3/ Put header file in the compiler and include it from openmp<br>4/ Put header file in openmp and include it from the compiler<br>5/ Other?<br></div></div><div><br></div><div>I think we should create llvm/CodeGen/OpenMPConstants.h under the llvm tree and use that. This will fractionally inconvenience downstream people using llvm's bundled openmp library without llvm in that they'll have to copy the file out of the llvm tree. That seems fine.<br></div><div><br></div><div><div>What do we prefer?</div></div><div><br></div><div>Thanks!</div><div><br></div><div>Jon</div></div>