transform_utils_ocaml.c 1.7 KB

12345678910111213141516171819202122232425262728293031
  1. /*===-- transform_utils_ocaml.c - LLVM OCaml Glue ---------------*- C++ -*-===*\
  2. |* *|
  3. |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
  4. |* Exceptions. *|
  5. |* See https://llvm.org/LICENSE.txt for license information. *|
  6. |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
  7. |* *|
  8. |*===----------------------------------------------------------------------===*|
  9. |* *|
  10. |* This file glues LLVM's OCaml interface to its C interface. These functions *|
  11. |* are by and large transparent wrappers to the corresponding C functions. *|
  12. |* *|
  13. |* Note that these functions intentionally take liberties with the CAMLparamX *|
  14. |* macros, since most of the parameters are not GC heap objects. *|
  15. |* *|
  16. \*===----------------------------------------------------------------------===*/
  17. #include "llvm-c/Core.h"
  18. #include "caml/mlvalues.h"
  19. #include "caml/misc.h"
  20. /*
  21. * Do not move directly into external. This function is here to pull in
  22. * -lLLVMTransformUtils, which would otherwise be not linked on static builds,
  23. * as ld can't see the reference from OCaml code.
  24. */
  25. /* llmodule -> llmodule */
  26. CAMLprim LLVMModuleRef llvm_clone_module(LLVMModuleRef M) {
  27. return LLVMCloneModule(M);
  28. }