mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This patch fixes the location of the llvm remote inspection headers for MSVC header lookup. MSVC appears to search in the directory of the current header before returning to the specified header search directories. When building SwiftRemoteMirror, the file contains a reference to `swift/RemoteInspection/ReflectionContext.h`. Under RelfectionContext.h, there is an include of "llvm/BinaryFormat/COFF.h". Because there is an `llvm` and `llvm-c` directory inside of `swift/RemoteInspection/`, and `ReflectionContext.h` is in that directory, MSVC is expanding the `COFF.h` inside of the RemoteInspection headers instead of the copy in LLVM itself, resulting in eventually finding usages of `countPopulation` instead of using the new `llvm::popcount` API, ultimately resulting in a build failure. The fix is to ensure that the `llvm` header directory does not live immediately next to the headers in RemoteInspection, but instead offset them by one. The LLVM headers copied into RemoteInspection are supposed to be used when compiling the runtime libraries, so I chose the name "RuntimeHeaders".
84 lines
2.5 KiB
C
84 lines
2.5 KiB
C
/*===------- llvm-c/Error.h - llvm::Error class C Interface -------*- C -*-===*\
|
|
|* *|
|
|
|* 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 *|
|
|
|* *|
|
|
|*===----------------------------------------------------------------------===*|
|
|
|* *|
|
|
|* This file defines the C interface to LLVM's Error class. *|
|
|
|* *|
|
|
\*===----------------------------------------------------------------------===*/
|
|
|
|
#ifndef LLVM_C_ERROR_H
|
|
#define LLVM_C_ERROR_H
|
|
|
|
#include "llvm-c/ExternC.h"
|
|
|
|
LLVM_C_EXTERN_C_BEGIN
|
|
|
|
/**
|
|
* @defgroup LLVMCError Error Handling
|
|
* @ingroup LLVMC
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
#define LLVMErrorSuccess 0
|
|
|
|
/**
|
|
* Opaque reference to an error instance. Null serves as the 'success' value.
|
|
*/
|
|
typedef struct LLVMOpaqueError *LLVMErrorRef;
|
|
|
|
/**
|
|
* Error type identifier.
|
|
*/
|
|
typedef const void *LLVMErrorTypeId;
|
|
|
|
/**
|
|
* Returns the type id for the given error instance, which must be a failure
|
|
* value (i.e. non-null).
|
|
*/
|
|
LLVMErrorTypeId LLVMGetErrorTypeId(LLVMErrorRef Err);
|
|
|
|
/**
|
|
* Dispose of the given error without handling it. This operation consumes the
|
|
* error, and the given LLVMErrorRef value is not usable once this call returns.
|
|
* Note: This method *only* needs to be called if the error is not being passed
|
|
* to some other consuming operation, e.g. LLVMGetErrorMessage.
|
|
*/
|
|
void LLVMConsumeError(LLVMErrorRef Err);
|
|
|
|
/**
|
|
* Returns the given string's error message. This operation consumes the error,
|
|
* and the given LLVMErrorRef value is not usable once this call returns.
|
|
* The caller is responsible for disposing of the string by calling
|
|
* LLVMDisposeErrorMessage.
|
|
*/
|
|
char *LLVMGetErrorMessage(LLVMErrorRef Err);
|
|
|
|
/**
|
|
* Dispose of the given error message.
|
|
*/
|
|
void LLVMDisposeErrorMessage(char *ErrMsg);
|
|
|
|
/**
|
|
* Returns the type id for llvm StringError.
|
|
*/
|
|
LLVMErrorTypeId LLVMGetStringErrorTypeId(void);
|
|
|
|
/**
|
|
* Create a StringError.
|
|
*/
|
|
LLVMErrorRef LLVMCreateStringError(const char *ErrMsg);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
LLVM_C_EXTERN_C_END
|
|
|
|
#endif
|