
This is based on https://reviews.llvm.org/D125168 which adds a
wrapper to allow use of opaque pointers from the C API.
I added an opaque pointer mode test to echo.ll, and to fix assertions
that forbid the use of mixed typed and opaque pointers that were
triggering in it I had to also add wrappers for setOpaquePointers()
and isOpaquePointer().
I also changed echo.ll to remove a bitcast i32* %x to i8*, because
passing it through llvm-as and llvm-dis was generating a
%0 = bitcast ptr %x to ptr, but when building that same bitcast in
echo.cpp it was getting elided by IRBuilderBase::CreateCast
(08ac661248/llvm/include/llvm/IR/IRBuilder.h (L1998-L1999)
).
Differential Revision: https://reviews.llvm.org/D125183
67 lines
1.9 KiB
C
67 lines
1.9 KiB
C
/*===-- llvm-c-test.h - tool for testing libLLVM and llvm-c API -----------===*\
|
|
|* *|
|
|
|* 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 *|
|
|
|* *|
|
|
|*===----------------------------------------------------------------------===*|
|
|
|* *|
|
|
|* Header file for llvm-c-test *|
|
|
|* *|
|
|
\*===----------------------------------------------------------------------===*/
|
|
#ifndef LLVM_C_TEST_H
|
|
#define LLVM_C_TEST_H
|
|
|
|
#include <stdbool.h>
|
|
#include "llvm-c/Core.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// helpers.c
|
|
void llvm_tokenize_stdin(void (*cb)(char **tokens, int ntokens));
|
|
|
|
// module.c
|
|
LLVMModuleRef llvm_load_module(bool Lazy, bool New);
|
|
int llvm_module_dump(bool Lazy, bool New);
|
|
int llvm_module_list_functions(void);
|
|
int llvm_module_list_globals(void);
|
|
|
|
// calc.c
|
|
int llvm_calc(void);
|
|
|
|
// disassemble.c
|
|
int llvm_disassemble(void);
|
|
|
|
// debuginfo.c
|
|
int llvm_test_dibuilder(void);
|
|
|
|
// metadata.c
|
|
int llvm_add_named_metadata_operand(void);
|
|
int llvm_set_metadata(void);
|
|
|
|
// object.c
|
|
int llvm_object_list_sections(void);
|
|
int llvm_object_list_symbols(void);
|
|
|
|
// targets.c
|
|
int llvm_targets_list(void);
|
|
|
|
// echo.c
|
|
int llvm_echo(bool OpaquePointers);
|
|
|
|
// diagnostic.c
|
|
int llvm_test_diagnostic_handler(void);
|
|
|
|
// attributes.c
|
|
int llvm_test_function_attributes(void);
|
|
int llvm_test_callsite_attributes(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* !defined(__cplusplus) */
|
|
|
|
#endif
|