12017-12-23 Iain Buclaw <ibuclaw@gdcproject.org> 2 3 * intrinsics.def (INTRINSIC_MULUI): Declare. 4 52017-12-19 Iain Buclaw <ibuclaw@gdcproject.org> 6 7 * d-codegen.cc (build_target_expr): Update signature. 8 (force_target_expr): New function. 9 (build_address): Use force_target_expr to store temporary. 10 (d_build_call): Likewise. 11 * d-lang.cc (d_gimplify_expr): Likewise. 12 * d-tree.h (language_function): Update type for vars_in_scope from 13 vec<VarDeclaration*> to vec<tree>. 14 (force_target_expr): Declare. 15 * decl.cc (DeclVisitor::visit(VarDeclaration)): Put vars with scope 16 destructors into a TARGET_EXPR, setting its cleanup. 17 (declare_local_var): Don't push vars with scope destructors into the 18 function binding level. 19 * expr.cc (ExprVisitor::visit(DeclarationExp)): Don't handle scope 20 destructors. 21 (ExprVisitor::visit(CallExp)): Handle calling constructors using 22 temporary objects. 23 (build_dtor_list): Remove function. 24 (build_expr_dtor): Put result into a CLEANUP_POINT_EXPR if any new 25 temporaries needing destruction were added to scope. 26 (build_return_dtor): Likewise. 27 * toir.cc (add_stmt): Set CLEANUP_POINT_EXPR type as void. 28 292017-12-19 Iain Buclaw <ibuclaw@gdcproject.org> 30 31 * d-attribs.c (attr_noreturn_exclusions): New array. 32 (attr_returns_twice_exclusions, attr_const_pure_exclusions): Likewise. 33 (attr_inline_exclusions, attr_noinline_exclusions): Likewise. 34 (d_langhook_common_attribute_table): Swap affects_identity and handler 35 fields. Initialize new member of struct attribute_spec. 36 (d_langhook_attribute_table): Likewise. 37 (handle_weakref_attribute): Remove function. 38 392017-12-17 Iain Buclaw <ibuclaw@gdcproject.org> 40 41 * d-codegen.cc (stabilize_expr): Handle assignment expressions. 42 (get_frame_for_symbol): Adjust the 'this' field of frames of 43 overridden interface functions. 44 * d-diagnostic.cc (expand_format): Rewrite '%X' format as '%x'. 45 * decl.cc (DeclVisitor::visit(ClassDeclaration)): Handle future 46 attribute. 47 * expr.cc (ExprVisitor::binop_assignment): Ensure RHS is evaluated 48 before LHS. 49 (ExprVisitor::visit(SliceExp)): Always save lower bounds if upper has 50 any side effects. 51 * typeinfo.cc (TypeInfoVisitor::TypeInfoClassDeclaration): Use 52 ClassDeclaration::isAbstract. 53 (TypeInfoVisitor::visit(TypeInfoTupleDeclaration)): Mark internal 54 reference as public and hidden. 55 562017-12-10 Iain Buclaw <ibuclaw@gdcproject.org> 57 58 * d-codegen.cc (build_alignment_field): Set DECL_PADDING_P and 59 DECL_FIELD_CONTEXT on generated fields. 60 (build_struct_literal): Use build_zero_cst to generate padding. 61 * decl.cc (build_type_decl): Set public and decl assembler name. 62 632017-12-10 Iain Buclaw <ibuclaw@gdcproject.org> 64 65 * types.cc (TypeVisitor::visit(TypeClass)): Check for duplicate 66 declarations before adding method. 67 682017-12-09 Iain Buclaw <ibuclaw@gdcproject.org> 69 70 * expr.cc (ExprVisitor::visit(AddrExp)): Build internal struct literal 71 symbol before generating its initializer. 72 732017-12-09 Iain Buclaw <ibuclaw@gdcproject.org> 74 75 * d-lang.cc (d_parse_file): Set first_global_object_name. 76 772017-12-09 Iain Buclaw <ibuclaw@gdcproject.org> 78 79 * lang.opt (fmodule-filepath=): Rename to fmodule-file. 80 * d-lang.cc (d_handle_option): Update case for OPT_fmodule_file_. 81 822017-12-09 Iain Buclaw <ibuclaw@gdcproject.org> 83 84 * d-tree.h (CALL_EXPR_ARGS_ORDERED): Define. 85 * d-codegen.cc (d_build_call): Set CALL_EXPR_ARGS_ORDERED for 86 functions with D linkage. 87 * d-lang.cc (d_gimplify_expr): Handle CALL_EXPR_ARGS_ORDERED. 88 892017-12-09 Eugene Wissner <belka@caraus.de> 90 91 * toir.cc (IRVisitor::visit(SwitchStatement)): Set SWITCH_ALL_CASES_P on 92 switch statements. Set SWITCH_BREAK_LABEL_P on the artificial label 93 created for break statements from a switch. 94 952017-12-04 Eugene Wissner <belka@caraus.de> 96 97 * toir.cc (IRVisitor::visit(SwitchStatement)): Build SWITCH_EXPR using build2 instead 98 of build3. 99 1002017-11-14 Eugene Wissner <belka@caraus.de> 101 102 * decl.cc (finish_thunk): Drop frequency argument from 103 symbol_table::create_edge. 104 * d-lang.cc (d_post_options): Set default value of 105 -Wreturn-type to false. 106 1072017-11-11 Iain Buclaw <ibuclaw@gdcproject.org> 108 109 * d-codegen.cc (build_float_cst): Remove float rounding check. 110 * d-longdouble.cc (longdouble::to_int): Don't round floats before int 111 conversion. 112 * expr.cc (ExprVisitor::binary_op): Handle excess precision. 113 (ExprVisitor::visit(NegExp)): Likwise. 114 1152017-10-31 Iain Buclaw <ibuclaw@gdcproject.org> 116 117 * d-codegen.cc (build_address): Store CST nodes into a TARGET_EXPR 118 before taking its address. 119 1202017-10-08 Iain Buclaw <ibuclaw@gdcproject.org> 121 122 * Make-lang.in (D_FRONTEND_OBJS): Remove newdelete.o. 123 * d-incpath.cc (add_globalpaths): Handle NULL target path. 124 1252017-10-01 Iain Buclaw <ibuclaw@gdcproject.org> 126 127 * typeinfo.cc (TypeInfoVisitor::visit(TypeInfoClassDeclaration)): 128 Properly check base classes for pointers. 129 1302017-09-28 Iain Buclaw <ibuclaw@gdcproject.org> 131 132 * expr.cc (ExprVisitor::visit(StringExp)): Add extra null terminator 133 onto string type, not the literal. 134 1352017-09-26 Iain Buclaw <ibuclaw@gdcproject.org> 136 137 * types.cc (make_array_type): Move checking of void static arrays 138 here. 139 1402017-09-24 Iain Buclaw <ibuclaw@gdcproject.org> 141 142 * d-attribs.c: Add include for attribs.h. 143 * d-codegen.cc (copy_aggregate_type): Remove TYPE_METHODS. 144 (lower_struct_comparison): Use opt_scalar_int_mode. 145 * d-target.cc (Target::_init): Use TYPE_MAX_VALUE instead of 146 TYPE_MAXVAL. 147 (Target::isVectorTypeSupported): Update call to 148 scalar_mode_supported_p. 149 * decl.cc (DeclVisitor::visit(Import)): Pass false as new argument to 150 the imported_module_or_decl hook. 151 * types.cc (TypeVisitor::visit(TypeClass)): Remove TYPE_METHODS. 152 1532017-09-14 Iain Buclaw <ibuclaw@gdcproject.org> 154 155 * Make-lang.in (D_FRONTEND_OBJS): Add blockexit.o, initsem.o, 156 inlinecost.o, safe.o, staticcond.o, and typesem.o. 157 * d-attribs.c (uda_attribute_p): Use get_identifier to compare 158 strings. 159 (build_attributes): Handle empty string expressions. 160 * d-builtins.cc (build_frontend_type): Use static create methods to 161 'new' front-end types, expressions, and declarations. 162 (d_eval_constant_expression): Likewise. 163 (build_alias_declaration): Likewise. 164 (d_build_builtins_module): Likewise. 165 * d-codegen.cc (declaration_type): Likewise. 166 (type_passed_as): Likewise. 167 (get_frame_for_symbol): Remove dependency on id.h. 168 (get_frameinfo): Don't overwrite FRAMEINFO_CREATES_FRAME if function 169 has nested frame references. 170 * d-convert.cc (convert_for_assignment): Allow static arrays to be 171 initialized with a zero integer value. 172 * d-frontend.cc (genCmain): Remove dependency on id.h. 173 * d-frontend.h (initializerToExpression): Add declaration. 174 (gendocfile): Add declaration. 175 (initTraitsStringTable): Remove. 176 * d-lang.cc (deps_write): Remove dependency on id.h. 177 (deps_add_target): Don't call StringTables's destructor. 178 (d_init): Remove calls to deleted front-end initialize functions. 179 * decl.cc (DeclVisitor::visit(PragmaDeclaration)): Remove dependency 180 on id.h. 181 (DeclVisitor::visit(VarDeclaration)): Call initializerToExpression to 182 get the initializer of decl. 183 (build_decl_tree): Remove dependency on id.h. 184 (layout_class_initializer): Use static create method to 'new' 185 front-end expression. 186 * expr.cc (ExprVisitor::visit(AssignExp)): Handle static array 187 assignment where RHS is integer zero. 188 (ExprVisitor::visit(VarExp)): Remove dependency on id.h. 189 (ExprVisitor::visit(StringExp)): Handle empty string expressions. 190 * modules.cc (get_internal_fn): Use FuncDeclaration::genCfunc to 191 create function decl. 192 (build_module_tree): Remove dependency on id.h. 193 * toir.cc (IRVisitor::visit(ExtAsmStatement)): Handle empty string 194 expressions. 195 * typeinfo.cc (make_frontend_typeinfo): Use static create methods to 196 'new' front-end declarations. 197 (create_tinfo_types): Remove dependency on id.h. 198 (get_cpp_typeinfo_decl): Likewise. 199 (create_typeinfo): Likewise. 200 2012017-08-23 Johannes Pfau <johannespfau@gmail.com> 202 203 * typeinfo.cc (TypeInfoVisitor::visit(TypeInfoStructDeclaration)): Do 204 not send member functions to backend here. 205 2062017-08-19 Iain Buclaw <ibuclaw@gdcproject.org> 207 208 * d-convert.cc (convert_expr): Use build_zero_cst for casts from 209 typeof(null). 210 2112017-08-13 Iain Buclaw <ibuclaw@gdcproject.org> 212 213 * d-target.cc (Target::isVectorOpSupported): Disallow vectors in 214 conditional and logical operators. 215 2162017-08-08 Iain Buclaw <ibuclaw@gdcproject.org> 217 218 * intrinsics.cc (maybe_expand_intrinsic): Handle isNaN(), isInfinity() 219 and isFinite() intrinsics. 220 * intrinsics.def: Add INTRINSIC_ISNAN, INTRINSIC_ISINFINITY, and 221 INTRINSIC_ISFINITE. 222 2232017-08-08 Iain Buclaw <ibuclaw@gdcproject.org> 224 225 * intrinsics.cc (expand_intrinsic_popcnt): New function. 226 (maybe_expand_intrinsic): Handle INTRINSIC_POPCNT. 227 * intrinsics.def (INTRINSIC_POPCNT): Declare. 228 2292017-08-06 Iain Buclaw <ibuclaw@gdcproject.org> 230 231 * d-frontend.cc (isBuiltin): Remove restriction on builtins. 232 (eval_builtin): Check DECL_INTRINSIC_CODE. 233 * d-tree.h (intrinsic_code): Add enum declaration. 234 (lang_decl): Add intrinsic field. 235 (DECL_INTRINSIC_CODE): New macro. 236 (DECL_BUILT_IN_CTFE): New macro. 237 * decls.cc (get_symbol_decl): Initialize DECL_INTRINSIC_CODE. 238 * intrinsics.cc (intrinsic_decl): Add ctfeonly field. 239 (maybe_set_intrinsic): Set frontend builtin flag only if the function 240 is CTFE-able. Set BUILT_IN_FRONTEND if function has no body. 241 (clear_intrinsic_flag): Clear DECL_INTRINSIC_CODE instead of frontend 242 builtin flag. 243 (maybe_expand_intrinsic): Handle INTRINSIC_TAN intrinsics. 244 Call clear_intrinsic_flag on CTFE built-ins if semantic has finished. 245 * intrinsics.def: Add INTRINSIC_TAN. 246 (DEF_D_BUILTIN): New macro. 247 (DEF_CTFE_BUILTIN): New macro. 248 2492017-08-06 Iain Buclaw <ibuclaw@gdcproject.org> 250 251 * decl.cc (DeclVisitor::visit): Don't set input_location. 252 (build_decl_tree): Handle set and restore of input_location. 253 (declare_local_var): Don't set input_location. 254 * expr.cc (build_expr): Handle set and restore of input_location. 255 * imports.cc (build_import_decl): Likewise. 256 * modules.cc (get_dso_registry_fn): Use UNKNOWN_LOCATION for 257 declaration of _d_dso_registry. 258 * runtime.cc (build_libcall_decl): Use UNKNOWN_LOCATION for 259 declaration of library functions. 260 * toir.cc (IRVisitor::visit): Don't set input_location. 261 (IRVisitor::build_stmt): New function. 262 (IRVisitor::do_jump): Update signature. 263 (build_function_body): Use IRVisitor::build_stmt. 264 * typeinfo.cc (layout_classinfo_interfaces): Don't set input_location. 265 * types.cc (layout_aggregate_members): Likewise. 266 (layout_aggregate_type): Likewise. 267 2682017-08-05 Iain Buclaw <ibuclaw@gdcproject.org> 269 270 * d-codegen.cc (build_boolop): Handle VECTOR_TYPE comparisons. 271 * d-target.cc (Target::checkVectorType): Rename to 272 Target::isVectorTypeSupported. 273 (Target::isVectorOpSupported): New function. 274 * expr.cc (ExprVisitor::visit(IdentityExp)): Don't memcmp floating 275 point vectors. 276 (ExprVisitor::visit(CmpExp)): Handle always true or always false 277 vector comparisons. 278 2792017-08-02 Iain Buclaw <ibuclaw@gdcproject.org> 280 281 * typeinfo.cc (SpeculativeTypeVisitor::visit(TypeClass)): Don't emit 282 typeinfo for speculative class types. 283 2842017-07-29 Iain Buclaw <ibuclaw@gdcproject.org> 285 286 * d-lang.cc (build_lang_decl): Handle compiler generated typeinfo that 287 also appear in code. 288 * d-tree.h (lang_identifier): Add decl_tree. 289 (IDENTIFIER_DECL_TREE): New macro. 290 * decl.cc (declare_extern_var): Re-use already generated decl if 291 called with the same identifier twice. 292 2932017-07-29 Iain Buclaw <ibuclaw@gdcproject.org> 294 295 * decl.cc (d_finish_decl): Replace ENABLE_TREE_CHECKING macro with 296 flag_checking. 297 2982017-07-28 Iain Buclaw <ibuclaw@gdcproject.org> 299 300 * d-tree.h (D_DECL_ONE_ONLY): Remove macro accessor. 301 * decl.cc (DeclVisitor::visit(StructDeclaration)): Move call to 302 d_comdat_linkage here. 303 (DeclVisitor::visit(ClassDeclaration)): Likewise. 304 (DeclVisitor::visit(InterfaceDeclaration)): Likewise. 305 (DeclVisitor::visit(EnumDeclaration)): Likewise. 306 (get_symbol_decl): Move call to mark_needed here. 307 (declare_extern_var): Mark compiler generated symbols as needed. 308 (make_thunk): Remove copy of D_DECL_ONE_ONLY. 309 (get_vtable_decl): Don't call d_comdat_linkage. 310 (aggregate_initializer_decl): Likewise. 311 (enum_initializer_decl): Likewise. 312 * modules.cc (d_finish_compilation): Don't call mark_needed. 313 * typeinfo.cc (get_classinfo_decl): Don't call d_comdat_linkage. 314 3152017-07-28 Iain Buclaw <ibuclaw@gdcproject.org> 316 317 * d-spec.c (lang_specific_driver): Always add `-o' option when 318 compiling D sources. 319 3202017-07-28 Iain Buclaw <ibuclaw@gdcproject.org> 321 322 * d-frontend.cc (genCmain): Don't error if entrypoint not found. 323 3242017-07-18 Iain Buclaw <ibuclaw@gdcproject.org> 325 326 * d-lang.cc (d_types_compatible_p): Check that both types are 327 RECORD_TYPE before using record-specific flag comparison. 328 3292017-07-15 Iain Buclaw <ibuclaw@gdcproject.org> 330 331 * d-builtins.cc (d_build_d_type_nodes): Set TYPE_DYNAMIC_ARRAY on 332 array_type_node. 333 * d-codegen.cc (build_delegate_cst): Set TYPE_DELEGATE on internal 334 delegate constant types. 335 * d-frontend.h (cppTypeInfoMangle): Remove declaration. 336 (toCppMangleItanium): Add declaration. 337 (cppTypeInfoMangleItanium): Add declaration. 338 * d-lang.cc (d_types_compatible_p): Use type flags to determine 339 compatibility. Return false instead of doing size comparison. 340 * d-target.cc (Target::toCppMangle): New function. 341 (Target::cppTypeInfoMangle): New function. 342 (Target::cppTypeMangle): New function. 343 (Target::systemLinkage): New function. 344 * d-tree.h (TYPE_DYNAMIC_ARRAY): New macro. 345 (TYPE_DELEGATE): New macro. 346 (TYPE_ASSOCIATIVE_ARRAY): New macro. 347 * typeinfo.cc (layout_cpp_typeinfo): Use Target::cppTypeInfoMangle. 348 * types.cc (TypeVisitor::visit(TypeDArray)): Set TYPE_DYNAMIC_ARRAY. 349 (TypeVisitor::visit(TypeAArray)): Set TYPE_ASSOCIATIVE_ARRAY. 350 (TypeVisitor::visit(TypeDelegate)): Set TYPE_DELEGATE. 351 3522017-07-11 Iain Buclaw <ibuclaw@gdcproject.org> 353 354 * d-target.cc (Target::loadModule): Check module identifier if a 355 declaration doesn't exist. 356 * typeinfo.cc (make_frontend_typeinfo): Use module location instead if 357 a declaration doesn't exist. 358 3592017-06-28 Iain Buclaw <ibuclaw@gdcproject.org> 360 361 * d-frontend.cc (CTFloat::hash): New function. 362 3632017-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 364 365 * d-codegen.cc (d_array_string): Remove function. 366 (d_assert_call): Inline implementation of d_array_string here. 367 * d-tree.h (d_array_string): Remove declaration. 368 * typeinfo.cc (TypeInfoVisitor::layout_string): New function. 369 (TypeInfoVisitor::visit): Update calls to d_array_string to use 370 layout_string instead. 371 3722017-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 373 374 * toir.cc (IRVisitor::visit(ExtAsmStatement)): Set ASM_VOLATILE_P only 375 if statement is not marked with pure attribute. 376 3772017-06-25 Iain Buclaw <ibuclaw@gdcproject.org> 378 379 * d-lang.cc (d_parse_file): Print all predefined version identifiers 380 if verbose. 381 3822017-06-24 Iain Buclaw <ibuclaw@gdcproject.org> 383 384 * d-frontend.cc (Global::_init): Remove memset for global.params. 385 3862017-06-24 Iain Buclaw <ibuclaw@gdcproject.org> 387 388 * Make-lang.in (D_ALL_OBJS): Add D_TARGET_OBJS. 389 * d-builtins.cc (d_add_builtin_version): Move here from d-lang.cc. 390 (d_init_versions): New function. 391 * d-lang.cc (d_init): Call d_init_versions. 392 * d-target-def.h: New file. 393 * d-target.cc (Target::critsecsize): Replace with call to 394 targetdm.critsec_size. 395 * d-target.def: New file. 396 * d-target.h: New file. 397 * d-tree.h (d_init_versions): Add declaration. 398 3992017-06-20 Iain Buclaw <ibuclaw@gdcproject.org> 400 401 * expr.cc (ExprVisitor::visit(BinAssignExp)): Strip promotions from 402 both signed and unsigned rshift assignments. 403 4042017-06-17 Iain Buclaw <ibuclaw@gdcproject.org> 405 406 * d-diagnostic.cc (expand_format): New function. 407 (d_diagnostic_report_diagnostic): New function. 408 (error, verror): Update format attributes. Use function 409 d_diagnostic_report_diagnostic instead of xvasprintf. 410 (errorSupplemental, verrorSupplemental): Likewise. 411 (warning, vwarning): Likewise. 412 (warningSupplemental, vwarningSupplemental): Likewise. 413 (deprecation, vdeprecation): Likewise. 414 (deprecationSupplemental, vdeprecationSupplemental): Likewise. 415 4162017-06-15 Iain Buclaw <ibuclaw@gdcproject.org> 417 418 * expr.cc (ExprVisitor::visit(AssertExp)): Don't call invariant on 419 interface objects. 420 4212017-06-12 Iain Buclaw <ibuclaw@gdcproject.org> 422 423 * expr.cc (ExprVisitor::visit(DelegateExp)): Convert object to right 424 type before using it. 425 4262017-06-12 Iain Buclaw <ibuclaw@gdcproject.org> 427 428 * d-decls.cc (get_decl_tree): Find the first parent member function 429 before constructing non-local `this' decl. 430 4312017-06-10 Iain Buclaw <ibuclaw@gdcproject.org> 432 433 * d-builtins.cc (build_frontend_type): Allow all vector types to be 434 included in builtins module. 435 4362017-06-09 Iain Buclaw <ibuclaw@gdcproject.org> 437 438 * types.cc (TypeVisitor::visit(TypeStruct)): Let struct alignment 439 override the alignsize. 440 4412017-06-09 Iain Buclaw <ibuclaw@gdcproject.org> 442 443 * d-codegen.cc (d_decl_context): Use origin template declaration as 444 context for instantiated type symbols. 445 4462017-06-08 Iain Buclaw <ibuclaw@gdcproject.org> 447 448 * d-attribs.c (d_handle_weak_attribute): Use quoted string format. 449 * decls.cc (finish_thunk): Update call to create_edge for new API. 450 4512017-06-08 Iain Buclaw <ibuclaw@gdcproject.org> 452 453 * expr.cc (ExprVisitor::visit(StringExp)): Create string type that is 454 same length as string value literal. 455 4562017-05-27 Iain Buclaw <ibuclaw@gdcproject.org> 457 458 * Make-lang.in (D_FRONTEND_OBJS): Rename object.o to rootobject.o. 459 4602017-05-26 Iain Buclaw <ibuclaw@gdcproject.org> 461 462 * decl.cc: Remove include for dumpfile.h. 463 (finish_function): Use dump_function to for dumping original ASTs. 464 4652017-05-24 Iain Buclaw <ibuclaw@gdcproject.org> 466 467 * config-lang.in (gtfiles): Add typeinfo.cc. 468 * d-codegen.cc (d_build_call_list): Remove function. 469 (d_build_call_nary): Remove function. 470 (build_binary_op): Remove function. 471 (build_binop_assignment): Remove function. 472 (build_vthis_type): Rename to build_vthis_function. 473 (create_field_decl): Move to decl.cc. 474 * d-lang.cc (genCmain): Moved to d-frontend.cc. 475 (builtin_modules): Declare static. 476 (d_add_builtin_module): New function. 477 (d_add_entrypoint_module): New function. 478 * expr.cc (ExprVisitor::binary_op): New function. 479 (ExprVisitor::binop_assignment): New function. 480 * intrinsic.cc (expand_intrinsic): Rename to maybe_expand_intrinsic. 481 * runtime.cc (build_libcall): Updated signature. 482 * types.cc (make_two_field_type): Remove function. 483 (make_struct_type): New function. 484 4852017-05-22 Iain Buclaw <ibuclaw@gdcproject.org> 486 487 * Make-lang.in (D_OBJS): Add intrinsics.o and runtime.o. 488 * d-codegen.h: Remove file. 489 * intrinsics.cc: New file. 490 * runtime.cc: New file. 491 4922017-05-21 Iain Buclaw <ibuclaw@gdcproject.org> 493 494 * d-codegen.cc: Remove include for d-dmd-gcc.h. 495 * d-dmd-gcc.h: Rename to d-frontend.h. Update all includes. 496 * d-frontend.cc (Global::_init): Remove unnecessary initialization. 497 * expr.cc: Remove include for d-dmd-gcc.h. 498 4992017-05-21 Iain Buclaw <ibuclaw@gdcproject.org> 500 501 * d-attribs.c (handle_sentinel_attribute): Remove function. 502 (ignore_attribute): Remove function. 503 (d_langhook_common_attribute_table): Remove sentinel and tm regparm 504 from common attribute table. 505 (d_langhook_format_attribute_table): Remove variable. 506 * d-lang.cc (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): Remove macro. 507 (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Remove macro. 508 (d_post_options): Don't set flag_unit_at_a_time. 509 (d_nametype): Remove function. 510 * types.cc (TypeVisitor::visit(TypeBasic)): Set TYPE_NAME. 511 (TypeVisitor::visit(TypeVector)): Likewise. 512 5132017-05-20 Iain Buclaw <ibuclaw@gdcproject.org> 514 515 * Make-lang.in (D_OBJS): Remove d-objfile.o. Add modules.o. 516 * d-codegen.cc (get_linemap): Move function here. 517 * d-objfile.cc: Remove file. 518 * d-objfile.h: Remove header. 519 * d-tree.h (GDC_PREFIX): New macro. 520 * decl.cc (make_internal_name): Rename to mangle_internal_decl. 521 (DeclVisitor): Move class here. 522 (gcc_attribute_p): Move function here. 523 (build_decl_tree): Likewise. 524 (d_finish_decl): Likewise. 525 (start_function): Likewise. 526 (finish_function): Likewise. 527 (mark_needed): Likewise. 528 (base_vtable_offset): Likewise. 529 (build_artificial_decl): Likewise. 530 (build_type_decl): Likewise. 531 (d_comdat_group): Likewise. 532 (d_comdat_linkage): Likewise. 533 (add_moduleinfo_field): Move to modules.cc 534 (layout_moduleinfo_fields): Likewise. 535 (get_moduleinfo_decl): Likewise. 536 * modules.cc: New file. 537 5382017-05-10 Iain Buclaw <ibuclaw@gdcproject.org> 539 540 * imports.cc (ImportVisitor::visit(Import)): New function. 541 5422017-05-06 Iain Buclaw <ibuclaw@gdcproject.org> 543 544 * d-objfile.cc (DeclVisitor::visit(Module)): Set input_location before 545 walking module members. 546 (get_linemap): Return input_location if no filename set. 547 (set_input_location): Remove function. Update all callers to set 548 input_location directly. 549 (set_decl_location): Remove function. Update all callers to pass 550 get_linemap to build_decl, or use input_location. 551 * types.cc (insert_aggregate_field): Update signature. 552 5532017-04-30 Iain Buclaw <ibuclaw@gdcproject.org> 554 555 * d-objfile.cc (start_function): Update signature. 556 (finish_function): Update signature. 557 (DeclVisitor::visit(FuncDeclaration)): Move function construction to 558 start_function. Move function finalization to finish_function. 559 (set_function_end_locus): Remove function. 560 (d_finish_function): Remove function. 561 (build_simple_function_decl): Don't set frontend body. 562 (build_simple_function): Update signature. Use start/finish function 563 to compile the body. 564 (emit_dso_registry_cdtor): Likewise. 565 * expr.cc (ExprVisitor::visit(WrappedExp)): Remove function. 566 5672017-04-29 Iain Buclaw <ibuclaw@gdcproject.org> 568 569 * d-diagnostic.cc (verror): Use xvasprintf. 570 (verrorSupplemental): Likewise. 571 (vwarning): Likewise. 572 (vwarningSupplemental): Likewise. 573 (vdeprecation): Likewise. 574 (vdeprecationSupplemental): Likewise. 575 5762017-04-24 Iain Buclaw <ibuclaw@gdcproject.org> 577 578 * d-tree.h (d_tree_index): Add DTI_VTABLE_ENTRY_TYPE, 579 DTI_VTBL_INTERFACE_TYPE, DTI_ARRAY_TYPE, and DTI_NULL_ARRAY. 580 (vtable_entry_type): New macro. 581 (vtbl_interface_type_node): New macro. 582 (array_type_node): New macro. 583 (null_array_node): New macro. 584 * d-builtins.cc (d_build_d_type_nodes): Initialize new trees. 585 * d-codegen.cc (build_struct_literal): Allow NULL index when 586 looking for next field to initialize. 587 (copy_aggregate_type): New function. 588 * d-target.cc (Target::loadModule): Look for object module, 589 call create_tinfo_types. 590 * decl.cc (TypeInfoDeclVisitor): Move to typeinfo.cc. 591 (get_typeinfo_decl): Likewise. 592 (copy_struct): Remove function. Updated callers to use 593 copy_aggregate_type. 594 (layout_classinfo_interfaces): Move to typeinfo.cc. 595 (get_classinfo_decl): Likewise. 596 (get_cpp_typeinfo_decl): Likewise. 597 * typeinfo.cc (tinfo_kind): New enum. 598 (tinfo_types): New static variable. 599 (get_typeinfo_kind): New function. 600 (make_internal_typeinfo): New function. 601 (make_frontend_typeinfo): New function. 602 (create_tinfo_types): New function. 603 (TypeInfoVisitor::set_field): Remove function. 604 Update all callers to use layout_field. 605 (TypeInfoVisitor::layout_vtable): Remove function. 606 Update all callers to use layout_base. 607 (TypeInfoVisitor::layout_field): New function. 608 (TypeInfoVisitor::layout_base): New function. 609 (builtin_typeinfo_p): New function. 610 (genTypeInfo): Rename to create_typeinfo. 611 (isSpeculativeType): Rename to speculative_type_p. 612 6132017-04-23 Iain Buclaw <ibuclaw@gdcproject.org> 614 615 * d-tree.h (d_function_chain): Declare macro. Update all uses of 616 `cfun->language' to use it. 617 6182017-04-22 Iain Buclaw <ibuclaw@gdcproject.org> 619 620 * d-decls.cc: Rename to decl.cc. 621 (get_symbol_decl): Handle typeinfo declarations. 622 (declare_extern_var): New function. 623 (declare_local_var): New function. 624 (get_moduleinfo_decl): Call declare_extern_var. 625 (get_classinfo_decl): Likewise. 626 (get_vtable_decl): Likewise. 627 (get_cpp_typeinfo_decl): Likewise. 628 (aggregate_initializer_decl): Likewise. 629 (enum_initializer_decl): Likewise. 630 * Make-lang.in (D_OBJS): Update. 631 * d-codegen.cc (build_local_var): Remove function. 632 Updated all callers to use declare_local_var. 633 (build_local_temp): Move to decl.cc. 634 (get_decl_tree): Likewise. 635 (expand_decl): Remove function. 636 (build_closure): Inline expand_decl here. 637 6382017-04-20 Iain Buclaw <ibuclaw@gdcproject.org> 639 640 * d-codegen.cc (pop_binding_label): Move to toir.cc. 641 (pop_label): Likewise. 642 (push_binding_level): Likewise 643 (pop_binding_level): Likewise. 644 (push_stmt_list): Likewise. 645 (add_stmt): Likewise. 646 (check_goto): Move to toir.cc, make it a member of IRVisitor. 647 (check_previous_goto): Likewise. 648 (lookup_label): Likewise. 649 (lookup_bc_label): Likewise. 650 (define_label): Likewise. 651 * toir.cc (build_ir): Rename to build_function_body. 652 6532017-04-19 Iain Buclaw <ibuclaw@gdcproject.org> 654 655 * d-target.cc: Update includes. 656 6572017-04-19 Iain Buclaw <ibuclaw@gdcproject.org> 658 659 * lang-specs.h: Remove capitalized D source suffixes. 660 6612017-04-19 Iain Buclaw <ibuclaw@gdcproject.org> 662 663 * lang-specs.h: Add rule for forwarding -iprefix and -imultilib to the 664 compiler proper. 665 6662017-04-19 Iain Buclaw <ibuclaw@gdcproject.org> 667 668 * lang-specs.h: Remove cc1d spec. 669 6702017-04-19 Iain Buclaw <ibuclaw@gdcproject.org> 671 672 * lang-specs.h: Remove +e handling. 673 6742017-04-18 Iain Buclaw <ibuclaw@gdcproject.org> 675 676 * d-diagnostic.cc: New file. 677 * d-frontend.cc: New file. 678 * d-glue.cc: Remove file. 679 * d-port.cc: Remove file. 680 * d-longdouble.h (template<typename T> operator): Remove operators. 681 6822017-04-17 Iain Buclaw <ibuclaw@gdcproject.org> 683 684 * d-incpath.cc (add_env_var_paths): Rename to add_environment_paths. 685 (make_absolute): Remove function. 686 (add_import_path): Rename to add_globalpaths. 687 (add_fileimp_path): Rename to add_filepaths. 688 6892017-04-17 Iain Buclaw <ibuclaw@gdcproject.org> 690 691 * d-codegen.h (d_types_same): Renamed to same_type_p. 692 Moved to types.cc. 693 (build_object_type): Renamed to get_object_type. Moved to types.cc. 694 * d-codegen.cc (type_va_array): Renamed to valist_array_p. 695 Moved to types.cc. 696 (d_array_type): Renamed to make_array_type. Moved to types.cc. 697 (insert_type_modifiers): Moved to types.cc. 698 (build_two_field_type): Likewise. 699 (empty_aggregate_p): Likewise. 700 (fixup_anonymous_offset): Likewise. 701 (layout_aggregate_members): Likewise. 702 (layout_aggregate_type): Likewise. 703 (insert_aggregate_field): Likewise. 704 (finish_aggregate_type): Likewise. 705 7062017-04-17 Iain Buclaw <ibuclaw@gdcproject.org> 707 708 * Make-lang.in (D_FRONTEND_OBJS): Update to match new source names. 709 7102017-04-11 Iain Buclaw <ibuclaw@gdcproject.org> 711 712 * gdc.texi: Rewrite documentation for manpages. 713 7142017-04-08 Iain Buclaw <ibuclaw@gdcproject.org> 715 716 * d-objfile.cc (DeclVisitor::visit(FuncDeclaration)): Remove logic 717 that parent needs to be compiled before nested. 718 7192017-04-08 Iain Buclaw <ibuclaw@gdcproject.org> 720 721 * d-lang.cc (d_post_options): Don't overwrite in_fnames. 722 (d_parse_file): Don't error about not being able to use stdin. 723 Implement support for reading source code from stdin. 724 7252017-04-08 Iain Buclaw <ibuclaw@gdcproject.org> 726 727 * d-lang.cc (d_parse_file): Remove invalid file name checks. 728 7292017-04-08 Iain Buclaw <ibuclaw@gdcproject.org> 730 731 * d-glue.cc (Global::_init): Set global.stdmsg to stderr. 732 7332017-04-07 Iain Buclaw <ibuclaw@gdcproject.org> 734 735 * d-codgen.h (current_module_decl): Moved to d-objfile.cc. 736 * d-objfile.h (current_module_info): Likewise. 737 (ModuleInfoFlags): Likewise. 738 (ModuleInfo): Likewise. 739 * d-objfile.cc (start_function): Move updating ModuleInfo structure to 740 ... 741 (DeclVisitor::visit(FuncDeclaration)): ... here. Set it after 742 finishing off the function. 743 7442017-04-07 Iain Buclaw <ibuclaw@gdcproject.org> 745 746 * d-objfile.cc (DeclVisitor::visit(FuncDeclaration)): Use 747 push_function_decl for storing current state when switching to nested 748 functions. Remove handling of deferred functions. 749 * d-tree.h (language_function): Remove deferred_fns. 750 * expr.cc (ExprVisitor::visit(DelegateExp)): Don't defer compiling 751 the delegate lambda. 752 (ExprVisitor::visit(FuncExp)): Likewise for function literals. 753 (ExprVisitor::visit(VarExp)): Likewise. 754 7552017-04-07 Iain Buclaw <ibuclaw@gdcproject.org> 756 757 * d-codegen.cc (start_function): Move to d-objfile.cc, make it static. 758 (end_function): Likewise. Renamed to finish_function. 759 7602017-04-05 Iain Buclaw <ibuclaw@gdcproject.org> 761 762 * d-codegen.cc (d_convert): Move to d-convert.cc. 763 (convert_expr): Likewise. 764 (convert_for_assignment): Likewise. 765 (convert_for_argument): Likewise. 766 (convert_for_condition): Likewise. 767 (d_array_convert): Likewise. 768 7692017-04-04 Iain Buclaw <ibuclaw@gdcproject.org> 770 771 * d-builtins.c (d_global_trees): Move to d-lang.cc. 772 (build_dtype): Rename to build_frontend_type. 773 Updated all callers. 774 (build_expression): Rename to d_eval_constant_expression. 775 Updated all callers. 776 (build_alias_declaration): New function. 777 (d_build_c_type_nodes): New function. 778 (d_build_d_type_nodes): New function. 779 (d_define_builtins): New function. 780 7812017-04-04 Iain Buclaw <ibuclaw@gdcproject.org> 782 783 * d-attribs.c (insert_type_attribute): Use 784 build_type_attribute_variant. 785 (insert_decl_attribute): Use build_decl_attribute_variant. 786 (uda_attribute_p): Remove string table, use Identifier comparison for 787 looking up table attributes. 788 (build_attributes): Make unknown attribute a warning, use quoted 789 strings in diagnostic messages. 790 7912017-04-01 Iain Buclaw <ibuclaw@gdcproject.org> 792 793 * d-lang.cc (d_handle_option): Handle -fdump-d-original. 794 (d_parse_file): Likewise. 795 * d-target.cc (Target::maxStaticDataSize): New variable. 796 (Target::_init): Initialize maxStaticDataSize. 797 * lang.opt (fdump-d-original): Declare. 798 7992017-04-01 Iain Buclaw <ibuclaw@gdcproject.org> 800 801 * Make-lang.in (D_GLUE_OBJS): Remove d-todt.cc. 802 * d-objfile.cc (build_moduleinfo_symbol): Build initializer for 803 ModuleInfo directly from inferred type fields. 804 (d_finish_symbol): Remove handling of DECL_LANG_INITIAL. 805 * d-todt.cc: Remove file. 806 * d-tree.h (lang_decl): Remove initial field. 807 (DECL_LANG_INITIAL): Remove macro. 808 8092017-03-31 Iain Buclaw <ibuclaw@gdcproject.org> 810 811 * d-objfile.cc (DeclVisitor::visit(VarDeclaration)): Use build_expr to 812 generate the static initializer. 813 * d-todt.cc (Initializer::toDt): Remove function and all overrides. 814 * expr.cc (ExprVisitor::visit(VarExp)): Use build_expr to get the 815 constant initializer of a constant variable. 816 8172017-03-29 Iain Buclaw <ibuclaw@gdcproject.org> 818 819 * d-decls.cc (aggregate_initializer): Renamed to 820 aggregate_initializer_decl. Updated all callers. 821 (enum_initializer): Renamed to enum_initializer_decl. 822 Updated all callers. 823 (layout_class_initializer): New function. 824 (layout_struct_initializer): New function. 825 * d-todt.cc (ClassDeclaration::toDt): Remove function. 826 (StructDeclaration::toDt): Remove function. 827 8282017-03-27 Iain Buclaw <ibuclaw@gdcproject.org> 829 830 * d-objfile.cc (DeclVisitor::visit(Module)): New function. 831 (Module::genobjfile): Remove function. 832 Updated all callers to use build_decl_tree. 833 (layout_moduleinfo): New function. 834 (Module::genmoduleinfo): Remove function. 835 Update all callers to use layout_moduleinfo. 836 8372017-03-26 Iain Buclaw <ibuclaw@gdcproject.org> 838 839 * d-objfile.cc (base_vtable_offset): New function. 840 (ClassDeclaration::baseVtblOffset): Remove function. 841 Updated all callers to use base_vtable_offset. 842 8432017-03-26 Iain Buclaw <ibuclaw@gdcproject.org> 844 845 * d-objfile.cc (DeclVisitor): New visitor interface to supercede the 846 toObjFile methods. 847 (build_decl_tree): New function. 848 (Dsymbol::toObjFile): Remove function and overrides. 849 Updated all callers to use build_decl_tree. 850 8512017-03-20 Iain Buclaw <ibuclaw@gdcproject.org> 852 853 * d-decls.cc (get_cpp_typeinfo_decl): New function. 854 * d-lang.cc (d_build_eh_type_type): Return classinfo for 855 __cpp_type_info_ptr when generating catch for C++ classes. 856 * runtime.def (CXA_BEGIN_CATCH): Define. 857 (CXA_END_CATCH): Define. 858 * toir.cc (IRVisitor::visit(TryCatchStatement)): Support catching 859 classes thrown from C++. 860 * typeinfo.cc (layout_cpp_typeinfo): New function. 861 8622017-03-20 Iain Buclaw <ibuclaw@gdcproject.org> 863 864 * d-builtins.cc (d_build_builtins_module): Always mark gcc builtins as 865 nothrow functions. 866 8672017-03-11 Iain Buclaw <ibuclaw@gdcproject.org> 868 869 * d-longdouble.cc (CTFloat::zero): New variable. 870 (CTFloat::one): New variable. 871 (CTFloat::minusone): New variable. 872 (CTFloat::half): New variable. 873 (longdouble::set): Remove float and double overloads. 874 (longdouble::operator float): Remove function. 875 (longdouble::operator double): Remove function. 876 * d-target.cc (Target::_init): Initialize floating point constants. 877 8782017-03-11 Iain Buclaw <ibuclaw@gdcproject.org> 879 880 * d-lang.cc (d_init): Replace calls to init with _init. 881 * d-glue.cc (Global::init): Renamed to Global::_init. 882 * d-target.cc (Target::init): Renamed to Target::_init. 883 8842017-03-11 Iain Buclaw <ibuclaw@gdcproject.org> 885 886 * d-longdouble.cc (longdouble::format): Remove function. 887 (longdouble::formatHex): Remove function. 888 (longdouble::dump): Remove function. 889 (CTFloat::sprint): Inline implementation of format and formatHex here. 890 8912017-03-11 Iain Buclaw <ibuclaw@gdcproject.org> 892 893 * d-lang.cc (d_init): Remove calls to Port::init and longdouble::init. 894 * d-longdouble.cc (real_limits): Remove variable. 895 (longdouble::init): Remove function. 896 (CTFloat::parse): Update to use Target::RealProperties. 897 * d-port.cc (Port::ldbl_nan): Remove variable. 898 (Port::snan): Remove variable. 899 (Port::ldbl_infinity): Remove variable. 900 (Port::ldbl_max): Remove variable. 901 (Port::init): Remove function. 902 (Port::isFloat32LiteralOutOfRange): Update to use 903 Target::RealProperties. 904 (Port::isFloat64LiteralOutOfRange): Likewise. 905 * d-target.cc (Target::FPTypeProperties<T>::max): Define. 906 (Target::FPTypeProperties<T>::min_normal): Define. 907 (Target::FPTypeProperties<T>::nan): Define. 908 (Target::FPTypeProperties<T>::snan): Define. 909 (Target::FPTypeProperties<T>::infinity): Define. 910 (Target::FPTypeProperties<T>::epsilon): Define. 911 (Target::FPTypeProperties<T>::dig): Define. 912 (Target::FPTypeProperties<T>::mant_dig): Define. 913 (Target::FPTypeProperties<T>::max_exp): Define. 914 (Target::FPTypeProperties<T>::min_exp): Define. 915 (Target::FPTypeProperties<T>::max_10_exp): Define. 916 (Target::FPTypeProperties<T>::min_10_exp): Define. 917 (define_float_constants): New function. 918 (Target::init): Initialize compile-time floating point properties. 919 * longdouble.h (Mode): Remove type declaration. 920 (real_properties): Remove type declaration. 921 9222017-03-10 Iain Buclaw <ibuclaw@gdcproject.org> 923 924 * d-longdouble.cc (CTFloat::fabs): New function. 925 (CTFloat::isIdentical): New function. 926 (CTFloat::isNaN): New function. 927 (CTFloat::isSNaN): New function. 928 (CTFloat::isInfinity): New function. 929 (CTFloat::parse): New function. 930 (CTFloat::sprint): New function. 931 * d-port.cc (Port::isNan): Remove function. 932 (Port::isSignallingNan): Remove function. 933 (Port::isInfinity): Remove function. 934 (Port::fequal): Remove function. 935 (Port::strtof): Remove function. 936 (Port::strtod): Remove function. 937 (Port::strtold): Remove function. 938 (Port::isFloat32LiteralOutOfRange): New function. 939 (Port::isFloat64LiteralOutOfRange): New function. 940 * longdouble.h (ld_sprint): Remove function. 941 9422017-03-06 Iain Buclaw <ibuclaw@gdcproject.org> 943 944 * d-glue.cc (verror): Update to handle -Wspeculative. 945 (verrorSupplemental): Likewise. 946 * d-lang.cc (d_init_options): Initialize module alias array. 947 (d_init_options): Handle -fmodule-filepath= and -Wspeculative. 948 * d-port.cc (Port::stricmp): Remove function. 949 (Port::writelongLE): New function. 950 (Port::writelongBE): New function. 951 * lang.opt (Wspeculative): Declare. 952 (fmodule-filepath=): Declare. 953 9542017-03-06 Iain Buclaw <ibuclaw@gdcproject.org> 955 956 * d-lang.cc (d_handle_option): Handle -ftransition=dip1000 957 * lang.opt (ftransition=dip1000): Declare. 958 (ftransition=safe): Make alias for -ftransition=dip1000 959 9602017-03-04 Iain Buclaw <ibuclaw@gdcproject.org> 961 962 * d-codegen.cc (get_decl_tree): Handle chaining over many levels of 963 nesting functions to get to the right parent for the 'this' field. 964 9652017-03-04 Iain Buclaw <ibuclaw@gdcproject.org> 966 967 * d-decls.cc (get_symbol_decl): Move generation of DECL_ARGUMENTS for 968 empty body declarations to ... 969 (make_thunk): ... here. Also set-up DECL_RESULT. 970 (finish_thunk): Mark DECL_UNINLINEABLE on external functions. 971 9722017-03-04 Iain Buclaw <ibuclaw@gdcproject.org> 973 974 * d-decls.cc (make_thunk): Don't build thunks for functions that 975 failed to compile. 976 9772017-03-04 Iain Buclaw <ibuclaw@gdcproject.org> 978 979 * d-objfile.cc (emit_dso_registry_hooks): Set DECL_PRESERVE_P. 980 9812017-02-26 Iain Buclaw <ibuclaw@gdcproject.org> 982 983 * d-codegen.cc (build_frame_type): Update condition for scope 984 destruction error. 985 * d-port.cc (Port::valcpy): New function. 986 * expr.cc (ExprVisitor::visit(CallExp)): Generate cast of 'this' 987 object to the right handle type before indexing. 988 9892017-02-24 Iain Buclaw <ibuclaw@gdcproject.org> 990 991 * d-glue.cc (warningSupplemental): New function. 992 (vwarningSupplemental): New function. 993 (deprecationSupplemental): New function. 994 (vdeprecationSupplemental): New function. 995 9962017-02-23 Iain Buclaw <ibuclaw@gdcproject.org> 997 998 * imports.cc (ImportVisitor::visit(OverDeclaration)): New function. 999 (ImportVisitor::visit(FuncAliasDeclaration)): New function. 1000 10012017-02-21 Iain Buclaw <ibuclaw@gdcproject.org> 1002 1003 * d-lang.cc (d_handle_option): Handle -X and -Xf options. 1004 (d_parse_file): Update. 1005 * lang-specs.h: Add rules for -X style options. 1006 * lang.opt (X): Declare. 1007 (Xf): Declare. 1008 (fXf=): Make alias for -Xf. 1009 10102017-02-21 Iain Buclaw <ibuclaw@gdcproject.org> 1011 1012 * lang.opt (fd-vgc): Comment out help test. 1013 (fd-verbose): Likewise. 1014 (fd-vtls): Likewise. 1015 (femit-modules): Likewise. 1016 10172017-02-20 Iain Buclaw <ibuclaw@gdcproject.org> 1018 1019 * d-target.cc (Target::fieldalign): Adjust. 1020 10212017-02-19 Iain Buclaw <ibuclaw@gdcproject.org> 1022 1023 * d-lang.cc (d_option_data): Add fields to support other -M options. 1024 (d_init_options): Initialize them. 1025 (deps_add_target): New function. 1026 (deps_write): Support multiple targets and phony rules. 1027 (d_handle_option): Handle gcc -M style options. 1028 (d_parse_file): Likewise. 1029 * lang-specs.h: Add rules for -M style options. 1030 * lang.opt: Declare -M style options. 1031 10322017-02-19 Iain Buclaw <ibuclaw@gdcproject.org> 1033 1034 * d-lang.cc (is_system_module): Remove. 1035 (deps_write): Always ignore entrypoint module. 1036 10372017-02-19 Iain Buclaw <ibuclaw@gdcproject.org> 1038 1039 * d-lang.cc (write_one_dep): Remove. 1040 (deps_write): Update signature. 1041 10422017-02-19 Iain Buclaw <ibuclaw@gdcproject.org> 1043 1044 * d-lang.cc (iprefix_dir): Remove. 1045 (imultilib_dir): Remove. 1046 (std_inc): Remove. 1047 (d_option_data): New struct. 1048 (d_option): Declare. 1049 (d_init_options): Initialize d_option. 1050 (d_init): Update to use d_option. 1051 (d_handle_option): Likewise. 1052 (d_parse_file): Likewise. 1053 (deps_write): Update signature. 1054 10552017-02-19 Iain Buclaw <ibuclaw@gdcproject.org> 1056 1057 * d-lang.cc (d_handle_option): Call D_handle_option_auto. 1058 * lang.opt (Wunknown-pragmas): Turn on warning with -Wall. 1059 10602017-02-18 Iain Buclaw <ibuclaw@gdcproject.org> 1061 1062 * d-lang.cc (d_handle_option): Replace -fin with -fpreconditions; 1063 -fout with -fpostconditions. Handle -fswitch-errors. 1064 (d_post_options): Move setting of release code flags here. 1065 * lang.opt (fassert): Declare flag_assert. 1066 (fin): Make alias for -fpreconditions. 1067 (finvariants): Declare flag_invariants. 1068 (fout): Make alias for -fpostconditions. 1069 (fpostconditions): Declare. 1070 (fpreconditions): Declare. 1071 (fswitch-errors): Declare. 1072 10732017-02-18 Iain Buclaw <ibuclaw@gdcproject.org> 1074 1075 * d-objfile.cc (PragmaDeclaration::toObjFile): Warn about unknown 1076 pragmas only if -Wunknown-pragmas. 1077 10782017-02-18 Iain Buclaw <ibuclaw@gdcproject.org> 1079 1080 * d-glue.cc (Global::init): Initialize errorLimit to flag_max_errors. 1081 (verror): Don't halt program after invocation limit. 1082 * d-lang.cc (d_handle_option): Remove handling -fmax-error-messages. 1083 * lang.opt (fmax-error-messages): Remove option. 1084 10852017-02-18 Iain Buclaw <ibuclaw@gdcproject.org> 1086 1087 * d-decls.cc (get_symbol_decl): Handle -Wtemplates. 1088 * d-lang.cc (d_init_options): Remove setting flag_emit_templates. 1089 (d_handle_option): Replace handling -femit-templates with 1090 -fall-instantiations. 1091 (d_pushdecl): Remove checking for flag_emit_templates. 1092 * d-tree.h (D_DECL_IS_TEMPLATE): Remove macro. 1093 * lang.opt (flag_emit_templates): Remove variable. 1094 (fall-instantiations): Declare. 1095 (femit-templates): Make alias for -fall-instantiations. 1096 (Wtemplates): Declare. 1097 10982017-02-18 Iain Buclaw <ibuclaw@gdcproject.org> 1099 1100 * lang.opt (fassert): Update help text. 1101 (fin): Likewise. 1102 (finvariants): Likewise. 1103 (fout): Likewise. 1104 11052017-02-11 Iain Buclaw <ibuclaw@gdcproject.org> 1106 1107 * d-objfile.cc (VarDeclaration::toObjFile): Error if a variable covers 1108 more than half the address space. 1109 11102017-02-04 Iain Buclaw <ibuclaw@gdcproject.org> 1111 1112 * d-objfile.cc (Module::genmoduleinfo): Ignore symbol visibility when 1113 looking up module DSO symbols. 1114 11152017-01-29 Iain Buclaw <ibuclaw@gdcproject.org> 1116 1117 * d-lang.cc (d_handle_option): Handle -ftransition=all. 1118 * lang.opt (ftransition=all): Add compiler option. 1119 11202017-01-29 Iain Buclaw <ibuclaw@gdcproject.org> 1121 1122 * d-lang.cc (d_handle_option): Handle -ftransition=checkimports. 1123 * lang.opt (ftransition=checkimports): Add compiler option. 1124 11252017-01-28 Iain Buclaw <ibuclaw@gdcproject.org> 1126 1127 * d-lang.cc (d_handle_option): Handle -ftransition=import. 1128 * lang.opt (ftransition=import): Add compiler option. 1129 11302017-01-25 Iain Buclaw <ibuclaw@gdcproject.org> 1131 1132 * imports.cc (ImportVisitor::visit(EnumDeclaration)): New function. 1133 (ImportVisitor::visit(AggregateDeclaration)): New function. 1134 (ImportVisitor::visit(ClassDeclaration)): New function. 1135 (ImportVisitor::make_import): New function. 1136 (ImportVisitor::visit(AliasDeclaration)): Get decl for type alias. 1137 11382017-01-22 Iain Buclaw <ibuclaw@gdcproject.org> 1139 1140 * expr.cc (ExprVisitor::visit(EqualExp)): Don't use memcmp on arrays 1141 of structs that define xopEquals. 1142 11432017-01-15 Iain Buclaw <ibuclaw@gdcproject.org> 1144 1145 * d-spec.cc (lang_specific_driver): Add missing break. 1146 11472017-01-13 Iain Buclaw <ibuclaw@gdcproject.org> 1148 1149 * d-codegen.cc (build_class_instance): Don't check for void 1150 initialized fields. 1151 * expr.cc (ExprVisitor::visit(StructLiteralExp)): Likewise. 1152 11532017-01-11 Iain Buclaw <ibuclaw@gdcproject.org> 1154 1155 * typeinfo.cc (layout_classinfo): Use placement new to initialize 1156 typeinfo class declaration. 1157 11582017-01-02 Iain Buclaw <ibuclaw@gdcproject.org> 1159 1160 * d-codegen,cc (get_frame_for_symbol): Use fully qualified name in 1161 error message. 1162 (build_frame_type): Always add parameters to closure vars if the 1163 function has a contract function. 1164 (get_frameinfo): Likewise, always create a frame. 1165 * expr.cc (ExprVisitor::needs_dtor): New function. 1166 (ExprVisitor::lvalue_p): New function. 1167 (ExprVisitor::visit(AssignExp)): Check for dtor in array assignments. 1168 (ExprVisitor::visit(TypeidExp)): Cast result to expression type. 1169 1170 1171Copyright (C) 2017 Free Software Foundation, Inc. 1172 1173Copying and distribution of this file, with or without modification, 1174are permitted in any medium without royalty provided the copyright 1175notice and this notice are preserved. 1176