Commit 9a99bd3a71

Andrew Kelley <superjoe30@gmail.com>
2017-10-24 08:14:55
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.
1 parent 94ec219
Changed files (2)
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[] = {
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 {