@@ -15,6 +15,14 @@ extern hw_t hw_arr[4];
15
15
extern const mmio_int reg ;
16
16
extern mmio_int * regs ;
17
17
18
+ // Check name mangling
19
+ typedef volatile unsigned int mmio_uint ;
20
+ typedef unsigned int volatile_mmio_uint ;
21
+ static unsigned int check_typenames (void ) {
22
+ const mmio_uint x = 0u ;
23
+ return (volatile_mmio_uint )x ;
24
+ }
25
+
18
26
static int hw_reg (void ) {
19
27
return hw -> reg ;
20
28
}
@@ -54,42 +62,49 @@ static int ptr_arith(void) {
54
62
// translate-c
55
63
// c_frontend=clang
56
64
//
57
- // pub const mmio_int = c_int;
58
- // pub const mmio_int_ptr = [*c]volatile mmio_int ;
65
+ // pub const volatile_mmio_int = c_int;
66
+ // pub const mmio_int_ptr = [*c]volatile volatile_mmio_int ;
59
67
// pub const hw_t = extern struct {
60
- // reg: mmio_int = @import("std").mem.zeroes(mmio_int ),
61
- // regs: [4]mmio_int = @import("std").mem.zeroes([4]mmio_int ),
62
- // regm: [2][2]mmio_int = @import("std").mem.zeroes([2][2]mmio_int ),
68
+ // reg: volatile_mmio_int = @import("std").mem.zeroes(volatile_mmio_int ),
69
+ // regs: [4]volatile_mmio_int = @import("std").mem.zeroes([4]volatile_mmio_int ),
70
+ // regm: [2][2]volatile_mmio_int = @import("std").mem.zeroes([2][2]volatile_mmio_int ),
63
71
// ptr: mmio_int_ptr = @import("std").mem.zeroes(mmio_int_ptr),
64
72
// };
65
73
// pub extern var hw: [*c]hw_t;
66
74
// pub extern var hw_arr: [4]hw_t;
67
- // pub extern const reg: mmio_int;
68
- // pub extern var regs: [*c]volatile mmio_int;
75
+ // pub extern const reg: volatile_mmio_int;
76
+ // pub extern var regs: [*c]volatile volatile_mmio_int;
77
+ // pub const volatile_mmio_uint_1 = c_uint;
78
+ // pub const volatile_mmio_uint = c_uint;
79
+ // pub fn check_typenames() callconv(.c) c_uint {
80
+ // const x: volatile_mmio_uint_1 = 0;
81
+ // _ = &x;
82
+ // return @as(volatile_mmio_uint, @bitCast(x));
83
+ // }
69
84
// pub fn hw_reg() callconv(.c) c_int {
70
- // return @as([*c]volatile mmio_int , @ptrCast(&hw.*.reg)).*;
85
+ // return @as([*c]volatile volatile_mmio_int , @ptrCast(&hw.*.reg)).*;
71
86
// }
72
- // pub fn hw_reg_ptr() callconv(.c) @TypeOf(@as([*c]volatile mmio_int , @ptrCast(&@as([*c]volatile mmio_int , @ptrCast(&hw.*.reg)).*))) {
73
- // return @as([*c]volatile mmio_int , @ptrCast(&@as([*c]volatile mmio_int , @ptrCast(&hw.*.reg)).*));
87
+ // pub fn hw_reg_ptr() callconv(.c) @TypeOf(@as([*c]volatile volatile_mmio_int , @ptrCast(&@as([*c]volatile volatile_mmio_int , @ptrCast(&hw.*.reg)).*))) {
88
+ // return @as([*c]volatile volatile_mmio_int , @ptrCast(&@as([*c]volatile volatile_mmio_int , @ptrCast(&hw.*.reg)).*));
74
89
// }
75
90
// pub fn hw_ptr() callconv(.c) mmio_int_ptr {
76
91
// return hw.*.ptr;
77
92
// }
78
- // pub fn reg_ptr() callconv(.c) @TypeOf(@as([*c]const volatile mmio_int , @ptrCast(®))) {
79
- // return @as([*c]const volatile mmio_int , @ptrCast(®));
93
+ // pub fn reg_ptr() callconv(.c) @TypeOf(@as([*c]const volatile volatile_mmio_int , @ptrCast(®))) {
94
+ // return @as([*c]const volatile volatile_mmio_int , @ptrCast(®));
80
95
// }
81
96
// pub fn hw_regs_0() callconv(.c) c_int {
82
- // return @as([*c]volatile mmio_int , @ptrCast(&hw.*.regs[@as(c_uint, 0)])).*;
97
+ // return @as([*c]volatile volatile_mmio_int , @ptrCast(&hw.*.regs[@as(c_uint, 0)])).*;
83
98
// }
84
99
// pub fn hw_0_regs_0() callconv(.c) c_int {
85
- // return @as([*c]volatile mmio_int , @ptrCast(&hw_arr[@as(c_uint, 0)].regs[@as(c_uint, 0)])).*;
100
+ // return @as([*c]volatile volatile_mmio_int , @ptrCast(&hw_arr[@as(c_uint, 0)].regs[@as(c_uint, 0)])).*;
86
101
// }
87
102
// pub fn hw_regm_00() callconv(.c) c_int {
88
- // return @as([*c]volatile mmio_int , @ptrCast(&hw.*.regm[@as(c_uint, 0)][@as(c_uint, 0)])).*;
103
+ // return @as([*c]volatile volatile_mmio_int , @ptrCast(&hw.*.regm[@as(c_uint, 0)][@as(c_uint, 0)])).*;
89
104
// }
90
105
// pub fn hw_regm_0_deref() callconv(.c) c_int {
91
- // return @as([*c]volatile mmio_int , @ptrCast(@as([*c]volatile mmio_int , @ptrCast(@alignCast(&hw.*.regm[@as(c_uint, 0)]))))).*;
106
+ // return @as([*c]volatile volatile_mmio_int , @ptrCast(@as([*c]volatile volatile_mmio_int , @ptrCast(@alignCast(&hw.*.regm[@as(c_uint, 0)]))))).*;
92
107
// }
93
108
// pub fn ptr_arith() callconv(.c) c_int {
94
- // return @as([*c]volatile mmio_int , @ptrCast(regs + @as(c_uint, 1))).*;
109
+ // return @as([*c]volatile volatile_mmio_int , @ptrCast(regs + @as(c_uint, 1))).*;
95
110
// }
0 commit comments