NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-macppc/54827: alloca() is broken in gcc 8 on powerpc



The following reply was made to PR port-macppc/54827; it has been noted by GNATS.

From: Valery Ushakov <uwe%stderr.spb.ru@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: "David H. Gutteridge" <david%gutteridge.ca@localhost>
Subject: Re: port-macppc/54827: alloca() is broken in gcc 8 on powerpc
Date: Wed, 15 Jan 2020 18:26:48 +0300

 On Tue, Jan 14, 2020 at 22:30:02 +0000, David H. Gutteridge wrote:
 
 >  A raw diff is too big to usefully post here. To gets something more
 >  meaningful, we'd have to strip all the differences in path names out,
 >  which I haven't looked at (yet).
 
 Weird. From a very quick look I don't see any meaningful differences.
 For reference, here's the script I used to cull the diffs (hop gnats
 won't mangle it much)
 
 #!env bash
 # sorry, rc'ish <(cmd) syntax is so nice to use here :)
 
 # reduce differences
 # - pathnames
 # - line numbers in error messages
 # - default stack alignment: always 128 on netbsd, depends on isa otherwise
 # - default isa
 # - cpp whitespace difference: (8 \* 4) vs (\n\s+8 \n\s+\* 4)
 
 fixup_pkgsrc() {
     cat gcc8_pkgsrc/$1 | \
 	sed -e '/^#/d' \
     	    -e 's|\.\./\.\./gcc-8\.3\.0/||g' \
 	    -e 's|, [0-9][0-9]*, __FUNCTION__)|, 99999, __FUNCTION__)|g' \
 	    -e 's|(8 \* 4)|(\
  8\
  * 4)|g' \
 	    -e 's|(0x7fffffff \* 2U + 1U)|0xffffffffU|g' \
 	    -e 's|(((! ((global_options\.x_rs6000_isa_flags & (1ULL << 0)) != 0)) && !((global_options\.x_rs6000_isa_flags & (1ULL << 1)) != 0) && !global_options\.x_rs6000_altivec_abi && !((global_options\.x_rs6000_isa_flags & (1ULL << 43)) != 0)) ? 64 : 128)|128|g'
 }
 
 # +
 fixup_native() {
     cat gcc8_native/$1 | \
 	sed -e '/^#/d' \
     	    -e 's|/home/disciple/netbsd-current/src/tools/gcc/\.\./\.\./external/gpl3/gcc/dist/||g' \
 	    -e 's|, [0-9][0-9]*, __FUNCTION__)|, 99999, __FUNCTION__)|g' \
 	    -e 's|((1ULL << 41))|0|g' \
 	    -e 's|^[ 	][ 	]*8[ 	][ 	]*$| 8|' \
 	    -e 's|^[ 	][ 	]*\* 4| * 4|' \
 	    -e 's|putc_unlocked|putc|g'
 }
 
 diff -p -u <(fixup_pkgsrc $1) <(fixup_native $1)
 
 
 You'll get about 9K lines of header diffs that can be ignored.
 functions.ii and explow.ii have no diffs besides that.
 
 rs6000.ii has
 
 - whitespace in __builtin_foo ( vs __builtin_foo(
 - some stray src line numbers
 - SCALAR_FLOAT_MODE_P 0 vs 1 
 - rs6000_elf_reloc_rw_mask ifdef
 
 but all that is either trivial or irrelevant.
 
 -uwe
 


Home | Main Index | Thread Index | Old Index