mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-08-05 13:27:09 +02:00
I've tested it on Scaleway's armv7 machine. I currently don't have access to any aarch64 machine, but it should work too.
123 lines
3.4 KiB
Diff
123 lines
3.4 KiB
Diff
Patch-Source: https://github.com/ponylang/ponyc/pull/2665
|
|
|
|
--- a/Makefile
|
|
+++ b/Makefile
|
|
@@ -41,6 +41,7 @@
|
|
config ?= release
|
|
arch ?= native
|
|
tune ?= generic
|
|
+cpu ?= $(arch)
|
|
bits ?= $(shell getconf LONG_BIT)
|
|
|
|
ifndef verbose
|
|
@@ -102,7 +103,7 @@
|
|
-DPONY_VERSION_STR=\"$(version_str)\" \
|
|
-D_FILE_OFFSET_BITS=64
|
|
ALL_CXXFLAGS = -std=gnu++11 -fno-rtti
|
|
-LL_FLAGS = -mcpu=$(arch)
|
|
+LL_FLAGS = -mcpu=$(cpu)
|
|
|
|
# Determine pointer size in bits.
|
|
BITS := $(bits)
|
|
--- a/src/libponyc/codegen/codegen.c
|
|
+++ b/src/libponyc/codegen/codegen.c
|
|
@@ -976,48 +976,53 @@
|
|
|
|
bool codegen_pass_init(pass_opt_t* opt)
|
|
{
|
|
+ char *triple;
|
|
+
|
|
+ // Default triple, cpu and features.
|
|
+ if(opt->triple != NULL)
|
|
+ {
|
|
+ triple = LLVMCreateMessage(opt->triple);
|
|
+ } else {
|
|
+#ifdef PLATFORM_IS_MACOSX
|
|
+ // This is to prevent XCode 7+ from claiming OSX 14.5 is required.
|
|
+ triple = LLVMCreateMessage("x86_64-apple-macosx");
|
|
+#else
|
|
+ triple = LLVMGetDefaultTargetTriple();
|
|
+#endif
|
|
+ }
|
|
+
|
|
if(opt->features != NULL)
|
|
{
|
|
#if PONY_LLVM < 500
|
|
- // Disable -avx512f on LLVM < 5.0.0 to avoid bug https://bugs.llvm.org/show_bug.cgi?id=30542
|
|
- size_t temp_len = strlen(opt->features) + 9;
|
|
- char* temp_str = (char*)ponyint_pool_alloc_size(temp_len);
|
|
- snprintf(temp_str, temp_len, "%s,-avx512f", opt->features);
|
|
+ if(target_is_x86(triple))
|
|
+ {
|
|
+ // Disable -avx512f on LLVM < 5.0.0 to avoid bug https://bugs.llvm.org/show_bug.cgi?id=30542
|
|
+ size_t temp_len = strlen(opt->features) + 10;
|
|
+ char* temp_str = (char*)ponyint_pool_alloc_size(temp_len);
|
|
+ snprintf(temp_str, temp_len, "%s,-avx512f", opt->features);
|
|
|
|
- opt->features = temp_str;
|
|
-#endif
|
|
+ opt->features = LLVMCreateMessage(temp_str);
|
|
|
|
+ ponyint_pool_free_size(temp_len, temp_str);
|
|
+ } else {
|
|
+ opt->features = LLVMCreateMessage(opt->features);
|
|
+ }
|
|
+#else
|
|
opt->features = LLVMCreateMessage(opt->features);
|
|
-
|
|
-
|
|
-#if PONY_LLVM < 500
|
|
- // free memory for temp_str
|
|
- ponyint_pool_free_size(temp_len, temp_str);
|
|
#endif
|
|
} else {
|
|
if((opt->cpu == NULL) && (opt->triple == NULL))
|
|
opt->features = LLVMGetHostCPUFeatures();
|
|
else
|
|
#if PONY_LLVM < 500
|
|
- opt->features = LLVMCreateMessage("-avx512f");
|
|
+ opt->features = LLVMCreateMessage(target_is_x86(triple) ? "-avx512f" : "");
|
|
#else
|
|
opt->features = LLVMCreateMessage("");
|
|
#endif
|
|
}
|
|
|
|
- // Default triple, cpu and features.
|
|
- if(opt->triple != NULL)
|
|
- {
|
|
- opt->triple = LLVMCreateMessage(opt->triple);
|
|
- } else {
|
|
-#ifdef PLATFORM_IS_MACOSX
|
|
- // This is to prevent XCode 7+ from claiming OSX 14.5 is required.
|
|
- opt->triple = LLVMCreateMessage("x86_64-apple-macosx");
|
|
-#else
|
|
- opt->triple = LLVMGetDefaultTargetTriple();
|
|
-#endif
|
|
- }
|
|
-
|
|
+ opt->triple = triple;
|
|
+
|
|
if(opt->cpu != NULL)
|
|
opt->cpu = LLVMCreateMessage(opt->cpu);
|
|
else
|
|
--- a/src/libponyc/codegen/host.cc
|
|
+++ b/src/libponyc/codegen/host.cc
|
|
@@ -46,7 +46,7 @@
|
|
for(auto it = features.begin(); it != features.end(); it++)
|
|
buf_size += (*it).getKey().str().length() + 2; // plus +/- char and ,/null
|
|
|
|
-#if PONY_LLVM < 500
|
|
+#if PONY_LLVM < 500 and defined(PLATFORM_IS_X86)
|
|
// Add extra buffer space for llvm bug workaround
|
|
buf_size += 9;
|
|
#endif
|
|
@@ -69,7 +69,7 @@
|
|
strcat(buf, ",");
|
|
}
|
|
|
|
-#if PONY_LLVM < 500
|
|
+#if PONY_LLVM < 500 and defined(PLATFORM_IS_X86)
|
|
// Disable -avx512f on LLVM < 5.0.0 to avoid bug https://bugs.llvm.org/show_bug.cgi?id=30542
|
|
strcat(buf, ",-avx512f");
|
|
#endif
|