From: Richard Biener <richard.guenther@gmail.com>
To: Paul Edwards <mutazilah@gmail.com>,gcc@gcc.gnu.org
Subject: Re: negative indexes
Date: Sun, 14 Mar 2021 14:37:46 +0100 [thread overview]
Message-ID: <B59D9247-95C3-4511-9B84-1EF9919DD863@gmail.com> (raw)
In-Reply-To: <E842299081294172A5C6A7BD85217927@DESKTOP0OKG1VA>
On March 14, 2021 9:12:01 AM GMT+01:00, Paul Edwards <mutazilah@gmail.com> wrote:
>Hi Richard. Thanks for your reply, but if I understand
>you correctly, you are saying this fix is for situations
>where the size of an integer is different from the size
>of a pointer?
>
>That is not my issue. The size is the same. Absolutely
>everything is 32-bits in the program (long, int, char *,
>void *, code addresses).
>
>However, since I am running as AMODE 64, if someone
>attempts to do an index by adding two 32-bit registers
>together in a single instruction, that reference will
>actually take effect, and go up into the 4 GiB to 8 GiB
>region.
And that's exactly what I said. Pmode is DImode but ptr_mode is SImode.
>
>Is your answer still applicable (I don't really understand
>your answer. :-) ).
>
>Thanks. Paul.
>
>
>
>
>-----Original Message-----
>From: Richard Biener
>Sent: Sunday, March 14, 2021 7:05 PM
>To: Paul Edwards ; Paul Edwards via Gcc ; gcc@gcc.gnu.org
>Subject: Re: negative indexes
>
>On March 14, 2021 6:55:32 AM GMT+01:00, Paul Edwards via Gcc
><gcc@gcc.gnu.org> wrote:
>>If I have code like this:
>>
>>char foo(char *p)
>>{
>> return (p[-1]);
>>}
>>
>>It generates a negative index, like this:
>>
>>* Function foo code
>> L 2,=F'-1'
>> L 3,0(11)
>> SLR 15,15
>> IC 15,0(2,3)
>>* Function foo epilogue
>>
>>See that (2,3) - that is adding both R2 + R3.
>>R3 is a pointer to a location in 4 GiB space.
>>R2 is now 0xFFFFFFFF
>>
>>In 64-bit mode, both of those values are added
>>together and there is no address wrap, so it
>>accesses memory above the 4 GiB boundary
>>(between 4 GiB and 8 GiB to be precise)
>>which I don't have access to.
>>
>>Is there a way of constraining index registers to positive
>>values?
>>
>>I want it to instead generate
>>ALR 3,2
>>to add these two values together using 32-bit arithmetic,
>>causing truncation at 32 bits, then it can do
>>IC 15,0(3)
>>(ie no index)
>>
>>I'm using GCC 3.2.3 using the i370 target if it makes a difference.
>
>You are likely missing a fix that sign extends offsets on
>Pmode!=ptr_mode
>targets. 3.2.3 is really old now ;)
>
>Richard.
>
>>Thanks. Paul.
next prev parent reply other threads:[~2021-03-14 13:37 UTC|newest]
Thread overview: 105+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-09 22:33 i370 port Paul Edwards
2009-09-14 15:42 ` Ulrich Weigand
2009-09-15 12:59 ` Paul Edwards
2009-09-15 13:51 ` Ulrich Weigand
2009-09-17 13:00 ` Paul Edwards
2009-09-17 17:55 ` Ulrich Weigand
2009-09-18 0:35 ` Paul Edwards
2009-09-18 12:06 ` Ulrich Weigand
2009-09-18 12:23 ` Paul Edwards
2009-09-18 13:27 ` Ulrich Weigand
2009-09-18 13:42 ` Paul Edwards
2009-09-18 16:08 ` Ulrich Weigand
2009-09-19 12:57 ` Paul Edwards
2009-09-25 10:19 ` Paul Edwards
2009-09-25 15:20 ` Ulrich Weigand
2009-09-30 17:24 ` i370 port - constructing compile script Paul Edwards
2009-09-30 17:36 ` Richard Henderson
2009-09-30 21:40 ` Paul Edwards
[not found] ` <mcrpr98x9w8.fsf@dhcp-172-17-9-151.mtv.corp.google.com>
2009-10-01 0:16 ` Joseph S. Myers
2009-10-01 14:00 ` Paul Edwards
2009-10-02 12:41 ` Paul Edwards
2009-10-02 16:00 ` Ian Lance Taylor
2009-10-02 22:53 ` Paul Edwards
2009-10-04 4:11 ` Ian Lance Taylor
2009-10-04 5:14 ` Paul Edwards
2009-10-04 6:04 ` Ian Lance Taylor
2009-10-04 6:50 ` Paul Edwards
2009-10-04 15:38 ` Ulrich Weigand
2009-10-04 22:51 ` Paul Edwards
2009-10-05 13:15 ` Ulrich Weigand
2009-10-06 9:32 ` Paul Edwards
2009-10-06 13:15 ` Ulrich Weigand
2009-10-06 13:38 ` Paul Edwards
2009-10-06 14:01 ` Ulrich Weigand
2009-10-14 14:33 ` Paul Edwards
2009-10-19 14:19 ` Paul Edwards
2009-10-19 17:37 ` Ulrich Weigand
2009-10-20 14:18 ` Paul Edwards
2009-10-20 15:30 ` Ulrich Weigand
2009-11-12 14:03 ` Paul Edwards
2009-11-12 20:06 ` Ralf Wildenhues
2009-11-12 20:56 ` Paul Edwards
2009-11-13 11:43 ` Paul Edwards
2009-11-13 12:01 ` Ulrich Weigand
2009-11-13 12:18 ` Paul Edwards
2009-11-13 12:57 ` Ulrich Weigand
2009-11-14 8:52 ` Paul Edwards
2009-11-14 10:49 ` Ralf Wildenhues
2009-11-14 11:28 ` Paul Edwards
2009-11-22 0:51 ` Paolo Bonzini
2009-11-18 10:51 ` Paul Edwards
2009-11-19 14:27 ` Ulrich Weigand
2009-11-21 13:40 ` Paul Edwards
2009-11-23 10:33 ` i370 port - 3.4.6 to 4.4 upgrade attempt Paul Edwards
2009-11-23 10:43 ` Andreas Schwab
2009-11-23 15:43 ` Paolo Bonzini
2009-11-24 14:05 ` Ulrich Weigand
2009-11-24 14:36 ` Paul Edwards
2009-11-28 15:14 ` i370 port - music/sp - possible generic gcc problem Paul Edwards
2009-11-28 16:03 ` Richard Guenther
2009-11-28 16:35 ` Paul Edwards
2009-11-28 17:03 ` Richard Guenther
2009-11-28 23:44 ` Paul Edwards
2010-05-26 14:40 ` i370 port - status Paul Edwards
2021-03-14 5:55 ` negative indexes Paul Edwards
2021-03-14 8:05 ` Richard Biener
2021-03-14 8:12 ` Paul Edwards
2021-03-14 13:37 ` Richard Biener [this message]
[not found] ` <755065BE2A0B4B508DD3A262B2A83801@DESKTOP0OKG1VA>
2021-03-15 9:22 ` Richard Biener
2021-03-15 13:55 ` extended segments on 80386 Paul Edwards
2009-12-07 12:05 ` i370 port - 3.4.6 to 4.4 upgrade attempt Paul Edwards
2009-12-08 13:55 ` Ulrich Weigand
2009-11-15 14:22 ` i370 port - finally building Paul Edwards
2009-11-22 0:46 ` i370 port - constructing compile script Paolo Bonzini
2009-11-13 12:08 ` Ulrich Weigand
2009-10-05 13:17 ` Michael Matz
2009-10-05 13:38 ` Paul Edwards
2009-10-05 13:46 ` Michael Matz
2009-10-01 14:28 ` Paul Brook
2009-10-01 16:00 ` Paul Edwards
2009-10-01 18:36 ` Ian Lance Taylor
2009-10-01 23:43 ` Paul Edwards
2009-10-01 21:10 ` David Edelsohn
2009-10-01 22:22 ` Toon Moene
2009-10-02 0:19 ` Paul Edwards
2009-11-04 5:21 ` i370 port Paul Edwards
2009-11-04 16:47 ` Ulrich Weigand
2009-11-09 14:55 ` Paul Edwards
2009-11-09 15:57 ` Ian Lance Taylor
2009-11-09 23:10 ` Paul Edwards
2009-11-10 14:58 ` Paul Edwards
2009-11-10 15:36 ` Ian Lance Taylor
2009-11-10 15:51 ` Paul Edwards
2009-11-10 15:56 ` Ian Lance Taylor
2009-12-02 22:03 ` Paul Edwards
2011-08-13 8:34 ` Paul Edwards
2011-08-15 14:32 ` Ulrich Weigand
2011-08-15 15:26 ` Paul Edwards
2011-08-15 17:23 ` Ulrich Weigand
2011-08-16 11:20 ` Paul Edwards
2011-08-16 13:26 ` Ulrich Weigand
2011-08-18 12:15 ` Paul Edwards
2011-08-18 13:14 ` Ulrich Weigand
2011-08-18 14:18 ` Paul Edwards
2021-03-14 11:48 negative indexes Paul Edwards
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=B59D9247-95C3-4511-9B84-1EF9919DD863@gmail.com \
--to=richard.guenther@gmail.com \
--cc=gcc@gcc.gnu.org \
--cc=mutazilah@gmail.com \
/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).