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