Commit Graph

374 Commits

Author SHA1 Message Date
obrien
6e1cb4b9ca The brokenness in ix86_expand_clrstr is quite visible when you
compare the function with ix86_expand_movstr.

Submitted by:	Tor Egge
2002-06-04 18:06:12 +00:00
obrien
d047bea9fd Gcc 3.1 (-O) now generates broken inline code for memset in some cases.
This broke newfs (newfs left some garbage in a bitmap).

The ASM for:

	#include <string.h>
	int x, foo[100];
	main()
	{
		memset(&foo[0], 0, x);
	}

is (at least if you have fixed function alignment):

	.file	"z.c"
	.text
	.p2align 2,,3
.globl main
	.type	main,@function
main:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%edi
	pushl	%eax
	movl	x, %ecx
	xorl	%eax, %eax
	shrl	$2, %ecx
	movl	$foo, %edi
	cld
	rep
	stosl
	andl	$-16, %esp
				<-- the lower bits of `len' should be loaded
				    near here
	testl	$2, %edi	<-- this seems to be meant to test the 2^1
				    bit in `len' (not alignment of the pointer
				    like it actually does).  %edi is the wrong
				    register for holding the bits, since it is
				    still needed for the pointer.
	je	.L2
	stosw
.L2:
	testl	$1, %edi	<-- similarly for the 2^0 bit.
	je	.L3
	stosb
.L3:
	movl	-4(%ebp), %edi
	leave
	ret
.Lfe1:
	.size	main,.Lfe1-main
	.comm	foo,400,32
	.comm	x,4,4
	.ident	"GCC: (GNU) 3.1 [FreeBSD] 20020509 (prerelease)"

This seems to only result in (len % 3) bytes not being cleared, since gcc
doesn't seem to use the builtin memset unless it knows that the pointer is
aligned.  If %edi could be misaligned, then too many bytes would be set.

Submitted by:	BDE
2002-06-04 18:04:27 +00:00
obrien
c2beebb55b Seems we are not ready for revision 1.8. 2002-05-30 06:04:14 +00:00
obrien
f3e84ff8bd Make our default predefines ANSI clean. 2002-05-30 00:58:35 +00:00
obrien
c63b7df4ec The special checks for %b and %D in rev 1.1 were done before skipping over
any characters between the % and the [bD], so only plain %b and %B worked.
This may un-1/2ass our -fformat-extensions support.

Submitted by:	bde
2002-05-26 16:04:37 +00:00
obrien
25711d6191 1/2assed reimplementation of c-common.c revs 1.2 (-fformat-extensions)
and 1.3 (printf0) for GCC 3.1.
2002-05-22 16:37:09 +00:00
obrien
80b0d5d606 the processed hash file 2002-05-17 19:47:48 +00:00
ru
af2650e805 MD_EXEC_PREFIX doesn't work for the cross-arch compiler.
The change also makes the `cc -print-search-dirs' output
sane (the pre-3.1 way) in the non-cross case.

Draft reviewed by:	obrien
2002-05-16 15:22:58 +00:00
obrien
069c7c8d3a Merge c-common.c rev 1.10 into GCC 3.1
Clarify that the "yields only last 2 digits of year in some locales" warning
does not apply to BSD.

Submitted by:	ache
2002-05-14 01:53:53 +00:00
obrien
7d64ac0ab2 If you want to not warn on K&R main(); this is how it should be implemented. 2002-05-14 01:44:02 +00:00
obrien
b028831d22 Merge choose-temp.c rev 1.2 (use /tmp 1st, and then /var/tmp) into GCC 3.1. 2002-05-14 00:33:44 +00:00
obrien
1e93bf0871 Add framework for our kernel printf enhancements. 2002-05-14 00:30:25 +00:00
obrien
532536cdd5 do-while ASM_OUTPUT_ALIGN to enable its use in more places. 2002-05-12 17:31:12 +00:00
obrien
29ad76a5ac Fixes for building a.out bits.
Submitted by:	bde
2002-05-12 12:01:12 +00:00
obrien
a8e2e6d6bb Localize the version number at the request of the GCC developers. 2002-05-11 00:25:50 +00:00
obrien
f4aad0fe00 Add tweaks needed when using as the system compiler. 2002-05-10 19:05:07 +00:00
obrien
5eb5239e7b Change symbol values to match freebsd.h to avoid warnings. 2002-05-10 09:02:14 +00:00
obrien
4af4f4a28b Remove files not part of GCC 3.1. 2002-05-10 05:26:57 +00:00
obrien
9465775461 Import data for 3.0.2. 2002-05-10 05:21:15 +00:00
obrien
c95b4b5523 Use the stock (3.1 pre) file. 2002-05-09 22:44:32 +00:00
obrien
e40513279f Use the stock file for now (but leave a note behind about our OBE changes). 2002-05-09 22:42:39 +00:00
obrien
3519dd389b Merge rev 1.2 (printf format error fixes) in its 1.8 form into Gcc 3.1 pre. 2002-05-09 22:39:46 +00:00
obrien
37ab630335 Use the stock (3.1) file. 2002-05-09 22:38:33 +00:00
obrien
5dab80497a We use the stock (3.1) file. 2002-05-09 22:16:22 +00:00
obrien
65e2ec7693 Merge rev 1.2 (-fformat-extensions) and rev 1.7 (optimization downgrade)
into the Gcc 3.1 prerelease.
2002-05-09 22:15:04 +00:00
obrien
0ac4840cc7 Use the stock (3.1 pre) file. 2002-05-09 22:08:26 +00:00
obrien
7d3f59c051 Use the stock (3.1) version. 2002-05-09 22:05:33 +00:00
obrien
ec81e43ce5 Merge rev 1.2 [_exit() over exit()] into the Gcc 3.1 prerelease. 2002-05-09 22:04:44 +00:00
obrien
286b84aa7c Merge revs 1.{2,15} (FREEBSD_NATIVE); 1.{5,13} (ELF, and objformat support);
1.{16,23,25} (better cross building control); 1.21 ("GCC_OPTIONS")
into the GCC 3.1 prerelease.
2002-05-09 22:02:01 +00:00
obrien
b7d19d3348 Merge rev 1.2 (a.out support) into the GCC 3.1 prerelease. 2002-05-09 21:44:15 +00:00
obrien
603733766c Use the stock 3.1 prerelease version of this for now. 2002-05-09 21:42:32 +00:00
obrien
65d1b51533 Use the stock 3.1 prerelease file now. Rev 1.2 (add_bb) just doesn't
cleanly fit in any more.
2002-05-09 21:41:12 +00:00
obrien
03d718bf25 Use the stock (3.1) file. 2002-05-09 21:24:44 +00:00
obrien
da84150b6c We use the stock (3.1) file now. 2002-05-09 21:19:23 +00:00
obrien
67d7740f78 Use the stock (3.1) file now.
The choosing of TMPDIR has moved to make-temp-file.c.
2002-05-09 21:15:23 +00:00
obrien
e93c006736 Use the stock 3.1 prerelease file. 2002-05-09 21:12:10 +00:00
obrien
43f5e99714 Use the stock 3.1-prerelease file. 2002-05-09 21:11:21 +00:00
obrien
d6b5d86ff9 Use stock file. 2002-05-09 21:06:15 +00:00
obrien
98051db4df This commit was generated by cvs2svn to compensate for changes in r96263,
which included commits to RCS files with non-trunk default branches.
2002-05-09 20:02:13 +00:00
obrien
c8f5fc7032 Gcc 3.1.0 pre-release from the FSF anoncvs repo on 9-May-2002 15:57:15 EDT. 2002-05-09 20:02:13 +00:00
obrien
3c0c831761 Alpha MD bits for Gcc 3.1. 2002-05-07 23:28:45 +00:00
obrien
21304809df Comment a knob. 2002-05-07 02:26:40 +00:00
obrien
9ced709070 The default ASM_OUTPUT_ADDR_DIFF_ELT will now handle our mixed a.out/ELF. 2002-05-07 02:25:52 +00:00
obrien
1e3fa59089 MI bits for Gcc 3.1. 2002-04-30 17:22:42 +00:00
obrien
9a9ba1484f i386 MD bits for Gcc 3.1.
These are totally untested.  Do these work?  Hell if I know, I have yet to
bootstrap using these bits.  But people want them, so here they are.
2002-04-30 17:15:01 +00:00
obrien
257900c741 Style changes to reduce diff to things I did in the FSF repo. 2002-04-24 04:49:34 +00:00
obrien
638b01d99e Fix bug where we were loosing our platform-wide ASM_COMMENT_START
definition due to pollution in i386/unix.h.
2002-04-24 04:48:00 +00:00
obrien
3e278e7acd GCC 3.1 uses crtstuff.c on Alpha now. [yay!] 2002-03-27 22:18:22 +00:00
obrien
9b5143f94f Switch register numbers for DWARF2_DEBUG also. 2002-03-27 05:22:35 +00:00
obrien
95b6324d69 Allow for better control over the GCC front-end when building a cross
compiler.

* Undo the diking out of cross compiler logic from gcc.c rev 1.16.
* Add the `CROSS_STARTFILE_PREFIX' knob.
* Add our own definition of `STANDARD_INCLUDE_DIR'.  This should have been
  included in freebsd-native.h rev 1.5.
2002-03-05 00:17:24 +00:00