Commit Graph

5176 Commits

Author SHA1 Message Date
jakubtomsu
aaea7b27f2 report error when builtin min/max has 1 (non-type) param 2024-12-01 11:54:54 +11:00
Laytan Laats
468c0b573a add missing macos version 2024-12-01 11:54:54 +11:00
gingerBill
57e0c41982 Make lowercase 2024-12-01 11:54:54 +11:00
gingerBill
d613a9ee5a Fix typo 2024-12-01 11:54:54 +11:00
gingerBill
e58ac3cb8d Add -linker:<string> to replace -lld and -radlink 2024-12-01 11:54:54 +11:00
gingerBill
95731aceac Disallow -lld and -radlink to be used together 2024-12-01 11:54:54 +11:00
gingerBill
ec96939953 Add -radlink 2024-12-01 11:54:53 +11:00
gingerBill
e72736a5a8 Remove #relative types from the compiler 2024-12-01 11:54:53 +11:00
gingerBill
31c630dfea Make #relative types an error in parsing 2024-12-01 11:54:53 +11:00
gingerBill
95c812db78 Keep ASAN happy on type assertions 2024-12-01 11:54:53 +11:00
bayo-code
7bd49cf018 Added support for odin build -target:? 2024-12-01 11:54:53 +11:00
bayo-code
9fbde3c1b8 Revert "List the supported targets using odin targets"
This reverts commit b589e3c499.
2024-12-01 11:54:53 +11:00
bayo-code
c73c438db9 List the supported targets using odin targets 2024-12-01 11:54:53 +11:00
gingerBill
ddca55165d Remove duplicates in -defineables 2024-12-01 11:54:53 +11:00
Jeroen van Rijn
826abd6245 && 2024-12-01 11:54:53 +11:00
Jeroen van Rijn
d44f8c377a Phrasing! 2024-12-01 11:54:53 +11:00
Jeroen van Rijn
9ecc378803 Suggest -microarch:native if popcnt instruction is missing.
Fixes #4453.
2024-12-01 11:54:53 +11:00
Morten Hauke Solvang
6c750c6670 Suggestion when assigning enum to bit_set 2024-12-01 11:54:53 +11:00
Dominik Pötzschke
a71832570c added braces 2024-12-01 11:54:53 +11:00
Dominik Pötzschke
f37ec05548 adjust memory allocation 2024-12-01 11:54:52 +11:00
Dominik Pötzschke
841996435b fix: fix windows params bug 2024-12-01 11:54:52 +11:00
0dminnimda
24ec0f0ebf Revert further simplifiction 2024-12-01 11:54:52 +11:00
0dminnimda
a7f32109e8 Simplify further 2024-12-01 11:54:52 +11:00
0dminnimda
4f37b34654 Simplify use of pie 2024-12-01 11:54:52 +11:00
0dminnimda
480f32586e Add support for linking as pie 2024-12-01 11:54:52 +11:00
gingerBill
619b382635 Fix previous commit for arrays 2024-12-01 11:54:52 +11:00
gingerBill
50e46326a6 Fix bug for foo().bar where foo() is a 0-value expression 2024-12-01 11:54:52 +11:00
gingerBill
fafac1bc77 Fix auto_cast matrix bug 2024-12-01 11:54:52 +11:00
peachey2k2
186499c8af Add "-build-mode:dynamic" to the "odin help build" output 2024-12-01 11:54:52 +11:00
bobsayshilol
96e6393614 Plug a memory leak
The call to |array_make()| always allocates and since this variable was
unused it lead to a leak. Simply plug it by removing it.
2024-12-01 11:54:52 +11:00
bobsayshilol
73b6461710 Add missing guards around push/pop pragmas
This matches all the other places where we silence Windows warnings.
2024-12-01 11:54:52 +11:00
bobsayshilol
56094f3580 Fix passing nullptr to args marked as non-null
libstdc++'s |memcpy| and |memset| both state that their inputs should
never be a nullptr since this matches the C spec. Some compilers act on
these hints, so we shouldn't unconditionally call these as it would
signal to the compiler that they can't be nullptrs.

As an example, the following code will always call |do_something()|
when compiled with optimisations since GCC version 4.9:
```
    void clear(void *ptr, int size) {
        memset(ptr, 0, size);
    }
    void example(void *ptr, int size) {
        clear(ptr, size);
        if (ptr != nullptr) do_something();
    }
```
2024-12-01 11:54:52 +11:00
bobsayshilol
30fb2ed59d Avoid undefined arithmetic shifting
The result of a left shift on a positive signed integer (Rune) must fit
into an unsigned integer otherwise it's undefined behaviour, as is left
shifting a negative integer by any amount. This code can only be hit if
|x >= 0xf0| and hence a left shift of 31 will always be undefined
unless the input is 0 or 1.

To avoid hitting this we can instead extend the lowest bit to be the
mask if we assume that ints are 2's complement, which we already do
elsewhere. This generates identical code in testing on Compiler
Explorer and the Odin test suite passes locally with this change.

Note that the original code would change to be defined behaviour in
C++20, however we are currently build with |-std=c++14| in the build
scripts.
2024-12-01 11:54:51 +11:00
bobsayshilol
ddde456af7 Avoid member access through nullptr in debug
If |result_count| is 0 then |results| will be a nullptr and hence the
access |results->Tuple| is undefined behaviour. There's already an
early return in the 0 branch so move that to be the first thing so that
we can guarantee that it's not a nullptr.

Note that technically we take the address of the result so it's not
actually dereferencing it, however UBSan doesn't care about that.
2024-12-01 11:54:51 +11:00
bobsayshilol
b10538da7a Fix invalid union access
UBSan spotted that |src->Basic.kind| had a value outside the range of
|BasicKind| due to it actually being a |Type_Pointer|. Since these are
stored in a union there could be cases where the value of |kind| just
so happens to be |Basic_string|, in which case the branch would have
been taken when it shouldn't have been.

To fix this simply check that it's a |Type_Basic| before treating it as
a |Basic|.
2024-12-01 11:54:51 +11:00
Laytan
7de56ec852 fix #load_directory including nested directories 2024-12-01 11:54:51 +11:00
Jeroen van Rijn
c9c237babf match_exact_value: return when type is compound
fixes #4431
2024-12-01 11:54:51 +11:00
Yawning Angel
111f10cbbf src/big_int.cpp: Use square-multiply for exponentiation
For utterly unrealistic constant sizes, this still crashes on my system,
but it crashes fast due to the OOM killer, and people using rediculously
large exponents get what they deserve.
2024-12-01 11:54:51 +11:00
gingerBill
197339d91d Add warning for unsigned >= 0 like conditions in a for loop 2024-12-01 11:54:51 +11:00
gingerBill
63f880ae80 Fix bug caused due to incorrect type checking looking for context not defined in a context 2024-12-01 11:54:51 +11:00
Laytan Laats
8e6cbe9a29 fix the typeid type kind of a typeid being set to Typeid_Invalid 2024-12-01 11:54:51 +11:00
Laytan Laats
6e534c0e24 check packed load and set alignment on all loads, not just lb_emit_load 2024-12-01 11:54:50 +11:00
Laytan Laats
64fdf6e18f quote the dsymutil argument
Fixes #4417
2024-12-01 11:54:50 +11:00
Misomosi
f1667422e6 Fix #4390 by assigning invalid entity type 2024-12-01 11:54:50 +11:00
Misomosi
cb5e064526 Fixes #4395 by not assuming simd returns val 2024-12-01 11:54:50 +11:00
Lucas Perlind
28d01ce7b5 cached.cpp: Improve internal cached robustness
Do not memory map files; Windows cannot write to a file that is memory
mapped.
Write cache after llvm building. This ensures the cache won't have a
false positive if llvm fails.
2024-12-01 11:54:50 +11:00
laytan
182a916092 fix erronous updating alignment of external global 2024-12-01 11:54:50 +11:00
Laytan Laats
7989d512a0 add macos 15.0.1 to odin report and core/sys/info 2024-10-14 16:19:03 +02:00
gingerBill
417e9bb37f Fix #4373 2024-10-13 22:26:04 +01:00
gingerBill
b839d06ac8 Merge branch 'master' of https://github.com/odin-lang/Odin 2024-10-08 11:58:28 +01:00