| author | |
| committer | |
| log | 093ffe9f161f604d7742afc0012c7c8f8437316d |
| tree | d5fa5106a7f58b2be4a86b9892df879b8348c572 |
| parent | 75ec7e4e0094af36375491d3201fbed559d4deae |
3 files changed, 8 insertions(+), 1 deletions(-)
src/codegen.cpp+2-1| ... | @@ -3706,7 +3706,8 @@ static LLVMValueRef get_new_stack_addr(CodeGen *g, LLVMValueRef new_stack) { | ... | @@ -3706,7 +3706,8 @@ static LLVMValueRef get_new_stack_addr(CodeGen *g, LLVMValueRef new_stack) { |
| 3706 | 3706 | ||
| 3707 | LLVMValueRef ptr_addr = LLVMBuildPtrToInt(g->builder, ptr_value, LLVMTypeOf(len_value), ""); | 3707 | LLVMValueRef ptr_addr = LLVMBuildPtrToInt(g->builder, ptr_value, LLVMTypeOf(len_value), ""); |
| 3708 | LLVMValueRef end_addr = LLVMBuildNUWAdd(g->builder, ptr_addr, len_value, ""); | 3708 | LLVMValueRef end_addr = LLVMBuildNUWAdd(g->builder, ptr_addr, len_value, ""); |
| 3709 | LLVMValueRef align_amt = LLVMConstInt(LLVMTypeOf(end_addr), get_abi_alignment(g, g->builtin_types.entry_usize), false); | 3709 | const unsigned alignment_factor = ZigLLVMDataLayoutGetStackAlignment(g->target_data_ref); |
| 3710 | LLVMValueRef align_amt = LLVMConstInt(LLVMTypeOf(end_addr), alignment_factor, false); | ||
| 3710 | LLVMValueRef align_adj = LLVMBuildURem(g->builder, end_addr, align_amt, ""); | 3711 | LLVMValueRef align_adj = LLVMBuildURem(g->builder, end_addr, align_amt, ""); |
| 3711 | return LLVMBuildNUWSub(g->builder, end_addr, align_adj, ""); | 3712 | return LLVMBuildNUWSub(g->builder, end_addr, align_adj, ""); |
| 3712 | } | 3713 | } |
src/zig_llvm.cpp+4| ... | @@ -149,6 +149,10 @@ LLVMTargetMachineRef ZigLLVMCreateTargetMachine(LLVMTargetRef T, const char *Tri | ... | @@ -149,6 +149,10 @@ LLVMTargetMachineRef ZigLLVMCreateTargetMachine(LLVMTargetRef T, const char *Tri |
| 149 | return reinterpret_cast<LLVMTargetMachineRef>(TM); | 149 | return reinterpret_cast<LLVMTargetMachineRef>(TM); |
| 150 | } | 150 | } |
| 151 | 151 | ||
| 152 | unsigned ZigLLVMDataLayoutGetStackAlignment(LLVMTargetDataRef TD) { | ||
| 153 | return unwrap(TD)->getStackAlignment(); | ||
| 154 | } | ||
| 155 | |||
| 152 | bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMModuleRef module_ref, | 156 | bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMModuleRef module_ref, |
| 153 | const char *filename, ZigLLVM_EmitOutputType output_type, char **error_message, bool is_debug, | 157 | const char *filename, ZigLLVM_EmitOutputType output_type, char **error_message, bool is_debug, |
| 154 | bool is_small, bool time_report) | 158 | bool is_small, bool time_report) |
src/zig_llvm.h+2| ... | @@ -469,4 +469,6 @@ ZIG_EXTERN_C void ZigLLVMGetNativeTarget(enum ZigLLVM_ArchType *arch_type, enum | ... | @@ -469,4 +469,6 @@ ZIG_EXTERN_C void ZigLLVMGetNativeTarget(enum ZigLLVM_ArchType *arch_type, enum |
| 469 | enum ZigLLVM_VendorType *vendor_type, enum ZigLLVM_OSType *os_type, enum ZigLLVM_EnvironmentType *environ_type, | 469 | enum ZigLLVM_VendorType *vendor_type, enum ZigLLVM_OSType *os_type, enum ZigLLVM_EnvironmentType *environ_type, |
| 470 | enum ZigLLVM_ObjectFormatType *oformat); | 470 | enum ZigLLVM_ObjectFormatType *oformat); |
| 471 | 471 | ||
| 472 | ZIG_EXTERN_C unsigned ZigLLVMDataLayoutGetStackAlignment(LLVMTargetDataRef TD); | ||
| 473 | |||
| 472 | #endif | 474 | #endif |