authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-07 11:47:18-05:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2020-02-07 11:47:18-05:00
loga1576225ca670f729711d906ef37e47c5bad3ae4
tree1f4899499854fc158444e92bf31f73c91e90ac5c
parent5076f2d4f6918946616504d22907c9f80601caf8
parente3447e67fe41bfb56ab24fb2758966d34ed5cd89
signature Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #4409 from LemonBoy/llvm-10-fpchanges

LLVM10 changes

6 files changed, 98 insertions(+), 78 deletions(-)

src/codegen.cpp+5-10
......@@ -564,8 +564,7 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) {
564564 add_uwtable_attr(g, llvm_fn);
565565 addLLVMFnAttr(llvm_fn, "nobuiltin");
566566 if (codegen_have_frame_pointer(g) && fn->fn_inline != FnInlineAlways) {
567 ZigLLVMAddFunctionAttr(llvm_fn, "no-frame-pointer-elim", "true");
568 ZigLLVMAddFunctionAttr(llvm_fn, "no-frame-pointer-elim-non-leaf", nullptr);
567 ZigLLVMAddFunctionAttr(llvm_fn, "frame-pointer", "all");
569568 }
570569 if (fn->section_name) {
571570 LLVMSetSection(llvm_fn, buf_ptr(fn->section_name));
......@@ -1128,8 +1127,7 @@ static LLVMValueRef get_add_error_return_trace_addr_fn(CodeGen *g) {
11281127 // on any architecture.
11291128 addLLVMArgAttr(fn_val, (unsigned)0, "nonnull");
11301129 if (codegen_have_frame_pointer(g)) {
1131 ZigLLVMAddFunctionAttr(fn_val, "no-frame-pointer-elim", "true");
1132 ZigLLVMAddFunctionAttr(fn_val, "no-frame-pointer-elim-non-leaf", nullptr);
1130 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");
11331131 }
11341132
11351133 LLVMBasicBlockRef entry_block = LLVMAppendBasicBlock(fn_val, "Entry");
......@@ -1206,8 +1204,7 @@ static LLVMValueRef get_return_err_fn(CodeGen *g) {
12061204 addLLVMFnAttr(fn_val, "nounwind");
12071205 add_uwtable_attr(g, fn_val);
12081206 if (codegen_have_frame_pointer(g)) {
1209 ZigLLVMAddFunctionAttr(fn_val, "no-frame-pointer-elim", "true");
1210 ZigLLVMAddFunctionAttr(fn_val, "no-frame-pointer-elim-non-leaf", nullptr);
1207 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");
12111208 }
12121209
12131210 // this is above the ZigLLVMClearCurrentDebugLocation
......@@ -1290,8 +1287,7 @@ static LLVMValueRef get_safety_crash_err_fn(CodeGen *g) {
12901287 addLLVMFnAttr(fn_val, "nounwind");
12911288 add_uwtable_attr(g, fn_val);
12921289 if (codegen_have_frame_pointer(g)) {
1293 ZigLLVMAddFunctionAttr(fn_val, "no-frame-pointer-elim", "true");
1294 ZigLLVMAddFunctionAttr(fn_val, "no-frame-pointer-elim-non-leaf", nullptr);
1290 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");
12951291 }
12961292 // Not setting alignment here. See the comment above about
12971293 // "Cannot getTypeInfo() on a type that is unsized!"
......@@ -4995,8 +4991,7 @@ static LLVMValueRef get_enum_tag_name_function(CodeGen *g, ZigType *enum_type) {
49954991 addLLVMFnAttr(fn_val, "nounwind");
49964992 add_uwtable_attr(g, fn_val);
49974993 if (codegen_have_frame_pointer(g)) {
4998 ZigLLVMAddFunctionAttr(fn_val, "no-frame-pointer-elim", "true");
4999 ZigLLVMAddFunctionAttr(fn_val, "no-frame-pointer-elim-non-leaf", nullptr);
4994 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");
50004995 }
50014996
50024997 LLVMBasicBlockRef prev_block = LLVMGetInsertBlock(g->builder);
test/stack_traces.zig+90-43
......@@ -41,6 +41,21 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
4141 \\ try foo();
4242 \\}
4343 ;
44 const source_dumpCurrentStackTrace =
45 \\const std = @import("std");
46 \\
47 \\fn bar() void {
48 \\ std.debug.dumpCurrentStackTrace(@returnAddress());
49 \\}
50 \\fn foo() void {
51 \\ bar();
52 \\}
53 \\pub fn main() u8 {
54 \\ foo();
55 \\ return 1;
56 \\}
57 ;
58
4459 // zig fmt: off
4560 switch (builtin.os) {
4661 .freebsd => {
......@@ -49,25 +64,25 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
4964 source_return,
5065 [_][]const u8{
5166 // debug
52 \\error: TheSkyIsFalling
67 \\error: TheSkyIsFalling
5368 \\source.zig:4:5: [address] in main (test)
5469 \\ return error.TheSkyIsFalling;
5570 \\ ^
5671 \\
5772 ,
5873 // release-safe
59 \\error: TheSkyIsFalling
74 \\error: TheSkyIsFalling
6075 \\source.zig:4:5: [address] in std.start.main (test)
6176 \\ return error.TheSkyIsFalling;
6277 \\ ^
6378 \\
6479 ,
6580 // release-fast
66 \\error: TheSkyIsFalling
81 \\error: TheSkyIsFalling
6782 \\
6883 ,
6984 // release-small
70 \\error: TheSkyIsFalling
85 \\error: TheSkyIsFalling
7186 \\
7287 },
7388 );
......@@ -76,7 +91,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
7691 source_try_return,
7792 [_][]const u8{
7893 // debug
79 \\error: TheSkyIsFalling
94 \\error: TheSkyIsFalling
8095 \\source.zig:4:5: [address] in foo (test)
8196 \\ return error.TheSkyIsFalling;
8297 \\ ^
......@@ -86,7 +101,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
86101 \\
87102 ,
88103 // release-safe
89 \\error: TheSkyIsFalling
104 \\error: TheSkyIsFalling
90105 \\source.zig:4:5: [address] in std.start.main (test)
91106 \\ return error.TheSkyIsFalling;
92107 \\ ^
......@@ -96,11 +111,11 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
96111 \\
97112 ,
98113 // release-fast
99 \\error: TheSkyIsFalling
114 \\error: TheSkyIsFalling
100115 \\
101116 ,
102117 // release-small
103 \\error: TheSkyIsFalling
118 \\error: TheSkyIsFalling
104119 \\
105120 },
106121 );
......@@ -109,7 +124,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
109124 source_try_try_return_return,
110125 [_][]const u8{
111126 // debug
112 \\error: TheSkyIsFalling
127 \\error: TheSkyIsFalling
113128 \\source.zig:12:5: [address] in make_error (test)
114129 \\ return error.TheSkyIsFalling;
115130 \\ ^
......@@ -125,7 +140,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
125140 \\
126141 ,
127142 // release-safe
128 \\error: TheSkyIsFalling
143 \\error: TheSkyIsFalling
129144 \\source.zig:12:5: [address] in std.start.main (test)
130145 \\ return error.TheSkyIsFalling;
131146 \\ ^
......@@ -141,11 +156,11 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
141156 \\
142157 ,
143158 // release-fast
144 \\error: TheSkyIsFalling
159 \\error: TheSkyIsFalling
145160 \\
146161 ,
147162 // release-small
148 \\error: TheSkyIsFalling
163 \\error: TheSkyIsFalling
149164 \\
150165 },
151166 );
......@@ -156,25 +171,25 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
156171 source_return,
157172 [_][]const u8{
158173 // debug
159 \\error: TheSkyIsFalling
174 \\error: TheSkyIsFalling
160175 \\source.zig:4:5: [address] in main (test)
161176 \\ return error.TheSkyIsFalling;
162177 \\ ^
163178 \\
164179 ,
165180 // release-safe
166 \\error: TheSkyIsFalling
181 \\error: TheSkyIsFalling
167182 \\source.zig:4:5: [address] in std.start.posixCallMainAndExit (test)
168183 \\ return error.TheSkyIsFalling;
169184 \\ ^
170185 \\
171186 ,
172187 // release-fast
173 \\error: TheSkyIsFalling
188 \\error: TheSkyIsFalling
174189 \\
175190 ,
176191 // release-small
177 \\error: TheSkyIsFalling
192 \\error: TheSkyIsFalling
178193 \\
179194 },
180195 );
......@@ -183,7 +198,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
183198 source_try_return,
184199 [_][]const u8{
185200 // debug
186 \\error: TheSkyIsFalling
201 \\error: TheSkyIsFalling
187202 \\source.zig:4:5: [address] in foo (test)
188203 \\ return error.TheSkyIsFalling;
189204 \\ ^
......@@ -193,7 +208,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
193208 \\
194209 ,
195210 // release-safe
196 \\error: TheSkyIsFalling
211 \\error: TheSkyIsFalling
197212 \\source.zig:4:5: [address] in std.start.posixCallMainAndExit (test)
198213 \\ return error.TheSkyIsFalling;
199214 \\ ^
......@@ -203,11 +218,11 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
203218 \\
204219 ,
205220 // release-fast
206 \\error: TheSkyIsFalling
221 \\error: TheSkyIsFalling
207222 \\
208223 ,
209224 // release-small
210 \\error: TheSkyIsFalling
225 \\error: TheSkyIsFalling
211226 \\
212227 },
213228 );
......@@ -216,7 +231,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
216231 source_try_try_return_return,
217232 [_][]const u8{
218233 // debug
219 \\error: TheSkyIsFalling
234 \\error: TheSkyIsFalling
220235 \\source.zig:12:5: [address] in make_error (test)
221236 \\ return error.TheSkyIsFalling;
222237 \\ ^
......@@ -232,7 +247,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
232247 \\
233248 ,
234249 // release-safe
235 \\error: TheSkyIsFalling
250 \\error: TheSkyIsFalling
236251 \\source.zig:12:5: [address] in std.start.posixCallMainAndExit (test)
237252 \\ return error.TheSkyIsFalling;
238253 \\ ^
......@@ -248,14 +263,46 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
248263 \\
249264 ,
250265 // release-fast
251 \\error: TheSkyIsFalling
266 \\error: TheSkyIsFalling
252267 \\
253268 ,
254269 // release-small
255 \\error: TheSkyIsFalling
270 \\error: TheSkyIsFalling
256271 \\
257272 },
258273 );
274 cases.addCase(
275 "dumpCurrentStackTrace",
276 source_dumpCurrentStackTrace,
277 [_][]const u8{
278 // debug
279 \\source.zig:7:8: [address] in foo (test)
280 \\ bar();
281 \\ ^
282 \\source.zig:10:8: [address] in main (test)
283 \\ foo();
284 \\ ^
285 \\start.zig:247:29: [address] in std.start.posixCallMainAndExit (test)
286 \\ return root.main();
287 \\ ^
288 \\start.zig:114:5: [address] in std.start._start (test)
289 \\ @call(.{ .modifier = .never_inline }, posixCallMainAndExit, .{});
290 \\ ^
291 \\
292 ,
293 // release-safe
294 \\start.zig:114:5: [address] in std.start._start (test)
295 \\ @call(.{ .modifier = .never_inline }, posixCallMainAndExit, .{});
296 \\ ^
297 \\
298 ,
299 // release-fast
300 \\
301 ,
302 // release-small
303 \\
304 },
305 );
259306 },
260307 .macosx => {
261308 cases.addCase(
......@@ -263,25 +310,25 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
263310 source_return,
264311 [_][]const u8{
265312 // debug
266 \\error: TheSkyIsFalling
313 \\error: TheSkyIsFalling
267314 \\source.zig:4:5: [address] in _main.0 (test.o)
268315 \\ return error.TheSkyIsFalling;
269316 \\ ^
270317 \\
271318 ,
272319 // release-safe
273 \\error: TheSkyIsFalling
320 \\error: TheSkyIsFalling
274321 \\source.zig:4:5: [address] in _main (test.o)
275322 \\ return error.TheSkyIsFalling;
276323 \\ ^
277324 \\
278325 ,
279326 // release-fast
280 \\error: TheSkyIsFalling
327 \\error: TheSkyIsFalling
281328 \\
282329 ,
283330 // release-small
284 \\error: TheSkyIsFalling
331 \\error: TheSkyIsFalling
285332 \\
286333 },
287334 );
......@@ -290,7 +337,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
290337 source_try_return,
291338 [_][]const u8{
292339 // debug
293 \\error: TheSkyIsFalling
340 \\error: TheSkyIsFalling
294341 \\source.zig:4:5: [address] in _foo (test.o)
295342 \\ return error.TheSkyIsFalling;
296343 \\ ^
......@@ -300,7 +347,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
300347 \\
301348 ,
302349 // release-safe
303 \\error: TheSkyIsFalling
350 \\error: TheSkyIsFalling
304351 \\source.zig:4:5: [address] in _main (test.o)
305352 \\ return error.TheSkyIsFalling;
306353 \\ ^
......@@ -310,11 +357,11 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
310357 \\
311358 ,
312359 // release-fast
313 \\error: TheSkyIsFalling
360 \\error: TheSkyIsFalling
314361 \\
315362 ,
316363 // release-small
317 \\error: TheSkyIsFalling
364 \\error: TheSkyIsFalling
318365 \\
319366 },
320367 );
......@@ -323,7 +370,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
323370 source_try_try_return_return,
324371 [_][]const u8{
325372 // debug
326 \\error: TheSkyIsFalling
373 \\error: TheSkyIsFalling
327374 \\source.zig:12:5: [address] in _make_error (test.o)
328375 \\ return error.TheSkyIsFalling;
329376 \\ ^
......@@ -339,7 +386,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
339386 \\
340387 ,
341388 // release-safe
342 \\error: TheSkyIsFalling
389 \\error: TheSkyIsFalling
343390 \\source.zig:12:5: [address] in _main (test.o)
344391 \\ return error.TheSkyIsFalling;
345392 \\ ^
......@@ -355,11 +402,11 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
355402 \\
356403 ,
357404 // release-fast
358 \\error: TheSkyIsFalling
405 \\error: TheSkyIsFalling
359406 \\
360407 ,
361408 // release-small
362 \\error: TheSkyIsFalling
409 \\error: TheSkyIsFalling
363410 \\
364411 },
365412 );
......@@ -370,7 +417,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
370417 source_return,
371418 [_][]const u8{
372419 // debug
373 \\error: TheSkyIsFalling
420 \\error: TheSkyIsFalling
374421 \\source.zig:4:5: [address] in main (test.obj)
375422 \\ return error.TheSkyIsFalling;
376423 \\ ^
......@@ -380,11 +427,11 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
380427 // --disabled-- results in segmenetation fault
381428 "",
382429 // release-fast
383 \\error: TheSkyIsFalling
430 \\error: TheSkyIsFalling
384431 \\
385432 ,
386433 // release-small
387 \\error: TheSkyIsFalling
434 \\error: TheSkyIsFalling
388435 \\
389436 },
390437 );
......@@ -406,11 +453,11 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
406453 // --disabled-- results in segmenetation fault
407454 "",
408455 // release-fast
409 \\error: TheSkyIsFalling
456 \\error: TheSkyIsFalling
410457 \\
411458 ,
412459 // release-small
413 \\error: TheSkyIsFalling
460 \\error: TheSkyIsFalling
414461 \\
415462 },
416463 );
......@@ -438,11 +485,11 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
438485 // --disabled-- results in segmenetation fault
439486 "",
440487 // release-fast
441 \\error: TheSkyIsFalling
488 \\error: TheSkyIsFalling
442489 \\
443490 ,
444491 // release-small
445 \\error: TheSkyIsFalling
492 \\error: TheSkyIsFalling
446493 \\
447494 },
448495 );
test/stage1/behavior/atomics.zig+3-1
......@@ -146,7 +146,9 @@ fn testAtomicStore() void {
146146}
147147
148148test "atomicrmw with floats" {
149 if (builtin.arch == .aarch64 or builtin.arch == .arm)
149 if (builtin.arch == .aarch64 or
150 builtin.arch == .arm or
151 builtin.arch == .riscv64)
150152 return;
151153 testAtomicRmwFloat();
152154}
test/stage1/behavior/cast.zig-4
......@@ -261,10 +261,6 @@ fn testPeerErrorAndArray2(x: u8) anyerror![]const u8 {
261261}
262262
263263test "@floatToInt" {
264 if (@import("builtin").arch == .riscv64) {
265 // TODO: https://github.com/ziglang/zig/issues/3338
266 return error.SkipZigTest;
267 }
268264 testFloatToInts();
269265 comptime testFloatToInts();
270266}
test/stage1/behavior/math.zig-12
......@@ -7,10 +7,6 @@ const minInt = std.math.minInt;
77const mem = std.mem;
88
99test "division" {
10 if (@import("builtin").arch == .riscv64) {
11 // TODO: https://github.com/ziglang/zig/issues/3338
12 return error.SkipZigTest;
13 }
1410 testDivision();
1511 comptime testDivision();
1612}
......@@ -578,10 +574,6 @@ fn remdiv(comptime T: type) void {
578574}
579575
580576test "@sqrt" {
581 if (@import("builtin").arch == .riscv64) {
582 // TODO: https://github.com/ziglang/zig/issues/3338
583 return error.SkipZigTest;
584 }
585577 testSqrt(f64, 12.0);
586578 comptime testSqrt(f64, 12.0);
587579 testSqrt(f32, 13.0);
......@@ -627,10 +619,6 @@ test "vector integer addition" {
627619}
628620
629621test "NaN comparison" {
630 if (@import("builtin").arch == .riscv64) {
631 // TODO: https://github.com/ziglang/zig/issues/3338
632 return error.SkipZigTest;
633 }
634622 if (std.Target.current.isWindows()) {
635623 // TODO https://github.com/ziglang/zig/issues/508
636624 return error.SkipZigTest;
test/stage1/behavior/widening.zig-8
......@@ -19,10 +19,6 @@ test "implicit unsigned integer to signed integer" {
1919}
2020
2121test "float widening" {
22 if (@import("builtin").arch == .riscv64) {
23 // TODO:
24 return error.SkipZigTest;
25 }
2622 var a: f16 = 12.34;
2723 var b: f32 = a;
2824 var c: f64 = b;
......@@ -35,10 +31,6 @@ test "float widening" {
3531test "float widening f16 to f128" {
3632 // TODO https://github.com/ziglang/zig/issues/3282
3733 if (@import("builtin").arch == .aarch64) return error.SkipZigTest;
38 if (@import("builtin").arch == .riscv64) {
39 // TODO: https://github.com/ziglang/zig/issues/3338
40 return error.SkipZigTest;
41 }
4234
4335 var x: f16 = 12.34;
4436 var y: f128 = x;