12020-12-31 Iain Buclaw <ibuclaw@gdcproject.org> 2 3 * dmd/MERGE: Merge upstream dmd 2bd4fc3fe. 4 52020-12-30 Iain Buclaw <ibuclaw@gdcproject.org> 6 7 * d-lang.cc (deps_add_target): Handle quoting ':' character. 8 Reimplement backslash tracking. 9 102020-12-30 Iain Buclaw <ibuclaw@gdcproject.org> 11 12 * d-tree.h (d_eval_constant_expression): Add location argument. 13 * d-builtins.cc (d_eval_constant_expression): Give generated constants 14 a proper file location. 15 * d-compiler.cc (Compiler::paintAsType): Pass expression location to 16 d_eval_constant_expression. 17 * d-frontend.cc (eval_builtin): Likewise. 18 192020-12-23 Iain Buclaw <ibuclaw@gdcproject.org> 20 21 PR d/98427 22 * types.cc (TypeVisitor::visit (TypeStruct *)): Set TYPE_MODE of all 23 non-trivial types as BLKmode. 24 (TypeVisitor::visit (TypeClass *)): Likewise. 25 262020-12-15 Iain Buclaw <ibuclaw@gdcproject.org> 27 28 PR d/98277 29 * decl.cc (DeclVisitor::visit (VarDeclaration *)): Move setting of 30 DECL_INITIAL for manifest constants to ... 31 (get_symbol_decl): ... here. 32 332020-11-29 Iain Buclaw <ibuclaw@gdcproject.org> 34 35 * d-target.def (d_minfo_section): New hook. 36 (d_minfo_start_name): New hook. 37 (d_minfo_end_name): New hook. 38 * modules.cc: Include d-target.h. 39 (register_moduleinfo): Update to use new targetdm hooks. 40 412020-11-29 Iain Buclaw <ibuclaw@gdcproject.org> 42 43 PR d/87788 44 * dmd/MERGE: Merge upsream dmd 45fa6cfd2. 45 462020-11-27 Iain Buclaw <ibuclaw@gdcproject.org> 47 48 * dmd/MERGE: Merge upstream dmd db0df3f7e. 49 * types.cc (TypeVisitor::visit (TypeFunction *)): Remove LINKpascal. 50 512020-11-27 Iain Buclaw <ibuclaw@gdcproject.org> 52 53 * intrinsics.cc (maybe_expand_intrinsic): Handle new intrinsics. 54 * intrinsics.def (INTRINSIC_COS): Add float and double overloads. 55 (INTRINSIC_FABS): Likewise. 56 (INTRINSIC_LDEXP): Likewise. 57 (INTRINSIC_RINT): Likewise. 58 (INTRINSIC_RNDTOL): Likewise. 59 (INTRINSIC_SIN): Likewise. 60 (INTRINSIC_TOPREC): Adjust signature. 61 622020-11-22 Iain Buclaw <ibuclaw@gdcproject.org> 63 64 PR d/97889 65 * expr.cc (ExprVisitor::visit (CatAssignExp *)): Enforce LTR order of 66 evaluation on left and right hand side expressions. 67 682020-11-20 Jakub Jelinek <jakub@redhat.com> 69 70 PR other/97911 71 * Make-lang.in (d.serial): Change from goal to a variable. 72 (.PHONY): Drop d.serial and d.prev. 73 (d21$(exeext)): Depend on $(d.serial) rather than d.serial. 74 752020-11-18 Jakub Jelinek <jakub@redhat.com> 76 77 * Make-lang.in (d.serial): New goal. 78 (.PHONY): Add d.serial d.prev. 79 (d21$(exeext)): Depend on d.prev. Call LINK_PROGRESS. 80 812020-11-18 Iain Buclaw <ibuclaw@gdcproject.org> 82 83 PR d/97843 84 * d-codegen.cc (build_assign): Evaluate TARGET_EXPR before use in 85 the right hand side of an assignment. 86 * expr.cc (ExprVisitor::visit (CatAssignExp *)): Force a TARGET_EXPR 87 on the element to append if it is a CALL_EXPR. 88 892020-11-18 Iain Buclaw <ibuclaw@gdcproject.org> 90 91 PR d/97842 92 * dmd/MERGE: Merge upstream dmd b6a779e49 93 942020-11-13 Iain Buclaw <ibuclaw@gdcproject.org> 95 96 * intrinsics.cc (expand_intrinsic_copysign): Explicitly determine 97 which built-in copysign function to call. 98 992020-11-13 Iain Buclaw <ibuclaw@gdcproject.org> 100 101 PR d/97644 102 * dmd/MERGE: Merge upstream dmd 95044d8e4. 103 * d-target.cc (TargetCPP::thunkMangle): New function. 104 * decl.cc (finish_thunk): Don't force expand thunks for external 105 functions. 106 (make_thunk): Emit thunks only if the function has a definition. 107 Generate correct mangling for thunks to C++ classes. 108 1092020-11-10 Strager Neds <strager.nds@gmail.com> 110 111 * decl.cc (finish_thunk): Use new overload of 112 set_decl_section_name 113 1142020-10-27 Iain Buclaw <ibuclaw@gdcproject.org> 115 116 * dmd/MERGE: Merge upstream dmd bec5973b0. 117 * d-target.cc (Target::critsecsize): Remove. 118 * d-target.def: Remove d_critsec_size. 119 1202020-10-27 Iain Buclaw <ibuclaw@gdcproject.org> 121 122 * dmd/MERGE: Merge upstream dmd 0fcdaab32 123 1242020-10-23 Jan Hubicka <hubicka@ucw.cz> 125 126 * decl.cc (finish_thunk): Update for new thunk api. 127 1282020-10-22 Jan Hubicka <hubicka@ucw.cz> 129 130 * decl.cc: Include tree-nested.h 131 (get_symbol_decl): Update for new nested function info. 132 1332020-10-12 Iain Buclaw <ibuclaw@gdcproject.org> 134 135 * dmd/MERGE: Merge upstream dmd 70aabfb51 136 1372020-10-12 Iain Buclaw <ibuclaw@gdcproject.org> 138 139 * dmd/MERGE: Merge upstream dmd 3a9790525 140 * d-target.cc (Target::isVectorTypeSupported): Adjust return codes for 141 invalid size and invalid base type. 142 1432020-09-12 Iain Buclaw <ibuclaw@gdcproject.org> 144 145 PR d/97002 146 * d-codegen.cc (d_build_call): Set input_location on CALL_EXPR. 147 * d-lang.cc: Include function.h. 148 (d_type_promotes_to): Do default conversions for C and C++ functions. 149 * intrinsics.cc (expand_intrinsic_vaarg): Use build1_loc to build 150 VA_ARG_EXPR. 151 1522020-09-12 Iain Buclaw <ibuclaw@gdcproject.org> 153 154 * d-builtins.cc (d_build_d_type_nodes): Call build_ctype() on all 155 basic front-end types. 156 * decl.cc (DeclVisitor::visit (EnumDeclaration *)): Always add decl to 157 current binding level. 158 (build_type_decl): Build TYPE_DECL as a typedef if not for an enum or 159 record type. 160 * types.cc (TypeVisitor::visit (TypeEnum *)): Set underlying type for 161 ENUMERAL_TYPEs. Build TYPE_DECL for non-numeric enums. 162 1632020-09-10 Iain Buclaw <ibuclaw@gdcproject.org> 164 165 * lang.opt (Waddress): Enable warning by -Wextra. 166 (Wcast-result): Likewise. 167 (Wunknown-pragmas): Likewise. 168 1692020-09-10 Iain Buclaw <ibuclaw@gdcproject.org> 170 171 * decl.cc (DeclVisitor::visit (VarDeclaration *)): Don't warn about 172 variables initialized with 'void'. 173 1742020-09-10 Iain Buclaw <ibuclaw@gdcproject.org> 175 176 * d-convert.cc (convert_expr): Warn when casting from a D class to a 177 C++ class. 178 1792020-09-04 Iain Buclaw <ibuclaw@gdcproject.org> 180 181 PR d/96924 182 * expr.cc (ExprVisitor::visit (CatAssignExp *)): Don't force 183 temporaries needlessly. 184 1852020-09-02 Iain Buclaw <ibuclaw@gdcproject.org> 186 187 PR d/96869 188 * d-builtins.cc (build_frontend_type): Don't expose intrinsics that 189 use unsupported vector types. 190 * d-target.cc (Target::isVectorTypeSupported): Restrict to supporting 191 only if TARGET_VECTOR_MODE_SUPPORTED_P is true. Don't allow complex 192 or boolean vector types. 193 1942020-08-31 Iain Buclaw <ibuclaw@gdcproject.org> 195 196 * d-target.cc (Target::_init): Don't set classinfosize. 197 * d-tree.h (base_vtable_offset): Move under typeinfo.cc section. 198 * decl.cc (base_vtable_offset): Move to... 199 * typeinfo.cc (base_vtable_offset): ...here. Get base offset from 200 internal TypeInfo_Class type. 201 * intrinsics.cc (expand_intrinsic_bt): Use pointer TYPE_SIZE for 202 setting bitsize value. Build integer constants of correct type. 203 2042020-08-26 Iain Buclaw <ibuclaw@gdcproject.org> 205 206 * dmd/MERGE: Merge upstream dmd e49192807 207 2082020-08-26 Iain Buclaw <ibuclaw@gdcproject.org> 209 210 PR d/96156 211 * d-frontend.cc (retStyle): Only return RETstack for struct and static 212 array types. 213 * decl.cc (DeclVisitor::visit (FuncDeclaration *)): Use NRVO return 214 for all TREE_ADDRESSABLE types. Set shidden to the RESULT_DECL. 215 * expr.cc (ExprVisitor::visit (CallExp *)): Force TARGET_EXPR if the 216 'this' pointer reference is a CONSTRUCTOR. 217 (ExprVisitor::visit (StructLiteralExp *)): Generate assignment to the 218 symbol to initialize with literal. 219 * toir.cc (IRVisitor::visit (ReturnStatement *)): Detect returning 220 struct literals and write directly into the RESULT_DECL. 221 * dmd/MERGE: Merge upstream dmd fe5f388d8. 222 2232020-08-26 Iain Buclaw <ibuclaw@gdcproject.org> 224 225 * dmd/MERGE: Merge upstream dmd cb4a96fae 226 2272020-08-26 Iain Buclaw <ibuclaw@gdcproject.org> 228 229 * d-lang.cc (d_parse_file): Use read() to load contents from stdin, 230 allow the front-end to free the memory after parsing. 231 * dmd/MERGE: Merge upstream dmd 2cc25c219. 232 2332020-08-26 Iain Buclaw <ibuclaw@gdcproject.org> 234 235 PR d/96153 236 * d-codegen.cc (build_address): Create a temporary for CALL_EXPRs 237 returning trivial aggregates, pre-filling it with zeroes. 238 (build_memset_call): Use build_zero_cst if setting the entire object. 239 2402020-08-26 Iain Buclaw <ibuclaw@gdcproject.org> 241 242 PR d/96157 243 * d-codegen.cc (d_build_call): Handle TREE_ADDRESSABLE static arrays. 244 * types.cc (make_array_type): Propagate TREE_ADDRESSABLE from base 245 type to static array. 246 2472020-08-26 Iain Buclaw <ibuclaw@gdcproject.org> 248 249 * d-gimplify.cc (d_gimplify_expr): Move lowering of each tree node to 250 separate functions. 251 (d_gimplify_modify_expr): New function. 252 (d_gimplify_addr_expr): New function. 253 (d_gimplify_call_expr): New function. 254 (d_gimplify_unsigned_rshift_expr): New function. 255 2562020-08-26 Iain Buclaw <ibuclaw@gdcproject.org> 257 258 * Make-lang.in (D_OBJS): Add d-gimplify.o. 259 * d-lang.cc (empty_modify_p): Move to d-gimplify.cc. 260 (d_gimplify_expr): Likewise. 261 * d-tree.h (d_gimplify_expr): Declare. 262 * d-gimplify.cc: New file. 263 2642020-08-20 Iain Buclaw <ibuclaw@gdcproject.org> 265 266 * dmd/MERGE: Merge upstream dmd 1b5a53d01. 267 2682020-08-18 Iain Buclaw <ibuclaw@gdcproject.org> 269 270 PR d/96301 271 * decl.cc (DeclVisitor::visit (FuncDeclaration *)): Only return 272 non-trivial structs by invisible reference. 273 2742020-08-04 Iain Buclaw <ibuclaw@gdcproject.org> 275 276 PR d/96153 277 * d-tree.h (build_expr): Add literalp argument. 278 * expr.cc (ExprVisitor): Add literalp_ field. 279 (ExprVisitor::ExprVisitor): Initialize literalp_. 280 (ExprVisitor::visit (AssignExp *)): Call memset() on blits where RHS 281 is a struct literal. Elide assignment if initializer is all zeroes. 282 (ExprVisitor::visit (CastExp *)): Forward literalp_ to generation of 283 subexpression. 284 (ExprVisitor::visit (AddrExp *)): Likewise. 285 (ExprVisitor::visit (ArrayLiteralExp *)): Use memset() to pre-fill 286 object with zeroes. Set literalp in subexpressions. 287 (ExprVisitor::visit (StructLiteralExp *)): Likewise. 288 (ExprVisitor::visit (TupleExp *)): Set literalp in subexpressions. 289 (ExprVisitor::visit (VectorExp *)): Likewise. 290 (ExprVisitor::visit (VectorArrayExp *)): Likewise. 291 (build_expr): Forward literal_p to ExprVisitor. 292 2932020-08-04 Iain Buclaw <ibuclaw@gdcproject.org> 294 295 PR d/96429 296 * expr.cc (ExprVisitor::visit (BinExp*)): Use EXACT_DIV_EXPR for 297 pointer diff expressions. 298 2992020-08-03 Iain Buclaw <ibuclaw@gdcproject.org> 300 301 PR d/96254 302 * d-codegen.cc (error_no_frame_access): New. 303 (get_frame_for_symbol): Use fdparent name in error message. 304 (get_framedecl): Replace call to assert with error. 305 * d-tree.h (error_no_frame_access): Declare. 306 * decl.cc (get_decl_tree): Detect recursion and error. 307 3082020-08-03 Iain Buclaw <ibuclaw@gdcproject.org> 309 310 PR d/96250 311 * dmd/MERGE: Merge upstream dmd c2274e56a. 312 3132020-07-31 Iain Buclaw <ibuclaw@gdcproject.org> 314 315 PR d/96393 316 * intrinsics.cc (expand_intrinsic_bt): Don't generate BIT_NOT_EXPR for 317 btr32 intrinsic. 318 3192020-07-30 Iain Buclaw <ibuclaw@gdcproject.org> 320 321 PR d/96152 322 * d-codegen.cc (build_array_from_exprs): New function. 323 * d-tree.h (build_array_from_exprs): Declare. 324 * expr.cc (ExprVisitor::visit (AssocArrayLiteralExp *)): Use 325 build_array_from_exprs to generate key and value arrays. 326 3272020-07-30 Iain Buclaw <ibuclaw@gdcproject.org> 328 329 PR d/96154 330 * gdc.texi (Warnings): Document -Wvarargs. 331 * lang.opt: Add -Wvarargs 332 3332020-07-30 Iain Buclaw <ibuclaw@gdcproject.org> 334 335 PR d/96140 336 * intrinsics.cc (expand_intrinsic_vaarg): Handle ref parameters as 337 arguments to va_arg(). 338 (expand_intrinsic_vastart): Handle ref parameters as arguments to 339 va_start(). 340 3412020-07-30 Iain Buclaw <ibuclaw@gdcproject.org> 342 343 * expr.cc (ExprVisitor::visit (AssignExp *)): Inline bounds checking 344 for simple array assignments. 345 3462020-07-30 Iain Buclaw <ibuclaw@gdcproject.org> 347 348 * d-codegen.cc (build_memcmp_call): New function. 349 (build_memcpy_call): New function. 350 (build_memset_call): New function. 351 (build_float_identity): Call build_memcmp_call. 352 (lower_struct_comparison): Likewise. 353 (build_struct_comparison): Likewise. 354 * d-tree.h (build_memcmp_call): Declare. 355 (build_memcpy_call): Declare. 356 (build_memset_call): Declare. 357 * expr.cc (ExprVisitor::visit (EqualExp *)): Call build_memcmp_call. 358 (ExprVisitor::visit (AssignExp *)): Call build_memset_call. 359 (ExprVisitor::visit (ArrayLiteralExp *)): Call build_memcpy_call. 360 (ExprVisitor::visit (StructLiteralExp *)): Call build_memset_call. 361 3622020-07-30 Iain Buclaw <ibuclaw@gdcproject.org> 363 364 * expr.cc (needs_postblit): Move out of ExprVisitor as a static 365 function. Update all callers. 366 (needs_dtor): Likewise. 367 (lvalue_p): Likewise. 368 (binary_op): Likewise. 369 (binop_assignment): Likewise. 370 3712020-07-30 Iain Buclaw <ibuclaw@gdcproject.org> 372 373 * intrinsics.cc (expand_intrinsic_rotate): Add function. 374 (maybe_expand_intrinsic): Handle rol and ror intrinsics. 375 * intrinsics.def (ROL): Add intrinsic. 376 (ROL_TIARG): Add intrinsic. 377 (ROR): Add intrinsic. 378 (ROR_TIARG): Add intrinsic. 379 3802020-07-30 Iain Buclaw <ibuclaw@gdcproject.org> 381 382 * d-tree.h (DEF_D_INTRINSIC): Rename second argument from A to B. 383 * intrinsics.cc (intrinsic_decl): Add built_in field. 384 (DEF_D_INTRINSIC): Rename second argument from ALIAS to BUILTIN. 385 (maybe_set_intrinsic): Handle new intrinsic codes. 386 (expand_intrinsic_bt): Likewise. 387 (expand_intrinsic_checkedint): Likewise. 388 (expand_intrinsic_bswap): Remove. 389 (expand_intrinsic_sqrt): Remove. 390 (maybe_expand_intrinsic): Group together intrinsic cases that map 391 directly to gcc built-ins. 392 * intrinsics.def (DEF_D_BUILTIN): Rename second argument from A to B. 393 Update all callers to pass equivalent DECL_FUNCTION_CODE. 394 (DEF_CTFE_BUILTIN): Likewise. 395 (STD_COS): Remove intrinsic. 396 (STD_FABS): Remove intrinsic. 397 (STD_LDEXP): Remove intrinsic. 398 (STD_RINT): Remove intrinsic. 399 (STD_RNDTOL): Remove intrinsic. 400 (STD_SIN): Remove intrinsic. 401 (STD_SQRTF): Remove intrinsic. 402 (STD_SQRT): Remove intrinsic. 403 (STD_SQRTL): Remove intrinsic. 404 4052020-06-28 Iain Buclaw <ibuclaw@gdcproject.org> 406 407 * dmd/MERGE: Merge upstream dmd 8508c4e68. 408 4092020-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 410 411 * decl.cc (get_symbol_decl): Do not implicitly set 412 DECL_DECLARED_INLINE_P on member functions. 413 4142020-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 415 416 * d-lang.cc (d_gimplify_expr_p): Make static. 417 (d_parse_file): Likewise. 418 (d_signed_or_unsigned_type): Move to types.cc. 419 (d_unsigned_type): Likewise. 420 (d_signed_type): Likewise. 421 * d-tree.h (d_unsigned_type): Change the location in file. 422 (d_signed_type): Likewise. 423 * types.cc (d_signed_or_unsigned_type): Moved from d-lang.cc. 424 (d_unsigned_type): Likewise. 425 (d_signed_type): Likewise. 426 4272020-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 428 429 PR d/95075 430 * dmd/MERGE: Merge upstream dmd 4be011355. 431 4322020-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 433 434 PR d/95250 435 * dmd/MERGE: Merge upstream dmd 90450f3ef. 436 4372020-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 438 439 * d-lang.cc (d_parse_file): Replace OutBuffer with obstack. 440 4412020-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 442 443 * dmd/MERGE: Merge upstream dmd 5fc1806cd. 444 * d-lang.cc (d_parse_file): Use peekChars to get string representation 445 of OutBuffer data. 446 4472020-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 448 449 PR d/95173 450 * d-attribs.cc (uda_attribute_p): Don't search target attribute table 451 if NULL. 452 4532020-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 454 455 * decl.cc (DeclVisitor::visit (VarDeclaration *)): Don't set 456 DECL_INITIAL if initializer is 'void'. 457 4582020-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 459 460 * d-lang.cc (d_init_options): Turn on deprecation warnings by default. 461 4622020-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 463 464 * dmd/MERGE: Merge upstream dmd 4f1046222. 465 * toir.cc (IRVisitor::visit (OnScopeGuardStatement *)): Rename to ... 466 (IRVisitor::visit (ScopeGuardStatement *)): ... this. 467 4682020-06-16 Iain Buclaw <ibuclaw@gdcproject.org> 469 470 * d-attribs.cc (handle_noreturn_attribute): Remove names of unused 471 function parameters. 472 (handle_leaf_attribute): Likewise. 473 (handle_const_attribute): Likewise. 474 (handle_malloc_attribute): Likewise. 475 (handle_pure_attribute): Likewise. 476 (handle_novops_attribute): Likewise. 477 (handle_nonnull_attribute): Likewise. 478 (handle_nothrow_attribute): Likewise. 479 (handle_type_generic_attribute): Likewise. 480 (handle_transaction_pure_attribute): Likewise. 481 (handle_returns_twice_attribute): Likewise. 482 (handle_fnspec_attribute): Likewise. 483 (handle_always_inline_attribute): Likewise. 484 (d_handle_noinline_attribute): Likewise. 485 (d_handle_forceinline_attribute): Likewise. 486 (d_handle_flatten_attribute): Likewise. 487 (d_handle_noclone_attribute): Likewise. 488 (d_handle_section_attribute): Likewise. 489 (d_handle_alias_attribute): Likewise. 490 (d_handle_weak_attribute): Likewise. 491 4922020-06-16 Iain Buclaw <ibuclaw@gdcproject.org> 493 494 * d-attribs.cc: Update code formatting in a consistant style. 495 * d-builtins.cc: Likewise. 496 * d-codegen.cc: Likewise. 497 * d-compiler.cc: Likewise. 498 * d-convert.cc: Likewise. 499 * d-diagnostic.cc: Likewise. 500 * d-frontend.cc: Likewise. 501 * d-lang.cc: Likewise. 502 * d-longdouble.cc: Likewise. 503 * d-port.cc: Likewise. 504 * d-spec.cc: Likewise. 505 * d-tree.h: Likewise. 506 * decl.cc: Likewise. 507 * expr.cc: Likewise. 508 * longdouble.h: Likewise. 509 * modules.cc: Likewise. 510 * toir.cc: Likewise. 511 * typeinfo.cc: Likewise. 512 5132020-06-16 Iain Buclaw <ibuclaw@gdcproject.org> 514 515 * d-builtins.cc: Update quotation formatting of comments. 516 * d-codegen.cc: Likewise. 517 * d-lang.cc: Likewise. 518 * decl.cc: Likewise. 519 * expr.cc: Likewise. 520 * imports.cc: Likewise. 521 * runtime.cc: Likewise. 522 * toir.cc: Likewise. 523 * typeinfo.cc: Likewise. 524 * types.cc: Likewise. 525 5262020-06-16 Iain Buclaw <ibuclaw@gdcproject.org> 527 528 * d-diagnostic.cc (expand_d_format): Replace OutBuffer with obstack. 529 (d_diagnostic_report_diagnostic): Don't free xformat. 530 * d-lang.cc (struct d_option_data): Change deps_target type from 531 OutBuffer to vec <const char *>. 532 (deps_add_target): Update to push each target to deps_target. 533 (deps_write_string): New function. 534 (deps_write): Change buffer type to obstack* and remove colmax. 535 (d_init_options): Update initialization of deps_target. 536 (d_parse_file): Replace OutBuffer with obstack. 537 5382020-06-16 Iain Buclaw <ibuclaw@gdcproject.org> 539 540 * d-lang.cc (d_parse_file): Replace uses of File with FILE. 541 5422020-06-16 Iain Buclaw <ibuclaw@gdcproject.org> 543 544 * d-codegen.cc (build_array_bounds_call): New function. 545 (build_bounds_condition): Use build_array_bounds_call. 546 * d-lang.cc (d_init_options): Explicitly set default check action to 547 CHECKACTION_D. 548 (d_post_options): Set check action to CHECKACTION_C if the flag 549 -fno-druntime was seen. 550 * d-tree.h (build_array_bounds_call): Declare. 551 * expr.cc (ExprVisitor::visit (AssertExp *)): Use 552 build_array_bounds_call. 553 5542020-06-16 Iain Buclaw <ibuclaw@gdcproject.org> 555 556 * d-attribs.cc (build_attributes): Use toStringExp instead of cast. 557 * toir.cc (IRVisitor::visit): Likewise. 558 5592020-06-16 Iain Buclaw <ibuclaw@gdcproject.org> 560 561 * d-attribs.cc (build_attributes): Use isXxxxExp helpers instead of 562 explicit casts. 563 * d-codegen.cc (d_build_call): Likewise. 564 * d-compiler.cc (Compiler::paintAsType): Likewise. 565 * decl.cc (ExprVisitor::visit): Likewise. 566 (layout_class_initializer): Likewise. 567 * expr.cc (ExprVisitor::lvalue_p): Likewise 568 (ExprVisitor::visit): Likewise. 569 * types.cc (layout_aggregate_members): Likewise. 570 5712020-06-16 Iain Buclaw <ibuclaw@gdcproject.org> 572 573 * d-frontend.cc (eval_builtin): Use toTypeFunction instead of cast. 574 * decl.cc (DeclVisitor::visit): Likewise. 575 * toir.cc (IRVisitor::visit): Likewise. 576 * typeinfo.cc (TypeInfoVisitor::visit): Likewise. 577 5782020-06-16 Iain Buclaw <ibuclaw@gdcproject.org> 579 580 * d-builtins.cc (d_eval_constant_expression): Use isTypeXxxx helpers 581 instead of explicit casts. 582 (d_build_builtins_module): Likewise. 583 * d-codegen.cc (get_array_length): Likewise. 584 (identity_compare_p): Likewise. 585 (lower_struct_comparison): Likewise. 586 (build_array_from_val): Likewise. 587 (array_bounds_check): Likewise. 588 (get_function_type): Likewise. 589 (d_build_call): Likewise. 590 * d-compiler.cc (Compiler::paintAsType): Likewise. 591 * d-convert.cc (convert_expr): Likewise. 592 (convert_for_assignment): Likewise. 593 * d-lang.cc (d_classify_record): Likewise. 594 (d_build_eh_runtime_type): Likewise. 595 * decl.cc (DeclVisitor::visit): Likewise. 596 * expr.cc (ExprVisitor::needs_postblit): Likewise. 597 (ExprVisitor::needs_dtor): Likewise. 598 (ExprVisitor::visit): Likewise. 599 * imports.cc (ImportVisitor::visit): Likewise. 600 * typeinfo.cc (get_typeinfo_kind): Likewise. 601 (TypeInfoVisitor::visit): Likewise. 602 (TypeDeclInfoVisitor::visit): Likewise. 603 * types.cc (merge_aggregate_types): Likewise. 604 (TypeVisitor::visit): Likewise. 605 6062020-06-14 Iain Buclaw <ibuclaw@gdcproject.org> 607 608 * expr.cc (ExprVisitor::visit (AssocArrayLiteralExp *)): Fix line 609 lengths, no functional change. 610 * typeinfo.cc (TypeInfoVisitor::layout_interfaces): Likewise. 611 (layout_classinfo_interfaces): Likewise. 612 6132020-06-09 Iain Buclaw <ibuclaw@gdcproject.org> 614 615 * dmd/MERGE: Merge upstream dmd 13d67c575. 616 * d-builtins.cc (build_frontend_type): Update call to 617 TypeVector::create. 618 * d-frontend.cc (Global::_init): Move setting of errorLimit to ... 619 * d-lang.cc (d_init_options): ... here. Update for new field 620 location of errorLimit. 621 (d_post_options): Likewise. 622 * d-port.cc (Port::readwordLE): Update signature. 623 (Port::readwordBE): Likewise. 624 (Port::readlongLE): Likewise. 625 (Port::readlongBE): Likewise. 626 * decl.cc (get_symbol_decl): Update for new field types. 627 6282020-06-08 Iain Buclaw <ibuclaw@gdcproject.org> 629 630 PR d/95573 631 * dmd/MERGE: Merge upstream dmd 5041e56f1. 632 6332020-06-08 Iain Buclaw <ibuclaw@gdcproject.org> 634 635 * dmd/MERGE: Merge upstream dmd 955b8b36f. 636 * expr.cc (ExprVisitor::visit (AndAndExp *)): Rename type to ... 637 (ExprVisitor::visit (LogicalExp *)): ... this. Handle both 'and if' 638 and 'or if' expression nodes. 639 (ExprVisitor::visit (OrOrExp *)): Remove. 640 6412020-06-07 Iain Buclaw <ibuclaw@gdcproject.org> 642 643 * dmd/MERGE: Merge upstream dmd 73d8e2fec. 644 * decl.cc (get_symbol_decl): Use new Prot::Kind enum. 645 * modules.cc (get_internal_fn): Likewise. 646 6472020-06-07 Iain Buclaw <ibuclaw@gdcproject.org> 648 649 * dmd/MERGE: Merge upstream dmd 108ca1bcd. 650 * d-diagnostic.cc (expand_d_format): Adjust to use extractChars(). 651 * d-frontend.cc (Loc::toChars): Likewise. 652 * d-lang.cc (deps_write): Likewise. 653 (d_parse_file): Likewise. 654 * decl.cc (d_mangle_decl): Likewise. 655 * intrinsics.cc (maybe_set_intrinsic): Likewise. 656 6572020-06-07 Iain Buclaw <ibuclaw@gdcproject.org> 658 659 * dmd/MERGE: Merge upstream dmd b0df0e982. 660 * d-builtins.cc (build_frontend_type): Use VarArg for varargs_p. 661 * d-codegen.cc (declaration_type): Call TypeFunction::create with 662 argument VARARGnone. 663 (parameter_type): Likewise. 664 (d_build_call): Use new field names and member functions. 665 * d-target.cc (Target::cppParameterType): Call TypeFunction::create 666 with argument VARARGnone. 667 * types.cc (TypeVisitor::visit (TypeFunction *): Use new field names 668 and member functions. 669 6702020-06-07 Iain Buclaw <ibuclaw@gdcproject.org> 671 672 * dmd/MERGE: Merge upstream dmd 1831b24ff. 673 * d-lang.cc (d_init_options): Remove initialization of updated fields. 674 (d_handle_option): Adjust for new field types. 675 6762020-06-07 Iain Buclaw <ibuclaw@gdcproject.org> 677 678 * dmd/MERGE: Merge upstream dmd cef1e7991. 679 * d-lang.cc (d_parse_file): Adjust for new field types. 680 6812020-06-05 Iain Buclaw <ibuclaw@gdcproject.org> 682 683 * dmd/MERGE: Merge upstream dmd 740f3d1ea. 684 * d-lang.cc (d_handle_option): Use new fields to save debug and 685 version levels passed over command-line. 686 (d_post_options): Add them to front-end here. 687 6882020-06-05 Iain Buclaw <ibuclaw@gdcproject.org> 689 690 * dmd/MERGE: Merge upstream dmd f5638c7b8. 691 * d-builtins.cc (d_init_versions): Use new CHECKENABLE enum. 692 * d-codegen.cc (array_bounds_check): Likewise. 693 (build_frame_type): Likewise. 694 (get_frameinfo): Likewise. 695 * d-lang.cc (d_init_options): Likewise. 696 (d_init_options_struct): Don't initialize x_flag_bounds_check. 697 (d_handle_option): Use new CHECKENABLE enum. 698 (d_post_options): Likewise. Set flag_bounds_check here. 699 * expr.cc (ExprVisitor::visit(AssertExp *)): Use new CHECKENABLE enum. 700 7012020-06-05 Iain Buclaw <ibuclaw@gdcproject.org> 702 703 * dmd/MERGE: Merge upstream dmd 56f0a65c4. 704 * d-builtins.cc (build_frontend_type): Remove static. 705 (d_build_builtins_module): Use target.va_listType() to get front-end 706 type for va_list. 707 (d_init_builtins): Move creation of va_list to Target::va_listType. 708 * d-codegen.cc (build_interface_binfo): Use new target global. 709 (build_vindex_ref): Likewise. 710 (identity_compare_p): Likewise. 711 * d-ctfloat.cc (CTFloat::parse): Likewise. 712 * d-lang.cc (d_init): Likewise. 713 * d-port.cc (Port::isFloat32LiteralOutOfRange): Likewise. 714 (Port::isFloat64LiteralOutOfRange): Likewise. 715 * d-target.cc (define_float_constants): Initialize constants through a 716 reference, instead of setting globals. 717 (Target::_init): Initialize new fields instead of setting globals. 718 (Target::va_listType): Build front-end type from va_list_type_node. 719 (Target::toCppMangle): Renamed to ... 720 (TargetCPP::toMangle): ... this. 721 (Target::cppTypeInfoMangle): Renamed to ... 722 (TargetCPP::typeInfoMangle): ... this. 723 (Target::cppTypeMangle): Renamed to ... 724 (TargetCPP::typeMangle): this. 725 (Target::cppParameterType): Renamed to ... 726 (TargetCPP::parameterType): ... this. Use target.va_listType() to get 727 front-end type for va_list. 728 (Target::cppFundamentalType): Renamed to ... 729 (TargetCPP::fundamentalType): ... this. 730 * d-tree.h (build_frontend_type): Declare. 731 * decl.cc (base_vtable_offset): Use new target global. 732 * typeinfo.cc (layout_classinfo_interfaces): Likewise. 733 (layout_cpp_typeinfo): Likewise. 734 * types.cc (valist_array_p): Use target.va_listType() to get front-end 735 type for va_list. 736 (layout_aggregate_type): Use new target global. 737 7382020-06-05 Iain Buclaw <ibuclaw@gdcproject.org> 739 740 * dmd/MERGE: Merge upstream dmd 6d5bffa54. 741 * d-builtins.cc (maybe_set_builtin_1): Update call to 742 Condition::include(). 743 * decl.cc (DeclVisitor::visit(AttribDeclaration *)): Likewise. 744 * types.cc (layout_aggregate_members): Likewise. 745 7462020-06-04 Iain Buclaw <ibuclaw@gdcproject.org> 747 748 * dmd/MERGE: Merge upstream dmd 48d704f08. 749 * d-attribs.cc (build_attributes): Use new field name. 750 * d-builtins.cc (build_frontend_type): Likewise. 751 (maybe_set_builtin_1): Likewise. 752 (d_maybe_set_builtin): Likewise. 753 * d-codegen.cc (build_interface_binfo): Likewise. 754 (identity_compare_p): Likewise. 755 (lower_struct_comparison): Likewise. 756 (build_struct_comparison): Likewise. 757 (d_build_call): Likewise. 758 (build_frame_type): Likewise. 759 (build_closure): Likewise. 760 * d-compiler.cc (Compiler::paintAsType): Likewise. 761 (Compiler::loadModule): Likewise. 762 * d-incpath.cc (add_globalpaths): Likewise. 763 (add_filepaths): Likewise. 764 (add_import_paths): Likewise. 765 * d-lang.cc (deps_write): Likewise. 766 (d_parse_file): Likewise. 767 * decl.cc (gcc_attribute_p): Likewise. 768 (base_vtable_offset): Likewise. 769 (get_vtable_decl): Likewise. 770 (build_class_instance): Likewise. 771 * expr.cc (class ExprVisitor): Likewise. 772 * modules.cc (layout_moduleinfo_fields): Likewise. 773 (layout_moduleinfo): Likewise. 774 (build_module_tree): Likewise. 775 * toir.cc (class IRVisitor): Likewise. 776 * typeinfo.cc (class TypeInfoVisitor): Likewise. 777 (layout_classinfo_interfaces): Likewise. 778 * types.cc (layout_aggregate_members): Likewise. 779 (layout_aggregate_type): Likewise. 780 7812020-06-04 Iain Buclaw <ibuclaw@gdcproject.org> 782 783 * dmd/MERGE: Merge upstream dmd 47ed0330f. 784 7852020-06-04 Iain Buclaw <ibuclaw@gdcproject.org> 786 787 * Make-lang.in (D_OBJS): Add d-compiler.o, d-ctfloat.o, d-port.o. 788 * d-frontend.cc (Port::memicmp): Move to d-port.cc. 789 (Port::strupr): Likewise. 790 (Port::isFloat32LiteralOutOfRange): Likewise. 791 (Port::isFloat64LiteralOutOfRange): Likewise. 792 (Port::readwordLE): Likewise. 793 (Port::readwordBE): Likewise. 794 (Port::readlongLE): Likewise. 795 (Port::readlongBE): Likewise. 796 (Port::valcpy): Likewise. 797 (CTFloat::fabs): Move to d-ctfloat.cc. 798 (CTFloat::ldexp): Likewise. 799 (CTFloat::isIdentical): Likewise. 800 (CTFloat::isNaN): Likewise. 801 (CTFloat::isSNaN): Likewise. 802 (CTFloat::isInfinity): Likewise. 803 (CTFloat::parse): Likewise. 804 (CTFloat::sprint): Likewise. 805 (CTFloat::hash): Likewise. 806 (Compiler::genCmain): Move to d-compiler.cc. 807 (Compiler::paintAsType): Likewise. 808 (Compiler::loadModule): Likewise. 809 * d-compiler.cc: New file. 810 * d-ctfloat.cc: New file. 811 * d-port.cc: New file. 812 8132020-06-02 Iain Buclaw <ibuclaw@gdcproject.org> 814 815 * decl.cc (DeclVisitor::build_dsymbol): New function. 816 (DeclVisitor::visit (TupleDeclaration *)): Use build_dsymbol to 817 traverse AST instead of accept. 818 (DeclVisitor::visit (AttribDeclaration *)): Likewise. 819 (DeclVisitor::visit (Nspace *)): Likewise. 820 (DeclVisitor::visit (TemplateDeclaration *)): Likewise. 821 (DeclVisitor::visit (TemplateInstance *)): Likewise. 822 (DeclVisitor::visit (TemplateMixin *)): Likewise. 823 (DeclVisitor::visit (StructDeclaration *)): Likewise. 824 (DeclVisitor::visit (ClassDeclaration *)): Likewise. 825 (DeclVisitor::visit (InterfaceDeclaration *)): Likewise. 826 (DeclVisitor::visit (VarDeclaration *)): Likewise. 827 (build_decl_tree): Likewise. 828 8292020-06-02 Iain Buclaw <ibuclaw@gdcproject.org> 830 831 * d-builtins.cc (build_frontend_type): Handle struct fields with NULL 832 DECL_NAME. Use byte_position to get the real field offset. 833 8342020-05-06 Iain Buclaw <ibuclaw@gdcproject.org> 835 836 PR d/94970 837 * d-codegen.cc (force_target_expr): Move create_temporary_var 838 implementation inline here. 839 (create_temporary_var): Remove. 840 (maybe_temporary_var): Remove. 841 (bind_expr): Remove. 842 * d-convert.cc (d_array_convert): Use build_local_temp to generate 843 temporaries, and generate its assignment. 844 * d-tree.h (create_temporary_var): Remove. 845 (maybe_temporary_var): Remove. 846 (d_array_convert): Remove vars argument. 847 * expr.cc (ExprVisitor::visit (CatExp *)): Use build_local_temp to 848 generate temporaries, don't wrap them in a BIND_EXPR. 849 (ExprVisitor::visit (NewExp *)): Likewise. 850 8512020-04-30 Iain Buclaw <ibuclaw@gdcproject.org> 852 853 * gdc.texi (Options for Linking): Clarify usage of -defaultlib= and 854 -debuglib= options. 855 8562020-04-29 Iain Buclaw <ibuclaw@gdcproject.org> 857 858 * d-codegen.cc (d_decl_context): Don't include module in the name of 859 class and struct types that aren't extern(D). 860 8612020-04-27 Iain Buclaw <ibuclaw@gdcproject.org> 862 863 PR d/94777 864 * d-builtins.cc (build_frontend_type): Set parent for generated 865 fields of built-in types. 866 * d-codegen.cc (argument_reference_p): Rename to ... 867 (parameter_reference_p): ... this. 868 (type_passed_as): Rename to ... 869 (parameter_type): ... this. Make TREE_ADDRESSABLE types restrict. 870 (d_build_call): Move handling of non-POD types here from ... 871 * d-convert.cc (convert_for_argument): ... here. 872 * d-tree.h (argument_reference_p): Rename declaration to ... 873 (parameter_reference_p): ... this. 874 (type_passed_as): Rename declaration to ... 875 (parameter_type): ... this. 876 * types.cc (TypeVisitor::visit (TypeFunction *)): Update caller. 877 8782020-04-26 Iain Buclaw <ibuclaw@gdcproject.org> 879 880 * decl.cc (get_symbol_decl): Set DECL_DECLARED_INLINE_P or 881 DECL_UNINLINABLE for declarations with pragma(inline). 882 * toir.cc (IRVisitor::visit (GccAsmStatement *)): Set ASM_INLINE_P if 883 in function decorated with pragma(inline). 884 8852020-04-25 Iain Buclaw <ibuclaw@gdcproject.org> 886 887 * intrinsics.cc (expand_intrinsic_toprec): New function. 888 (maybe_expand_intrinsic): Handle toPrec intrinsics. 889 * intrinsics.def (TOPRECF, TOPREC, TOPRECL): Add toPrec intrinsics. 890 8912020-04-24 Iain Buclaw <ibuclaw@gdcproject.org> 892 893 * d-spec.cc (need_phobos): Remove. 894 (lang_specific_driver): Replace need_phobos with phobos_library. 895 Reorder -debuglib and -defaultlib to have precedence over libphobos. 896 (lang_specific_pre_link): Remove test for need_phobos. 897 8982020-04-19 Iain Buclaw <ibuclaw@gdcproject.org> 899 900 PR d/94609 901 * d-codegen.cc (argument_reference_p): Don't check TREE_ADDRESSABLE. 902 (type_passed_as): Build reference type if TREE_ADDRESSABLE. 903 * d-convert.cc (convert_for_argument): Build explicit TARGET_EXPR if 904 needed for arguments passed by invisible reference. 905 * types.cc (TypeVisitor::visit (TypeStruct *)): Mark all structs that 906 are not POD as TREE_ADDRESSABLE. 907 9082020-04-13 Iain Buclaw <ibuclaw@gdcproject.org> 909 910 * Make-lang.in (D_FRONTEND_OBJS): Remove d/argtypes.o. 911 * d-target.cc (Target::toArgTypes): New function. 912 9132020-04-10 Iain Buclaw <ibuclaw@gdcproject.org> 914 915 * d-spec.cc (LIBDRUNTIME): Remove. 916 (LIBDRUNTIME_PROFILE): Remove. 917 (lang_specific_driver): Don't link in libgdruntime. 918 9192020-04-07 Iain Buclaw <ibuclaw@gdcproject.org> 920 921 PR d/94425 922 * toir.cc (IRVisitor::visit (GccAsmStatement *)): Set ASM_VOLATILE_P 923 on all asm statements. 924 9252020-04-01 Iain Buclaw <ibuclaw@gdcproject.org> 926 927 PR d/90136 928 * d-attribs.cc: Include dmd/attrib.h. 929 (build_attributes): Redeclare as static. 930 (apply_user_attributes): New function. 931 * d-tree.h (class UserAttributeDeclaration): Remove. 932 (build_attributes): Remove. 933 (apply_user_attributes): Declare. 934 (finish_aggregate_type): Remove attrs argument. 935 * decl.cc (get_symbol_decl): Merge declaration prototypes with 936 definitions. Use apply_user_attributes. 937 * modules.cc (layout_moduleinfo_fields): Remove last argument to 938 finish_aggregate_type. 939 * typeinfo.cc (layout_classinfo_interfaces): Likewise. 940 * types.cc (layout_aggregate_members): Likewise. 941 (finish_aggregate_type): Remove attrs argument. 942 (TypeVisitor::visit (TypeEnum *)): Use apply_user_attributes. 943 (TypeVisitor::visit (TypeStruct *)): Remove last argument to 944 finish_aggregate_type. Use apply_user_attributes. 945 (TypeVisitor::visit (TypeClass *)): Likewise. 946 9472020-03-31 Iain Buclaw <ibuclaw@gdcproject.org> 948 949 * d-attribs.cc (d_langhook_common_attribute_table): Add always_inline. 950 (handle_always_inline_attribute): New function. 951 9522020-03-31 Iain Buclaw <ibuclaw@gdcproject.org> 953 954 PR d/94424 955 * d-codegen.cc (build_alignment_field): Remove. 956 (build_struct_literal): Don't insert alignment padding. 957 * expr.cc (ExprVisitor::visit (AssignExp *)): Call memset before 958 assigning struct literals. 959 9602020-03-31 Iain Buclaw <ibuclaw@gdcproject.org> 961 962 * typeinfo.cc (TypeInfoVisitor::internal_reference): Call 963 d_comdat_linkage on generated decl. 964 9652020-03-22 Iain Buclaw <ibuclaw@gdcproject.org> 966 967 PR d/93038 968 * d-lang.cc (deps_write): Generate phony targets for content imported 969 files. 970 9712020-03-22 Iain Buclaw <ibuclaw@gdcproject.org> 972 973 PR d/93038 974 * d-lang.cc (deps_write): Add content imported files to the make 975 dependency list. 976 9772020-03-21 Iain Buclaw <ibuclaw@gdcproject.org> 978 979 PR d/94240 980 * typeinfo.cc (class TypeInfoVisitor): Replace type_ field with decl_. 981 (TypeInfoVisitor::TypeInfoVisitor): Set decl_. 982 (TypeInfoVisitor::result): Update. 983 (TypeInfoVisitor::internal_reference): New function. 984 (TypeInfoVisitor::layout_string): Use internal_reference. 985 (TypeInfoVisitor::visit (TypeInfoTupleDeclaration *)): Likewise. 986 (layout_typeinfo): Construct TypeInfoVisitor with typeinfo decl. 987 (layout_classinfo): Likewise. 988 9892020-03-20 Iain Buclaw <ibuclaw@gdcproject.org> 990 991 PR lto/91027 992 * d-tree.h (struct GTY): Add daggregate field. 993 (IDENTIFIER_DAGGREGATE): Define. 994 (d_mangle_decl): Add declaration. 995 * decl.cc (mangle_decl): Remove static linkage, rename to... 996 (d_mangle_decl): ...this, update all callers. 997 * types.cc (merge_aggregate_types): New function. 998 (TypeVisitor::visit (TypeStruct *)): Call merge_aggregate_types, set 999 IDENTIFIER_DAGGREGATE and TYPE_CXX_ODR_P. 1000 (TypeVisitor::visit (TypeClass *)): Likewise. 1001 10022020-03-18 Jakub Jelinek <jakub@redhat.com> 1003 1004 * expr.cc (ExprVisitor::visit (CatAssignExp *)): Fix up duplicated 1005 word issue in a comment. 1006 * d-target.cc (Target::FPTypeProperties<T>::max): Likewise. 1007 10082020-03-16 Iain Buclaw <ibuclaw@gdcproject.org> 1009 1010 PR d/92309 1011 * types.cc (fixup_anonymous_offset): Don't set DECL_FIELD_OFFSET on 1012 anonymous fields. 1013 10142020-03-16 Iain Buclaw <ibuclaw@gdcproject.org> 1015 1016 PR d/92216 1017 * decl.cc (make_thunk): Don't set TREE_PUBLIC on thunks if the target 1018 function is external to the current compilation. 1019 10202020-01-01 Jakub Jelinek <jakub@redhat.com> 1021 1022 Update copyright years. 1023 1024 * gdc.texi: Bump @copyrights-d year. 1025 1026Copyright (C) 2020 Free Software Foundation, Inc. 1027 1028Copying and distribution of this file, with or without modification, 1029are permitted in any medium without royalty provided the copyright 1030notice and this notice are preserved. 1031