| author | |
| committer | |
| log | 101aac92c258af9f25520c36f06b2ce8335d7f9a |
| tree | 7ff9258c3b713734519f6395b3fa9f23ccff2d07 |
| parent | 1c4c826a505b3f4863a0125f7915273ad2e7c1c0 |
9 files changed, 40 insertions(+), 15 deletions(-)
lib/std/c.zig+12-4| ... | @@ -219,7 +219,11 @@ pub extern "c" fn utimes(path: [*:0]const u8, times: *[2]c.timeval) c_int; | ... | @@ -219,7 +219,11 @@ pub extern "c" fn utimes(path: [*:0]const u8, times: *[2]c.timeval) c_int; |
| 219 | pub extern "c" fn utimensat(dirfd: c.fd_t, pathname: [*:0]const u8, times: *[2]c.timespec, flags: u32) c_int; | 219 | pub extern "c" fn utimensat(dirfd: c.fd_t, pathname: [*:0]const u8, times: *[2]c.timespec, flags: u32) c_int; |
| 220 | pub extern "c" fn futimens(fd: c.fd_t, times: *const [2]c.timespec) c_int; | 220 | pub extern "c" fn futimens(fd: c.fd_t, times: *const [2]c.timespec) c_int; |
| 221 | 221 | ||
| 222 | pub extern "c" fn pthread_create(noalias newthread: *pthread_t, noalias attr: ?*const c.pthread_attr_t, start_routine: fn (?*anyopaque) callconv(.C) ?*anyopaque, noalias arg: ?*anyopaque) c.E; | 222 | pub extern "c" fn pthread_create(noalias newthread: *pthread_t, noalias attr: ?*const c.pthread_attr_t, start_routine: PThreadStartFn, noalias arg: ?*anyopaque) c.E; |
| 223 | const PThreadStartFn = if (builtin.zig_backend == .stage1) | ||
| 224 | fn (?*anyopaque) callconv(.C) ?*anyopaque | ||
| 225 | else | ||
| 226 | *const fn (?*anyopaque) callconv(.C) ?*anyopaque; | ||
| 223 | pub extern "c" fn pthread_attr_init(attr: *c.pthread_attr_t) c.E; | 227 | pub extern "c" fn pthread_attr_init(attr: *c.pthread_attr_t) c.E; |
| 224 | pub extern "c" fn pthread_attr_setstack(attr: *c.pthread_attr_t, stackaddr: *anyopaque, stacksize: usize) c.E; | 228 | pub extern "c" fn pthread_attr_setstack(attr: *c.pthread_attr_t, stackaddr: *anyopaque, stacksize: usize) c.E; |
| 225 | pub extern "c" fn pthread_attr_setstacksize(attr: *c.pthread_attr_t, stacksize: usize) c.E; | 229 | pub extern "c" fn pthread_attr_setstacksize(attr: *c.pthread_attr_t, stacksize: usize) c.E; |
| ... | @@ -229,10 +233,14 @@ pub extern "c" fn pthread_self() pthread_t; | ... | @@ -229,10 +233,14 @@ pub extern "c" fn pthread_self() pthread_t; |
| 229 | pub extern "c" fn pthread_join(thread: pthread_t, arg_return: ?*?*anyopaque) c.E; | 233 | pub extern "c" fn pthread_join(thread: pthread_t, arg_return: ?*?*anyopaque) c.E; |
| 230 | pub extern "c" fn pthread_detach(thread: pthread_t) c.E; | 234 | pub extern "c" fn pthread_detach(thread: pthread_t) c.E; |
| 231 | pub extern "c" fn pthread_atfork( | 235 | pub extern "c" fn pthread_atfork( |
| 232 | prepare: ?fn () callconv(.C) void, | 236 | prepare: ?PThreadForkFn, |
| 233 | parent: ?fn () callconv(.C) void, | 237 | parent: ?PThreadForkFn, |
| 234 | child: ?fn () callconv(.C) void, | 238 | child: ?PThreadForkFn, |
| 235 | ) c_int; | 239 | ) c_int; |
| 240 | const PThreadForkFn = if (builtin.zig_backend == .stage1) | ||
| 241 | fn () callconv(.C) void | ||
| 242 | else | ||
| 243 | *const fn () callconv(.C) void; | ||
| 236 | pub extern "c" fn pthread_key_create(key: *c.pthread_key_t, destructor: ?fn (value: *anyopaque) callconv(.C) void) c.E; | 244 | pub extern "c" fn pthread_key_create(key: *c.pthread_key_t, destructor: ?fn (value: *anyopaque) callconv(.C) void) c.E; |
| 237 | pub extern "c" fn pthread_key_delete(key: c.pthread_key_t) c.E; | 245 | pub extern "c" fn pthread_key_delete(key: c.pthread_key_t) c.E; |
| 238 | pub extern "c" fn pthread_getspecific(key: c.pthread_key_t) ?*anyopaque; | 246 | pub extern "c" fn pthread_getspecific(key: c.pthread_key_t) ?*anyopaque; |
lib/std/c/tokenizer.zig+5-1| ... | @@ -126,7 +126,11 @@ pub const Token = struct { | ... | @@ -126,7 +126,11 @@ pub const Token = struct { |
| 126 | Keyword_error, | 126 | Keyword_error, |
| 127 | Keyword_pragma, | 127 | Keyword_pragma, |
| 128 | 128 | ||
| 129 | pub fn symbol(id: std.meta.Tag(Id)) []const u8 { | 129 | pub fn symbol(id: Id) []const u8 { |
| 130 | return symbolName(id); | ||
| 131 | } | ||
| 132 | |||
| 133 | pub fn symbolName(id: std.meta.Tag(Id)) []const u8 { | ||
| 130 | return switch (id) { | 134 | return switch (id) { |
| 131 | .Invalid => "Invalid", | 135 | .Invalid => "Invalid", |
| 132 | .Eof => "Eof", | 136 | .Eof => "Eof", |
src/clang.zig+8-3| ... | @@ -161,7 +161,12 @@ pub const ASTUnit = opaque { | ... | @@ -161,7 +161,12 @@ pub const ASTUnit = opaque { |
| 161 | extern fn ZigClangASTUnit_getSourceManager(*ASTUnit) *SourceManager; | 161 | extern fn ZigClangASTUnit_getSourceManager(*ASTUnit) *SourceManager; |
| 162 | 162 | ||
| 163 | pub const visitLocalTopLevelDecls = ZigClangASTUnit_visitLocalTopLevelDecls; | 163 | pub const visitLocalTopLevelDecls = ZigClangASTUnit_visitLocalTopLevelDecls; |
| 164 | extern fn ZigClangASTUnit_visitLocalTopLevelDecls(*ASTUnit, context: ?*anyopaque, Fn: ?fn (?*anyopaque, *const Decl) callconv(.C) bool) bool; | 164 | extern fn ZigClangASTUnit_visitLocalTopLevelDecls(*ASTUnit, context: ?*anyopaque, Fn: ?VisitorFn) bool; |
| 165 | |||
| 166 | const VisitorFn = if (@import("builtin").zig_backend == .stage1) | ||
| 167 | fn (?*anyopaque, *const Decl) callconv(.C) bool | ||
| 168 | else | ||
| 169 | *const fn (?*anyopaque, *const Decl) callconv(.C) bool; | ||
| 165 | 170 | ||
| 166 | pub const getLocalPreprocessingEntities_begin = ZigClangASTUnit_getLocalPreprocessingEntities_begin; | 171 | pub const getLocalPreprocessingEntities_begin = ZigClangASTUnit_getLocalPreprocessingEntities_begin; |
| 167 | extern fn ZigClangASTUnit_getLocalPreprocessingEntities_begin(*ASTUnit) PreprocessingRecord.iterator; | 172 | extern fn ZigClangASTUnit_getLocalPreprocessingEntities_begin(*ASTUnit) PreprocessingRecord.iterator; |
| ... | @@ -490,8 +495,8 @@ pub const FloatingLiteral = opaque { | ... | @@ -490,8 +495,8 @@ pub const FloatingLiteral = opaque { |
| 490 | pub const getValueAsApproximateDouble = ZigClangFloatingLiteral_getValueAsApproximateDouble; | 495 | pub const getValueAsApproximateDouble = ZigClangFloatingLiteral_getValueAsApproximateDouble; |
| 491 | extern fn ZigClangFloatingLiteral_getValueAsApproximateDouble(*const FloatingLiteral) f64; | 496 | extern fn ZigClangFloatingLiteral_getValueAsApproximateDouble(*const FloatingLiteral) f64; |
| 492 | 497 | ||
| 493 | pub const getBeginLoc = ZigClangIntegerLiteral_getBeginLoc; | 498 | pub const getBeginLoc = ZigClangFloatingLiteral_getBeginLoc; |
| 494 | extern fn ZigClangIntegerLiteral_getBeginLoc(*const FloatingLiteral) SourceLocation; | 499 | extern fn ZigClangFloatingLiteral_getBeginLoc(*const FloatingLiteral) SourceLocation; |
| 495 | 500 | ||
| 496 | pub const getRawSemantics = ZigClangFloatingLiteral_getRawSemantics; | 501 | pub const getRawSemantics = ZigClangFloatingLiteral_getRawSemantics; |
| 497 | extern fn ZigClangFloatingLiteral_getRawSemantics(*const FloatingLiteral) APFloatBaseSemantics; | 502 | extern fn ZigClangFloatingLiteral_getRawSemantics(*const FloatingLiteral) APFloatBaseSemantics; |
src/codegen/llvm.zig+1-1| ... | @@ -7220,7 +7220,7 @@ pub const FuncGen = struct { | ... | @@ -7220,7 +7220,7 @@ pub const FuncGen = struct { |
| 7220 | return self.builder.buildInBoundsGEP(base_ptr, &indices, indices.len, ""); | 7220 | return self.builder.buildInBoundsGEP(base_ptr, &indices, indices.len, ""); |
| 7221 | } | 7221 | } |
| 7222 | 7222 | ||
| 7223 | fn getIntrinsic(self: *FuncGen, name: []const u8, types: []*const llvm.Type) *const llvm.Value { | 7223 | fn getIntrinsic(self: *FuncGen, name: []const u8, types: []const *const llvm.Type) *const llvm.Value { |
| 7224 | const id = llvm.lookupIntrinsicID(name.ptr, name.len); | 7224 | const id = llvm.lookupIntrinsicID(name.ptr, name.len); |
| 7225 | assert(id != 0); | 7225 | assert(id != 0); |
| 7226 | return self.llvmModule().getIntrinsicDeclaration(id, types.ptr, types.len); | 7226 | return self.llvmModule().getIntrinsicDeclaration(id, types.ptr, types.len); |
src/codegen/llvm/bindings.zig+2-2| ... | @@ -60,7 +60,7 @@ pub const Context = opaque { | ... | @@ -60,7 +60,7 @@ pub const Context = opaque { |
| 60 | Packed: Bool, | 60 | Packed: Bool, |
| 61 | ) *const Type; | 61 | ) *const Type; |
| 62 | 62 | ||
| 63 | const structCreateNamed = LLVMStructCreateNamed; | 63 | pub const structCreateNamed = LLVMStructCreateNamed; |
| 64 | extern fn LLVMStructCreateNamed(C: *const Context, Name: [*:0]const u8) *const Type; | 64 | extern fn LLVMStructCreateNamed(C: *const Context, Name: [*:0]const u8) *const Type; |
| 65 | 65 | ||
| 66 | pub const constString = LLVMConstStringInContext; | 66 | pub const constString = LLVMConstStringInContext; |
| ... | @@ -320,7 +320,7 @@ pub const Module = opaque { | ... | @@ -320,7 +320,7 @@ pub const Module = opaque { |
| 320 | extern fn LLVMGetNamedFunction(*const Module, Name: [*:0]const u8) ?*const Value; | 320 | extern fn LLVMGetNamedFunction(*const Module, Name: [*:0]const u8) ?*const Value; |
| 321 | 321 | ||
| 322 | pub const getIntrinsicDeclaration = LLVMGetIntrinsicDeclaration; | 322 | pub const getIntrinsicDeclaration = LLVMGetIntrinsicDeclaration; |
| 323 | extern fn LLVMGetIntrinsicDeclaration(Mod: *const Module, ID: c_uint, ParamTypes: ?[*]*const Type, ParamCount: usize) *const Value; | 323 | extern fn LLVMGetIntrinsicDeclaration(Mod: *const Module, ID: c_uint, ParamTypes: ?[*]const *const Type, ParamCount: usize) *const Value; |
| 324 | 324 | ||
| 325 | pub const printToString = LLVMPrintModuleToString; | 325 | pub const printToString = LLVMPrintModuleToString; |
| 326 | extern fn LLVMPrintModuleToString(*const Module) [*:0]const u8; | 326 | extern fn LLVMPrintModuleToString(*const Module) [*:0]const u8; |
src/translate_c.zig+5-3| ... | @@ -368,11 +368,13 @@ pub fn translate( | ... | @@ -368,11 +368,13 @@ pub fn translate( |
| 368 | resources_path: [*:0]const u8, | 368 | resources_path: [*:0]const u8, |
| 369 | zig_is_stage1: bool, | 369 | zig_is_stage1: bool, |
| 370 | ) !std.zig.Ast { | 370 | ) !std.zig.Ast { |
| 371 | // TODO stage2 bug | ||
| 372 | var tmp = errors; | ||
| 371 | const ast_unit = clang.LoadFromCommandLine( | 373 | const ast_unit = clang.LoadFromCommandLine( |
| 372 | args_begin, | 374 | args_begin, |
| 373 | args_end, | 375 | args_end, |
| 374 | &errors.ptr, | 376 | &tmp.ptr, |
| 375 | &errors.len, | 377 | &tmp.len, |
| 376 | resources_path, | 378 | resources_path, |
| 377 | ) orelse { | 379 | ) orelse { |
| 378 | if (errors.len == 0) return error.ASTUnitFailure; | 380 | if (errors.len == 0) return error.ASTUnitFailure; |
| ... | @@ -5325,7 +5327,7 @@ const MacroCtx = struct { | ... | @@ -5325,7 +5327,7 @@ const MacroCtx = struct { |
| 5325 | try self.fail( | 5327 | try self.fail( |
| 5326 | c, | 5328 | c, |
| 5327 | "unable to translate C expr: expected '{s}' instead got '{s}'", | 5329 | "unable to translate C expr: expected '{s}' instead got '{s}'", |
| 5328 | .{ CToken.Id.symbol(expected_id), next_id.symbol() }, | 5330 | .{ CToken.Id.symbolName(expected_id), next_id.symbol() }, |
| 5329 | ); | 5331 | ); |
| 5330 | return error.ParseError; | 5332 | return error.ParseError; |
| 5331 | } | 5333 | } |
src/translate_c/ast.zig+1-1| ... | @@ -779,7 +779,7 @@ const TokenTag = std.zig.Token.Tag; | ... | @@ -779,7 +779,7 @@ const TokenTag = std.zig.Token.Tag; |
| 779 | 779 | ||
| 780 | const Context = struct { | 780 | const Context = struct { |
| 781 | gpa: Allocator, | 781 | gpa: Allocator, |
| 782 | buf: std.ArrayList(u8) = .{}, | 782 | buf: std.ArrayList(u8), |
| 783 | nodes: std.zig.Ast.NodeList = .{}, | 783 | nodes: std.zig.Ast.NodeList = .{}, |
| 784 | extra_data: std.ArrayListUnmanaged(std.zig.Ast.Node.Index) = .{}, | 784 | extra_data: std.ArrayListUnmanaged(std.zig.Ast.Node.Index) = .{}, |
| 785 | tokens: std.zig.Ast.TokenList = .{}, | 785 | tokens: std.zig.Ast.TokenList = .{}, |
src/zig_clang.cpp+5| ... | @@ -2706,6 +2706,11 @@ double ZigClangFloatingLiteral_getValueAsApproximateDouble(const ZigClangFloatin | ... | @@ -2706,6 +2706,11 @@ double ZigClangFloatingLiteral_getValueAsApproximateDouble(const ZigClangFloatin |
| 2706 | return casted->getValueAsApproximateDouble(); | 2706 | return casted->getValueAsApproximateDouble(); |
| 2707 | } | 2707 | } |
| 2708 | 2708 | ||
| 2709 | struct ZigClangSourceLocation ZigClangFloatingLiteral_getBeginLoc(const struct ZigClangFloatingLiteral *self) { | ||
| 2710 | auto casted = reinterpret_cast<const clang::FloatingLiteral *>(self); | ||
| 2711 | return bitcast(casted->getBeginLoc()); | ||
| 2712 | } | ||
| 2713 | |||
| 2709 | ZigClangAPFloatBase_Semantics ZigClangFloatingLiteral_getRawSemantics(const ZigClangFloatingLiteral *self) { | 2714 | ZigClangAPFloatBase_Semantics ZigClangFloatingLiteral_getRawSemantics(const ZigClangFloatingLiteral *self) { |
| 2710 | auto casted = reinterpret_cast<const clang::FloatingLiteral *>(self); | 2715 | auto casted = reinterpret_cast<const clang::FloatingLiteral *>(self); |
| 2711 | return static_cast<ZigClangAPFloatBase_Semantics>(casted->getRawSemantics()); | 2716 | return static_cast<ZigClangAPFloatBase_Semantics>(casted->getRawSemantics()); |
src/zig_clang.h+1| ... | @@ -1245,6 +1245,7 @@ ZIG_EXTERN_C struct ZigClangSourceLocation ZigClangDeclStmt_getBeginLoc(const st | ... | @@ -1245,6 +1245,7 @@ ZIG_EXTERN_C struct ZigClangSourceLocation ZigClangDeclStmt_getBeginLoc(const st |
| 1245 | ZIG_EXTERN_C unsigned ZigClangAPFloat_convertToHexString(const struct ZigClangAPFloat *self, char *DST, | 1245 | ZIG_EXTERN_C unsigned ZigClangAPFloat_convertToHexString(const struct ZigClangAPFloat *self, char *DST, |
| 1246 | unsigned HexDigits, bool UpperCase, enum ZigClangAPFloat_roundingMode RM); | 1246 | unsigned HexDigits, bool UpperCase, enum ZigClangAPFloat_roundingMode RM); |
| 1247 | ZIG_EXTERN_C double ZigClangFloatingLiteral_getValueAsApproximateDouble(const ZigClangFloatingLiteral *self); | 1247 | ZIG_EXTERN_C double ZigClangFloatingLiteral_getValueAsApproximateDouble(const ZigClangFloatingLiteral *self); |
| 1248 | ZIG_EXTERN_C struct ZigClangSourceLocation ZigClangFloatingLiteral_getBeginLoc(const struct ZigClangFloatingLiteral *); | ||
| 1248 | ZIG_EXTERN_C ZigClangAPFloatBase_Semantics ZigClangFloatingLiteral_getRawSemantics(const ZigClangFloatingLiteral *self); | 1249 | ZIG_EXTERN_C ZigClangAPFloatBase_Semantics ZigClangFloatingLiteral_getRawSemantics(const ZigClangFloatingLiteral *self); |
| 1249 | 1250 | ||
| 1250 | ZIG_EXTERN_C enum ZigClangStringLiteral_StringKind ZigClangStringLiteral_getKind(const struct ZigClangStringLiteral *self); | 1251 | ZIG_EXTERN_C enum ZigClangStringLiteral_StringKind ZigClangStringLiteral_getKind(const struct ZigClangStringLiteral *self); |