Commit Graph

636 Commits

Author SHA1 Message Date
gingerBill
bca08d3b85 Make -no-dynamic-literals the default now 2025-01-05 13:33:06 +00:00
gingerBill
a25a9e6ebe Check for LLVM_VERSION_MAJOR >= 18 2024-09-09 14:47:44 +01:00
gingerBill
0dddd2b97e Add internal flag
`-internal-fast-isel`
2024-09-09 14:39:53 +01:00
Laytan
ca6ef95b03 add support for linux_riscv64 and freestanding_riscv64 2024-08-20 14:06:40 +02:00
Laytan Laats
4d1d754cae fix specific_union_variant in map_keyed_by_union not converting to union type 2024-07-29 02:32:13 +02:00
gingerBill
bc5b41938e Fix #3964 2024-07-23 02:40:51 +01:00
gingerBill
7d643bcae3 Make linkage weak in certain places 2024-07-15 12:30:32 +01:00
gingerBill
549311fac9 Fix global variables being "missing" with -use-separate-modules 2024-07-15 12:21:42 +01:00
gingerBill
c5decd3eae Fix possible race and correct linkage _after_ generation 2024-07-15 11:49:07 +01:00
gingerBill
a867378418 Default to -o:minimal again 2024-07-14 15:55:26 +01:00
gingerBill
34c6868e78 Merge pull request #3895 from laytan/fix-optimization-mode-attribute
remove misleading @(optimization_mode) values and make "none" inhibit optimizations
2024-07-10 13:22:57 +01:00
gingerBill
87ac68fcf2 Add -internal-cached 2024-07-08 23:39:14 +01:00
Laytan Laats
1a20b78633 remove misleading @(optimization_mode) values and make "none" inhibit optimizations 2024-07-08 21:06:57 +02:00
gingerBill
2c9ef6907a Clean up timings messages showing used module count 2024-07-08 15:30:33 +01:00
gingerBill
2a219fa830 Correct -use-separate-module behaviour 2024-07-08 15:13:40 +01:00
gingerBill
8491e2491c Experiment with different uses of -use-separate-modules 2024-07-08 14:48:59 +01:00
gingerBill
7dd4cccce7 Use a temporary directory for -use-separate-modules
Windows only currently
2024-07-08 14:21:07 +01:00
gingerBill
0f664893dd Add sort for global types and procedures 2024-07-08 13:59:25 +01:00
Laytan Laats
b79d7e6917 disallow non-global foreign import of variables on wasm 2024-06-28 01:34:09 +02:00
Jeroen van Rijn
ed7d34beb0 Avoid sporadic wasm crash 2024-06-28 00:39:51 +02:00
gingerBill
1dc90103bd Make verification ignorable with a define flag 2024-06-11 12:30:24 +01:00
gingerBill
0b02c67cdf Minor clean up for backend 2024-06-11 12:19:52 +01:00
gingerBill
9b0e87544a Unify LLVMVerifyFunction invocations into on place 2024-06-11 12:07:22 +01:00
gingerBill
9ef43fc782 Add @(rodata) 2024-06-06 15:16:34 +01:00
Laytan Laats
e3e04ffa22 llvm-18: enable sroa and static map calls 2024-05-07 16:52:46 +02:00
Laytan Laats
bb58926b7a llvm 18: general unix and darwin specifics 2024-05-07 16:52:46 +02:00
Laytan Laats
25f1d0906d compiler: improve target features support 2024-05-02 00:59:52 +02:00
gingerBill
2416380f34 Enforce as global constant 2024-04-18 12:56:18 +01:00
Laytan Laats
9647cb74ad debug info fixes/refactor
This fixes (on my end) #3340, #3117, #2945, #2922, and #2762

A general refactor of debug info generation in order to fix issues and
increase stability.

What I believe is the root cause of a bunch of issues is that we use the
temporary metadata/forward declarations too much (/ hold onto them for
too long). It seems to cause problems with the reference counting inside
LLVM.

This PR reduces the use of these forward declarations to a minimum, it
creates it, fills in the fields, and resolves it, instead of waiting
until the end of generating code.

Some smaller issues I came across have also been solved.
2024-04-01 16:28:44 +02:00
gingerBill
433109ff52 Replace gb_exit(1) with exit_with_errors() where appropriate 2024-03-19 16:29:45 +00:00
gingerBill
9a2fc6cf4c Serialize errors to make them sortable, deterministic, and generally more control 2024-03-19 15:34:29 +00:00
avanspector
5d6b4eda1e Merge branch 'odin-lang:master' into haiku 2024-02-29 03:16:04 +01:00
gingerBill
5107bdc06b Make lb_type_info use a procedure to load the global value 2024-02-27 15:45:53 +00:00
gingerBill
c6ee025063 Add type info generation for bit_field 2024-02-27 15:27:51 +00:00
gingerBill
826cf1508b Remove __$startup_type_info procedure 2024-02-27 15:09:33 +00:00
gingerBill
51edf01162 Change type info table to be initializable constantly
[]Type_Info -> []^Type_Info
2024-02-27 15:07:55 +00:00
avanspector
0a6673220b Merge branch 'haiku' of https://github.com/avanspector/Odin into haiku 2024-02-25 02:24:58 +01:00
avanspector
88add0b6b1 Improve Haiku support 2024-02-25 02:24:52 +01:00
gingerBill
a4b8c1ea17 Begin work adding bit_field 2024-02-22 15:55:54 +00:00
gingerBill
abaa906f34 Fix lb_hasher_proc_for_type 2024-02-07 11:05:38 +00:00
gingerBill
cec08114fd Mock out comments 2024-02-02 14:57:22 +00:00
codename-irvin
76f52dd6c9 Add freestanding aarch64 target 2024-01-15 19:49:34 -05:00
gingerBill
f4782157d3 Implement instrumentation pass 2024-01-07 21:34:44 +00:00
Yawning Angel
cd65a15d81 src: enable_target_feature should add features, not overwrite
`llvm_features` being empty is the default state, and implies the
presence of certain features.

Previously if any target features were explicitly enabled by the
`enable_target_feature` attribute, they were added comma separated
to `llvm_features`.

For example: `lzcnt,popcnt,...,sse4.2,sse`

This was causing LLVM to try to target a CPU that *ONLY* has the
explicitly enabled features.  This now will prefix explicitly enabled
features with a `+`, and preserve the existing `llvm_features` string
by appending to it if it is set.
2024-01-07 20:04:40 +09:00
gingerBill
feba52002e Reduce repetition on initializing global type info member arrays 2023-12-13 17:46:00 +00:00
Jeroen van Rijn
c5c46c5073 Silence writable string warnings when compiling Odin on Linux. 2023-12-03 18:08:18 +01:00
Jeroen van Rijn
f903951016 Facored out get_default_microarchitecture
Moved `generic` -> `x86-64-v2` selection into its own procedure so that `llvm_backend.cpp` and `main.cpp` can share the same logic.
2023-11-10 20:14:00 +01:00
Jeroen van Rijn
e19460cbd7 Add -microarch:? 2023-11-10 19:37:08 +01:00
Laytan
9b68671082 Fix empty pass because of trailing comma 2023-10-31 19:29:54 +01:00
gingerBill
b7af4e7f6b Explicitly write out the passes for each level and remove certain passes 2023-10-30 12:31:24 +00:00