<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gcc.git/gcc/d/d-codegen.cc, branch master</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/'/>
<entry>
<title>D: Adjust the code-gen for a string constant.</title>
<updated>2025-08-11T19:41:59+00:00</updated>
<author>
<name>Iain Sandoe</name>
<email>iain@sandoe.co.uk</email>
</author>
<published>2025-08-11T19:41:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=b0927c5c8c8b9afd53b820ba6a660e06ad767ce3'/>
<id>b0927c5c8c8b9afd53b820ba6a660e06ad767ce3</id>
<content type='text'>
In this function, we are generating a string constant but do so with
a mismatch between the actual string length and the length specified
in the type.  This causes Darwin, at least, to place the string in an
unexpected section (since the parameters do not match, it is rejected
as a cstring).

Use build_string_literal() to construct a consistent null-terminated
string.

gcc/d/ChangeLog:

	* d-codegen.cc (build_filename_from_loc): Use
	build_string_literal() to build a null-terminated string for
	the filename.

Signed-off-by: Iain Sandoe &lt;iain@sandoe.co.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In this function, we are generating a string constant but do so with
a mismatch between the actual string length and the length specified
in the type.  This causes Darwin, at least, to place the string in an
unexpected section (since the parameters do not match, it is rejected
as a cstring).

Use build_string_literal() to construct a consistent null-terminated
string.

gcc/d/ChangeLog:

	* d-codegen.cc (build_filename_from_loc): Use
	build_string_literal() to build a null-terminated string for
	the filename.

Signed-off-by: Iain Sandoe &lt;iain@sandoe.co.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>d: Use __builtin_clear_padding for zeroing alignment holes after set</title>
<updated>2025-04-29T19:56:30+00:00</updated>
<author>
<name>Iain Buclaw</name>
<email>ibuclaw@gdcproject.org</email>
</author>
<published>2025-04-29T19:43:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=692b6470706090a09e30232d7eab74151a509243'/>
<id>692b6470706090a09e30232d7eab74151a509243</id>
<content type='text'>
In an earlier change, a wrapper function was added to set
CONSTRUCTOR_ZERO_PADDING_BITS on all CONSTRUCTOR nodes. This removes all
the old generated calls to built-in memset and memcpy as zero padding is
now taken care of by the middle-end.

The remaining constructors that weren't getting zero padded was
ARRAY_TYPEs, so now `__builtin_clear_padding' is used to fill in all
alignment holes in constructed array literals where required.

	PR d/103044

gcc/d/ChangeLog:

	* d-tree.h (build_clear_padding_call): New prototype.
	* d-codegen.cc (build_clear_padding_call): New function.
	(build_memset_call): Remove generated call to __builtin_memcpy.
	(build_address): Replace generated call to __builtin_memset with
	__builtin_clear_padding.
	(build_array_from_exprs): Likewise.
	* expr.cc (ExprVisitor::visit (AssignExp *)): Remove generated call to
	__builtin_memset.
	(ExprVisitor::visit (ArrayLiteralExp *)): Likewise.  Insert call to
	__builtin_clear_padding after copying array into GC memory.
	(ExprVisitor::visit (StructLiteralExp *)): Remove generated call to
	__builtin_memset.
	* toir.cc (IRVisitor::visit (ReturnStatement *)): Likewise.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In an earlier change, a wrapper function was added to set
CONSTRUCTOR_ZERO_PADDING_BITS on all CONSTRUCTOR nodes. This removes all
the old generated calls to built-in memset and memcpy as zero padding is
now taken care of by the middle-end.

The remaining constructors that weren't getting zero padded was
ARRAY_TYPEs, so now `__builtin_clear_padding' is used to fill in all
alignment holes in constructed array literals where required.

	PR d/103044

gcc/d/ChangeLog:

	* d-tree.h (build_clear_padding_call): New prototype.
	* d-codegen.cc (build_clear_padding_call): New function.
	(build_memset_call): Remove generated call to __builtin_memcpy.
	(build_address): Replace generated call to __builtin_memset with
	__builtin_clear_padding.
	(build_array_from_exprs): Likewise.
	* expr.cc (ExprVisitor::visit (AssignExp *)): Remove generated call to
	__builtin_memset.
	(ExprVisitor::visit (ArrayLiteralExp *)): Likewise.  Insert call to
	__builtin_clear_padding after copying array into GC memory.
	(ExprVisitor::visit (StructLiteralExp *)): Remove generated call to
	__builtin_memset.
	* toir.cc (IRVisitor::visit (ReturnStatement *)): Likewise.
</pre>
</div>
</content>
</entry>
<entry>
<title>d: Use CONSTRUCTOR_ZERO_PADDING_BITS in the D FE [PR117832]</title>
<updated>2025-04-09T12:49:14+00:00</updated>
<author>
<name>Iain Buclaw</name>
<email>ibuclaw@gdcproject.org</email>
</author>
<published>2025-04-09T12:49:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=3e3b665cc77791f2e088aeee124d8a9fb7f6eb41'/>
<id>3e3b665cc77791f2e088aeee124d8a9fb7f6eb41</id>
<content type='text'>
Adds a new wrapper function for `build_constructor', and calls it
instead to ensure that all CONSTRUCTOR nodes explicitly created by the
front-end have CONSTRUCTOR_ZERO_PADDING_BITS set.

Some places may not be necessary as it's guaranteed for there to be no
padding in the type, such as D dynamic arrays.  Other places this gets
turned into a double-memset when optimizations are turned off, as the
front-end already generates a memset call to zero out all padding on
initializing a variable.  The optimizer sees through this so will
correctly clear all bits once, so this can be improved later as-needed.

	PR d/117832

gcc/d/ChangeLog:

	* d-tree.h (build_padded_constructor): New prototype.
	* d-codegen.cc (build_padded_constructor): New function.
	(d_array_value): Call it.
	(build_memset_call): Likewise.
	(build_struct_literal): Likewise.
	(underlying_complex_expr): Likewise.
	(build_array_from_val): Likewise.
	(build_array_from_exprs): Likewise.
	(d_build_call): Likewise.
	(get_frame_for_symbol): Likewise.
	* d-convert.cc (convert_for_rvalue): Likewise.
	(convert_for_assignment): Likewise.
	* decl.cc (class DeclVisitor): Likewise.
	* expr.cc (class ExprVisitor): Likewise.
	* modules.cc (layout_moduleinfo): Likewise.
	* typeinfo.cc (class TypeInfoVisitor): Likewise.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds a new wrapper function for `build_constructor', and calls it
instead to ensure that all CONSTRUCTOR nodes explicitly created by the
front-end have CONSTRUCTOR_ZERO_PADDING_BITS set.

Some places may not be necessary as it's guaranteed for there to be no
padding in the type, such as D dynamic arrays.  Other places this gets
turned into a double-memset when optimizations are turned off, as the
front-end already generates a memset call to zero out all padding on
initializing a variable.  The optimizer sees through this so will
correctly clear all bits once, so this can be improved later as-needed.

	PR d/117832

gcc/d/ChangeLog:

	* d-tree.h (build_padded_constructor): New prototype.
	* d-codegen.cc (build_padded_constructor): New function.
	(d_array_value): Call it.
	(build_memset_call): Likewise.
	(build_struct_literal): Likewise.
	(underlying_complex_expr): Likewise.
	(build_array_from_val): Likewise.
	(build_array_from_exprs): Likewise.
	(d_build_call): Likewise.
	(get_frame_for_symbol): Likewise.
	* d-convert.cc (convert_for_rvalue): Likewise.
	(convert_for_assignment): Likewise.
	* decl.cc (class DeclVisitor): Likewise.
	* expr.cc (class ExprVisitor): Likewise.
	* modules.cc (layout_moduleinfo): Likewise.
	* typeinfo.cc (class TypeInfoVisitor): Likewise.
</pre>
</div>
</content>
</entry>
<entry>
<title>d: Merge upstream dmd, druntime ffbad272b6</title>
<updated>2025-03-16T12:04:34+00:00</updated>
<author>
<name>Iain Buclaw</name>
<email>ibuclaw@gdcproject.org</email>
</author>
<published>2025-03-13T22:58:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=348d41e1d105bef6eeb423e915ab8508988149c1'/>
<id>348d41e1d105bef6eeb423e915ab8508988149c1</id>
<content type='text'>
D front-end changes:

	- Import latest fixes from dmd.

D runtime changes:

	- Import latest fixes from druntime.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd ffbad272b6.
	* d-tree.h (make_location_t): Add overload taking a const SourceLoc &amp;.
	* d-codegen.cc (make_location_t): Likewise.
	* d-diagnostic.cc (d_diagnostic_report_diagnostic): Change first
	parameter type to const SourceLoc &amp;.
	(verrorReport): Update for new front-end interface.
	(verrorReportSupplemental): Likewise.
	* d-frontend.cc (eval_builtin): Likewise.
	(getTypeInfoType): Likewise.
	* d-lang.cc (d_parse_file): Likewise.
	* d-target.cc (Target::va_listType): Likewise.
	(Target::getTargetInfo): Likewise.
	* decl.cc (build_decl_tree): Likewise.
	* imports.cc (ImportVisitor::visit (Module *)): Likewise.
	* modules.cc (get_internal_fn): Likewise.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime ffbad272b6.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
D front-end changes:

	- Import latest fixes from dmd.

D runtime changes:

	- Import latest fixes from druntime.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd ffbad272b6.
	* d-tree.h (make_location_t): Add overload taking a const SourceLoc &amp;.
	* d-codegen.cc (make_location_t): Likewise.
	* d-diagnostic.cc (d_diagnostic_report_diagnostic): Change first
	parameter type to const SourceLoc &amp;.
	(verrorReport): Update for new front-end interface.
	(verrorReportSupplemental): Likewise.
	* d-frontend.cc (eval_builtin): Likewise.
	(getTypeInfoType): Likewise.
	* d-lang.cc (d_parse_file): Likewise.
	* d-target.cc (Target::va_listType): Likewise.
	(Target::getTargetInfo): Likewise.
	* decl.cc (build_decl_tree): Likewise.
	* imports.cc (ImportVisitor::visit (Module *)): Likewise.
	* modules.cc (get_internal_fn): Likewise.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime ffbad272b6.
</pre>
</div>
</content>
</entry>
<entry>
<title>d: Merge upstream dmd, druntime d29e3eca45</title>
<updated>2025-03-15T16:54:15+00:00</updated>
<author>
<name>Iain Buclaw</name>
<email>ibuclaw@gdcproject.org</email>
</author>
<published>2025-03-12T17:16:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=df1f6b98578be7a6276580e35c9302aa5622f113'/>
<id>df1f6b98578be7a6276580e35c9302aa5622f113</id>
<content type='text'>
D front-end changes:

	- Error messages related to operator overloading have been improved.

D runtime changes:

	- Import latest fixes from druntime.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd d29e3eca45.
	* d-codegen.cc (can_elide_copy_p): Update for new front-end interface.
	* d-lang.cc (d_handle_option): Likewise.
	* expr.cc (class ExprVisitor): Likewise.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime d29e3eca45.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
D front-end changes:

	- Error messages related to operator overloading have been improved.

D runtime changes:

	- Import latest fixes from druntime.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd d29e3eca45.
	* d-codegen.cc (can_elide_copy_p): Update for new front-end interface.
	* d-lang.cc (d_handle_option): Likewise.
	* expr.cc (class ExprVisitor): Likewise.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime d29e3eca45.
</pre>
</div>
</content>
</entry>
<entry>
<title>d: Fix comparing uninitialized memory in dstruct.d [PR116961]</title>
<updated>2025-02-28T19:58:43+00:00</updated>
<author>
<name>Iain Buclaw</name>
<email>ibuclaw@gdcproject.org</email>
</author>
<published>2025-02-28T18:22:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=f7bc17ebc9ef89700672ed7125da719f3558f3b7'/>
<id>f7bc17ebc9ef89700672ed7125da719f3558f3b7</id>
<content type='text'>
Floating-point emulation in the D front-end is done via a type named
`struct longdouble`, which in GDC is a small interface around the
real_value type. Because the D code cannot include gcc/real.h directly,
a big enough buffer is used for the data instead.

On x86_64, this buffer is actually bigger than real_value itself, so
when a new longdouble object is created with

    longdouble r;
    real_from_string3 (&amp;r.rv (), buffer, mode);
    return r;

there is uninitialized padding at the end of `r`.  This was never a
problem when D was implemented in C++ (until GCC 12) as comparing two
longdouble objects with `==' would be forwarded to the relevant
operator== overload that extracted the underlying real_value.

However when the front-end was translated to D, such conditions were
instead rewritten into identity comparisons

    return exp.toReal() is CTFloat.zero

The `is` operator gets lowered as a call to `memcmp() == 0', which is
where the read of uninitialized memory occurs, as seen by valgrind.

==26778== Conditional jump or move depends on uninitialised value(s)
==26778==    at 0x911F41: dmd.dstruct._isZeroInit(dmd.expression.Expression) (dstruct.d:635)
==26778==    by 0x9123BE: StructDeclaration::finalizeSize() (dstruct.d:373)
==26778==    by 0x86747C: dmd.aggregate.AggregateDeclaration.determineSize(ref const(dmd.location.Loc)) (aggregate.d:226)
[...]

To avoid accidentally reading uninitialized data, explicitly initialize
all `longdouble` variables with an empty constructor on C++ side of the
implementation before initializing underlying real_value type it holds.

	PR d/116961

gcc/d/ChangeLog:

	* d-codegen.cc (build_float_cst): Change new_value type from real_t to
	real_value.
	* d-ctfloat.cc (CTFloat::fabs): Default initialize the return value.
	(CTFloat::ldexp): Likewise.
	(CTFloat::parse): Likewise.
	* d-longdouble.cc (longdouble::add): Likewise.
	(longdouble::sub): Likewise.
	(longdouble::mul): Likewise.
	(longdouble::div): Likewise.
	(longdouble::mod): Likewise.
	(longdouble::neg): Likewise.
	* d-port.cc (Port::isFloat32LiteralOutOfRange): Likewise.
	(Port::isFloat64LiteralOutOfRange): Likewise.

gcc/testsuite/ChangeLog:

	* gdc.dg/pr116961.d: New test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Floating-point emulation in the D front-end is done via a type named
`struct longdouble`, which in GDC is a small interface around the
real_value type. Because the D code cannot include gcc/real.h directly,
a big enough buffer is used for the data instead.

On x86_64, this buffer is actually bigger than real_value itself, so
when a new longdouble object is created with

    longdouble r;
    real_from_string3 (&amp;r.rv (), buffer, mode);
    return r;

there is uninitialized padding at the end of `r`.  This was never a
problem when D was implemented in C++ (until GCC 12) as comparing two
longdouble objects with `==' would be forwarded to the relevant
operator== overload that extracted the underlying real_value.

However when the front-end was translated to D, such conditions were
instead rewritten into identity comparisons

    return exp.toReal() is CTFloat.zero

The `is` operator gets lowered as a call to `memcmp() == 0', which is
where the read of uninitialized memory occurs, as seen by valgrind.

==26778== Conditional jump or move depends on uninitialised value(s)
==26778==    at 0x911F41: dmd.dstruct._isZeroInit(dmd.expression.Expression) (dstruct.d:635)
==26778==    by 0x9123BE: StructDeclaration::finalizeSize() (dstruct.d:373)
==26778==    by 0x86747C: dmd.aggregate.AggregateDeclaration.determineSize(ref const(dmd.location.Loc)) (aggregate.d:226)
[...]

To avoid accidentally reading uninitialized data, explicitly initialize
all `longdouble` variables with an empty constructor on C++ side of the
implementation before initializing underlying real_value type it holds.

	PR d/116961

gcc/d/ChangeLog:

	* d-codegen.cc (build_float_cst): Change new_value type from real_t to
	real_value.
	* d-ctfloat.cc (CTFloat::fabs): Default initialize the return value.
	(CTFloat::ldexp): Likewise.
	(CTFloat::parse): Likewise.
	* d-longdouble.cc (longdouble::add): Likewise.
	(longdouble::sub): Likewise.
	(longdouble::mul): Likewise.
	(longdouble::div): Likewise.
	(longdouble::mod): Likewise.
	(longdouble::neg): Likewise.
	* d-port.cc (Port::isFloat32LiteralOutOfRange): Likewise.
	(Port::isFloat64LiteralOutOfRange): Likewise.

gcc/testsuite/ChangeLog:

	* gdc.dg/pr116961.d: New test.
</pre>
</div>
</content>
</entry>
<entry>
<title>d: Merge upstream dmd, druntime c57da0cf59, phobos ad8ee5587</title>
<updated>2025-01-12T20:53:50+00:00</updated>
<author>
<name>Iain Buclaw</name>
<email>ibuclaw@gdcproject.org</email>
</author>
<published>2025-01-08T20:02:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=0dd21bce3afe9b0081d1d5bf4b53f9b43980c1c4'/>
<id>0dd21bce3afe9b0081d1d5bf4b53f9b43980c1c4</id>
<content type='text'>
D front-end changes:

	- Import latest fixes from dmd v2.110.0-beta.1.
	- The `align' attribute now allows to specify `default'
	  explicitly.
	- Add primary expression of the form `__rvalue(expression)'
	  which causes `expression' to be treated as an rvalue, even if
	  it is an lvalue.
	- Shortened method syntax can now be used in constructors.

D runtime changes:

	- Import latest fixes from druntime v2.110.0-beta.1.

Phobos changes:

	- Import latest fixes from phobos v2.110.0-beta.1.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd c57da0cf59.
	* d-codegen.cc (can_elide_copy_p): New.
	(d_build_call): Use it.
	* d-lang.cc (d_post_options): Update for new front-end interface.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime c57da0cf59.
	* src/MERGE: Merge upstream phobos ad8ee5587.
	* testsuite/libphobos.init_fini/custom_gc.d: Adjust test.

gcc/testsuite/ChangeLog:

	* gdc.dg/copy1.d: New test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
D front-end changes:

	- Import latest fixes from dmd v2.110.0-beta.1.
	- The `align' attribute now allows to specify `default'
	  explicitly.
	- Add primary expression of the form `__rvalue(expression)'
	  which causes `expression' to be treated as an rvalue, even if
	  it is an lvalue.
	- Shortened method syntax can now be used in constructors.

D runtime changes:

	- Import latest fixes from druntime v2.110.0-beta.1.

Phobos changes:

	- Import latest fixes from phobos v2.110.0-beta.1.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd c57da0cf59.
	* d-codegen.cc (can_elide_copy_p): New.
	(d_build_call): Use it.
	* d-lang.cc (d_post_options): Update for new front-end interface.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime c57da0cf59.
	* src/MERGE: Merge upstream phobos ad8ee5587.
	* testsuite/libphobos.init_fini/custom_gc.d: Adjust test.

gcc/testsuite/ChangeLog:

	* gdc.dg/copy1.d: New test.
</pre>
</div>
</content>
</entry>
<entry>
<title>d: Merge dmd, druntime 4ccb01fde5, phobos eab6595ad</title>
<updated>2025-01-10T23:51:15+00:00</updated>
<author>
<name>Iain Buclaw</name>
<email>ibuclaw@gdcproject.org</email>
</author>
<published>2025-01-06T22:11:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=c82395e03592e5858c34f0b824f494eb94b37404'/>
<id>c82395e03592e5858c34f0b824f494eb94b37404</id>
<content type='text'>
D front-end changes:

	- Added pragma for ImportC to allow setting `nothrow', `@nogc'
	  or `pure'.
	- Mixin templates can now use assignment syntax.

D runtime changes:

	- Removed `ThreadBase.criticalRegionLock' from `core.thread'.
	- Added `expect', `[un]likely', `trap' to `core.builtins'.

Phobos changes:

	- Import latest fixes from phobos v2.110.0-beta.1.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 4ccb01fde5.
	* Make-lang.in (D_FRONTEND_OBJS): Rename d/foreachvar.o to
	d/visitor-foreachvar.o, d/visitor.o to d/visitor-package.o, and
	d/statement_rewrite_walker.o to d/visitor-statement_rewrite_walker.o.
	(D_FRONTEND_OBJS): Rename
	d/{parsetime,permissive,postorder,transitive}visitor.o to
	d/visitor-{parsetime,permissive,postorder,transitive}.o.
	(D_FRONTEND_OBJS): Remove d/sapply.o.
	(d.tags): Add dmd/common/*.h.
	(d/visitor-%.o:): New rule.
	* d-codegen.cc (get_frameinfo): Update for new front-end interface.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime 4ccb01fde5.
	* src/MERGE: Merge upstream phobos eab6595ad.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
D front-end changes:

	- Added pragma for ImportC to allow setting `nothrow', `@nogc'
	  or `pure'.
	- Mixin templates can now use assignment syntax.

D runtime changes:

	- Removed `ThreadBase.criticalRegionLock' from `core.thread'.
	- Added `expect', `[un]likely', `trap' to `core.builtins'.

Phobos changes:

	- Import latest fixes from phobos v2.110.0-beta.1.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 4ccb01fde5.
	* Make-lang.in (D_FRONTEND_OBJS): Rename d/foreachvar.o to
	d/visitor-foreachvar.o, d/visitor.o to d/visitor-package.o, and
	d/statement_rewrite_walker.o to d/visitor-statement_rewrite_walker.o.
	(D_FRONTEND_OBJS): Rename
	d/{parsetime,permissive,postorder,transitive}visitor.o to
	d/visitor-{parsetime,permissive,postorder,transitive}.o.
	(D_FRONTEND_OBJS): Remove d/sapply.o.
	(d.tags): Add dmd/common/*.h.
	(d/visitor-%.o:): New rule.
	* d-codegen.cc (get_frameinfo): Update for new front-end interface.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime 4ccb01fde5.
	* src/MERGE: Merge upstream phobos eab6595ad.
</pre>
</div>
</content>
</entry>
<entry>
<title>d: Merge dmd, druntime 6884b433d2, phobos 48d581a1f</title>
<updated>2025-01-10T22:40:53+00:00</updated>
<author>
<name>Iain Buclaw</name>
<email>ibuclaw@gdcproject.org</email>
</author>
<published>2025-01-06T21:12:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=a7ae0c31245a7db7abf2e80d0016510afe9c8ad0'/>
<id>a7ae0c31245a7db7abf2e80d0016510afe9c8ad0</id>
<content type='text'>
D front-end changes:

	- It's now deprecated to declare `auto ref' parameters without
	  putting those two keywords next to each other.
        - An error is now given for case fallthough for multivalued
	  cases.
        - An error is now given for constructors with field destructors
	  with stricter attributes.
        - An error is now issued for `in'/`out' contracts of `nothrow'
	  functions that may throw.
	- `auto ref' can now be applied to local, static, extern, and
	  global variables.

D runtime changes:

        - Import latest fixes from druntime v2.110.0-beta.1.

Phobos changes:

        - Import latest fixes from phobos v2.110.0-beta.1.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 6884b433d2.
	* d-builtins.cc (build_frontend_type): Update for new front-end
	interface.
	(d_build_builtins_module): Likewise.
	(matches_builtin_type): Likewise.
	(covariant_with_builtin_type_p): Likewise.
	* d-codegen.cc (lower_struct_comparison): Likewise.
	(call_side_effect_free_p): Likewise.
	* d-compiler.cc (Compiler::paintAsType): Likewise.
	* d-convert.cc (convert_expr): Likewise.
	(convert_for_assignment): Likewise.
	* d-target.cc (Target::isVectorTypeSupported): Likewise.
	(Target::isVectorOpSupported): Likewise.
	(Target::isReturnOnStack): Likewise.
	* decl.cc (get_symbol_decl): Likewise.
	* expr.cc (build_return_dtor): Likewise.
	* imports.cc (class ImportVisitor): Likewise.
	* toir.cc (class IRVisitor): Likewise.
	* types.cc (class TypeVisitor): Likewise.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime 6884b433d2.
	* src/MERGE: Merge upstream phobos 48d581a1f.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
D front-end changes:

	- It's now deprecated to declare `auto ref' parameters without
	  putting those two keywords next to each other.
        - An error is now given for case fallthough for multivalued
	  cases.
        - An error is now given for constructors with field destructors
	  with stricter attributes.
        - An error is now issued for `in'/`out' contracts of `nothrow'
	  functions that may throw.
	- `auto ref' can now be applied to local, static, extern, and
	  global variables.

D runtime changes:

        - Import latest fixes from druntime v2.110.0-beta.1.

Phobos changes:

        - Import latest fixes from phobos v2.110.0-beta.1.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 6884b433d2.
	* d-builtins.cc (build_frontend_type): Update for new front-end
	interface.
	(d_build_builtins_module): Likewise.
	(matches_builtin_type): Likewise.
	(covariant_with_builtin_type_p): Likewise.
	* d-codegen.cc (lower_struct_comparison): Likewise.
	(call_side_effect_free_p): Likewise.
	* d-compiler.cc (Compiler::paintAsType): Likewise.
	* d-convert.cc (convert_expr): Likewise.
	(convert_for_assignment): Likewise.
	* d-target.cc (Target::isVectorTypeSupported): Likewise.
	(Target::isVectorOpSupported): Likewise.
	(Target::isReturnOnStack): Likewise.
	* decl.cc (get_symbol_decl): Likewise.
	* expr.cc (build_return_dtor): Likewise.
	* imports.cc (class ImportVisitor): Likewise.
	* toir.cc (class IRVisitor): Likewise.
	* types.cc (class TypeVisitor): Likewise.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime 6884b433d2.
	* src/MERGE: Merge upstream phobos 48d581a1f.
</pre>
</div>
</content>
</entry>
<entry>
<title>d: Merge upstream dmd, druntime 66b93fc24a, phobos 0c28620c3</title>
<updated>2025-01-05T13:40:13+00:00</updated>
<author>
<name>Iain Buclaw</name>
<email>ibuclaw@gdcproject.org</email>
</author>
<published>2025-01-05T13:40:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=f5351b38a8aff438b41cae0d133fd38d56d8cd1f'/>
<id>f5351b38a8aff438b41cae0d133fd38d56d8cd1f</id>
<content type='text'>
Synchronizing with the upstream release of v2.109.1.

D front-end changes:

	- Import dmd v2.109.1.
	- Copying from `const(void)[]' to `void[]' is now disallowed
	  with `-fpreview=fiximmutableconv'.
	- Import expressions are now treated as hex strings.
	- Using boolean values other than 0 or 1 in `@safe' code is now
	  deprecated.

D runtime changes:

	- Import dmd v2.109.1.

Phobos changes:

	- Import dmd v2.109.1.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 66b93fc24a.
	* dmd/VERSION: Bump version to v2.109.1.
	* d-builtins.cc (build_frontend_type): Update for new front-end
	interface.
	(matches_builtin_type): Likewise.
	* d-codegen.cc (identity_compare_p): Likewise.
	(call_side_effect_free_p): Likewise.
	* d-convert.cc (convert_expr): Likewise.
	(check_valist_conversion): Likewise.
	* d-lang.cc (d_types_compatible_p): Likewise.
	* d-target.cc (Target::isVectorTypeSupported): Likewise.
	(Target::isReturnOnStack): Likewise.
	(Target::preferPassByRef): Likewise.
	* decl.cc (class DeclVisitor): Likewise.
	* expr.cc (class ExprVisitor): Likewise.
	* typeinfo.cc (class TypeInfoVisitor): Likewise.
	* types.cc (class TypeVisitor): Likewise.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime 66b93fc24a.
	* src/MERGE: Merge upstream phobos 0c28620c3.
	* src/Makefile.am (PHOBOS_DSOURCES): Add
	std/internal/test/sumtype_example_overloads.d.
	* src/Makefile.in: Regenerate.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Synchronizing with the upstream release of v2.109.1.

D front-end changes:

	- Import dmd v2.109.1.
	- Copying from `const(void)[]' to `void[]' is now disallowed
	  with `-fpreview=fiximmutableconv'.
	- Import expressions are now treated as hex strings.
	- Using boolean values other than 0 or 1 in `@safe' code is now
	  deprecated.

D runtime changes:

	- Import dmd v2.109.1.

Phobos changes:

	- Import dmd v2.109.1.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 66b93fc24a.
	* dmd/VERSION: Bump version to v2.109.1.
	* d-builtins.cc (build_frontend_type): Update for new front-end
	interface.
	(matches_builtin_type): Likewise.
	* d-codegen.cc (identity_compare_p): Likewise.
	(call_side_effect_free_p): Likewise.
	* d-convert.cc (convert_expr): Likewise.
	(check_valist_conversion): Likewise.
	* d-lang.cc (d_types_compatible_p): Likewise.
	* d-target.cc (Target::isVectorTypeSupported): Likewise.
	(Target::isReturnOnStack): Likewise.
	(Target::preferPassByRef): Likewise.
	* decl.cc (class DeclVisitor): Likewise.
	* expr.cc (class ExprVisitor): Likewise.
	* typeinfo.cc (class TypeInfoVisitor): Likewise.
	* types.cc (class TypeVisitor): Likewise.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime 66b93fc24a.
	* src/MERGE: Merge upstream phobos 0c28620c3.
	* src/Makefile.am (PHOBOS_DSOURCES): Add
	std/internal/test/sumtype_example_overloads.d.
	* src/Makefile.in: Regenerate.
</pre>
</div>
</content>
</entry>
</feed>
