commit 9a99bd3a71f1b20afd155f440c8dedd69273e8cb (tree)
parent 94ec2190f8d8c41d19b668511bf31fae32bcd095
Author: Andrew Kelley <superjoe30@gmail.com>
Date: Tue, 24 Oct 2017 02:14:55 -0400
use llvm named structs for const values when possible
normally we want to use llvm types for constants. but
union constants (which are found inside enums) when
they are initialized with the non-most-aligned-member
must be unnamed structs.
these bubble up to all aggregate types. if a constant of
an aggregate type contains, recursively, a union constant
with a non-most-aligned-member initialized, the aggregate
typed constant must be unnamed too.
this fixes all the asserts that were coming in from
llvm master branch.
Diffstat:
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/target.cpp b/src/target.cpp
@@ -183,6 +183,7 @@ static const ZigLLVM_EnvironmentType environ_list[] = {
ZigLLVM_AMDOpenCL,
ZigLLVM_CoreCLR,
ZigLLVM_OpenCL,
+ ZigLLVM_Simulator,
};
static const ZigLLVM_ObjectFormatType oformat_list[] = {
diff --git a/src/zig_llvm.hpp b/src/zig_llvm.hpp
@@ -339,8 +339,9 @@ enum ZigLLVM_EnvironmentType {
ZigLLVM_AMDOpenCL,
ZigLLVM_CoreCLR,
ZigLLVM_OpenCL,
+ ZigLLVM_Simulator, // Simulator variants of other systems, e.g., Apple's iOS
- ZigLLVM_LastEnvironmentType = ZigLLVM_OpenCL
+ ZigLLVM_LastEnvironmentType = ZigLLVM_Simulator
};
enum ZigLLVM_ObjectFormatType {