Andrew Kelley
5c9826630d
Sema: elide safety of modulus and remainder division sometimes
...
Piggybacking on 40f8f0134f , remainder
division, modulus, and `%` syntax no longer emit safety checks for a
comptime-known denominator.
2022-08-05 21:13:18 -07:00
Veikka Tuominen
42ade6a114
Merge pull request #12300 from antlilja/getParamName
...
Replace param_names and anytype_args fields inside of Fn with functions
2022-08-05 15:29:59 +03:00
Veikka Tuominen
4ab60dc18b
Sema: add error for dependency loops
2022-08-03 17:10:39 +03:00
Veikka Tuominen
aa78ebaf95
Sema: improve circular dependency errors
2022-08-03 16:45:33 +03:00
Veikka Tuominen
797ded47f0
Sema: move last error message from Inlining to Sema
2022-08-03 16:45:33 +03:00
Veikka Tuominen
6547c3887e
Sema: add error for closure capture at runtime
2022-08-03 16:45:33 +03:00
Veikka Tuominen
14f0b70570
Sema: add safety for sentinel slice
2022-08-02 18:34:30 +03:00
Veikka Tuominen
292906fb23
Sema: fix reify Fn alignment and args
2022-08-02 18:33:03 +03:00
Veikka Tuominen
e47706f344
Sema: validate packed struct field types
2022-08-01 23:59:40 +03:00
Veikka Tuominen
f1768b40b2
stage2: better source location for var decls
2022-08-01 23:37:01 +03:00
Veikka Tuominen
57f9405a8f
Sema: validate bitcast operand type
2022-08-01 23:37:01 +03:00
antlilja
ab3b614a33
Removed anytype_args field from Fn
...
anytype_args field was replaced with isAnytypeParam function.
2022-08-01 14:51:54 +02:00
antlilja
cd8070f94f
Removed param_names from Fn inside Module.zig
...
Removed the copy of param_names inside of Fn and changed to
implementation of getParamName to fetch to parameter name from the ZIR.
The signature of getParamName was also changed to take an additional
*Module argument.
2022-08-01 14:51:50 +02:00
Veikka Tuominen
02dc073260
Sema: check comptime slice sentinel
2022-07-30 11:07:37 +03:00
Veikka Tuominen
4758752e5d
Sema: implement coercion from tuples to tuples
...
Closes #12242
2022-07-30 00:18:08 +03:00
Veikka Tuominen
17622b9db1
Sema: implement @Type for functions
...
Closes #12280
2022-07-30 00:18:08 +03:00
Andrew Kelley
a7a6f38eeb
Sema: fix runtime safety for integer overflow with vectors
2022-07-29 11:03:12 -07:00
Andrew Kelley
40f8f0134f
Sema: enhance div_trunc, div_exact, div_floor
...
* No longer emit div_exact AIR instruction that can produce a
remainder, invoking undefined behavior.
* div_trunc, div_exact, div_floor are extracted from analyzeArithmetic
and directly handled similarly to div_trunc, integrating them with
integer overflow safety checking.
* Also they no longer emit divide-by-zero safety checking when RHS
is comptime known to be non-zero.
2022-07-29 02:35:06 -07:00
Andrew Kelley
1fc24e8d80
Sema: enhance div instruction analysis
...
Concrete improvements:
* Added safety for integer overflow (-MAX_INT/-1)
* Omit division by zero safety check when RHS is comptime known to
be non-zero.
* Avoid emitting `_optimized` variants of AIR instructions for integers
(this suffix is intended to be used for floats only).
Subjective changes: I extracted the div logic out from analyzeArithmetic
in order to reduce the amount of branches - not for performance reasons
but for code clarity. It is more lines of code however, and some logic
is duplicated.
2022-07-29 02:35:06 -07:00
Veikka Tuominen
fdaf9c40d6
stage2: handle tuple init edge cases
2022-07-29 10:12:36 +03:00
Veikka Tuominen
9e0a930ce3
stage2: add error for comptime control flow in runtime block
2022-07-29 10:08:35 +03:00
Meghan
02acde99a1
stage2: ensure 'std', 'builtin', and 'root' is always available to @import
2022-07-28 15:19:17 -07:00
Andrew Kelley
dfc7493dcb
Merge pull request #12256 from Vexu/stage2
...
stage2 typeInfo UAF fix + more
2022-07-27 16:11:07 -07:00
Veikka Tuominen
793db63746
Sema: copy fn param ty in zirTypeInfo
...
Closes #12247
2022-07-27 18:27:17 +03:00
r00ster91
baafb8a491
std.fmt: add more invalid format string errors
2022-07-27 18:07:53 +03:00
Veikka Tuominen
3818d63dd8
Sema: resolve pointee type in zirReify
...
Closes #12223
2022-07-27 17:11:46 +03:00
Andrew Kelley
c8c798685f
Merge pull request #12244 from Vexu/stage2
...
Minor stage2 fixes
2022-07-26 17:41:26 -07:00
Veikka Tuominen
d6e3988fe8
Sema: better error when coercing error sets
2022-07-26 23:29:54 +03:00
Veikka Tuominen
7862ab9f41
Sema: disable "unreachable else prong" error for error sets for now
...
Closes #11798
2022-07-26 16:40:24 +03:00
Veikka Tuominen
5d99e5ecd4
Sema: improve expression value ignored error
...
Closes #4483
2022-07-26 16:40:24 +03:00
Veikka Tuominen
3d18c8c130
Sema: resolve lazy values for compile log
...
Close #12204
2022-07-26 16:40:24 +03:00
Veikka Tuominen
d78532f462
Sema: give comptime_field_ptr priority over field_ptr in tuples
...
Closes #11983
2022-07-26 16:40:24 +03:00
Veikka Tuominen
825fc654b6
Sema: better source location for builtin options
2022-07-26 12:14:59 +03:00
Veikka Tuominen
2f34d06d01
Sema: analyzeInlineCallArg needs a block for the arg and the param
2022-07-25 22:04:08 +03:00
Meghan
dea437edfb
stage2: implement noinline fn
2022-07-24 11:56:33 +03:00
Andreas Reischuck
903bed931d
report better error for package not found in stage2
2022-07-24 11:55:37 +03:00
Veikka Tuominen
baf516218e
Sema: don't add union field access safety check for single field unions
2022-07-23 15:40:12 +03:00
Veikka Tuominen
2436dd2c1b
Sema: validate duplicate fields in anon structs
2022-07-23 15:40:12 +03:00
Veikka Tuominen
5b29275240
Sema: add some more 'declared here' notes
2022-07-23 15:40:12 +03:00
Veikka Tuominen
881c0cb20b
Sema: add default value here note to invalid comptime field store error
2022-07-23 15:40:12 +03:00
Veikka Tuominen
15dddfd84d
AstGen: make comptime fields in packed and extern structs compile errors
2022-07-23 15:40:12 +03:00
Veikka Tuominen
0ef4cc738b
Sema: check for zero length slices in @alignCast safety
2022-07-23 15:40:12 +03:00
Veikka Tuominen
d75fa86d70
stage2: implement @setFloatMode
2022-07-23 15:40:12 +03:00
Veikka Tuominen
585c160c20
Sema: handle store to comptime field when ResultLoc == .none
2022-07-23 15:40:12 +03:00
Veikka Tuominen
9465906775
Sema: return .comptime_field_ptrs for tuples
2022-07-23 15:40:12 +03:00
Veikka Tuominen
cf87026e52
Sema: @alignCast safety
2022-07-23 15:40:11 +03:00
Veikka Tuominen
711b656773
Sema: @floatToInt safety
2022-07-23 15:40:11 +03:00
Veikka Tuominen
ff7ec4efb5
Sema: bad union field access safety
2022-07-23 15:40:11 +03:00
Veikka Tuominen
55fe34100f
Sema: exact division safety
2022-07-23 15:40:11 +03:00
Veikka Tuominen
76d099950a
Sema: cast negative to unsigned safety
2022-07-23 15:40:11 +03:00