aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-03-08 10:59:54 -0500
committerAndrew Kelley <superjoe30@gmail.com>2018-03-08 10:59:54 -0500
commit3200ebc2ea5f6bb51130cbc69d6533144a9f4ddc (patch)
treee234c061c28a95c35afbb35b80b89e3114ecdeb9 /src
parent2e010c60ae006944ae20ab8b3445598471c9f1e8 (diff)
parentb57cb04afc1898c3b21ef3486709f0c0aa285433 (diff)
downloadzig-3200ebc2ea5f6bb51130cbc69d6533144a9f4ddc.tar.gz
zig-3200ebc2ea5f6bb51130cbc69d6533144a9f4ddc.zip
Merge branch 'llvm6'
Zig now depends on LLVM 6.0.0. The latest commit that depends on LLVM 5.0.1 is 2e010c60ae006944ae20ab8b3445598471c9f1e8.
Diffstat (limited to 'src')
-rw-r--r--src/target.cpp28
-rw-r--r--src/translate_c.cpp9
-rw-r--r--src/zig_llvm.cpp8
-rw-r--r--src/zig_llvm.h6
4 files changed, 47 insertions, 4 deletions
diff --git a/src/target.cpp b/src/target.cpp
index 182da84e09..6bcb86d0b0 100644
--- a/src/target.cpp
+++ b/src/target.cpp
@@ -13,6 +13,7 @@
#include <stdio.h>
static const ArchType arch_list[] = {
+ {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_3a},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_2a},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_1a},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8},
@@ -33,9 +34,30 @@ static const ArchType arch_list[] = {
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v5te},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v4t},
- {ZigLLVM_armeb, ZigLLVM_NoSubArch},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8_3a},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8_2a},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8_1a},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8r},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8m_baseline},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v8m_mainline},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v7},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v7em},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v7m},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v7s},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v7k},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v7ve},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v6},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v6m},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v6k},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v6t2},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v5},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v5te},
+ {ZigLLVM_armeb, ZigLLVM_ARMSubArch_v4t},
+
{ZigLLVM_aarch64, ZigLLVM_NoSubArch},
{ZigLLVM_aarch64_be, ZigLLVM_NoSubArch},
+ {ZigLLVM_arc, ZigLLVM_NoSubArch},
{ZigLLVM_avr, ZigLLVM_NoSubArch},
{ZigLLVM_bpfel, ZigLLVM_NoSubArch},
{ZigLLVM_bpfeb, ZigLLVM_NoSubArch},
@@ -144,6 +166,7 @@ static const ZigLLVM_EnvironmentType environ_list[] = {
ZigLLVM_UnknownEnvironment,
ZigLLVM_GNU,
+ ZigLLVM_GNUABIN32,
ZigLLVM_GNUABI64,
ZigLLVM_GNUEABI,
ZigLLVM_GNUEABIHF,
@@ -161,6 +184,7 @@ static const ZigLLVM_EnvironmentType environ_list[] = {
ZigLLVM_AMDOpenCL,
ZigLLVM_CoreCLR,
ZigLLVM_OpenCL,
+ ZigLLVM_Simulator,
};
static const ZigLLVM_ObjectFormatType oformat_list[] = {
@@ -521,6 +545,7 @@ void resolve_target_object_format(ZigTarget *target) {
case ZigLLVM_amdil:
case ZigLLVM_amdil64:
case ZigLLVM_armeb:
+ case ZigLLVM_arc:
case ZigLLVM_avr:
case ZigLLVM_bpfeb:
case ZigLLVM_bpfel:
@@ -583,6 +608,7 @@ static int get_arch_pointer_bit_width(ZigLLVM_ArchType arch) {
case ZigLLVM_msp430:
return 16;
+ case ZigLLVM_arc:
case ZigLLVM_arm:
case ZigLLVM_armeb:
case ZigLLVM_hexagon:
diff --git a/src/translate_c.cpp b/src/translate_c.cpp
index 21a085ebba..4f222ca2a3 100644
--- a/src/translate_c.cpp
+++ b/src/translate_c.cpp
@@ -760,6 +760,8 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
return trans_create_node_symbol_str(c, "f64");
case BuiltinType::Float128:
return trans_create_node_symbol_str(c, "f128");
+ case BuiltinType::Float16:
+ return trans_create_node_symbol_str(c, "f16");
case BuiltinType::LongDouble:
return trans_create_node_symbol_str(c, "c_longdouble");
case BuiltinType::WChar_U:
@@ -1062,6 +1064,7 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
case Type::Pipe:
case Type::ObjCTypeParam:
case Type::DeducedTemplateSpecialization:
+ case Type::DependentAddressSpace:
emit_warning(c, source_loc, "unsupported type: '%s'", ty->getTypeClassName());
return nullptr;
}
@@ -1252,6 +1255,9 @@ static AstNode *trans_binary_operator(Context *c, ResultUsed result_used, TransS
case BO_PtrMemI:
emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_PtrMemI");
return nullptr;
+ case BO_Cmp:
+ emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Cmp");
+ return nullptr;
case BO_Mul:
return trans_create_bin_op(c, scope, stmt->getLHS(),
qual_type_has_wrapping_overflow(c, stmt->getType()) ? BinOpTypeMultWrap : BinOpTypeMult,
@@ -1513,6 +1519,9 @@ static AstNode *trans_compound_assign_operator(Context *c, ResultUsed result_use
case BO_RemAssign:
emit_warning(c, stmt->getLocStart(), "TODO handle more C compound assign operators: BO_RemAssign");
return nullptr;
+ case BO_Cmp:
+ emit_warning(c, stmt->getLocStart(), "TODO handle more C compound assign operators: BO_Cmp");
+ return nullptr;
case BO_AddAssign:
if (qual_type_has_wrapping_overflow(c, stmt->getType()))
return trans_create_compound_assign(c, result_used, scope, stmt, BinOpTypeAssignPlusWrap, BinOpTypeAddWrap);
diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp
index 16a087cee4..b4eef13cc1 100644
--- a/src/zig_llvm.cpp
+++ b/src/zig_llvm.cpp
@@ -38,7 +38,7 @@
#include <llvm/Transforms/IPO/AlwaysInliner.h>
#include <llvm/Transforms/Scalar.h>
-#include <lld/Driver/Driver.h>
+#include <lld/Common/Driver.h>
#include <new>
@@ -609,7 +609,7 @@ ZigLLVMDILocation *ZigLLVMGetDebugLoc(unsigned line, unsigned col, ZigLLVMDIScop
void ZigLLVMSetFastMath(LLVMBuilderRef builder_wrapped, bool on_state) {
if (on_state) {
FastMathFlags fmf;
- fmf.setUnsafeAlgebra();
+ fmf.setFast();
unwrap(builder_wrapped)->setFastMathFlags(fmf);
} else {
unwrap(builder_wrapped)->clearFastMathFlags();
@@ -647,11 +647,13 @@ static_assert((Triple::ArchType)ZigLLVM_LastArchType == Triple::LastArchType, ""
static_assert((Triple::VendorType)ZigLLVM_LastVendorType == Triple::LastVendorType, "");
static_assert((Triple::OSType)ZigLLVM_LastOSType == Triple::LastOSType, "");
static_assert((Triple::EnvironmentType)ZigLLVM_LastEnvironmentType == Triple::LastEnvironmentType, "");
+static_assert((Triple::SubArchType)ZigLLVM_KalimbaSubArch_v5 == Triple::KalimbaSubArch_v5, "");
static_assert((Triple::ObjectFormatType)ZigLLVM_UnknownObjectFormat == Triple::UnknownObjectFormat, "");
static_assert((Triple::ObjectFormatType)ZigLLVM_COFF == Triple::COFF, "");
static_assert((Triple::ObjectFormatType)ZigLLVM_ELF == Triple::ELF, "");
static_assert((Triple::ObjectFormatType)ZigLLVM_MachO == Triple::MachO, "");
+static_assert((Triple::ObjectFormatType)ZigLLVM_Wasm == Triple::Wasm, "");
const char *ZigLLVMGetArchTypeName(ZigLLVM_ArchType arch) {
return (const char*)Triple::getArchTypeName((Triple::ArchType)arch).bytes_begin();
@@ -690,6 +692,8 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
switch (sub_arch) {
case ZigLLVM_NoSubArch:
return "(none)";
+ case ZigLLVM_ARMSubArch_v8_3a:
+ return "v8_3a";
case ZigLLVM_ARMSubArch_v8_2a:
return "v8_2a";
case ZigLLVM_ARMSubArch_v8_1a:
diff --git a/src/zig_llvm.h b/src/zig_llvm.h
index 01a78a6af4..d6809000ce 100644
--- a/src/zig_llvm.h
+++ b/src/zig_llvm.h
@@ -209,6 +209,7 @@ enum ZigLLVM_ArchType {
ZigLLVM_armeb, // ARM (big endian): armeb
ZigLLVM_aarch64, // AArch64 (little endian): aarch64
ZigLLVM_aarch64_be, // AArch64 (big endian): aarch64_be
+ ZigLLVM_arc, // ARC: Synopsys ARC
ZigLLVM_avr, // AVR: Atmel AVR microcontroller
ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian)
ZigLLVM_bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian)
@@ -261,6 +262,7 @@ enum ZigLLVM_ArchType {
enum ZigLLVM_SubArchType {
ZigLLVM_NoSubArch,
+ ZigLLVM_ARMSubArch_v8_3a,
ZigLLVM_ARMSubArch_v8_2a,
ZigLLVM_ARMSubArch_v8_1a,
ZigLLVM_ARMSubArch_v8,
@@ -350,6 +352,7 @@ enum ZigLLVM_EnvironmentType {
ZigLLVM_UnknownEnvironment,
ZigLLVM_GNU,
+ ZigLLVM_GNUABIN32,
ZigLLVM_GNUABI64,
ZigLLVM_GNUEABI,
ZigLLVM_GNUEABIHF,
@@ -368,8 +371,9 @@ enum ZigLLVM_EnvironmentType {
ZigLLVM_AMDOpenCL,
ZigLLVM_CoreCLR,
ZigLLVM_OpenCL,
+ ZigLLVM_Simulator,
- ZigLLVM_LastEnvironmentType = ZigLLVM_OpenCL
+ ZigLLVM_LastEnvironmentType = ZigLLVM_Simulator
};
enum ZigLLVM_ObjectFormatType {