https://gcc.gnu.org/g:74bcef4cf16b35fe64767c1e8e529bdd229841a3

commit r15-2091-g74bcef4cf16b35fe64767c1e8e529bdd229841a3
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Wed Jul 17 11:40:03 2024 +0200

    varasm: Fix bootstrap after the .base64 changes [PR115958]
    
    Apparently there is a -Wsign-compare warning if ptrdiff_t has precision of
    int, then (t - s + 1 + 2) / 3 * 4 has int type while cnt unsigned int.
    This doesn't warn if ptrdiff_t has larger precision, say on x86_64
    it is 64-bit and so (t - s + 1 + 2) / 3 * 4 has long type and cnt unsigned
    int.  And it doesn't warn when using older binutils (in my tests I've
    used new binutils on x86_64 and old binutils on i686).
    Anyway, earlier condition guarantees that t - s is at most 256-ish and
    t >= s by construction, so we can just cast it to (unsigned) to avoid
    the warning.
    
    2024-07-17  Jakub Jelinek  <ja...@redhat.com>
    
            PR other/115958
            * varasm.cc (default_elf_asm_output_ascii): Cast t - s to unsigned
            to avoid -Wsign-compare warnings.

Diff:
---
 gcc/varasm.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/varasm.cc b/gcc/varasm.cc
index fe0a6b873ef4..ecd91a683237 100644
--- a/gcc/varasm.cc
+++ b/gcc/varasm.cc
@@ -8543,7 +8543,7 @@ default_elf_asm_output_ascii (FILE *f, const char *s, 
unsigned int len)
            {
              if (t == p && t != s)
                {
-                 if (cnt <= (t - s + 1 + 2) / 3 * 4
+                 if (cnt <= ((unsigned) (t - s) + 1 + 2) / 3 * 4
                      && (!prev_base64 || (t - s) >= 16)
                      && ((t - s) > 1 || cnt <= 2))
                    {
@@ -8569,7 +8569,7 @@ default_elf_asm_output_ascii (FILE *f, const char *s, 
unsigned int len)
                  break;
                }
            }
-         if (cnt > (t - s + 2) / 3 * 4 && (t - s) >= 3)
+         if (cnt > ((unsigned) (t - s) + 2) / 3 * 4 && (t - s) >= 3)
            {
              if (bytes_in_chunk > 0)
                {

Reply via email to