Files
ldc/dmd
Christian Kamm 723cfef519 Another shot at fixing the issues with (constant) struct literals and their addresses. See DMD2682, #218, #324.
The idea is to separate the notion of const from 'this variable can always be
replaced with its initializer' in the frontend. To do that, I introduced
Declaration::isSameAsInitializer, which is overridden in VarDeclaration to
return false for constants that have a struct literal initializer.

So
{{{
const S s = S(5);
void foo() { auto ps = &s; }
// is no longer replaced by
void foo() { auto ps = &(S(5)); }
}}}

To make taking the address of a struct constant with a struct-initializer
outside of function scope possible, I made sure that AddrExp::optimize doesn't
try to run the argument's optimization with WANTinterpret - that'd again
replace the constant with a struct literal temporary.
2009-06-14 19:49:58 +02:00
..
2009-05-23 14:59:04 -06:00
2009-04-15 20:06:25 +02:00
2009-05-16 22:21:31 +02:00
2009-05-16 22:21:31 +02:00
2008-07-12 19:38:31 +02:00
2009-03-12 20:37:27 +01:00
2009-05-16 22:21:31 +02:00
2009-03-23 20:26:33 +01:00
2009-03-23 20:26:33 +01:00
2009-03-12 20:37:27 +01:00
2009-04-03 17:59:34 +02:00
2009-04-03 17:59:34 +02:00
2009-03-12 20:37:27 +01:00
2009-04-03 17:59:34 +02:00
2009-04-03 17:59:34 +02:00
2008-10-22 17:06:17 +02:00
2009-05-16 22:21:31 +02:00
2009-05-16 22:21:31 +02:00
2009-03-12 20:37:27 +01:00
2009-05-16 22:21:31 +02:00
2009-03-12 20:37:27 +01:00
2009-04-22 14:49:49 -06:00
2009-05-16 22:21:31 +02:00
2009-05-16 22:21:31 +02:00
2009-03-12 20:37:27 +01:00
2009-05-16 22:21:31 +02:00
2009-05-23 14:59:04 -06:00
2009-05-16 22:21:31 +02:00
2008-07-12 19:38:31 +02:00
2009-05-16 22:21:31 +02:00
2008-07-12 19:38:31 +02:00
2008-07-12 19:38:31 +02:00

		The D Programming Language
		Compiler Front End Source
		Copyright (c) 1999-2002, by Digital Mars
		www.digitalmars.com
		All Rights Reserved


This is the source code to the front end Digital Mars D compiler.
It covers the lexical analysis, parsing, and semantic analysis
of the D Programming Language defined in the documents at
www.digitalmars.com/d/

The optimizer, code generator, and object file generator are not part
of this source, hence the source does not currently constitute a complete,
compilable program. However, many people have expressed a strong interested
in producing a D compiler with the GNU compiler sources. This release should
enable that.

These sources are free, they are redistributable and modifiable
under the terms of the GNU General Public License (attached as gpl.txt),
or the Artistic License (attached as artistic.txt).

It does not apply to anything else distributed by Digital Mars,
including D compiler executables.

-Walter Bright