Please document `contrib/download_prerequisites'

2013-05-29 Thread Michael Witten
It would probably be a good idea to mention:

  contrib/download_prerequisites

on this page:

  http://gcc.gnu.org/install/prerequisites.html

and probably on this page:

  http://gcc.gnu.org/install/download.html

Sincerely,
Michael Witten


Re: Please document `contrib/download_prerequisites'

2013-05-30 Thread Michael Witten
On Thu, 30 May 2013 11:04:55 +0800, Chung-Ju Wu wrote:

> 2013/5/30 Michael Witten :
>> It would probably be a good idea to mention:
>>
>>   contrib/download_prerequisites
>>
>> on this page:
>>
>>   http://gcc.gnu.org/install/prerequisites.html
>>
>> and probably on this page:
>>
>>   http://gcc.gnu.org/install/download.html
>>
>> Sincerely,
>> Michael Witten
> 
> Is this the page you are looking for??
> 
> http://gcc.gnu.org/wiki/InstallingGCC
> 
> See 'Support libraries' section.

I'm not looking for anything.

That wiki information should be incorporated into what that wiki page
calls `the official installation docs', and the rest of it should
probably be thrown out as superfluous.


Re: clang and FSF's strategy

2014-01-23 Thread Michael Witten
On Wed, Jan 22, 2014 at 2:33 PM, Jordi Gutiérrez Hermoso wrote:

> The fact that these non-free tools are not based on gcc are a
> testament to how proprietary software developers cannot plug into gcc,
> and how clang is fostering non-free software.

What does it matter whether clang fosters non-free software if clang *also*
fosters free software? Indeed, non-free software inspires a lot of free
software, anyway.

Apparently, gcc isn't fostering much of anything, except for a desire to
replace it with llvm/clang.

Where there is the least friction, there is the most freedom.


Re: clang and FSF's strategy

2014-01-23 Thread Michael Witten
On Thu, Jan 23, 2014 at 11:04 AM, Duncan Sands  wrote:

> the... list is for technical rather than political discussion

That's just it; that's the whole point.

The *political* aspects are dictating the *technical* aspects.

So... like it or not, that makes this list exactly the right place to
have this discussion.


Re: [Progress] Tiny GCC: Pure, Unadulterated, Object Code

2008-01-25 Thread Michael Witten


On 25 Jan 2008, at 6:11 PM, Michael Witten wrote:


On 25 Jan 2008, at 8:16 AM, Michael Witten wrote:


On 24 Jan 2008, at 7:20 AM, Brian Dessent wrote:


Michael Witten wrote:


Can I build gcc in this way?

I've been trying for quite some time now to achieve such a
stripped down gcc, but it would seem that the gcc build
process insists on building these libraries, which I think
is wholly unnecessary.


You might be able to approximate this by "make all-gcc" and then  
"make

install-gcc" (or just manually copying the xgcc to the destination.)


I'm a little uncomfortable just taking the xgcc that's left over when
the build fails.


I apologize.


For some reason, when I tried

make all-gcc

the build failed.


Aha!

Apparently the build DOES FAIL when building on Mac OS X 10.5 (darwin  
9.1.0)

for the PowerPC (there is no problem with the x86 version):

	cc -c   -g -O2  -DIN_GCC -DCROSS_COMPILE  -W -Wall -Wwrite-strings - 
Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Wno- 
variadic-macros -Wold-style-definition -Wmissing-format-attribute- 
DHAVE_CONFIG_H -I. -I. -I../../src/gcc -I../../src/gcc/. -I../../src/ 
gcc/../include -I../../src/gcc/../libcpp/include -I. -I. -I../../ 
src/gcc -I../../src/gcc/. -I../../src/gcc/../include -I../../src/ 
gcc/../libcpp/include  ../../src/gcc/config/rs6000/host-darwin.c -o  
host-ppc-darwin.o
	../../src/gcc/config/rs6000/host-darwin.c:38: warning: ‘struct  
sigaltstack’ declared inside parameter list
	../../src/gcc/config/rs6000/host-darwin.c:38: warning: its scope is  
only this definition or declaration, which is probably not what you want
	../../src/gcc/config/rs6000/host-darwin.c:38: error: conflicting  
types for ‘sigaltstack’
	/usr/include/signal.h:89: error: previous declaration of  
‘sigaltstack’ was here

../../src/gcc/config/rs6000/host-darwin.c: In function ‘segv_handler’:
	../../src/gcc/config/rs6000/host-darwin.c:71: error: ‘struct  
__darwin_mcontext’ has no member named ‘ss’
	../../src/gcc/config/rs6000/host-darwin.c:120: error: ‘struct  
__darwin_mcontext’ has no member named ‘es’
	../../src/gcc/config/rs6000/host-darwin.c:120: error: ‘struct  
__darwin_mcontext’ has no member named ‘ss’
	../../src/gcc/config/rs6000/host-darwin.c: In function  
‘darwin_rs6000_extra_signals’:
	../../src/gcc/config/rs6000/host-darwin.c:134: warning: passing  
argument 1 of ‘sigaltstack’ from incompatible pointer type

make[1]: *** [host-ppc-darwin.o] Error 1
make[1]: *** Waiting for unfinished jobs
make: *** [all-gcc] Error 2

It can be compiled thusly:

MACOSX_DEPLOYMENT_TARGET=10.4 make all-gcc


Re: [bool wrapping] Request for warnings on implicit bool to int conversions

2012-03-28 Thread Michael Witten
   goto ;
}
D.1090 = 0;
return D.1090;
  }

As you can see, the loop simply keeps assigning to `b' the value `1':

  :
  b = 1;
  goto ;

As for decrementing a _Bool, according to C99.6.5.3.1
"Prefix increment and decrement operators":

The prefix -- operator is analogous to the prefix ++
operator, except that the value of the operand is
decremented.

So, the prefix `--' operator expression in the following:

  #include 
  bool b = 0;
  --b;

should assign to `b' the value of the following expression:

  (bool)((int)b - (int)1)
  (bool)((int)0 - (int)1)
  (bool)-1
  1

That is, the value of `b' can wrap on decrement, which is
corroborated when the following program:

  #include 
  int main(void)
  {
bool b = 0;
for (;;) --b;
  }

is compiled with:

  gcc -std=c99 -pedantic -Wall -O0 -fdump-tree-gimple d.c

thereby yield the following GIMPLE representation:

  main ()
  {
int D.1090;
  
{
  _Bool b;
  
  b = 0;
  :
  b = !b;
  goto ;
}
D.1090 = 0;
return D.1090;
  }

As you can see, the loop simply keeps assigning to `b' the logical
negation of `b':

  :
  b = !b;
  goto ;

Similar arguments can be made for `b+=1' and `b-=1' (even for C++);
however, the GIMPLE representation is sometimes not as optimized:
For `b+=1' (and similarly for `b-=1'), gcc produces the following
more general computation:

  :
  D.1090 = (int) b;
  D.1091 = D.1090 + 1;
  b = D.1091 != 0;
  goto ;

Also, while g++ does the simple logical negation for `b-=1', it
instead forgos a simple assignment of `1' in favor of the following
bizarre gymnastics for `b+=1':

  :
  D.984 = (int) b;
  b = D.984 != -1;
  goto ;

Maybe there's room for a patch?

Anyway, I'm done with my mental pleasuring for the day.

Ta ta!
Michael Witten


Re: [bool wrapping] Request for warnings on implicit bool to int conversions

2012-03-28 Thread Michael Witten
On Wed, Mar 28, 2012 at 20:30, mathog  wrote:

> Since b-- is equivalent to [assigning] !b,
> and b++ is equivalent to [assigning] 1, if
> that action is intended, there is no reason
> to use either the increment or decrement
> operators on a bool.

However, it seems to me that toggling the value with the idiom:

 --b;

is aesthetically preferable to the more elaborate:

  b = !b;

In fact, I've seen at least one person make this complaint in
freenode's ##c++ IRC channel.

Given the potential usefulness of `--b' and the relative uselessness
of `++b', it would seem more practical for the C++ standard to have
deprecated (if not allowed) `--b' and instead forbidden `++b' (rather
than the other way around).


Re: Request for warnings on implicit bool to int conversions

2012-03-28 Thread Michael Witten
On Wed, Mar 28, 2012 at 20:30, David Mathog wrote:

> ...
>
>>  gcc -std=c99 -pedantic -Wall -O0 -fdump-tree-gimple d.c
>
>
> That's a trick worth knowing. Thanks!
> Ran that on a test program and in every case but one there was an implicit
>
>   (int) b
>
> on sections of code which I though should generate warnings.  (Math ops on
> bools, comparison operations of
> bool with ints.) The one exception in that little program was:
>
>  b=2;
>
> which came out as
>
>  b=1;
>
> In that case the compiler must have performed an implicit
>
>  1 = (bool) 2
>
> Also these forms all generated implicit int conversions
>
>  if(b==1)
>  if(b==2)
>  if(b==0)
>
> whereas
>
>  if(b)
>
> did not.
>
> So let's turn this around.  If the compiler warned on all implicit
> conversions of bool <-> int,
> what program lines would it warn on that it shouldn't?  It would warn on:
>
>  if(b==1)
>  if(b==0)
>
> but I would argue that line is inappropriate for a bool type, and should be
> written as:
>
>  if(b)
>
> With two bool variables, this also did not generate an implicit conversion
> (and so would not warn,
> which is appropriate):
>
>  if(b1 || b2)
>
> Whereas this less preferred form would have generated an implicit (int) [and
> a well deserved warning]
>
>  if(b1 + b2)


Your suggestion is probably a good idea, but as with all good ideas,
it will probably not get implemented because most people don't care.

Therefore, I'd suggest writing a patch and submitting it; people will
no doubt be a lot more receptive when you convey your thoughts in
hard-nosed, precise code, ESPECIALLY because that means the work has
already been done!

Sincerely,
Michael Witten


Re: MPC required in one week.

2009-11-30 Thread Michael Witten
On Mon, Nov 30, 2009 at 12:04 AM, Kaveh R. GHAZI  wrote:
> The patch which makes the MPC library a hard requirement for GCC
> bootstrapping has been approved today.

Out of curiosity and ignorance: Why, specifically, is MPC going to be
a hard requirement?

On the prerequisites page, MPC is currently described with: "Having
this library will enable additional optimizations on complex numbers."

Does that mean that such optimizations are now an important
requirement? or is MPC being used for something else?


Re: Support for export keyword to use with C++ templates ?

2010-01-29 Thread Michael Witten
On Fri, Jan 29, 2010 at 8:05 PM, Paolo Carlini  wrote:
> Even for implementors knowing *very* well both the details of the C++
> standard and the internals of a specific front-end, implementing export
> is an *highly* non-trivial task.

However, I have a gut feeling that at least a restricted version of
'export' (or a cousin of 'export') could be both useful and trivial to
implement: Perhaps a limited form could simply automate the
not-infrequently employed practice of creating a translation unit
specifically for explicit template instantiations.

Sincerely,
Michael Witten


Re: Support for export keyword to use with C++ templates ?

2010-02-01 Thread Michael Witten
On Sun, Jan 31, 2010 at 6:38 PM, Paolo Carlini  wrote:
> it's extremely
> unlikely that the C++ front-end maintainers could even consider
> reviewing patches from a novice for such an hard to implement feature.

That says more about the tangled mess that is gcc then about any
particular programmer's ability.


Re: Code assistance with GCC

2010-04-22 Thread Michael Witten
On Wed, Apr 21, 2010 at 12:49, Andrew Haley  wrote:
> On 04/21/2010 06:35 PM, Chris Lattner wrote:
>> This approach seems highly, uh, "inspired" from the exact same
>> functionality in Clang.  Any reason not to contribute to that
>> effort?
>
> Surely trying to persuade people to contribute to some other project
> rather than gcc is off-topic here.  Even if not, it's pretty hostile.

Chris Lattner of Apple
Chief architect of the LLVM project and Clang.

Andrew Haley of Red Hat
Maintainer of the GCC's Java frontend.

Michael Witten
Preparer of Popcorn.

:-D


Re: Why not contribute? (to GCC)

2010-04-23 Thread Michael Witten
On Fri, Apr 23, 2010 at 14:10, Richard Kenner
 wrote:
> I've happened to be looking at a number of other free-software projects
> recently (having nothing to do with compilers) and find the quality of the
> code ABSOLUTELY APALLING.  The formatting is random and very hard to read.
> There are almost no comments.  There are few, if any, indications of what
> each function is supposed to do.  And many of these projects have no
> documentation AT ALL except for some small FAQs or Wikis.

Funny. I've always felt the same way about gcc and most GNU codebases...

In fact, I've always felt the same way about the vast majority of
codebases that aren't my own :-D


Re: Why not contribute? (to GCC)

2010-04-23 Thread Michael Witten
On Fri, Apr 23, 2010 at 13:39, Manuel López-Ibáñez
 wrote:
> What reasons keep you from contributing to GCC?

I'm really quite the outsider (I don't even deserve to be called a
"lurker"), but my impression is that the common wisdom among the
proles is that gcc is bloated and crufty and everyone is just waiting
for a switch-over to something "new and clean and efficient" like the
LLVM/Clang.

Maybe GCC needs a good Public Relations campaign.


Re: Why not contribute? (to GCC)

2010-04-23 Thread Michael Witten
On Fri, Apr 23, 2010 at 15:36, Manuel López-Ibáñez
 wrote:
> In any case, I think coming from you it is a bit hurtful because I
> have personally fixed many of your bugs and I haven't seen a
> single beer yet! Where is my beer?

Where's his beer for finding bugs?


Re: Why not contribute? (to GCC)

2010-04-23 Thread Michael Witten
Richard Kenner  wrote:

>>> I've happened to be looking at a number of other
>>> free-software projects recently (having nothing to
>>> do with compilers) and find the quality of the code
>>> ABSOLUTELY APALLING. The formatting is random and very
>>> hard to read. There are almost no comments. There are
>>> few, if any, indications of what each function is
>>> supposed to do. And many of these projects have no
>>> documentation AT ALL except for some small FAQs or
>>> Wikis.

Michael Witten  wrote:

>> Funny. I've always felt the same way about gcc and most
>> GNU codebases...
>>
>> In fact, I've always felt the same way about the vast
>> majority of codebases that aren't my own :-D

Manuel López-Ibáñez  wrote:

> Maybe contributing will teach you some team skills and
> style-tolerance? ;-)
>
> I felt a bit silly writing in GNU style at the
> beginning, but you get used to it because it is
> consistent. Now I can switch more easily between
> different styles and I don't feel the urge to rewrite
> everything in my style. I guess is like learning
> different languages.

I can play along fine with different styles (even if I
disagree with most of them); indeed, GNU's style can be
very logical (indenting the braces, for instance, makes
a lot of sense to me---though I don't normally do so).

My main problem is largely with identifier naming and
file/code organization (which *can* involve style via
the use of whitespace). Most people don't put too much
thought into these issues (particularly the matter of
organization), which betrays a lack of appreciation for
abstraction that ultimately taints the design and code
itself.

My rule of thumb: good code is largely self-documenting.

Let me make that statement stronger: If people are
complaining that the documentation for the code is
horrible, then they are essentially complaining that
the code is horrible; it should be trivial:

[0] to find any definition without grepping or
using something like ctags.

[1] to find the highest-level of abstraction
from which to begin a top-down reading.

[2] to understand what any block of code is
doing (this follows from [0] and [1], and
essentially promotes maintaining the proper
level of abstraction for each such block).

Following these ideals basically forces a programmer to
write code as though it is meant to be read and understood
by *others*; that's crucial to being able to work within
a team (especially one distributed around the world).

Unfortunately, the signal usually gets lost in the
noise produced by people who don't care as much, and I
call those noisy people "hackers"; the world is full of
hackers---they are great for the short-term but terrible
for the long term.

Sincerely,
Michael Witten


Re: Why not contribute? (to GCC)

2010-04-23 Thread Michael Witten
On Fri, Apr 23, 2010 at 15:58, Manuel López-Ibáñez
 wrote:
> On 23 April 2010 22:44, Michael Witten  wrote:
>> On Fri, Apr 23, 2010 at 15:36, Manuel López-Ibáñez
>>  wrote:
>>> In any case, I think coming from you it is a bit hurtful because I
>>> have personally fixed many of your bugs and I haven't seen a
>>> single beer yet! Where is my beer?
>>
>> Where's his beer for finding bugs?
>
> I don't complain that he doesn't find more and better bugs. I don't
> request him to find *my* bugs.

I was pointing out that he too has provided a service to the project.

>
> Anyway, this is off-topic, and stop trying to incite people to fight,
> in this and other threads, please. It is not the first time you do it.
> If you just hate gcc so much, just leave. Thanks,

I don't know what you're talking about.

If anything, your comments have been off-topic and inciteful.


Re: Why not contribute? (to GCC)

2010-04-23 Thread Michael Witten
On Fri, Apr 23, 2010 at 17:12, Richard Kenner
 wrote:
> I there's no substitute for proper comments.

Oh I agree!

However, I proffer that the need to write a comment is often an
indication for the need to write the code better (and to choose
another programming language).

> good code can't give the SPECIFICATIONS of a function...

This may largely be a sign that the formal language is not expressive
enough; in particular, the language should at least try to support
abstraction formally (hence, binary < assembly < C < C++).

Unfortunately, we still have a long way to go before our formal
languages are capable enough to replace comments significantly.

> Also, an important thing to put in comments is WHY something
> is done the way it is and (more importantly) why it ISN'T done
> another way. No amount of good quality code can contain that
> information.

Indeed!


Re: Why not contribute? (to GCC)

2010-04-25 Thread Michael Witten
On Sun, Apr 25, 2010 at 11:33, Richard Kenner
 wrote:
> There's nothing to have a problem WITH!  No assignment has taken place.
> The statement on the web has no legal significance whatsoever.  Unless
> the company SIGNS something, they still own the copyright on the code
> and can, at any time, decide they don't want it distributed.

If I submit a patch to the GCC project---necessitating an assignment
of the copyright to the FSF---then can the people of the FSF decide
that they don't want me to distribute my own work in another project
(proprietary or otherwise)?

That is, could I actually become liable for infringing on the
copyright of my own original work? Are we just trusting RMS not to be
a troll (tongue-in-cheek)?


Re: Why not contribute? (to GCC)

2010-04-25 Thread Michael Witten
On Sun, Apr 25, 2010 at 21:12, Manuel López-Ibáñez
 wrote:
> On 26 April 2010 02:12, Mark Mielke  wrote:
>>
>> All in all, pretty minor. GCC wants FSF copyright assignment and employer
>> disclaimers? GCC will not have as many contributors. Your choice.
>>
>> There are plenty of projects that we (lurkers / non contributors) can
>> contribute to other projects that are not as mature and require more
>> attention, or even other compilers (LLVM?).
>
> Are you 100% sure that the fact that LLVM does not ask for your
> employer disclaimer means that you do not need to ask your employer
> for some paper to legally contribute code? Are you sure you are not
> exposing yourself to a legal risk? I would check with a lawyer if that
> is the case. A real lawyer, not some computer guy that says "Oh, just
> give us your code, it will be fine. Don't worry! We don't ask for
> anything."  And a lawyer that is not interested in keeping you at risk
> just in case they need to sue you at some moment.

I thought it was decided in the course of this thread that the
liability of an individual contributor is ultimately NOT changed by
the assignment of the copyrights to the FSF.

Also, Mark's point (I think) is that a copyright lawsuit against the
FSF is much more likely than a lawsuit against some no-name
contributor, and (more importantly) a lawsuit against the FSF is
likely to trigger the FSF to launch a lawsuit against the individual
contributor. Thus, it sort of seems to the individual contributor that
assigning copyrights to the FSF while maintaining 'unlimited
liability' is less safe than not assigning copyrights to the FSF.


Re: Why not contribute? (to GCC)

2010-04-27 Thread Michael Witten
On Mon, Apr 26, 2010 at 21:03, Mark Mielke  wrote:
> They can take a copy of your code and modify it, but at no time does your
> original code become non-free. As long as people continue to copy from your
> "free" version of the code, they can continue to use it for "free".
>
> The GPL isn't free though. The GPL is a limited use license that restricts
> freedoms in such a way that there is some expectation that the lost freedoms
> can purchase future freedom, and this compromise is justified.
>
> Many of us don't agree that the compromise is justified.

You keep missing the fact that the GPL is meant to protect the USER's
right to play with the software. Read about Tivoization.

As far as the rights of the author, the GPL basically just protect's
the author's wish that his software be distributed under the GPL.


Re: anonymous struct

2010-05-03 Thread Michael Witten
On Sun, May 2, 2010 at 22:47, wuyin  wrote:
> Please support this grammar.
> http://sourceforge.net/projects/coo/

My advice is to use a language with proper abstraction facilities, like C++.


Re: [RFC] Switching implementation language to C++

2010-05-31 Thread Michael Witten
On Mon, May 31, 2010 at 11:22, Diego Novillo  wrote:
> Now that the SC and the FSF have agreed to this.

When did this come up and why? Where can I read more about this? Was
there a thread I missed?


Re: [RFC] Switching implementation language to C++

2010-05-31 Thread Michael Witten
On Mon, May 31, 2010 at 13:21, Michael Witten  wrote:
> On Mon, May 31, 2010 at 11:22, Diego Novillo  wrote:
>> Now that the SC and the FSF have agreed to this.
>
> When did this come up and why? Where can I read more about this? Was
> there a thread I missed?

Nevermind! It's a fairly recent thread :-)


"Bootstrap comparison failure!"

2010-07-17 Thread Michael Witten
I wanted to create a bugzilla bug report, but I seem to have forgotten
my password; moreover, it would seem that bugzilla isn't actually sending
out password-change emails.

Here's the build error:

  Comparing stages 2 and 3
  warning: gcc/cc1-checksum.o differs
  warning: gcc/cc1plus-checksum.o differs
  Bootstrap comparison failure!
  gcc/reg-stack.o differs
  gcc/i386.o differs
  gcc/reload.o differs
  gcc/recog.o differs
  gcc/dwarf2out.o differs
  libiberty/hashtab.o differs

Source Information:

  Revision 162274

  No modifications.

Build Environment:

  GNU/Linux 2.6.35-rc5
  Intel(R) Pentium(R) M processor 2.13GHz GenuineIntel (32-bit, i686)
  
  $ gcc -v
  Using built-in specs.
  COLLECT_GCC=gcc
  COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-pc-linux-gnu/4.5.0/lto-wrapper
  Target: i686-pc-linux-gnu
  Configured with: ../configure --prefix=/usr 
--enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-shared 
--enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu 
--enable-gnu-unique-object --enable-lto --enable-plugin --disable-multilib 
--disable-libstdcxx-pch --with-system-zlib --with-ppl --with-cloog 
--libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man 
--infodir=/usr/share/info
  Thread model: posix
  gcc version 4.5.0 20100610 (prerelease) (GCC)

Build Configuration

  Built outside of SVN working directory (in a separate build directory)

  -
  config.log
  -

  This file contains any messages produced by compilers while
  running configure, to aid debugging if configure makes a mistake.
  
  It was created by configure, which was
  generated by GNU Autoconf 2.64.  Invocation command line was
  
$ ../repo/configure --prefix=/usr/local --program-suffix=-svn 
--disable-multilib --enable-threads=posix --enable-maintainer-mode 
--enable-languages=c,c++ --enable-gnu-unique-object --with-lto
  
  ## - ##
  ## Platform. ##
  ## - ##
  
  uname -m = i686
  uname -r = 2.6.35-rc5
  uname -s = Linux
  uname -v = #34 Wed Jul 14 16:02:05 CDT 2010
  
  /usr/bin/uname -p = unknown
  /bin/uname -X = unknown
  
  /bin/arch  = i686
  /usr/bin/arch -k   = unknown
  /usr/convex/getsysinfo = unknown
  /usr/bin/hostinfo  = unknown
  /bin/machine   = unknown
  /usr/bin/oslevel   = unknown
  /bin/universe  = unknown
  
  PATH: /opt/autoconf/2.64/bin
  PATH: /bin
  PATH: /usr/bin
  PATH: /sbin
  PATH: /usr/sbin
  PATH: /opt/NX/bin
  PATH: /usr/bin/perlbin/site
  PATH: /usr/bin/perlbin/vendor
  PATH: /usr/bin/perlbin/core
  
  
  ## --- ##
  ## Core tests. ##
  ## --- ##
  
  configure:2429: checking build system type
  configure:2443: result: i686-pc-linux-gnu
  configure:2490: checking host system type
  configure:2503: result: i686-pc-linux-gnu
  configure:2523: checking target system type
  configure:2536: result: i686-pc-linux-gnu
  configure:2590: checking for a BSD-compatible install
  configure:2658: result: /bin/install -c
  configure:2669: checking whether ln works
  configure:2691: result: yes
  configure:2695: checking whether ln -s works
  configure:2699: result: yes
  configure:2706: checking for a sed that does not truncate output
  configure:2770: result: /bin/sed
  configure:2779: checking for gawk
  configure:2795: found /bin/gawk
  configure:2806: result: gawk
  configure:4060: checking for gcc
  configure:4076: found /usr/bin/gcc
  configure:4087: result: gcc
  configure:4316: checking for C compiler version
  configure:4325: gcc --version >&5
  gcc (GCC) 4.5.0 20100610 (prerelease)
  Copyright (C) 2010 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  
  configure:4336: $? = 0
  configure:4325: gcc -v >&5
  Using built-in specs.
  COLLECT_GCC=gcc
  COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-pc-linux-gnu/4.5.0/lto-wrapper
  Target: i686-pc-linux-gnu
  Configured with: ../configure --prefix=/usr 
--enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-shared 
--enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu 
--enable-gnu-unique-object --enable-lto --enable-plugin --disable-multilib 
--disable-libstdcxx-pch --with-system-zlib --with-ppl --with-cloog 
--libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man 
--infodir=/usr/share/info
  Thread model: posix
  gcc version 4.5.0 20100610 (prerelease) (GCC) 
  configure:4336: $? = 0
  configure:4325: gcc -V >&5
  gcc: '-V' option must have argument
  configure:4336: $? = 1
  configure:4325: gcc -qversion >&5
  gcc: unrecognized option '-qversion'
  gcc: no input files
  configure:4336: $? = 1
  configure:4356: checking for C compiler default output file name
  configure:4378: gcc -march=i686 -mtune=pentium-m -O2 -pipe  
-Wl,--hash-style=gnu -Wl,--as-needed conftest.c  >&5
  configure:4382: $? = 0
  configure:4419: result: a.out

Re: Turn on -fomit-frame-pointer by default for 32bit Linux/x86

2010-08-08 Thread Michael Witten
On Sun, Aug 8, 2010 at 09:56, Uros Bizjak  wrote:
>
> IMO, we have to bite the bullet from time to time in order to improve
> the generated code.

What's your performance function?

I like backtraces.


Re: Turn on -fomit-frame-pointer by default for 32bit Linux/x86

2010-08-08 Thread Michael Witten
On Sun, Aug 8, 2010 at 10:08, Uros Bizjak  wrote:
> On Sun, Aug 8, 2010 at 5:00 PM, Michael Witten  wrote:
>> On Sun, Aug 8, 2010 at 09:56, Uros Bizjak  wrote:
>>>
>>> IMO, we have to bite the bullet from time to time in order to improve
>>> the generated code.
>>
>> What's your performance function?
>
> See measurements at [1].

The point is that *my* performance function may be a measure of the
availability of decent backtraces.

> So, you will be able to use --enable-frame-pointer configure option.

Most of the computing world would probably benefit far more from
usable backtraces than from increases in efficiency; those individuals
who fret about efficiency are likely better suited to fiddling with
non-default flags.


Re: Turn on -fomit-frame-pointer by default for 32bit Linux/x86

2010-08-08 Thread Michael Witten
On Sun, Aug 8, 2010 at 10:30, Andi Kleen  wrote:
>> > I like backtraces.
>> >
>>
>> So, you will be able to use --enable-frame-pointer configure option.
>>
>> [1] http://gcc.gnu.org/ml/gcc-patches/2010-07/msg02034.html
>
> ... or use backtrace()

What kind of black magic would you expect backtrace() to use?

>From the `info backtrace' text:

  Note that certain compiler optimizations
  may interfere with obtaining a valid
  backtrace.  Function inlining causes
  the inlined function to not have a stack
  frame; tail call optimization replaces
  one stack frame with another; frame pointer
  elimination will stop `backtrace' from
  interpreting the stack contents correctly.

Specifically, note the last sentence:

  frame pointer elimination will stop `backtrace'
  from interpreting the stack contents correctly.

Sincerely,
Michael Witten


[PATCH 0/4] Docs: extend.texi

2011-04-27 Thread Michael Witten
See the following emails for a few inlined patches
to /trunk/gcc/doc/extend.texi:

  [1] Docs: extend.texi: Add missing semicolon for consistency
  [2] Docs: extend.texi: Remove trailing blanks from lines
  [3] Docs: extend.texi: Rearrange nodes; no text was removed or added
  [4] Docs: extend.texi: Reword and rearrange attribute node introductions

 trunk/gcc/doc/extend.texi | 5449 +++--
 1 files changed, 2730 insertions(+), 2719 deletions(-)

-- 
1.7.4.18.g68fe8



[PATCH 1/4] Docs: extend.texi: Add missing semicolon for consistency

2011-04-27 Thread Michael Witten
---
 trunk/gcc/doc/extend.texi |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/trunk/gcc/doc/extend.texi b/trunk/gcc/doc/extend.texi
index eddff95..c154958 100644
--- a/trunk/gcc/doc/extend.texi
+++ b/trunk/gcc/doc/extend.texi
@@ -3997,7 +3997,7 @@
 @smallexample
 __attribute__((noreturn)) void d0 (void),
 __attribute__((format(printf, 1, 2))) d1 (const char *, ...),
- d2 (void)
+ d2 (void);
 @end smallexample
 
 @noindent
-- 
1.7.4.18.g68fe8



[PATCH 2/4] Docs: extend.texi: Remove trailing blanks from lines

2011-04-27 Thread Michael Witten
sed -i "s/[ $(printf '\t')]\{1,\}\$//" trunk/gcc/doc/extend.texi

---

 trunk/gcc/doc/extend.texi |   82 ++--
 1 files changed, 41 insertions(+), 41 deletions(-)

diff --git a/trunk/gcc/doc/extend.texi b/trunk/gcc/doc/extend.texi
index c154958..cdbf69f 100644
--- a/trunk/gcc/doc/extend.texi
+++ b/trunk/gcc/doc/extend.texi
@@ -37,7 +37,7 @@
 * Complex:: Data types for complex numbers.
 * Floating Types::  Additional Floating Types.
 * Half-Precision::  Half-Precision Floating Point.
-* Decimal Float::   Decimal Floating Types. 
+* Decimal Float::   Decimal Floating Types.
 * Hex Floats::  Hexadecimal floating-point constants.
 * Fixed-Point:: Fixed-Point Types.
 * Named Address Spaces::Named address spaces.
@@ -455,7 +455,7 @@
 safe.
 
 GCC implements taking the address of a nested function using a technique
-called @dfn{trampolines}.  This technique was described in 
+called @dfn{trampolines}.  This technique was described in
 @cite{Lexical Closures for C++} (Thomas M. Breuel, USENIX
 C++ Conference Proceedings, October 17-21, 1988).
 
@@ -619,7 +619,7 @@
 @}
   return open (path, oflag, __builtin_va_arg_pack ());
 @}
-
+
   if (__builtin_va_arg_pack_len () < 1)
 return __open_2 (path, oflag);
 
@@ -942,7 +942,7 @@
 @cindex @code{__fp16} data type
 
 On ARM targets, GCC supports half-precision (16-bit) floating point via
-the @code{__fp16} type.  You must enable this type explicitly 
+the @code{__fp16} type.  You must enable this type explicitly
 with the @option{-mfp16-format} command-line option in order to use it.
 
 ARM supports two incompatible representations for half-precision
@@ -963,7 +963,7 @@
 The @code{__fp16} type is a storage format only.  For purposes
 of arithmetic and other operations, @code{__fp16} values in C or C++
 expressions are automatically promoted to @code{float}.  In addition,
-you cannot declare a function with a return value or parameters 
+you cannot declare a function with a return value or parameters
 of type @code{__fp16}.
 
 Note that conversions from @code{double} to @code{__fp16}
@@ -971,14 +971,14 @@
 of rounding, this can sometimes produce a different result than a
 direct conversion.
 
-ARM provides hardware support for conversions between 
+ARM provides hardware support for conversions between
 @code{__fp16} and @code{float} values
 as an extension to VFP and NEON (Advanced SIMD).  GCC generates
 code using these hardware instructions if you compile with
-options to select an FPU that provides them; 
+options to select an FPU that provides them;
 for example, @option{-mfpu=neon-fp16 -mfloat-abi=softfp},
 in addition to the @option{-mfp16-format} option to select
-a half-precision format.  
+a half-precision format.
 
 Language-level support for the @code{__fp16} data type is
 independent of whether GCC generates code using hardware floating-point
@@ -1995,7 +1995,7 @@
 @cindex @code{alloc_size} attribute
 The @code{alloc_size} attribute is used to tell the compiler that the
 function return value points to memory, where the size is given by
-one or two of the functions parameters.  GCC uses this 
+one or two of the functions parameters.  GCC uses this
 information to improve the correctness of @code{__builtin_object_size}.
 
 The function parameter(s) denoting the allocated size are specified by
@@ -2004,7 +2004,7 @@
 of the two function arguments specified.  Argument numbering starts at
 one.
 
-For instance, 
+For instance,
 
 @smallexample
 void* my_calloc(size_t, size_t) __attribute__((alloc_size(1,2)))
@@ -2213,7 +2213,7 @@
 attribute also implies ``default'' visibility.  It is an error to
 explicitly specify any other visibility.
 
-In previous versions of GCC, the @code{dllexport} attribute was ignored 
+In previous versions of GCC, the @code{dllexport} attribute was ignored
 for inlined functions, unless the @option{-fkeep-inline-functions} flag
 had been used.  The default behaviour now is to emit all dllexported
 inline functions; however, this can cause object file-size bloat, in
@@ -2424,10 +2424,10 @@
 are @code{printf_unlocked} and @code{fprintf_unlocked}.
 @xref{C Dialect Options,,Options Controlling C Dialect}.
 
-For Objective-C dialects, @code{NSString} (or @code{__NSString__}) is 
+For Objective-C dialects, @code{NSString} (or @code{__NSString__}) is
 recognized in the same context.  Declarations including these format attributes
 will be parsed for correct syntax, however the result of checking of such 
format
-strings is not yet defined, and will not be carried out by this version of the 
+strings is not yet defined, and will not be carried out by this version of the
 compiler.
 
 The target may also provide additional types of format checks.
@@ -2752,7 +2752,7 @@
 synonyms, and cause the compiler to always call
 the function by first loading its address into a register, and then using
 the contents of that register.  The @code{near} attri

[PATCH 4/4] Docs: extend.texi: Reword and rearrange attribute node introductions

2011-04-27 Thread Michael Witten
The arrangement performed in the previous patch left the text in
somewhat of an inconsistent state; this returns the flow of concepts
to something more sane.
---
 trunk/gcc/doc/extend.texi |   53 +++-
 1 files changed, 32 insertions(+), 21 deletions(-)

diff --git a/trunk/gcc/doc/extend.texi b/trunk/gcc/doc/extend.texi
index 3b453e5..a9611de 100644
--- a/trunk/gcc/doc/extend.texi
+++ b/trunk/gcc/doc/extend.texi
@@ -1962,10 +1962,22 @@
 @cindex attribute syntax
 
 This section describes the syntax with which @code{__attribute__} may be
-used, and the constructs to which attribute specifiers bind, for the C
+used, and the constructs to which attribute specifiers bind for the C
-language.  Some details may vary for C++ and Objective-C@.  Because of
+language and (to a limited degree) some of its descendants.
+
+The keyword @code{__attribute__} allows you to specify special
+attributes when making a declaration.  This keyword is followed by an
+attribute specification inside double parentheses.
+
+You may also specify attributes with @samp{__} preceding and following
+each keyword.  This allows you to use them in header files without
+being concerned about a possible macro of the same name.  For example,
+you may use @code{__noreturn__} instead of @code{noreturn}.
+
+GCC plugins may provide their own attributes.
+
-infelicities in the grammar for attributes, some forms described here
-may not be successfully parsed in all cases.
+Because of infelicities in the grammar for attributes, some forms
+described here may not be successfully parsed in all cases.
 
 There are some problems with the semantics of attributes in C++.  For
 example, there are no manglings for attributes, although they may affect
@@ -2191,6 +2203,9 @@
 @cindex attribute of types
 @cindex type attributes
 
+@xref{Attribute Syntax}, for details of the exact syntax for using
+attributes.
+
 The keyword @code{__attribute__} allows you to specify special
 attributes of @code{struct} and @code{union} types when you define
 such types.  This keyword is followed by an attribute specification
@@ -2583,6 +2598,9 @@
 @cindex attribute of variables
 @cindex variable attributes
 
+@xref{Attribute Syntax}, for details of the exact syntax for using
+attributes.
+
 The keyword @code{__attribute__} allows you to specify special
 attributes of variables or structure fields.  This keyword is followed
 by an attribute specification inside double parentheses.  Some
@@ -3214,14 +3232,17 @@
 @cindex functions that have different optimization options
 @cindex functions that are dynamically resolved
 
-In GNU C, you declare certain things about functions called in your program
-which help the compiler optimize function calls and check your code more
-carefully.
+@xref{Attribute Syntax}, for details of the exact syntax for using
+attributes.
 
-The keyword @code{__attribute__} allows you to specify special
-attributes when making a declaration.  This keyword is followed by an
-attribute specification inside double parentheses.  The following
-attributes are currently defined for functions on all targets:
+The keyword @code{__attribute__} allows you to specify special attributes
+of function declarations in order to help the compiler optimize function
+calls and check your code more carefully. This keyword is followed by
+an attribute specification inside double parentheses. Other attributes
+are available for types (@pxref{Type Attributes}) and for variables
+(@pxref{Variable Attributes}).
+
+The following attributes are currently defined for functions on all targets:
 @code{aligned}, @code{alloc_size}, @code{noreturn},
 @code{returns_twice}, @code{noinline}, @code{noclone},
 @code{always_inline}, @code{flatten}, @code{pure}, @code{const},
@@ -3237,16 +3258,6 @@
 including @code{section} are supported for variables declarations
 (@pxref{Variable Attributes}) and for types (@pxref{Type Attributes}).
 
-GCC plugins may provide their own attributes.
-
-You may also specify attributes with @samp{__} preceding and following
-each keyword.  This allows you to use them in header files without
-being concerned about a possible macro of the same name.  For example,
-you may use @code{__noreturn__} instead of @code{noreturn}.
-
-@xref{Attribute Syntax}, for details of the exact syntax for using
-attributes.
-
 @table @code
 @c Keep this table alphabetized by attribute name.  Treat _ as space.
 
-- 
1.7.4.18.g68fe8



Re: [PATCH 3/4] Docs: extend.texi: Rearrange nodes; no text was removed or added

2011-04-27 Thread Michael Witten
> However, the same effect of applying this patch can be produced by running
> the following commands on revision 172911 ...

That's not exactly correct; it is naturally assumed that the previous patches:

  [1] Docs: extend.texi: Add missing semicolon for consistency
  [2] Docs: extend.texi: Remove trailing blanks from lines

have been applied to revision 172911.


Re: [PATCH 0/4] Docs: extend.texi

2011-04-27 Thread Michael Witten
On Wed, Apr 27, 2011 at 18:42, Jonathan Wakely  wrote:
> On 28 April 2011 00:32, Michael Witten wrote:
>> See the following emails for a few inlined patches
>> to /trunk/gcc/doc/extend.texi:
>>...
>
> Patches should go to gcc-patches, not this list.
>
> http://gcc.gnu.org/lists.html
>

I apologize!


Re: [PATCH 0/4] Docs: extend.texi

2011-04-27 Thread Michael Witten
On Wed, Apr 27, 2011 at 18:50, Jonathan Wakely  wrote:
> You also need to explain the reason for your patches.
>
> http://gcc.gnu.org/contribute.html#patches
>
> 1 and 2 might be self-explanatory, but what are 3 and 4 for?  Why are
> your changes useful?

Thank you for the help; however, I believe they are more than
adequately explained by the subjects and contents of those particular
emails.


Re: [PATCH 0/4] Docs: extend.texi

2011-04-27 Thread Michael Witten
On Wed, Apr 27, 2011 at 18:48, Michael Witten  wrote:
> On Wed, Apr 27, 2011 at 18:42, Jonathan Wakely  wrote:
>> On 28 April 2011 00:32, Michael Witten wrote:
>>> See the following emails for a few inlined patches
>>> to /trunk/gcc/doc/extend.texi:
>>>...
>>
>> Patches should go to gcc-patches, not this list.
>>
>> http://gcc.gnu.org/lists.html
>>
>
> I apologize!

I am intending to send them again to the proper list; is this
considered the correct move now that the patches have been sent here?