public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "burnus at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug fortran/52102] [OOP] Wrong result with ALLOCATE of CLASS components with array constructor SOURCE-expr
Date: Fri, 03 Feb 2012 13:22:00 -0000 [thread overview]
Message-ID: <bug-52102-4-ZZpzFifJ1r@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-52102-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52102
--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-02-03 13:21:43 UTC ---
>From the dump:
two.a._data.data = (void * restrict) __builtin_malloc (8);
__builtin_memset (two.a._data.data, 0, 8);
two.a._data.offset = -1;
{
struct t D.1891;
D.1891
= (*(struct t[0:] * restrict) two.a._data.data)[two.a._data.offset + 2];
The "D.1891 = " line looks odd: One should get the address of "two.a._data" and
not the value. Additionally, one gets the address of element "[-1]" which is
invalid.
Also the loop is odd: One iterates through the elements of the SOURCE-expr, but
one always writes to the same dst (here: the temporary variable D.1893):
while (1)
{
if (S.6 > 1) goto L.1;
{
struct t D.1893;
D.1893 = (*(struct t[2] * restrict) atmp.1.data)[S.6];
__vtab_MAIN___T._copy (&D.1893, &D.1891);
By contrast, for:
class(t), allocatable :: two(:)
allocate (two(2), source=[t(4), t(6)])
One has in the loop
D.1892 = (*(struct t[2] * restrict) atmp.1.data)[S.6];
__vtab_MAIN___T._copy (&D.1892,
(struct t *) D.1882
+ (sizetype) (((S.6 + 1) + D.1883)
* (integer(kind=8)) two._vptr->_size));
with
struct t[0:] * restrict D.1882;
D.1882 = (struct t[0:] * restrict) two._data.data;
next prev parent reply other threads:[~2012-02-03 13:22 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-03 7:49 [Bug fortran/52102] New: [OOP] Wrong result with ALLOCATE w/ SOURCE= and nonpoly. array constructor source-expr burnus at gcc dot gnu.org
2012-02-03 8:22 ` [Bug fortran/52102] [OOP] Wrong result with ALLOCATE of CLASS components with array constructor SOURCE-expr burnus at gcc dot gnu.org
2012-02-03 13:22 ` burnus at gcc dot gnu.org [this message]
2012-02-03 13:38 ` burnus at gcc dot gnu.org
2012-02-05 19:56 ` pault at gcc dot gnu.org
2012-02-05 20:06 ` pault at gcc dot gnu.org
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bug-52102-4-ZZpzFifJ1r@http.gcc.gnu.org/bugzilla/ \
--to=gcc-bugzilla@gcc.gnu.org \
--cc=gcc-bugs@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).