From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) by sourceware.org (Postfix) with ESMTPS id A0EB93858C39 for ; Fri, 9 Feb 2024 21:34:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A0EB93858C39 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A0EB93858C39 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::633 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707514495; cv=none; b=Cwh61PvLdG45q+c7BM74TKeG0AUsJtJooYkCFLCY5Bx6EIc9W4jDst1NgbATpIT4FwIhTQ6Yl/VoOS9tYrDgZ0TH8g7VyZOOwKmAd9Zsr1ULuvlq7kCnxpg26X5fqrWjq5Z6RmHMqcOoGq3HBaPzFsJNrhBMgYmHvJhByAd6EXI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707514495; c=relaxed/simple; bh=THMg0BVdvgU668kYTNkMcvCmE0t1rjKCyc5tvUqxSzY=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=C0bR+mQj5qtukNq29dEPbxfYkuzTwkZ6kiliYRGUYICS2N09DCMlEqR/xrU7fmrQ8LN3mXt1pGQNootpBTnfEYtgSFOrtJq3PY/h/gDqRCA/q4blx81FcDOWvNMVydD594stGz4oQs5ipSfaWZ/RP+uikEIeA87S/W6UlPBxTvc= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-1d934c8f8f7so12357295ad.2 for ; Fri, 09 Feb 2024 13:34:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707514491; x=1708119291; darn=gcc.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=mYegF2oAQljvxARjKBGmv2bXWfsv+AYQAgY3h1frc5k=; b=fMPbEayik38j3eUSHYXRMBpStqfmFyceE/NdIHDVwsGQjC8iPyqxuNga80b9jNtvNJ bd52U20sdo/SaAZXLE6afdL1iXMI/zbTB8e1vfkS94io71YUwU1HDr/jRZ1z5hVuGhZM hTRTqRlV2ZZhskgbUiAg3eGrdEsROJuMB6Gj+NL5EVdoATJItgu2xyKwr7qPMuiyqrua ronK3YpMP9D6sKDPCg39HcaHcGgUw6LpjWzwyQOXSExA5SBWWpXNCEWnkUDVat5byIw2 Xk/3INWwSUe9d5mgHJV++cOSMIL5CKxF9R9vyxsy7SZZqwSZaCNuOEw5sMwcosjd4IAp aSZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707514491; x=1708119291; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=mYegF2oAQljvxARjKBGmv2bXWfsv+AYQAgY3h1frc5k=; b=aHlyFQEK5IYigvpPKsB62SzezP1v++eJQOy0p7+3SJrfnCDGiXP0igXb/zwHgdaU1u kr74q+2B/IcADNjhJ8VM5BgeUTOsM9ygnO9YIaRfn8FbCcCV3nfDjuBhnvHII0VzDglg 5lN+UidqW2m6dV4URUc9cSlGEZO43V/bMqNk057jryWGbDa58V03sUUgoLp9eh05GAVM ZMFpHzcFM4YeDt+w9IP8Am0ErEr4oPWnLDTQKufwCpj85ZYwzBFdhRzVchzmI8uqC7Dx 96LKlgNI4yhqbKY18q5GwJGtsx2f6tUhgaSAdZUAqfmUaXEX9rh0fIBxfD7e1ek6KGk2 F2IQ== X-Gm-Message-State: AOJu0YyhayFk+zIJn4oCfNE0qycZLb/iybzv7F1tOxXY8AZLM2bzlsVn dtiOlkI6j7zqAFOfMYoDzroTBY/jjrFQACdU95oHLLFRt9kshg4eNUugIVtLBECPJpE+hFnd/xQ aSXB9erPCcM4Y7j3yZZIsFueQViQTXPOVg/w= X-Google-Smtp-Source: AGHT+IEhhJx+XKBcK1D0xbj3C+ANRzEVWdHPxWgffRQt6Po7z7CCWIzvxVhjN3ZEvybPTwDGWiHRlBwwpVuGG9ro4ZM= X-Received: by 2002:a17:90b:2d82:b0:296:4177:6404 with SMTP id sj2-20020a17090b2d8200b0029641776404mr283515pjb.11.1707514491508; Fri, 09 Feb 2024 13:34:51 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Paul Edwards Date: Sat, 10 Feb 2024 05:34:39 +0800 Message-ID: Subject: Re: gcc 3.2.3 x64 negative indexes To: Jakub Jelinek Cc: GCC Development Content-Type: multipart/alternative; boundary="000000000000b71e4b0610f9b205" X-Spam-Status: No, score=0.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE,LOTS_OF_MONEY,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000b71e4b0610f9b205 Content-Type: text/plain; charset="UTF-8" On Wed, 7 Feb 2024 at 23:12, Jakub Jelinek wrote: On Wed, Feb 07, 2024 at 11:02:51PM +0800, Paul Edwards via Gcc wrote: >> I am using a slightly modified gcc 3.2.3 for x86_64 and for this code: > Don't, gcc 3.2.3 is not supported for more than 20 years already. And the i370 target hasn't been supported for that long either - but that's a target I want too. And nor has any version ever run on MVS 3.8J - but that's an execution platform I want too. And the same goes for PDOS/386 as an execution platform. >> int fff(char *x) >> { >> return (x[-1]); >> } > >> It is generating: > >> .globl fff >> fff: >> .LFB2: >> movl $4294967295, %eax >> movsbl (%rax,%rcx),%eax > That said, I can't reproduce it and get > movsbl -1(%rdi),%eax > ret > from 3.2.3. Thanks for that! So one of the "slight modifications" was to switch to Win64 ABI, which is why rcx is being selected instead of rdi. So that bit is expected. So I need to know why I'm not getting -1. Since your email I have been trying to explain that. It is likely a problem with the C library I am using (PDPCLIB) - strtol or something like that. I am using 64-bit longs and I can see that that large value (-1 as unsigned 32-bit) is being stored in the 64-bit field and being preserved. So far I have tracked it down to happening in the early stages. fold() is called and I can see that it is initially good for something, and bad later. I'm still working on it. BFN. Paul. fold-const.c tree fold (expr) tree expr; { tree t = expr; tree t1 = NULL_TREE; tree tem; tree type = TREE_TYPE (expr); tree arg0 = NULL_TREE, arg1 = NULL_TREE; enum tree_code code = TREE_CODE (t); int kind = TREE_CODE_CLASS (code); int invert; /* WINS will be nonzero when the switch is done if all operands are constant. */ int wins = 1; printf("bbb in fold\n"); /* Don't try to process an RTL_EXPR since its operands aren't trees. Likewise for a SAVE_EXPR that's already been evaluated. */ if (code == RTL_EXPR || (code == SAVE_EXPR && SAVE_EXPR_RTL (t) != 0)) return t; /* Return right away if a constant. */ if (kind == 'c') return t; printf("bbb fold2\n"); printf("bbb fold2b %d\n", (int)TREE_CODE(t)); if (TREE_CODE (t) == INTEGER_CST) { printf("bbb fold2c is %ld\n", (long)TREE_INT_CST_LOW (t)); } ... /* If this is a commutative operation, and ARG0 is a constant, move it to ARG1 to reduce the number of tests below. */ if ((code == PLUS_EXPR || code == MULT_EXPR || code == MIN_EXPR || code == MAX_EXPR || code == BIT_IOR_EXPR || code == BIT_XOR_EXPR || code == BIT_AND_EXPR) && (TREE_CODE (arg0) == INTEGER_CST || TREE_CODE (arg0) == REAL_CST)) { printf("bbb fold3\n"); printf("bbb fold3b is %ld\n", (long)TREE_INT_CST_LOW (arg0)); tem = arg0; arg0 = arg1; arg1 = tem; tem = TREE_OPERAND (t, 0); TREE_OPERAND (t, 0) = TREE_OPERAND (t, 1); TREE_OPERAND (t, 1) = tem; } printf("bbb fold4\n"); temp.txt: bbb fold2 temp.txt: bbb fold2b 77 temp.txt: bbb fold4 temp.txt: bbb fold5 temp.txt: bbb -2 -1 temp.txt: bbbj 0 temp.txt: bbbs1 temp.txt: bbbs2 temp.txt: bbbs9 temp.txt: bbbq temp.txt: bbb in fold temp.txt: bbb fold2 temp.txt: bbb fold2b 115 temp.txt: bbb fold4 temp.txt: bbb fold5 temp.txt: bbb -2 -1 temp.txt: bbbj 0 temp.txt: bbb in fold temp.txt: bbb fold2 temp.txt: bbb fold2b 115 temp.txt: bbb fold4 temp.txt: bbb fold5 temp.txt: bbb 1 0 temp.txt: bbbj 0 temp.txt: bbbq temp.txt: bbb about to do build temp.txt: bbbo temp.txt: bbb done build temp.txt: bbb in fold temp.txt: bbb fold2 temp.txt: bbb fold2b 61 temp.txt: bbb fold3 temp.txt: bbb fold3b is 4294967294 temp.txt: bbb fold4 temp.txt: bbb fold5 temp.txt: bbb 4294967294 0 --000000000000b71e4b0610f9b205--