12013-12-27 Iain Buclaw <ibuclaw@gdcproject.org> 2 3 * d-codegen.cc (build_two_field_type): Declare builtin types as 4 toplevel declarations. 5 * d-ctype.cc (EnumDeclaration::toDebug): Build type decl in debug code. 6 * d-lang.cc (nametype): Rename to d_nametype. 7 82013-12-23 Iain Buclaw <ibuclaw@gdcproject.org> 9 10 * d-decls.cc (EnumDeclaration::toDebug): Don't send array types to 11 rest_of_type_compilation. 12 132013-12-16 Iain Buclaw <ibuclaw@gdcproject.org> 14 15 * d-spec.cc (lang_specific_driver): Require linking in library for all 16 files except D interface files. 17 * d-lang.cc (d_write_global_declarations): Call d_finish_compilation. 18 * d-objfile.cc (mark_needed): Mark static. 19 (d_finish_symbol): Don't call mark_needed. 20 (d_finish_function): Likewise. 21 (d_finish_compilation): New function to wrapup all global 22 declarations, mark templates/comdats as needed if required, and start 23 the final compilation. 24 252013-12-10 Iain Buclaw <ibuclaw@gdcproject.org> 26 27 * d-ctype.cc (TypeVector::toCtype): Treat void vectors as ubyte. 28 * d-objfile.cc (VarDeclaration::toObjFile): Gag all errors compiling 29 manifest constants. 30 * d-todt.cc (TypeVector::toDt): New function to generate correct static 31 data for vector initialisers. 32 332013-12-05 Iain Buclaw <ibuclaw@gdcproject.org> 34 35 * d-lang.cc (d_init_options_struct): Don't define strict aliasing. 36 (d_get_alias_set): New function to return language-specific alias set. 37 * d-convert.cc (d_convert_basic): Always zero extend pointer to integer 38 conversions. 39 402013-12-04 Iain Buclaw <ibuclaw@gdcproject.org> 41 42 * d-codegen.cc (maybe_set_builtin_frontend): Assert that all runtime 43 library functions have been set-up correctly. 44 (libcall_ids): Remove unhandled library functions. 45 (get_libcall): Likewise. 46 * d-codegen.h (LibCall): Likewise. 47 * d-objfile.cc (output_symbol_p): Remove. 48 492013-12-03 Iain Buclaw <ibuclaw@gdcproject.org> 50 51 * d-lang.cc (d_init_options): Update for frontend changes. 52 (d_handle_option): Set frontend allInst option if -femit-templates. 53 * d-objfile.cc (output_template_p): Want to emit all instantiated 54 templates if -femit-templates or -fdebug was passed to the compiler. 55 * d-objfile.h (TemplateEmission): Define TEallinst. 56 * d-todt.cc (StructDeclaration::toDt): Update for frontend changes. 57 * d-spec.cc (THREAD_LIBRARY): Define default thread library to link if 58 one is not already specified in the configuration process. 59 (TIME_LIBRARY): Define default real time library to link if one is not 60 already specified in the configuration process. 61 (LIBSTDCXX): Define C++ library to link if compiling C++ and D sources. 62 (lang_specific_driver): Update implementation to use new macros. 63 642013-12-02 Iain Buclaw <ibuclaw@gdcproject.org> 65 66 * d-elem.cc (CatAssignExp::toElem): Don't call postblit after element 67 append to array. 68 (NewExp::toElem): Handle calling 'new' on opaque types. 69 (ArrayLiteralExp::toElem): Ensure array literal elements have no side 70 effects by making temporaries as necessary. 71 * d-todt.cc (StructLiteralExp::toDt): Update for frontend changes. 72 * d-codegen.cc (build_frame_type): Check for scoped variables if 73 building a closure. 74 * d-objfile.cc (d_finish_symbol): Relax toDt checking rule. 75 762013-12-01 Iain Buclaw <ibuclaw@gdcproject.org> 77 78 * d-asmstmt.cc (ExtAsmStatement::ExtAsmStatement): Remove labels 79 member from class. 80 * d-codegen.cc (d_gcc_force_templates): Remove. 81 (convert_expr): Update for frontend changes. 82 (convert_for_assignment): Likewise. 83 (maybe_set_builtin_frontend): Update for changes to libdruntime 84 core.bitops signatures. 85 * d-ctype.cc (TypeFunction::toCtype): Update for frontend changes. 86 * d-decls.cc (Dsymbol::toSymbolX): Likewise. 87 (VarDeclaration::toSymbol): Likewise. 88 (FuncDeclaration::toSymbol): Don't defer nested functions here. 89 * d-elem.cc (PowAssignExp::toElem): Update for frontend changes. 90 (DeleteExp::toElem): Likewise. 91 (AssertExp::toElem): Don't call invariant on an extern C++ class. 92 * d-glue.cc (Global::init): Initialise new stdmsg member. 93 * d-lang.cc (d_handle_option): Handle -fdeps switch. Remove TEprivate 94 for -femit-templates switch. 95 (genCmain): Update for frontend changes. 96 (d_parse_file): Likewise. 97 * d-longdouble.cc (longdouble::dump): Likewise. 98 * d-objfile.cc (ClassDeclaration::toObjFile): Update for frontend 99 changes. 100 (InterfaceDeclaration::toObjFile): Likewise. 101 (EnumDeclaration::toObjFile): Likewise. 102 (Symbol::Symbol): Remove outputSymbol member. 103 (output_symbol_p): Mark static. 104 (output_declaration_p): Determine symbol codegen status from 105 semanticRun. 106 (output_template_p): New function to determine whether an instantiated 107 template is to be written to object file. 108 (FuncDeclaration::toObjFile): Use semanticRun to update codegen status 109 of function. 110 (FuncDeclaration::buildClosure): Error if putting a scoped variable in 111 a closure. 112 (Module::genobjfile): Update for frontend changes. 113 (d_comdat_linkage): Don't determine linkage from TE setting. Mark all 114 comdat symbols as DECL_COMDAT. 115 (setup_symbol_storage): Use output_template_p to determine whether the 116 symbol is being written to object file. 117 (mark_needed): New function to mark decls that must be emitted. 118 (d_finish_symbol): Mark finished symbols as needed. 119 (d_finish_function): Mark finished functions as needed. 120 (build_simple_function): Set semanticRun for glue changes. 121 * d-objfile.h (OutputStage): Remove enum. 122 * d-todt.cc (build_vptr_monitor): Update for frontend changes. 123 (StructInitializer::toDt): Likewise. 124 (StructDeclaration::toDt): Likewise. 125 (TypeInfoEnumDeclaration::toDt): Likewise. 126 (TypeInfoStructDeclaration::toDt): Likewise. 127 (Type::getTypeInfo): Likewise. 128 1292013-11-30 Iain Buclaw <ibuclaw@gdcproject.org> 130 131 * d-lang.cc (genCmain): Implement code generation of __entrypoint 132 module to provide the target C main function. 133 (deps_write): Ignore the module __entrypoint when writing make deps. 134 (d_parse_file): Handle writing __entrypoint module to object file. 135 * d-objfile.cc (d_finish_symbol): Remove special handling of _tlsstart 136 symbol, but ensure _tlsend gets written to the thread common section. 137 (d_finish_function): Remove call to build_tlssections. 138 (build_tlssections): Remove. 139 1402013-11-29 Iain Buclaw <ibuclaw@gdcproject.org> 141 142 * d-decls.cc (ClassDeclaration::toVtblSymbol): Use TypeSArray::makeType 143 to generate frontend static array type. 144 * d-glue.cc (Dsymbol::ungagSpeculative): Define. 145 * d-lang.cc (genCmain): Define as empty. 146 (d_parse_file): Update for frontend changes. 147 * d-objfile.cc (StructDeclaration::toObjFile): Likewise. 148 * d-typinf.cc (TypeBasic::builtinTypeInfo): Likewise. 149 * d-longdouble.cc (longdouble::isIdenticalTo): Remove. 150 * d-port.cc (Port::fequal): Define. 151 1522013-11-28 Iain Buclaw <ibuclaw@gdcproject.org> 153 154 * d-builtins.cc (gcc_type_to_d_type): Use TypeSArray::makeType to 155 generate frontend static array types. 156 * d-codegen.cc (build_attributes): Use optimize as don't want the 157 ctfeInterpret of TypeExp expressions. 158 (get_object_method): Update for frontend changes. 159 (get_libcall): Update to use Type::dtypeinfo. 160 * d-elem.cc (IndexExp::toElem): Don't generate bounds checking codegen 161 if frontend explictly requests it. 162 (ArrayLiteralExp::toElem): Use TypeSArray::makeType to generate 163 frontend static array type. 164 (StructLiteralExp::toElem): Update for frontend changes. 165 * d-glue.cc (Global::increaseErrorCount): Define. 166 * d-objfile.cc (Module::genmoduleinfo): Remove moduleinfo 'New' 167 implementation for libdruntime changes. 168 * d-todt.cc (StructLiteralExp::toDt): Literal initialisers override 169 default initialisers. 170 (TypeInfoDeclaration::toDt): Update to use Type::dtypeinfo. 171 (TypeInfoStructDeclaration::toDt): Update for frontend changes. 172 * d-typinf.c (Type::getInternalTypeInfo): Update to use 173 Type::dtypeinfo. 174 1752013-11-25 Iain Buclaw <ibuclaw@gdcproject.org> 176 177 * d-asmstmt.cc (ExtAsmStatement::comeFromImpl): Define for frontend 178 implementation changes. 179 * d-codegen.cc (get_libcall): Update to use Type::typeinfoclass. 180 * d-codegen.cc (WrappedExp): Define as class. 181 * d-convert.cc (d_convert_basic): Fix format warnings. 182 * d-decls.cc (ModuleInfoDeclaration::toSymbol): Remove. 183 (FuncDeclaration::toSymbol): Use mangleExact to get decl mangle. 184 * d-elem.cc (ClassReferenceExp::toElem): Return reference to class. 185 * d-glue.cc (verror): Fix format warnings. 186 (verrorSupplemental): Likewise. 187 (vwarning): Likewise. 188 (vdeprecation): Likewise. 189 (escapePath): Define for frontend implementation changes. 190 * d-irstate.cc (IRState::getLoopForLabel): Implement breaking on named 191 scope labels in for/while loops. 192 * d-lang.cc (d_handle_option): Add handler for new -fdeps and 193 -fmake-deps options. 194 (d_parse_file): Handle new -fdeps and fmake-deps options. 195 * d-objfile.cc (Dsymbol::toObjFile): Update to use RootObject. 196 (Type::typeinfoclass): Update to use Type::typeinfoclass. 197 (InterfaceDeclaration::toObjFile): Likewise. 198 * d-objfile.h (Symbol): Remove inheritance from Object. 199 * d-todt.cc (TypeInfoStructDeclaration::toDt): Update to use 200 Type::immutableOf. 201 2022013-11-24 Iain Buclaw <ibuclaw@gdcproject.org> 203 204 * d-builtins.c (gcc_type_to_d_type): Use TREE_INT_CST_LOW macro instead 205 of tree_low_cst. 206 (eval_builtin): Likewise. 207 (gcc_cst_to_d_expr): Use tree_cst_hwi. 208 * d-codegen.cc (tree_to_hwi): Remove call to deleted host_integerp. 209 (maybe_expand_builtin): Use TREE_INT_CST_LOW macro. 210 * d-lang.cc (d_parse_file): Update debug_hooks call for middle-end 211 changes. 212 * d-system.h: Update includes for middle-end changes. 213 2142013-11-17 Iain Buclaw <ibuclaw@gdcproject.org> 215 216 * d-objfile.cc (finish_thunk): Update for conversion of symtab types to 217 a true class hierarchy. 218 219 * d-ctype.cc (TypeClass::toCtype): Fix ABI to emit correct vtable and 220 monitor field names. 221 222 * d-ctype.cc (TypeClass:toCtype): Set TYPE_LANG_SPECIFIC on record as 223 well as reference type. 224 * d-lang.cc (d_classify_record): New langhook to return appropriate 225 class/interface/struct type to the debugger. 226 2272013-10-27 Iain Buclaw <ibuclaw@gdcproject.org> 228 229 * d-elem.cc (ArrayLiteralExp::toElem): Build empty constructor for zero 230 sized arrays. 231 2322013-10-23 Iain Buclaw <ibuclaw@gdcproject.org> 233 234 * d-elem.cc (AssignExp::toElem): Optimise assigning array literal to a 235 static array. 236 (ArrayLiteralExp::toElem): Do not allocate static or const array 237 literals on the heap using the GC. 238 2392013-10-16 Iain Buclaw <ibuclaw@gdcproject.org> 240 241 * d-builtins.c (DEF_FUNCTION_TYPE_8): Define. 242 2432013-10-10 Iain Buclaw <ibuclaw@gdcproject.org> 244 245 * d-builtins.c (gcc_cst_to_d_expr): Add support for VECTOR_CST to 246 Expression conversion. 247 (d_gcc_paint_type): Add support for painting to/from array literals. 248 2492013-10-01 Iain Buclaw <ibuclaw@gdcproject.org> 250 251 * d-objfile.cc (cvtLocToloc_t): Rename to get_linemap. 252 * d-glue.cc: New source to provide interface for defined globals and 253 error handling called from the front-end. 254 2552013-09-16 Iain Buclaw <ibuclaw@gdcproject.org> 256 257 * d-codegen.cc (IRState::call): Rename to d_build_call. 258 (IRState::emitLocalVar): Rename to build_local_var. 259 (IRState::buildAssignOp): Move to BinExp::toElemBin. 260 (IRState::IRState): Remove IRState class. 261 * d-irstate.cc (IRBase::IRBase): Rename to IRState, remove inheritance 262 from Object class. 263 * d-decls.cc (VarDeclaration::toSymbol): Remove redundant CONST_DECL 264 code as VarDeclaration::toObjFile does not emit manifest constants. 265 * d-ctype.cc (TypeEnum::toCtype): Generate CONST_DECLs for enumeration 266 members for correct debugging. 267 * d-objfile.cc (build_type_decl): Use fully qualified type name in 268 debugging code. 269 (VarDeclaration::toObjFile): Emit manifest constant values in debug 270 code generation. 271 2722013-09-10 Iain Buclaw <ibuclaw@gdcproject.org> 273 274 * d-elem.cc (SliceExp::toElem): Don't build D array for slices that 275 return a static array. 276 2772013-09-03 Iain Buclaw <ibuclaw@gdcproject.org> 278 279 * d-codegen.cc (IRState::buildOp): Rename to build_binary_op. 280 2812013-09-01 Iain Buclaw <ibuclaw@gdcproject.org> 282 283 * d-decls.cc (binfo_for): Rename to build_class_binfo. 284 (intfc_binfo_for): Rename to build_interface_binfo. 285 (ClassDeclaration::toDebug): Move binfo generation into toCtype. 286 * d-lang.cc (pushlevel): Rename to push_binding_level. 287 (poplevel): Rename to pop_binding_level. 288 (global_bindings_p): Rename to d_global_bindings_p, add langhook. 289 (pushdecl): Rename to d_pushdecl, add langhook. 290 (getdecls): Rename to d_getdecls, add langhook. 291 (set_block): Remove function. 292 (insert_block): Remove function. 293 * d-irstate.cc (IRBase::startBindings): Inline set_block here. 294 (IRBase::endBindings): Inline insert_block here. 295 2962013-08-29 Iain Buclaw <ibuclaw@gdcproject.org> 297 298 * d-spec.c (lang_specific_spec_functions): Remove. 299 3002013-08-28 Iain Buclaw <ibuclaw@gdcproject.org> 301 302 * d-codegen.cc (IRState::doArraySet): Rename to IRBase::doArraySet. 303 (IRState::arraySetExpr): Remove function. 304 (IRState::expandDecl): Rename to expand_decl. 305 (IRState::typeinfoReference): Rename to build_typeinfo. 306 (IRState::buildChain): Merge into FuncDeclaration::buildClosure. 307 (IRState::getVThis): Rename to build_vthis. 308 (IRState::maybeExpandSpecialCall): Rename to maybe_expand_builtin. 309 (IRState::toDArray): Rename to d_array_convert. 310 3112013-08-26 Iain Buclaw <ibuclaw@gdcproject.org> 312 313 * d-codegen.cc (convert_expr): Check that the class type the codegen is 314 casting from is a base class of the class type the codegen is casting 315 to, not the other way round. 316 3172013-08-14 Iain Buclaw <ibuclaw@gdcproject.org> 318 319 * d-elem.cc (ArrayLiteralExp::toElem): Return null for zero length 320 array literals. 321 3222013-08-07 Iain Buclaw <ibuclaw@gdcproject.org> 323 324 * d-objfile.cc (finish_thunk): Don't emit thunks to external symbols as 325 weakref declarations. 326 * d-codegen.cc (IRState::maybeExpandSpecialCall): Remove intrinsic yl2x 327 and yl2xp1 builtins. 328 (maybe_set_builtin_frontend): Likewise. 329 3302013-07-09 Iain Buclaw <ibuclaw@gdcproject.org> 331 332 * d-builtins.c (d_gcc_magic_builtins_module): Set builtins solely 333 provided by the compiler as @safe, pure and nothrow. 334 * d-codegen.cc (IRState::getVThis): Don't set outer 'this' of structs 335 to be parent function chain if no frame has been created. 336 3372013-07-08 Iain Buclaw <ibuclaw@gdcproject.org> 338 339 * d-elem.cc (Expression::toElemDtor): Wrap temp variables destructor 340 calls in a try/finally expression. 341 3422013-07-05 Johannes Pfau <johannespfau@gmail.com> 343 344 * patch-versym-os-4.8.x: Set versions on powerpc and alpha. 345 Remove SysV4 support and therefore fix macro redefinition warnings. 346 * patch-versym-os-4.9.x: Likewise. 347 3482013-07-03 Iain Buclaw <ibuclaw@gdcproject.org> 349 350 * d-longdouble.cc (longdouble::set): Intepret set values at higher 351 precision for min/max properties. 352 * d-codegen.cc (maybe_set_builtin_frontend): Add yl2x and yl2xp1 353 math intrinsics. 354 (IRState::maybeExpandSpecialCall): Likewise. 355 3562013-07-02 Iain Buclaw <ibuclaw@gdcproject.org> 357 358 * d-objfile.cc (Module::genobjfile): Don't free current_module_info. 359 * d-codegen.cc (IRState::buildAssignOp): Don't create a SAVE_EXPR 360 around comma expressions used as lvalues. 361 * d-todt.cc (TypeSArray::toDtElem): Get underlying vector basetype when 362 layouting out data in a static array. 363 3642013-06-29 Iain Buclaw <ibuclaw@gdcproject.org> 365 366 * complex_t.h: Move into dfrontend. 367 * d-builtins.c (gcc_cst_to_d_expr): Explicitly create longdouble. 368 * d-longdouble.cc (longdouble::parse): Remove function. 369 (longdouble::longdouble): Remove constructors from longdouble. 370 Replaced with operator= template and longdouble::set. 371 (longdouble::rv): Update for new class layout. 372 (longdouble::from_shwi): New function to create a longdouble value 373 from a HOST_WIDE_INT. 374 (longdouble::from_uhwi): Likewise, but from an unsigned HOST_WIDE_INT. 375 (longdouble::to_shwi): New function to return a HOST_WIDE_INT value 376 from a longdouble. 377 (longdouble::to_uhwi): Likewise, but from an unsigedn HOST_WIDE_INT. 378 (longdouble::set): New function to explicitly set longdouble value. 379 (longdouble::toInt): Remove function. 380 (longdouble::isZero): Remove function. 381 (longdouble::isNegative): Remove function. 382 * d-port.cc (Port::nan): Rename to Port::ldbl_nan. 383 (Port::infinity): Rename to Port::ldbl_infinity. 384 (Port::ldbl_max): New static field. 385 (Port::init): Set ldbl_max to be maximimum value for long double type. 386 (Port::strtof): New function to convert string to longdouble. 387 (Port::strtod): Likewise. 388 (Port::strtold): Likewise. 389 3902013-06-24 Iain Buclaw <ibuclaw@gdcproject.org> 391 392 * d-objfile.cc (make_alias_for_thunk): Do not set 393 TREE_SYMBOL_REFERENCED. 394 3952013-06-17 Iain Buclaw <ibuclaw@gdcproject.org> 396 397 * d-codegen.cc (build_struct_memcmp): New function. 398 * d-elem.cc (IdentityExp::toElem): Use build_struct_memcmp for field 399 comparisons of small structs. 400 4012013-06-13 Iain Buclaw <ibuclaw@gdcproject.org> 402 403 * d-codegen.cc (make_temp): New function. 404 * d-decls.cc (StructLiteralExp::toSymbol): Implement correctly to 405 generate an anonymous symbol to reference to in the codegen. 406 (ClassReferenceExp::toSymbol): Likewise, but also use an anonymous 407 type as size is not determined until the data has been layed out. 408 * d-elem.cc (EqualExp::toElem): Optimise comparisons of arrays of basic 409 types, also ensure left-to-right evaluation. 410 (SliceExp::toElem): Handle returing slice as a static array type. 411 (AddrExp::toElem): Handle taking the address of StructLiteralExp and 412 ClassReferenceExp symbols. 413 (FuncExp::toElem): Relax type checking to allow returning function 414 addresses as generic pointer types. 415 (ArrayLiteralExp::toElem): Implicitly convert static arrays of void to 416 static arrays of ubyte. 417 (StructLiteralExp::toElem): Remove code generation of postblit calls, 418 now taken care of in the front end. 419 * d-objfile.cc (Module::genmoduleinfo): Emit module name as a null 420 terminated static array. 421 * d-ctype.cc (TypeAArray::toCtype): Pass AA types around like pointers. 422 4232013-06-11 Iain Buclaw <ibuclaw@gdcproject.org> 424 425 * dfrontend: Update to D front-end version 2.063. 426 427 * d-builtins.c (gcc_type_to_d_type): Use Loc for unknown locations. 428 (d_gcc_magic_builtins_module): Likewise. 429 (gcc_cst_to_d_expr): Likewise. 430 * d-codegen.cc (get_libcall): Use FuncDeclaration::genCfunc to build 431 D runtime library functions. 432 * d-decl.cc (SymbolDeclaration::SymbolDeclaration): Remove function. 433 (StructLiteralExp::toSymbol): New function. 434 (ClassReferenceExp::toSymbol): New function. 435 * d-elem.cc (AssertExp::toElem): Call struct/class invariants only if 436 compiler is generating invariant code. 437 (TupleExp::toElem): Update for new front-end. 438 (ClassReferenceExp::toElem): New function. 439 * d-lang.cc (d_init_options): Set compiler.vendor front-end parameter. 440 (d_init): Call Expression::init. 441 * d-objfile.cc (InterfaceDeclaration::toObjFile): Correctly set the 442 xgetRTInfo field in the record layout. 443 * d-todt.cc (CastExp::toDt): New function. 444 (AddrExp::toDt): New function. 445 (ClassReferenceExp::toDt): New function. 446 (ClassReferenceExp::toDtI): New function. 447 (ClassReferenceExp::toInstanceDt): New function. 448 (ClassReferenceExp::toDt2): New function. 449 4502013-06-10 Iain Buclaw <ibuclaw@gdcproject.org> 451 452 * d-objfile.cc (FuncDeclaration::toObjFile): Set 'this' parameter as 453 implicitly read-only. 454 * d-codegen.cc (declaration_type): Set 'this' declaration type as 455 implicitly const. 456 (build_frame_type): Set frame or closure type as implicitly const. 457 4582013-06-09 Iain Buclaw <ibuclaw@gdcproject.org> 459 460 * d-builtins.c (d_init_builtins): Make d_unknown_type_node a 461 RECORD_TYPE. 462 * d-lang.cc (d_build_eh_type_type): Cast the returned typeinfo decl to 463 void pointer type. 464 4652013-06-07 Iain Buclaw <ibuclaw@gdcproject.org> 466 467 * d-codegen.cc (IRState::var): Rename to get_decl_tree. 468 (IRState::convertForArgument): Rename to convert_for_argument. 469 (IRState::floatMod): Rename to build_float_modulus. 470 (IRState::findThis): Rename to find_this_tree. 471 (IRState::emitLocalVar): Update signature. 472 (IRState::arrayElemRef): Remove function. 473 * d-elem.cc (IndexExp::toElem): Move implementation of 474 IRState::arrayElemRef here. 475 4762013-06-04 Iain Buclaw <ibuclaw@gdcproject.org> 477 478 * d-codegen.cc (cmodule): Rename to current_module_decl. 479 (object_file): Remove variable. 480 * d-objfile.cc (ObjectFile::moduleInfo): Rename to current_module_info. 481 (ObjectFile::modules): Rename to output_modules. 482 (ObjectFile::staticCtorList): Rename to static_ctor_list. 483 (ObjectFile::staticDtorList): Rename to static_dtor_list. 484 (ObjectFile::emitTemplates): Rename to flag_emit_templates. 485 (ObjectFile::beginModule): Remove function. 486 (ObjectFile::endModule): Remove function. 487 (ObjectFile::finish): Rename to d_finish_module. 488 (ObjectFile::doLineNote): Remove function. 489 (ObjectFile::setLoc): Rename to set_input_location. 490 (ObjectFile::setDeclLoc): Rename to set_decl_location. 491 (ObjectFile::setCfunEndLoc): Rename to set_function_end_locus. 492 (ObjectFile::giveDeclUniqueName): Rename to get_unique_name. 493 (ObjectFile::setupSymbolStorage): Rename to setup_symbol_storage. 494 (ObjectFile::setupStaticStorage): Remove function. 495 (ObjectFile::makeDeclOneOnly): Rename to d_comdat_linkage. 496 (ObjectFile::outputStaticSymbol): Rename to d_finish_symbol. 497 (ObjectFile::outputFunction): Rename to d_finish_function. 498 (ObjectFile::addAggMethod): Remove function. 499 (ObjectFile::initTypeDecl): Rename to build_type_decl. 500 (ObjectFile::declareType): Remove function. 501 (ObjectFile::shouldEmit): Rename to output_declaration_p. 502 (ObjectFile::shouldEmit): Rename variant to output_symbol_p. 503 (ObjectFile::doThunk): Rename to use_thunk. 504 (ObjectFile::stripVarDecl): Remove function. 505 (ObjectFile::doSimpleFunction): Rename to build_simple_function. 506 (ObjectFile::doFunctionToCallFunctions): Rename to 507 build_call_function. 508 (ObjectFile::doCtorFunction): Rename to build_ctor_function. 509 (ObjectFile::doDtorFunction): Rename to build_dtor_function. 510 (ObjectFile::doUnittestFunction): Rename to build_unittest_function. 511 (ObjectFile::hasModule): Rename to output_module_p. 512 (ObjectFile::outputThunk): Rename to finish_thunk. 513 (write_deferred_thunks): New function to emit deferred thunks. 514 5152013-06-03 Iain Buclaw <ibuclaw@gdcproject.org> 516 517 * d-decls.cc (VarDeclaration::toSymbol): Don't set default tls model. 518 * d-objfile.cc (ObjectFile::setupSymbolStorage): Set default tls 519 model for var decls before determining whether symbol is public. 520 (build_tlssections): Likewise for TLS symbols. 521 5222013-06-01 Johannes Pfau <johannespfau@gmail.com> 523 524 * d-codegen.cc (maybe_set_builtin_frontend): Check parameter and 525 return types of intrinsics. 526 5272013-06-01 Iain Buclaw <ibuclaw@gdcproject.org> 528 529 * d-codegen.cc (IRState::var): Handle variables used for NRVO. 530 * d-ir.cc (ReturnStatement::toIR): Return result decl directly if NRVO. 531 * d-objfile.cc (Symbol::SnamedResult): New member to hold the named 532 RESULT_DECL of the function. 533 (FuncDeclaration::toObjFile): Set-up function for NRVO. 534 (build_tlssections): Align _tlsstart and _tlsend symbols to target 535 address size. 536 * d-ctype.cc (TypeFunction::toSymbol): Mark functions returning non-POD 537 structs as TREE_ADDRESSABLE to force return in memory. 538 * d-decls.cc (FuncDeclaration::toSymbol): Propagate TREE_ADDRESSABLE 539 from the original function type. 540 5412013-05-29 Iain Buclaw <ibuclaw@gdcproject.org> 542 543 * d-target.cc: New source file to handle Target structure. 544 545 * d-builtins.c (d_bi_init): Remove function. 546 (d_gcc_type_align): Move to Target::alignsize. 547 (d_gcc_field_align): Move to Target::fieldalign. 548 (d_init_builtins): Build va_list type for D frontend. 549 * d-lang.cc (d_init): Use isLP64 to determine LP64 targets. 550 (d_add_builtin_version): Set is64bit if target is X86_64. 551 * d-codegen.cc (convert_for_assignment): Use memset to implement front 552 end code (struct = 0) here, rather than build an empty constructor. 553 * d-elem.cc (AssignExp::toElem): Remove handling of (struct = 0) and 554 call convert_for_assignment. 555 5562013-05-28 Iain Buclaw <ibuclaw@gdcproject.org> 557 558 * d-gcc-complex_t.h: Rename to complex_t.h. 559 * d-gcc-real.cc: Rename to d-longdouble.cc. 560 * d-gcc-real.h: Rename to longdouble.h 561 * d-port.cc: New source file to handle Port structure. 562 * gdc_alloca.h: Remove source. 563 564 * d-longdouble.cc (real_t): Rename to longdouble. 565 (longdouble::getnan): Move to Port::nan. 566 (longdouble::getsnan): Move to Port::snan. 567 (longdouble::getinfinity): Move to Port::infinity. 568 (longdouble::isInf): Move to Port::isInfinite. 569 (longdouble::isNan): Move to Port::isNan. 570 (longdouble::isSignallingNan): Move to Port::isSignallingNan. 571 * d-builtins.c (gcc_d_backend_init): Rename to d_backend_init. 572 (gcc_d_backend_term): Rename to d_backend_term. 573 (gcc_type_to_d_type): Don't map 128bit integers to D front end. 574 575 * d-elem.cc (AssignExp::toElem): Remove handling of fillHoles, use 576 memset to implement (struct = 0). 577 (StructLiteralExp::toElem): Handle fillHoles here, creating a 578 temporary var that is zero init'd with memset and returned. 579 5802013-05-27 Iain Buclaw <ibuclaw@gdcproject.org> 581 582 * d-codegen.cc (IRState::localVar): Rename to build_local_var. 583 (IRState::exprVar): Rename to create_temporary_var. 584 (IRState::maybeExprvar): Rename to maybe_temporary_var. 585 (IRState::pointerIntSum): Rename to build_array_index. 586 * d-lang.cc (d_handle_target_attribute): New function to handle D 587 target attributes. 588 5892013-05-26 Iain Buclaw <ibuclaw@gdcproject.org> 590 591 * d-incpath.cc (prefixed_path): Add cpp_GCC_INCLUDE_DIR back in as 592 second method for relocation. 593 * d-elem.cc (IndexExp::toElem): Fix call to _aaGetX as from 594 IRState::toElemLvalue. 595 * d-codegen.cc (IRState::toElemLvalue): Remove function. 596 (IRState::convertForAssignment): Rename to convert_for_assignment. 597 (IRState::convertForCondition): Rename to convert_for_condition. 598 (IRState::checkedIndex): Rename to d_checked_index. 599 (IRState::boundsCond): Rename to d_bounds_condition. 600 (IRState::arrayBoundsCheck): Rename to array_bounds_check. 601 (IRState::assertCall): Rename to d_assert_call. 602 (IRState::doLineNote): Move to irstate.h. 603 * d-irstate.cc (IRBase::getLocalContext): Remove function. 604 * d-decls.cc (VarDeclaration::toSymbol): Build decl lang specific for 605 decl to point back to D front end type. 606 (FuncDeclaration::toSymbol): Likewise. 607 6082013-05-23 Iain Buclaw <ibuclaw@gdcproject.org> 609 610 * d-codegen.cc (AggLayout::finish): Unset TYPE_SIZE before 611 re-calculating. 612 * d-ctype.cc (TypeStruct::toCtype): Don't call decl_attribute on the 613 type twice. 614 6152013-05-21 Iain Buclaw <ibuclaw@gdcproject.org> 616 617 * d-lang.cc (d_gcc_dump_source): Remove function. 618 (d_post_options): Set flag_excess_precision_cmd as standard. 619 * d-gcc-real.cc (real_t::convert): Remove function. 620 (real_t::floatCompare): Remove function. 621 (real_t::operator): Always perform floating point compilation at the 622 precision of the target real mode. 623 * d-todt.cc (dt_last): Remove function. 624 (dtlist_to_tree): Rename to dtvector_to_tree. 625 (dt_cons): Replace TREE_CHAIN implementation for use of CONSTRUCTOR. 626 (dt_chainon): Likewise. 627 (dt_container): Likewise. 628 (dt_container2): Likewise. 629 (StructInitializer::toDt): Likewise. 630 (StructLiteralExp::toDt): Likewise. 631 6322013-05-17 Iain Buclaw <ibuclaw@gdcproject.org> 633 634 * d-codegen.cc (IRState::convertTo): Replace with d_convert and 635 convert_expr. 636 (IRState::declContext): Replace with d_decl_context. 637 (IRState::functionNeedsChain): Replace with needs_static_chain. 638 (IRState::label): Replace with d_build_label. 639 (IRState::emitTemplates): Move to ObjectFile. 640 (functionDegenerateClosure): Replace with is_degenerate_closure. 641 (get_object_method): Assert that function is a method. 642 (IRState::startCond): Move to IRBase. 643 (IRState::startElse): Likewise. 644 (IRState::endCond): Likewise. 645 (IRState::startLoop): Likewise. 646 (IRState::continueHere): Likewise. 647 (IRState::setContinueLabel): Likewise. 648 (IRState::exitIfFalse): Likewise. 649 (IRState::endLoop): Likewise. 650 (IRState::startCase): Likewise. 651 (IRState::doCase): Likewise. 652 (IRState::endCase): Likewise. 653 (IRState::continueLoop): Likewise. 654 (IRState::exitLoop): Likewise. 655 (IRState::startTry): Likewise. 656 (IRState::startCatches): Likewise. 657 (IRState::startCatch): Likewise. 658 (IRState::endCatch): Likewise. 659 (IRState::endCatches): Likewise. 660 (IRState::startFinally): Likewise. 661 (IRState::endFinally): Likewise. 662 (IRState::doReturn): Likewise. 663 (IRState::doJump): Likewise. 664 (IRState::pushLabel): Likewise. 665 (IRState::checkSwitchCase): Likewise. 666 (IRState::checkGoto): Likewise. 667 (IRState::checkPreviousGoto): Likewise. 668 669 * d-elem.cc (CatAssignExp::toElem): Call postblit on appending array of 670 structs if required. 671 6722013-05-16 Johannes Pfau <johannespfau@gmail.com> 673 674 * d-incpath.cc (prefixed_path): use cpp_PREFIX instead of 675 cpp_GCC_INCLUDE_DIR for relocation. 676 6772013-05-16 Iain Buclaw <ibuclaw@gdcproject.org> 678 679 * d-codegen.cc (IRState::convertForAssignment): Remove use of 680 CtorEltMaker wrapper for vec<constructor_elt, va_gc>. 681 (d_array_value): Likewise. 682 (build_delegate_cst): Likewise. 683 (extract_from_method_call): Likewise. 684 * d-elem.cc (NewExp::toElem): Likewise. 685 (ArrayLiteralExp::toElem): Likewise. 686 (AssocArrayLiteralExp::toElem): Likewise. 687 (StructLiteralExp::toElem): Likewise. 688 (NullExp::toElem): Likewise. 689 (VectorExp::toElem): Likewise. 690 * d-objfile.cc (build_moduleinfo): Likewise. 691 * d-todt.cc (dt_container): Likewise. 692 (dt_container2): Likewise. 693 694 * d-asmstmt.cc (ExtAsmStatement::toIR): Remove use of ListMaker 695 wrapper for tree chaining. 696 * d-builtins.c (d_bi_builtin_func): Likewise. 697 (d_bi_builtin_type): Likewise. 698 (d_gcc_magic_builtins_module): Likewise. 699 (d_gcc_magic_libbuiltins_module): Likewise. 700 * d-codegen.cc (build_attributes): Likewise. 701 (IRState::call): Likewise. 702 (IRState::buildFrameForFunction): Likewise. 703 (AggLayout::doFields): Likewise. 704 (AggLayout::addField): Likewise. 705 * d-ctype.cc (TypeEnum::toCtype): Likewise. 706 (TypeFunction::toCtype): Likewise. 707 * d-todt.cc (dt_container2): Likewise. 708 709 * d-codegen.cc (IRState::getFrameInfo): Replace with get_frameinfo. 710 (IRState::buildFrameForFunction): Replace with build_frame_type. 711 (IRState::isClassNestedInFunction): Replace with d_nested_class. 712 (IRState::isStructNestedInFunction): Replace with d_nested_struct. 713 (IRState::getFrameForFunction): Fold into IRState::getFrameForSymbol. 714 (IRState::getFrameForNestedClass): Likewise. 715 (IRState::getFrameForNestedStruct): Likewise. 716 7172013-05-15 Iain Buclaw <ibuclaw@gdcproject.org> 718 719 * d-codegen.cc (IRState::buildFrameForFunction): Also copy the 720 parameters of functions with 'in' contracts to a local frame decl. 721 * d-lang.cc (d_handle_flatten_attribute): New function to handle D 722 flatten attributes. 723 7242013-05-14 Iain Buclaw <ibuclaw@gdcproject.org> 725 726 * d-codegen.cc (IRState::chainLink): Remove function. 727 (IRState::chainFunc): Remove function. 728 (IRState::sthis): New member which holds the chain of function. 729 (IRState::buildChain): Update to use new static chain decl. 730 (IRState::getFrameInfo): Likewise. 731 * d-objfile.cc (FuncDeclaration::buildClosure): Likewise. 732 (FuncDeclaration::toObjFile): Default the function static chain decl 733 to null unless vthis is given for the function. 734 7352013-05-13 Iain Buclaw <ibuclaw@gdcproject.org> 736 737 * d-lang.cc (d_handle_noinline_attribute): New function to handle D 738 noinline attributes. 739 (d_handle_forceinline_attribute): New function to handle D forceinline 740 attributes. 741 * d-elem.cc (StructLiteralExp::toElem): Return the struct initialiser 742 symbol directly if the tree has already been built. 743 * d-decls.cc (Dsymbol::toSymbolX): Constify the mangling name to use. 744 7452013-05-10 Iain Buclaw <ibuclaw@gdcproject.org> 746 747 * d-typinf.cc: New file containing type info routines originally in 748 the D Front End. 749 750 * d-todt.cc (dt_last): New helper function to retrieve last node in a 751 dt_t tree list. 752 (dt_cons): New helper function to append nodes to the end of a list. 753 (dt_chainon): New helper function to concatenate two lists together. 754 (dt_container): New helper function to build a ctor from a list. 755 (build_vptr_monitor): New helper function to generate the class 756 vtable, and put out __vptr and __monitor. 757 symbol default values in a class declaration. 758 (dtlist_to_tree): New helper function to convert a dt_t list into a 759 constructor tree. 760 (Type::toDt): Implement routines for new dt_t format. 761 (TypeInfoDeclaration::toDt): Likewise. 762 (Initializer::toDt): Likewise. 763 (Expression::toDt): Likewise. 764 (Declaration::toDt): Likewise. 765 766 * d-objfile.cc (Dsymbol::toObjFile): Update for new dt_t format. 767 (Module::genmoduleinfo): Likewise. 768 (Symbol::Symbol): Moved from symbol.cc 769 (Obj::objmod): Remove abstraction layer. 770 (Obj::moduleinfo): Renamed to build_moduleinfo. 771 (obj_tlssections): Renamed to build_tlssections. 772 (outdata): Renamed to d_finish_symbol. 773 (check_static_sym): Moved into d_finish_symbol. 774 775 * d-codegen.cc (d_gcc_emit_local_variable): Remove. 776 777 * d-decls.cc (Dsymbol::toSymbolX): Update to not call symbol_calloc. 778 (FuncDeclaration::toThunkSymbol): Likewise. 779 (ClassDeclaration::toSymbol): Build type as d_unknown_type_node. 780 (InterfaceDeclaration::toSymbol): Likewise. 781 (Module::toSymbol): Likewise. 782 (ClassDeclaration::toVtblSymbol): Update call to toSymbolX. 783 (AggregateDeclaration::toInitializer): Likewise. 784 (TypedefDeclaration::toInitializer): Likewise. 785 (EnumDeclaration::toInitializer): Likewise. 786 787 * d-ir.cc (CaseStatement::toIR): Don't call static_sym. 788 789 * d-lang.cc (rtlsym): Remove symbol. 790 (D_DECL_READONLY_STATIC): Remove macro. 791 (d_unknown_type_node): New LANG_TYPE node for marking TypeInfo_Class, 792 Interface, and ModuleInfo types that are of a variable size determined 793 at compile time. 794 795 * d-elem.cc (StringExp::toElem): Clean up for new dt_t format. 796 797 * symbol.cc: Remove file. 798 7992013-05-08 Iain Buclaw <ibuclaw@gdcproject.org> 800 801 * d-codegen.cc (IRState::getFrameInfo): Don't create a frame/closure 802 for member functions, only required for nested. 803 * d-elem.cc (Expression::toElemDtor): Call dtors in the correct order. 804 (DeclarationExp::toElem): Don't call dtor on static, manifest, or 805 extern symbols upon declaration. 806 (AssignExp::toElem): Only call postblit on lvalues in assignment. 807 (ArrayLiteralExp::toElem): Always generate literals on heap. 808 8092013-05-06 Iain Buclaw <ibuclaw@gdcproject.org> 810 811 * d-elem.cc (StructLiteralExp::toElem): Return the default initialiser 812 symbol if one exists. 813 * d-builtins.c (d_gcc_magic_libbuiltins_check): Override the function 814 type with the correct built-in function type as defined in backend. 815 8162013-04-15 Iain Buclaw <ibuclaw@gdcproject.org> 817 818 * d-elem.cc (IdentityExp::toElem): Remove special handling of class, 819 reference and array types. 820 8212013-04-12 Iain Buclaw <ibuclaw@gdcproject.org> 822 823 * d-codegen.cc (maybe_make_temp): Save call expressions so aren't 824 evaluated more than once. 825 (d_has_side_effects): Remove check for exceptional class types. 826 8272013-04-10 Iain Buclaw <ibuclaw@gdcproject.org> 828 829 * d-decls.cc (FuncDeclaration::toSymbol): Harden logic for marking 830 functions pure as in 'has no side effects'. 831 8322013-04-07 Iain Buclaw <ibuclaw@gdcproject.org> 833 834 * d-decls.cc (FuncDeclaration::toSymbol): Push deferred functions to 835 FuncDeclaration::deferred. 836 * d-elem.cc (DelegateExp::toElem): Likewise. 837 (FuncExp::toElem): Likewise. 838 * d-objfile.cc (ObjectFile::shouldEmit): Likewise. 839 (FuncDeclaration::toObjFile): Process all deferred functions in 840 FuncDeclaration::deferred. 841 * symbol.cc (Symbol::deferredNestedFuncs): Remove. 842 8432013-04-05 Iain Buclaw <ibuclaw@gdcproject.org> 844 845 * d-elem.cc (FuncExp::toElem): Defer function literals and lambdas 846 until parent function has finished processing. 847 8482013-04-04 Iain Buclaw <ibuclaw@gdcproject.org> 849 850 * d-codegen.cc (IRState::buildChain): Use __frame decl directly when 851 setting up the function frame. 852 (maybe_set_builtin_frontend): Exit early if symbol has no parent. 853 * d-decls.cc (FuncDeclaration::toSymbol): Defer all nested functions, 854 not just templated instances. 855 * d-objfile.cc (FuncDeclaration::toObjFile): Delay processed deferred 856 nested functions until function has finished being generated. 857 (ObjectFile::shouldEmit): Don't emit nested functions if the parent 858 function hasn't finished processing. 859 8602013-04-03 Iain Buclaw <ibuclaw@gdcproject.org> 861 862 * d-codegen.cc (maybe_set_builtin_frontend): Merged from 863 maybe_set_builtin and maybe_set_libcall. 864 * d-decls.cc (FuncDeclaration::toSymbol): Use 865 maybe_set_builtin_frontend. 866 8672013-03-31 Iain Buclaw <ibuclaw@gdcproject.org> 868 869 * d-lang.cc (d_init_options): Default module info emission to on. 870 (d_handle_option): New femit-moduleinfo switch. 871 * d-objfile.cc (Module::genobjfile): Don't emit module if disabled 872 explicitly. 873 * d-builtins.cc (is_intrinsic_module_p): New function to test whether 874 module is core.bitops. 875 (is_math_module_p): New function to test whether module is std.math or 876 core.stdc.math. 877 (is_builtin_va_arg_p): New function to test whether symbol is 878 specially handled va_arg template. 879 (is_builtin_va_start_p): New function to test whether symbol is 880 specially handled va_start template. 881 * d-codegen.cc (IRState::binding): Replace with bind_expr. 882 (IRState::mathModule): Replace with std_math_module. 883 (IRState::mathCoreModule): Replace with core_math_module. 884 (IRState::intrinsicModule): Replace with std_intrinsic_module. 885 (IRState::cstdargTemplateDecl): Replace with va_arg_template. 886 (IRState::stdargTemplateDecl): Replace with va_arg2_template. 887 (IRState::cstdargStartTemplateDecl): Replace with va_start_template. 888 (IRState::getLibCallDecl): Replace with get_libcall. 889 (IRState::maybeSetLibCallDecl): Replace with maybe_set_libcall. 890 (IRState::libCall): Replace with build_libcall. 891 (IRState::maybeSetUpBuiltin): Replace with maybe_set_builtin. 892 (IRState::Intrinsic): Move enum out of IRState. 893 8942013-03-30 Iain Buclaw <ibuclaw@gdcproject.org> 895 896 * d-codegen.cc (IRState::darrayPtrRef): Replace with d_array_ptr. 897 (IRState::darrayLenRef): Replace with d_array_length. 898 (IRState::darrayVal): Replace with d_array_value. 899 (IRState::darrayString): Replace with d_array_string. 900 (IRState::arrayLength): Replace with get_array_length. 901 (get_object_method): Remove dependancy on irs parameter. 902 * d-lang.cc (d_init): Use static bool std_inc to determine whether to 903 include standard module paths. 904 (d_post_options): Canonicalize the input filename. 905 (d_parse_file): Correctly catch cases where input file is stdin. 906 9072013-03-27 Iain Buclaw <ibuclaw@gdcproject.org> 908 909 * d-codegen.cc (IRState::getFrameInfo) Create a custom static chain for 910 all nested functions. 911 * d-gcc-includes.h: Rename to d-system.h 912 9132013-03-23 Iain Buclaw <ibuclaw@gdcproject.org> 914 915 * d-builtins.c (d_bi_init): Set REALPAD to be TYPE_PRECISION of 916 long_double_type_node. 917 * d-codegen.cc (IRState::twoFieldType): Replace with 918 build_two_field_type. 919 (IRState::arrayOpNotImplemented): Replace with unhandled_arrayop_p. 920 (IRState::delegateMethodRef): Replace with delegate_method. 921 (IRState::delegateObjectRef): Replace with delegate_object. 922 (IRState::delegateVal): Replace with build_delegate_cst. 923 (IRState::methodCallExpr): Replace with build_method_call. 924 (IRState::extractMethodCallExpr): Replace with 925 extract_from_method_call. 926 (IRState::objectInstanceMethod): Replace with get_object_method. 927 (IRState::twoFieldCtor): Remove. 928 (IRState::call): Assert that if calling a normal FUNCTION_TYPE, 929 'object' is not set. 930 * d-ctype.cc (TypeDelegate::toCtype): Build a METHOD_TYPE for the .func 931 field type in delegates. 932 * d-lang.h (D_IS_METHOD_CALL_EXPR): Rename to D_METHOD_CALL_EXPR. 933 * d-objfile.cc (FuncDeclaration::toObjFile): Remove assert for chain 934 function. 935 9362013-03-20 Johannes Pfau <johannespfau@gmail.com> 937 938 * d-codegen.cc (IRState::objectInstanceMethod): Recursively check 939 for TOKsuper / TOKdottype. Do not ignore CastExp. 940 * d-elem.cc (IdentityExp::toElem): Ignore padding in bitwise floating 941 point comparisons. 942 * testsuite: Cleanup. Remove invalid tests, adjust tests, etc. 943 9442013-03-20 Iain Buclaw <ibuclaw@gdcproject.org> 945 946 * d-codegen.cc (IRState::objectInstanceMethod): Get function pointer 947 off function TREE_TYPE. 948 (build_deref): Handle cases where expression to dereference is an 949 address expression. 950 (modify_expr): New function overload to set return type directly. 951 * d-elem.cc (CatAssignExp::toElem): Use new modify_expr. 952 (AssignExp::toElem): Likewise. 953 * d-decls.cc (FuncDeclaration::toSymbol): Don't build a method type for 954 nested functions / delegates. Just add on the hidden 'this' pointer 955 containing the custom static chain/closure object. 956 957 * d-codegen.cc (GlobalValues): Replace with current_module, 958 current_irs, object_file. 959 (IRState::getFuncType): Replace with get_function_type. 960 (IRState::isCallByAlias): Replace with call_by_alias_p. 961 (IRState::isFuncType): Replace with function_type_p. 962 (IRState::doExp): Remove. 963 964 * d-asmstmt.cc (ExtAsmStatement::syntaxCopy): Use arraySyntaxCopy to 965 copy front end expressions. 966 967 * d-codegen.cc (AssignExp::toElem): Call _d_arrayassign / _d_arrayctor 968 when assigning arrays of structs. 969 9702013-03-18 Iain Buclaw <ibuclaw@gdcproject.org> 971 972 * d-codegen.cc (IRState::realPart): Replace with real_part. 973 (IRState::imagPart): Replace with imaginary_part. 974 (IRState::integerConstant): Replace with build_integer_cst. 975 (IRState::floatConstant): Replace with build_float_cst. 976 (IRState::hwi2toli): Replace with cst_to_hwi. 977 (IRState::addressOf): Replace with build_address. 978 (IRState::markAddressable): Replace with d_mark_addressable. 979 (IRState::markUsed): Replace with d_mark_used. 980 (IRState::markRead): Replace with d_mark_read. 981 (IRState::indirect): Replace with indirect_ref. 982 (IRState::pvoidOkay): Replace with void_okay_p. 983 (IRState::maybeCompound): Replace with maybe_compound_expr. 984 (IRState::maybeVoidCompound): Replace with maybe_vcompound_expr. 985 (IRState::isErrorMark): Replace with error_mark_p. 986 (IRState::getTargetSizeConst): Replace with tree_to_hwi. 987 (IRState::modify): Replace with modify_expr. 988 (IRState::vmodify): Replace with vmodify_expr. 989 (IRState::vinit): Replace with build_vinit. 990 (IRState::nop): Replace with build_nop. 991 (IRState::vconvert): Replace with build_vconvert. 992 (IRState::boolOp): Replace with build_boolop. 993 (IRState::compound): Replace with compound_expr. 994 (IRState::voidCompound): Replace with vcompound_expr. 995 (IRState::component): Replace with component_ref. 996 (IRState::errorMark): Replace with error_mark. 997 (IRState::typesSame): Replace with d_types_same. 998 (IRState::typesCompatible): Replace with d_types_compatible. 999 (IRState::getDType): Replace with build_dtype. 1000 (IRState::getObjectType): Replace with build_object_type. 1001 (IRState::isDeclarationReferenceType): Replace with decl_reference_p. 1002 (IRState::trueDeclarationType): Replace with declaration_type. 1003 (IRState::isArgumentReferenceType): Replace with arg_reference_p. 1004 (IRState::trueArgumentType): Replace with type_passed_as. 1005 (IRState::arrayType): Replace with d_array_type. 1006 (IRState::addTypeAttribute): Replace with insert_type_attributes. 1007 (IRState::addDeclAttribute): Replace with insert_decl_attributes. 1008 (IRState::attributes): Replace with build_attributes. 1009 (IRState::addTypeModifiers): Replace with insert_type_modifiers. 1010 (IRState::maybeMakeTemp): Replace with maybe_make_temp. 1011 (IRState::isFreeOfSideEffects): Replace with d_has_side_effects. 1012 (IRState::pointerOffsetOp): Replace with build_offset_op. 1013 (IRState::pointerOffset): Replace with build_offset. 1014 (IRState::buildCall): Replace with d_build_call. 1015 (IRState::exceptionObject): Replace with build_exception_object. 1016 10172013-03-17 Iain Buclaw <ibuclaw@gdcproject.org> 1018 1019 * d-asmstmt.cc (d_build_asm_stmt): Remove. 1020 (ExtAsmStatement::ExtAsmStatement): Update to match renamed members. 1021 (ExtAsmStatement::syntaxCopy): Likewise. 1022 (ExtAsmStatement::semantic): Likewise. 1023 (ExtAsmStatement::toCBuffer): Likewise. 1024 (ExtAsmStatement::comeFrom): New. 1025 (ExtAsmStatement::blockExit): Don't error if must not throw. 1026 (naturalString): Remove. 1027 (ExtAsmStatement::toIR): Inline IRState::doAsm implementation. 1028 * d-codegen.cc (IRState::doAsm): Remove. 1029 * d-decls.cc (FuncDeclaration::toSymbol): Don't generate 'naked' 1030 attribute. 1031 (binfo_for): Move into d-decls.cc. 1032 (intfc_binfo_for): Likewise. 1033 (ClassDeclaration::toDebug): Likewise. 1034 (EnumDeclaration::toDebug): Likewise. 1035 (TypedefDeclaration::toDebug): Likewise. 1036 (StructDeclaration::toDebug): Likewise. 1037 * d-objfile.cc (FuncDeclaration::toObjFile): Move into d-objfile.cc. 1038 (FuncDeclaration::buildClosure): Likewise. 1039 (Module::genobjfile): Likewise. 1040 * d-glue.cc: Remove file. 1041 10422013-03-16 Iain Buclaw <ibuclaw@gdcproject.org> 1043 1044 * d-ir.cc (SynchronizedStatement::toIR): Remove implementation as is 1045 now handled by the frontend. 1046 10472013-03-15 Iain Buclaw <ibuclaw@gdcproject.org> 1048 1049 * d-codegen.cc (IRState::maybeExpandSpecialCall): Handle ref argptr 1050 arguments. 1051 10522013-03-13 Iain Buclaw <ibuclaw@gdcproject.org> 1053 1054 * d-builtins.c (handle_alias_attribute): New function to handle 1055 internal 'alias' attribute. 1056 (handle_weakref_attribute): New function to handle internal 'weakref' 1057 attribute. 1058 * d-objfile.cc (ObjectFile::outputThunk): Define thunks to external 1059 symbols as weakref, alias 1060 10612013-03-12 Johannes Pfau <johannespfau@gmail.com> 1062 1063 * patch-versym-os-4.8.x (mingw32.h): Fix typo 1064 * patch-versym-cpu-4.8.x (mips.h): Fix typo 1065 Update version symbols to latest dlang specification. 1066 10672013-03-10 Iain Buclaw <ibuclaw@gdcproject.org> 1068 1069 * d-decls.cc (FuncDeclaration::toSymbol): Delay setting TREE_TYPE as 1070 function type could be hidden in a nested function not yet built. 1071 * d-codegen.cc (IRState::findThis): Don't get 'this' from outer 1072 function if it's a closure type. This has already been handled by 1073 IRState::getFrameForSymbol. 1074 (IRState::buildChain): Give frame decl debug name '__frame'. 1075 Always set '__chain' link field. 1076 (IRState::getFrameInfo): Don't build a frame for all nested functions. 1077 Search through nested aggregates for static chain in outer functions. 1078 * d-codegen.h (IRState::useParentChain): Remove. 1079 * d-glue.cc (FuncDeclaration::toObjFile): Don't call useParentChain. 1080 Don't create a local var for the chain link for a function. 1081 (FuncDeclaration::buildClosure): Always set '__chain' link field. 1082 10832013-03-08 Iain Buclaw <ibuclaw@gdcproject.org> 1084 1085 * d-codegen.cc (d_gcc_force_templates): Only check for emitting 1086 templates as private. 1087 * d-lang.cc (d_handle_option): Remove -femit-templates= option. 1088 * d-objfile.cc (ObjectFile::makeDeclOneOnly): Fix code logic so 1089 fallback method could be reached. 1090 * d-objfile.h (TEall, TEauto): Remove. 1091 10922013-03-07 Iain Buclaw <ibuclaw@gdcproject.org> 1093 1094 * d-ir.cc (ReturnStatement::toIR): Don't call postblit on return. 1095 * d-codegen.cc (IRState::trueDeclarationType): Don't set 1096 D_TYPE_ADDRESSABLE. 1097 (IRState::makeTemp): Remove. 1098 (IRState::maybeMakeTemp): Copy makeTemp into function. 1099 * d-glue.cc (d_genericize): Remove D_TYPE_ADDRESSABLE handling. 1100 * d-lang.h (D_TYPE_ADDRESSABLE): Remove macro. 1101 11022013-03-04 Johannes Pfau <johannespfau@gmail.com> 1103 1104 * d-ctype.cc (Type::toCtype): Always call gen.addTypeModifiers to 1105 make sure TYPE_MAIN_VARIANT is set. Reuse tree from unqualified 1106 variant for that. Also cache the resulting qualified tree. 1107 (TypeTypedef::toCtype): Likewise. 1108 (TypeEnum::toCtype): Likewise. 1109 (TypeStruct::toCtype): Likewise. 1110 (TypeFunction::toCtype): Likewise. 1111 (TypeVector::toCtype): Likewise. 1112 (TypeSArray::toCtype): Likewise. 1113 (TypeDArray::toCtype): Likewise. 1114 (TypeAArray::toCtype): Likewise. 1115 (TypeDelegate::toCtype): Likewise. 1116 (TypeClass::toCtype): Likewise. 1117 * d-objfile.cc (ObjectFile::giveDeclUniqueName): Make sure DECL_NAME is set 1118 11192013-03-01 Iain Buclaw <ibuclaw@gdcproject.org> 1120 1121 * d-decls.cc (VarDeclaration::toSymbol): Remove use of c_ident. 1122 (FuncDeclaration::toSymbol): Likewise. 1123 * d-builtins.c (handle_noreturn_attribute): Assert that this is only 1124 used for internal purposes. 1125 (handle_const_attribute): Likewise. 1126 (handle_malloc_attribute): Likewise. 1127 (handle_pure_attribute): Likewise. 1128 (handle_nonnull_attribute): Likewise. 1129 (handle_nothrow_attribute): Likewise. 1130 (handle_sentinel_attribute): Likewise. 1131 (handle_transaction_pure_attribute): Likewise. 1132 (handle_returns_twice_attribute): Likewise. 1133 * d-glue.cc (FuncDeclaration::toObjFile): Result variables have no 1134 default initialiser. 1135 * d-codegen.cc (IRState::emitLocalVar): Add in assert that the local 1136 variable has no initialiser if called with no_init = true. 1137 (IRState::getLibCallDecl): Mark exceptional library functions as 1138 noreturn. 1139 (IRState::attributes): Gracefully handle @attribute, and 1140 @attribute(null). 1141 11422013-02-28 Jernej Krempus <jkrempus@gmail.com> 1143 1144 * d-builtins.c (d_attribute_table): Renamed it to 1145 d_builtins_attribute_table. 1146 * d-lang.cc (d_attribute_table): Added an empty table 1147 * d-lang.cc (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): Defined it as 1148 d_builtins_attribute_table. 1149 * d-lang.h (d_builtins_attribute_table): Added a declaration. 1150 * d-codegen.cc (IRState::attributes): Changed it so it goes through 1151 in_attrs and looks for any @gcc.attribute.attribute("attr_name"). 1152 * d-objfile.cc (ObjectFile::setupSymbolStorage): Pass userAttributes 1153 instead of attributes in all calls to IRState::attributes. 1154 * d-ctype.cc (TypeTypedef::toCtype): Likewise. 1155 (TypeEnum::toCtype): Likewise. 1156 (TypeStruct::toCtype): Likewise. 1157 (TypeClass::toCtype): Likewise. 1158 * libphobos/libdruntime/gcc/attribute.d: New file. 1159 11602013-02-28 Iain Buclaw <ibuclaw@gdcproject.org> 1161 1162 * d-lang.cc (d_handle_option): Remove OPT_fdeprecated and 1163 OPT_Wsign_compare, add handling for OPT_Wdeprecated. 1164 (d_post_options): Handle Wdeprecated and Werror switch combination. 1165 11662013-02-27 Iain Buclaw <ibuclaw@gdcproject.org> 1167 1168 * d-codegen.cc (ArrayScope::ArrayScope): Don't setup length var if its 1169 value is known at compile time. 1170 (ArrayScope::setArrayExp): Likewise. 1171 * d-decls.cc (uniqueName): Remove function. 1172 (VarDeclaration::toSymbol): Set decl assembler name directly. 1173 (FuncDeclaration::toSymbol): Likewise. 1174 11752013-02-15 Iain Buclaw <ibuclaw@gdcproject.org> 1176 1177 * Make-lang.in (GDC_EXTENDED_ASM_SYNTAX): Remove macro. 1178 11792013-02-14 Iain Buclaw <ibuclaw@gdcproject.org> 1180 1181 * d-lang.h (D_DECL_IS_CONTRACT): Remove macro. 1182 * d-decls.cc (FuncDeclaration::toSymbol): Likewise. 1183 11842013-02-13 Iain Buclaw <ibuclaw@gdcproject.org> 1185 1186 * d-lang.cc (d_gcc_is_target_win32): Remove. 1187 (d_add_builtin_version): New function to handle define_builtin 1188 callback from backend. 1189 * d-codegen.cc (IRState::maybeExpandSpecialCall): Remove intrinsic bt. 1190 1191 * d-builtins.c: Merge with d-builtins2.cc. 1192 * d-builtins2.cc: Remove. 1193 11942013-02-07 Johannes Pfau <johannespfau@gmail.com> 1195 1196 * d-lang.cc (d_init): Use gcc's config system for predefined OS versions. 1197 * setup-gcc.sh: Likewise. 1198 * target-ver-syms.sh: Likewise. 1199 12002013-02-05 Iain Buclaw <ibuclaw@ubuntu.com> 1201 1202 * d-builtins2.cc (gcc_type_to_d_type): Remove STRUCTTHISREF condition. 1203 * d-decls.cc (FuncDeclaration::toSymbol): Likewise. 1204 * d-elem.cc (ThisExp::toElem): Likewise. 1205 * d-ctype.cc (TypeSArray::toCtype): Remove SARRAYVALUE condition. 1206 * d-codegen.cc (IRState::isDeclarationReferenceType): Likewise. 1207 (IRState::isArgumentReferenceType): Likewise. 1208 12092013-02-01 Johannes Pfau <johannespfau@gmail.com> 1210 1211 * d-lang.cc (d_init): Use gcc's config system for predefined CPU versions. 1212 (d_init): Fix definition of D_LP64 version. 1213 * setup-gcc.sh: Likewise. 1214 * target-ver-syms.sh: Likewise. 1215 1216 1217Copyright (C) 2013 Free Software Foundation, Inc. 1218 1219Copying and distribution of this file, with or without modification, 1220are permitted in any medium without royalty provided the copyright 1221notice and this notice are preserved. 1222