|
@@ -64,12 +64,10 @@ Type
|
|
|
|
|
|
type
|
|
|
tllvmversionflag = (
|
|
|
- llvmflag_memcpy_indiv_align, { memcpy intrinsic supports separate alignment for source and dest }
|
|
|
- llvmflag_null_pointer_valid, { supports "null-pointer-is-valid" attribute, which indicates access to nil should not be optimized as undefined behaviour }
|
|
|
llvmflag_constrained_fptrunc_fpext, { supports constrained fptrunc and fpext intrinsics }
|
|
|
llvmflag_constrained_fptoi_itofp, { supports constrained fptosi/fptoui/uitofp/sitofp instrinsics }
|
|
|
llvmflag_generic_constrained_si64tofp, { supports sitofp for 64 bit signed integers on all targets }
|
|
|
- llvmflag_null_pointer_valid_new, { new syntax for the null pointer valid attribute: null_pointer_is_valid }
|
|
|
+ llvmflag_null_pointer_valid_new, { new syntax for the null pointer valid attribute: null_pointer_is_valid (which indicates access to nil should not be optimized as undefined behaviour) }
|
|
|
llvmflag_array_datalocation, { arrays debug info supports a dataLocation attribute to specify how to obtain the array data based on the array variable }
|
|
|
llvmflag_NoDISPFlags, { no DI sub program flags, but separate fields }
|
|
|
llvmflag_NoDISPFlagMainSubprogram, { MainSubprogram still in DIFlags instead of DISPFlags }
|
|
@@ -78,7 +76,8 @@ type
|
|
|
llvmflag_opaque_ptr, { only opaque pointers }
|
|
|
llvmflag_sanitizer_attributes, { can use attributes to exclude symbols from sanitizers }
|
|
|
llvmflag_no_freeze, { lacks the freeze opcode to clear undefined/poison values }
|
|
|
- llvmflag_old_function_memory_attributes { old-style memory attributes for functions (not currently generated by FPC) }
|
|
|
+ llvmflag_old_function_memory_attributes, { old-style memory attributes for functions (not currently generated by FPC) }
|
|
|
+ llvmflag_no_threadlocal_address { no intrinsic to get threadlocal address }
|
|
|
);
|
|
|
tllvmversionflags = set of tllvmversionflag;
|
|
|
|
|
@@ -138,28 +137,28 @@ Const
|
|
|
llvmversion_properties: array[tllvmversion] of tllvmversionflags =
|
|
|
(
|
|
|
{ invalid } [],
|
|
|
- { llvmver_7_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid,llvmflag_NoDISPFlags,llvmflag_no_freeze, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_7_1 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid,llvmflag_NoDISPFlags,llvmflag_no_freeze, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_8_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid,llvmflag_NoDISPFlagMainSubprogram,llvmflag_no_freeze, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_xc_11 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid,llvmflag_NoDISPFlagMainSubprogram,llvmflag_no_freeze, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_9_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid,llvmflag_constrained_fptrunc_fpext,llvmflag_no_freeze, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_xc_11_4 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid,llvmflag_constrained_fptrunc_fpext,llvmflag_no_freeze, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_10_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_xc_12_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_11_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_11_1 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_xc_12_5 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_12_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_xc_13_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_13_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_xc_13_3 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_xc_14_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_14_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_opaque_ptr_transition, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_xc_14_3 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_opaque_ptr,llvmflag_sanitizer_attributes, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_15_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_opaque_ptr,llvmflag_sanitizer_attributes, llvmflag_old_function_memory_attributes],
|
|
|
- { llvmver_16_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_opaque_ptr,llvmflag_sanitizer_attributes],
|
|
|
- { llvmver_xc_15 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_opaque_ptr,llvmflag_sanitizer_attributes],
|
|
|
- { llvmver_17_0 } [llvmflag_memcpy_indiv_align,llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_opaque_ptr,llvmflag_sanitizer_attributes]
|
|
|
+ { llvmver_7_0 } [llvmflag_NoDISPFlags,llvmflag_no_freeze, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_7_1 } [llvmflag_NoDISPFlags,llvmflag_no_freeze, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_8_0 } [llvmflag_NoDISPFlagMainSubprogram,llvmflag_no_freeze, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_xc_11 } [llvmflag_NoDISPFlagMainSubprogram,llvmflag_no_freeze, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_9_0 } [llvmflag_constrained_fptrunc_fpext,llvmflag_no_freeze, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_xc_11_4 } [llvmflag_constrained_fptrunc_fpext,llvmflag_no_freeze, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_10_0 } [llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_xc_12_0 } [llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_11_0 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_11_1 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_xc_12_5 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_12_0 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_xc_13_0 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_13_0 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_xc_13_3 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_xc_14_0 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_14_0 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_opaque_ptr_transition, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_xc_14_3 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_opaque_ptr,llvmflag_sanitizer_attributes, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_15_0 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_opaque_ptr,llvmflag_sanitizer_attributes, llvmflag_old_function_memory_attributes],
|
|
|
+ { llvmver_16_0 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_opaque_ptr,llvmflag_sanitizer_attributes],
|
|
|
+ { llvmver_xc_15 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_opaque_ptr,llvmflag_sanitizer_attributes],
|
|
|
+ { llvmver_17_0 } [llvmflag_null_pointer_valid_new,llvmflag_constrained_fptrunc_fpext,llvmflag_constrained_fptoi_itofp,llvmflag_array_datalocation,llvmflag_para_attr_type,llvmflag_opaque_ptr,llvmflag_sanitizer_attributes]
|
|
|
);
|
|
|
|
|
|
{ Supported optimizations, only used for information }
|