Re: Plus Reload

2011-01-12 Thread Gidi Nave
On Wed, Jan 12, 2011 at 8:27 AM, Ian Lance Taylor i...@google.com wrote:
 Gidi Nave gidi.nav...@gmail.com writes:

 On Tue, Jan 11, 2011 at 7:22 PM, Ian Lance Taylor i...@google.com wrote:
 Gidi Nave gidi.nav...@gmail.com writes:

 On Tue, Jan 11, 2011 at 5:34 PM, Ian Lance Taylor i...@google.com wrote:

 So why doesn't d1 = d1 + -96 match the last instruction there?

 because it's:    add d,d unsigned
 we don't have:  add d,d signed

 and in this case we need: d = r + (-96)

 Addition of signed and unsigned numbers is the same operation at the
 machine level.  Are there limitations on the signed value?  If so, is
 there is a sub instruction?

 There are limitation for the signed value for D class registers.
 There is a sub instruction for D registers, but it's limited to U5
 (unsigned of 5 bits) which is not the case here.

 Thanks.  Since we don't know the details of your processor, we could be
 more helpful if you provided this sort of information up front.  It
 sounds like you are saying that there is no way to subtract 96 without
 using an extra register.  Is that correct?

 If that is the case, then I agree with Jeff that you are going to need
 to define a secondary reload.  Look at TARGET_SECONDARY_RELOAD in the
 docs.

 By the way, if the restrictions on addition (which you did not describe)
 are less severe than the restrictions on subtraction, then you should
 consider adjusting your frame pointer so that most stack slots are at a
 positive offset rather than a negative one.  I don't know if that is
 what is going on here, though a negative offset is certainly unusual.

 Ian



Hi Ian,

There is no way to subtract 96 without the extra register.

The secondary reload worked great !!! Thanks!

Regarding the frame pointer - in my case it was the frame pointer but
our addition/subtract instructions
options are similar (for the same register classes), so adjusting the
frame pointer won't do any good.

One more question:
GCC usually knows how to handle cases which need decomposition of
expressions due to architecture limitations.
In my case it didn't know.
How can I foreseen additional such cases, in order to avoid compilation crush?

Thanks,
Gidi.


Re: Find a new maintainer for option handling?

2011-01-12 Thread Richard Guenther
On Wed, Jan 12, 2011 at 4:10 AM, Jie Zhang j...@codesourcery.com wrote:
 Dear Steering Committee:

 The current listed maintainer for option handling is:

 option handling         Neil Booth              n...@daikokuya.co.uk

 But I'm wondering if Neil is still active. There are no replies to my recent
 pings from that email address. The last recorded commit from him in GCC was
 on 2005-01-19, which was nearly 6 years ago. So I guess he might have not
 worked on GCC. If this is true, how about assigning a new maintainer for
 option handling?

Option handling maintainership should be unified with driver maintainership
IMNSHO, as they are closely related.

Richard.


 Regards,
 --
 Jie Zhang




Re: Find a new maintainer for option handling?

2011-01-12 Thread Jie Zhang

On 01/12/2011 06:07 PM, Richard Guenther wrote:

On Wed, Jan 12, 2011 at 4:10 AM, Jie Zhangj...@codesourcery.com  wrote:

Dear Steering Committee:

The current listed maintainer for option handling is:

option handling Neil Booth  n...@daikokuya.co.uk

But I'm wondering if Neil is still active. There are no replies to my recent
pings from that email address. The last recorded commit from him in GCC was
on 2005-01-19, which was nearly 6 years ago. So I guess he might have not
worked on GCC. If this is true, how about assigning a new maintainer for
option handling?


Option handling maintainership should be unified with driver maintainership
IMNSHO, as they are closely related.

I agree. I think Joseph is the best candidate for the maintainer of the 
option handling since he made the most changes of gcc/opts-common.c. He 
is already the maintainer of the driver. If we unify these two 
maintainerships, we save one line of MAINTAINERS. :-)



Regards,
--
Jie Zhang



Dumb idea for accelerating FOSS development

2011-01-12 Thread Bill Cox
First, the problem:  I've got a C library I want to share.  There are
many users who want to use it.  This should be as easy as breathing,
but it's not!

My users and I face what I'm calling GNU/Linux Innovation Red Tape.
This library is two files: sonic.c and sonic.h.  To share it in
Debian, first, I had to learn how to make a clean Debian package.
Something like 30 files are involved, and in my case a few days of
learning and laboring.  Next, I have to grovel on the debian-mentor's
list, and pray that Debian Sponsor Gods will take pity on me.  No
response from the Sponsor Gods so far...  maybe I'll have more luck
after they've finished the current release.  Shouldn't we be ashamed
that getting a package into Debian is harder than publishing an app
for iPhones?  Assuming I find a Debian sponsor, my package will be
uploaded to Unstable, then Testing, and after a few years, Stable.

Guess where my package has to be before my users are willing to link
to it?  Debian Stable.  We're hosed.  There's just no freaking way for
my users to use my library.  You know what they do?  Every one of them
bypasses the Innovation Red Tape, and simply copies my source code
directly into their application.  How's that as a reuse paradigm?

My dumb idea for today is a way to break through this red tape.
Unfortunately, while I could implement this idea in a few days, the
red tape would keep it in limbo so long that I'll likely die of old
age before it gets into Debian Stable.  Oh, well... here's the dumb
idea anyway...  In short, support a syntax in gcc like:

$ gcc myprog.c -lgit://github/~waywardgeek/sonic=0.1

In theory, this would cause gcc to do the following:

- Check and see if the requested library has already been
downloaded and built, and still in the cache
- If not, download the latest compatible signed version, verify
the signature, and compile it
- link to the library in the cache

A feature like this would make sharing C libraries as easy as
breathing.  My users wouldn't even have to 'apt-get install
libsonic0-dev'.  They would stop copying my source code, and just link
to my library.  Sharing of C libraries in FOSS land might increase
dramatically.  The year of GNU/Linux on the desktop would finally
come, and we'd all march off to Paradise as heroes.  Or not.

Anyway, just my dumb idea for the day... If through some miracle this
particular dumb idea appeals to the GCC Gods, I volunteer to write it.

Bill


Re: Dumb idea for accelerating FOSS development

2011-01-12 Thread Basile Starynkevitch
On Wed, Jan 12, 2011 at 06:07:48AM -0500, Bill Cox wrote:
 Unfortunately, while I could implement this idea in a few days, the
 red tape would keep it in limbo so long that I'll likely die of old
 age before it gets into Debian Stable.  Oh, well... here's the dumb
 idea anyway...  In short, support a syntax in gcc like:
 
 $ gcc myprog.c -lgit://github/~waywardgeek/sonic=0.1
 
 In theory, this would cause gcc to do the following:
 
 - Check and see if the requested library has already been
 downloaded and built, and still in the cache
 - If not, download the latest compatible signed version, verify
 the signature, and compile it
 - link to the library in the cache

At a first glance, I find your idea crazy but nice (but what about header
files *.h of the requested library?). I would be delighted to have it. Maybe
others don't think that way (in particular, those not working on Linux, and
those not working on a compiler running with a network connection).

Very probably ccache is the better place to implement that, since it already do
some (preprocessed) source code cache. http://ccache.samba.org/

However, my personal feeling is that GCC is quite conservative on the user
features it is accepting. So I won't bet that your idea will be positively
accepted.

Nevertheless, you could propose a patch to GCC to implement what you are
dreaming of. See http://gcc.gnu.org/contribute.html for more (and don't
forget the legal part, i.e. the copyright assignment to FSF).

I do find your idea nice, but I am quite pessimistic on the chances it has
to get accepted into the GCC trunk. Don't expect others to work on it. If
you really want it, work hard to make a patch for it and propose that
working patch.

Besides, what you propose probably need mostly also a support in the build
tools, in particular inside GNU make. Probably, ccache  make are a better
place for it.

So while I am intellectually appealed by your idea, I am quite pessimistic
in practice to get it accepted (even within several years), and it probably
belongs more to other tools (make, ccache) than to GCC.

However, to have the GCC Community to consider your idea, you'll have to
first show a patch implementing it.

Maybe, what you are suggesting would be better dealt with a plugin machinery
inside gcc itself (we don't have any plugin hooks inside gcc/gcc.h yet).

Regards.

PS. I would believe most GCC contributors won't be interested.

-- 
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basileatstarynkevitchdotnet mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***


Re: kfreebsd-gnu etc. issues

2011-01-12 Thread Joseph S. Myers
On Wed, 12 Jan 2011, Robert Millan wrote:

 Hi Joseph
 
 I'll look at more detail at the other problems, but first it
 seems that non-Linux GNU targets are currently broken
 because many declarations that are not Linux-specific
 have been added to the Linux-specific sections of
 config.gcc.

I don't think they are necessarily broken - and if they are, it is because 
of Linux-specific headers being used in non-Linux-specific code, not the 
other way round.

 Should I wait untill your patch is merged to fix this?

No.

 Btw, your patch overhauls linux.h but not i386/linux64.h
 which is in the same situation as you described.

Indeed.  While the subdirectory */*linux*.h headers that are used by 
non-Linux-kernel targets need splitting up, and removing from the headers 
used by non-Linux-kernel targets, separating this from splitting up the 
architecture-independent header leads to smaller patches such that it is 
easier for the author and patch reviewer to convince themselves that there 
are no unintended changes to semantics.

Furthermore, it was while looking at splitting up the i386/*.h headers 
that I found the issues raised in my message you're replying to.  And two 
of those four issues are issues where I am seeking information from 
someone familiar with the *-kfreebsd-gnu, *-knetbsd-gnu and 
*-kopensolaris-gnu targets in order to determine which definitions 
actually belong in Linux-kernel headers and which in GNU-userspace 
headers.  So if you could clarify the answers to my questions regarding 
PT_GNU_STACK and signal frames for those targets (with or without fixing 
any bugs for those targets indicated by the answers to those questions), 
that would help determine the correct division of those headers.

In turn, actually stopping non-Linux-kernel targets from using 
config/linux.h depends on splitting up the subdirectory linux.h files, 
because of how those interact with config/linux.h.

-- 
Joseph S. Myers
jos...@codesourcery.com


Re: kfreebsd-gnu etc. issues

2011-01-12 Thread Robert Millan
2011/1/12 Joseph S. Myers jos...@codesourcery.com:
 I don't think they are necessarily broken - and if they are, it is because
 of Linux-specific headers being used in non-Linux-specific code, not the
 other way round.

Actually, it's a different problem.  I'll just prepare a patch and
send it, it'll be obvious by reading the patch.

 So if you could clarify the answers to my questions regarding
 PT_GNU_STACK and signal frames for those targets (with or without fixing
 any bugs for those targets indicated by the answers to those questions),
 that would help determine the correct division of those headers.

Ok, I'll answer what I can in your previous mail.

-- 
Robert Millan


Re: Dumb idea for accelerating FOSS development

2011-01-12 Thread Robert Millan
2011/1/12 Bill Cox waywardg...@gmail.com:
    $ gcc myprog.c -lgit://github/~waywardgeek/sonic=0.1

You already have this, it's called FUSE. E.g.

$ sshfs $publicrepo $tmp
$ gcc myprog.c -I$tmp $tmp/sonic.c

If you want it to speak GIT protocol, just write a GIT
extension, etc.

-- 
Robert Millan


Re: Dumb idea for accelerating FOSS development

2011-01-12 Thread Axel Freyn
Hi,
On Wed, Jan 12, 2011 at 01:43:51PM +0100, Basile Starynkevitch wrote:
 On Wed, Jan 12, 2011 at 06:07:48AM -0500, Bill Cox wrote:
  Unfortunately, while I could implement this idea in a few days, the
  red tape would keep it in limbo so long that I'll likely die of old
  age before it gets into Debian Stable.  Oh, well... here's the dumb
  idea anyway...  In short, support a syntax in gcc like:
  
  $ gcc myprog.c -lgit://github/~waywardgeek/sonic=0.1
  
  In theory, this would cause gcc to do the following:
  
  - Check and see if the requested library has already been
  downloaded and built, and still in the cache
  - If not, download the latest compatible signed version, verify
  the signature, and compile it
  - link to the library in the cache
 
 At a first glance, I find your idea crazy but nice (but what about header
 files *.h of the requested library?). I would be delighted to have it. Maybe
 others don't think that way (in particular, those not working on Linux, and
 those not working on a compiler running with a network connection).
 
 Very probably ccache is the better place to implement that, since it already 
 do
 some (preprocessed) source code cache. http://ccache.samba.org/
 
 However, my personal feeling is that GCC is quite conservative on the user
 features it is accepting. So I won't bet that your idea will be positively
 accepted.
Well, it is not exactly what you are asking for, but the depot_tools
used in the chromium developement might be a solution:
http://www.chromium.org/developers/how-tos/depottools
The can keep track of different libraries checkout out from svn or git
repositories, and calling gclient sync connects to all repositories
belonging to the project and verifies that all files are up-to-date.
May be that would be a better starting point than using gcc?

Axel


Re: Plus Reload

2011-01-12 Thread Jeff Law
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 01/12/11 01:45, Gidi Nave wrote:

 
 One more question:
 GCC usually knows how to handle cases which need decomposition of
 expressions due to architecture limitations.
 In my case it didn't know.
 How can I foreseen additional such cases, in order to avoid compilation crush?
I'm not sure there is a reasonable way other than experience and
intimate knowledge of how reload works.

I haven't done any measurements, but I see more questions/issues being
raised by developers doing their own ports with regards to reloading
than any other part of the compiler.

That's no great surprise, since reload is probably the nastiest pass of
the compiler and even those of us with significant experience still
struggle with corner case reload problems.

jeff
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJNLbGiAAoJEBRtltQi2kC75ngIAKJJhYdYgQV2l0LsZCxUbhb9
OxHXr2CBbEZgpT6VRIrTJnJ51QEjxscLCBo0Ip/ZnpMiulb5S+hmyjrQJxXxEyPI
pF64uV6Gla0qcGgABrVkPWi6UEPDpvkrD0mljpcsqdK6tYtPFIww8sYMC+LecdUM
GMan7eXcKxgVu51c2xkp57afg9xuVcZXwHAcME74MkYC37vT0KGAPKpRIBum+ues
PL+2hOfa7wzQ6SbM9d7sVrU4o029IzWEgPPYwWVrw0NSQlIHbAnOf6Q0V+Y9jeeb
M36Vh/ynzExLmFq1kmESTEeOAqEg9r97mwaiaXPK4vYZEc3r9YMjq1rRUhEFO48=
=6tO+
-END PGP SIGNATURE-


Re: kfreebsd-gnu etc. issues

2011-01-12 Thread Robert Millan
2011/1/1 Joseph S. Myers jos...@codesourcery.com:
 [...] I found
 several possible problems with the configurations for *-kfreebsd-gnu,
 *-knetbsd-gnu and *-kopensolaris-gnu.

Ok.  Unless indicated otherwise, my answers below apply to
*-kfreebsd-gnu, which is the only in these 3 systems that is
actively maintained.

For the other two I wouldn't worry about either guessing or
leaving them as-is.  If minor breakage happens it's unlikely
to bother anyone.

 * The headers config/kfreebsd-gnu.h etc. override
  GLIBC_DYNAMIC_LINKER.  But the 64-bit configurations
  x86_64-*-kfreebsd*-gnu and x86_64-*-knetbsd*-gnu do not appear to
  use any header that would override GLIBC_DYNAMIC_LINKER32 and
  GLIBC_DYNAMIC_LINKER64, which are what LINK_SPEC in linux64.h
  actually uses.  Thus those configurations would use Linux-specific
  dynamic linker settings, which seems unlikely to be as intended.

It's not as intended. On amd64 we use /lib/ld.so.1 and
/lib/ld-kfreebsd-x86-64.so.1.

 * These configurations use file_end_indicate_exec_stack to use the
  PT_GNU_STACK convention.  While some of the implementation of this
  is in the GNU linker and glibc, it also requires kernel support for
  correct operation.  Do all these kernels support this convention, or
  should this code actually be disabled for them in GCC and glibc?

I'm not familiar with PT_GNU_STACK.  Does a working
_dl_make_stack_executable() in glibc [1] indicate it's supported?

[1] 
http://svn.debian.org/viewsvn/glibc-bsd/trunk/glibc-ports/kfreebsd/dl-execstack.c?revision=1685view=markup

 * The kfreebsd-gnu and knetbsd-gnu configurations use linux-unwind.h
  (kopensolaris-gnu disables this).  They define REG_NAME to adapt
  linux-unwind.h to their system headers.  But linux-unwind.h also
  contains hardcoded checks for the particular instructions, complete
  with hardcoded Linux syscall numbers, in Linux signal trampolines.

I'm sorry.  It seems this would be my fault (I introduced this with
the first kfreebsd-gnu port).

  Do the FreeBSD and NetBSD kernels really use identical instructions?

Definitely not.  But it's strange we didn't notice, we've been using
it for several years.

  Does this code do anything useful on those systems?  If it's useful
  (possibly with some fixes) then linux-unwind.h ought to be renamed;

The only thing I know for sure is that those 2 syscalls don't work. Is
there any possibility that linux-unwind.h is useful for GNU/kFreeBSD
in its current state?

I don't understand this code, but what I can do is confirm that disabling
linux-unwind.h doesn't cause any breakage.  Then we could disable it
untill/unless someone more clued than me ports it to kFreeBSD.  Would
this be ok?

 * A minor point: TARGET_VERSION, referring to Linux, is not overridden
  by these configurations.

Perhaps a common (or a fallback) string mentioning GNU and/or glibc
would fit.  But where's this displayed anyway?

-- 
Robert Millan


Re: Dumb idea for accelerating FOSS development

2011-01-12 Thread Bill Cox
On Wed, Jan 12, 2011 at 8:43 AM, Axel Freyn axel-fr...@gmx.de wrote:
 Hi,
 On Wed, Jan 12, 2011 at 01:43:51PM +0100, Basile Starynkevitch wrote:
 On Wed, Jan 12, 2011 at 06:07:48AM -0500, Bill Cox wrote:
  Unfortunately, while I could implement this idea in a few days, the
  red tape would keep it in limbo so long that I'll likely die of old
  age before it gets into Debian Stable.  Oh, well... here's the dumb
  idea anyway...  In short, support a syntax in gcc like:
 
      $ gcc myprog.c -lgit://github/~waywardgeek/sonic=0.1
 
  In theory, this would cause gcc to do the following:
 
      - Check and see if the requested library has already been
  downloaded and built, and still in the cache
      - If not, download the latest compatible signed version, verify
  the signature, and compile it
      - link to the library in the cache

 At a first glance, I find your idea crazy but nice (but what about header
 files *.h of the requested library?). I would be delighted to have it. Maybe
 others don't think that way (in particular, those not working on Linux, and
 those not working on a compiler running with a network connection).

 Very probably ccache is the better place to implement that, since it already 
 do
 some (preprocessed) source code cache. http://ccache.samba.org/

 However, my personal feeling is that GCC is quite conservative on the user
 features it is accepting. So I won't bet that your idea will be positively
 accepted.
 Well, it is not exactly what you are asking for, but the depot_tools
 used in the chromium developement might be a solution:
 http://www.chromium.org/developers/how-tos/depottools
 The can keep track of different libraries checkout out from svn or git
 repositories, and calling gclient sync connects to all repositories
 belonging to the project and verifies that all files are up-to-date.
 May be that would be a better starting point than using gcc?

 Axel


Well, after a short nap, the thought of fixing this in gcc seems even
dumber to me, though the problem is quite real.  Another tool called
before gcc could get the header and library files into a place where
they could be used.  It could even be compiler independent.

A bit of Googling reveals Zero Install.  Looks like these guys are
trying to tackle the problem.

Bill


Re: Dumb idea for accelerating FOSS development

2011-01-12 Thread David Brown

On 12/01/2011 12:07, Bill Cox wrote:

First, the problem:  I've got a C library I want to share.  There are
many users who want to use it.  This should be as easy as breathing,
but it's not!

My users and I face what I'm calling GNU/Linux Innovation Red Tape.
This library is two files: sonic.c and sonic.h.  To share it in
Debian, first, I had to learn how to make a clean Debian package.
Something like 30 files are involved, and in my case a few days of
learning and laboring.  Next, I have to grovel on the debian-mentor's
list, and pray that Debian Sponsor Gods will take pity on me.  No
response from the Sponsor Gods so far...  maybe I'll have more luck
after they've finished the current release.  Shouldn't we be ashamed
that getting a package into Debian is harder than publishing an app
for iPhones?  Assuming I find a Debian sponsor, my package will be
uploaded to Unstable, then Testing, and after a few years, Stable.

Guess where my package has to be before my users are willing to link
to it?  Debian Stable.  We're hosed.  There's just no freaking way for
my users to use my library.  You know what they do?  Every one of them
bypasses the Innovation Red Tape, and simply copies my source code
directly into their application.  How's that as a reuse paradigm?

My dumb idea for today is a way to break through this red tape.
Unfortunately, while I could implement this idea in a few days, the
red tape would keep it in limbo so long that I'll likely die of old
age before it gets into Debian Stable.  Oh, well... here's the dumb
idea anyway...  In short, support a syntax in gcc like:

 $ gcc myprog.c -lgit://github/~waywardgeek/sonic=0.1

In theory, this would cause gcc to do the following:

 - Check and see if the requested library has already been
downloaded and built, and still in the cache
 - If not, download the latest compatible signed version, verify
the signature, and compile it
 - link to the library in the cache

A feature like this would make sharing C libraries as easy as
breathing.  My users wouldn't even have to 'apt-get install
libsonic0-dev'.  They would stop copying my source code, and just link
to my library.  Sharing of C libraries in FOSS land might increase
dramatically.  The year of GNU/Linux on the desktop would finally
come, and we'd all march off to Paradise as heroes.  Or not.

Anyway, just my dumb idea for the day... If through some miracle this
particular dumb idea appeals to the GCC Gods, I volunteer to write it.

Bill



I can see the point of your idea, but I think it's too limited, and gcc 
is the wrong place to put it.


Are you familiar with Python?  Python has a system called 
easy_install, which lets you easy download libraries or packages for 
Python (as Python is interpreted, there is no distinction between 
development libraries and runtime libraries).  If your package were a 
python library, you would publish it in at one of the commonly used 
Python package library sites, and users could then type easy_install 
sonic and use your library.


I believe Perl has a similar idea, as does (La)TeX.

The reason I think gcc is the wrong place for such a feature, is that 
there are many parts to a library.  Most importantly, there is the 
headers, the source files, the configuration files, the documentation, 
the static libraries, and the dynamic libraries.  Many of these parts 
need to be installed before getting as far as the gcc command line.


Secondly, git is just one of many ways to get hold of the files.  A 
useful tool would support a range of protocols, including http, svn, mg, 
etc.  Practically speaking, this means a separate tool and plugins.


Thirdly, to be truly useful the tool should support searching of a 
number of standard sites (github, sourceforge, google code, etc.) 
automatically, to make the job as easy as possible for the user.


Fourthly, it should support additional features such as searching, 
updating, etc.


In other words, what I am really suggesting here is a sort of 
specialised package manager that can be used in addition to the 
distribution's main package manager.


Of course, it is important to consider conflicts with the distribution's 
libraries - who has priority if there are different versions?






Re: Plus Reload

2011-01-12 Thread Gidi Nave
On Wed, Jan 12, 2011 at 3:50 PM, Jeff Law l...@redhat.com wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 On 01/12/11 01:45, Gidi Nave wrote:


 One more question:
 GCC usually knows how to handle cases which need decomposition of
 expressions due to architecture limitations.
 In my case it didn't know.
 How can I foreseen additional such cases, in order to avoid compilation 
 crush?
 I'm not sure there is a reasonable way other than experience and
 intimate knowledge of how reload works.

 I haven't done any measurements, but I see more questions/issues being
 raised by developers doing their own ports with regards to reloading
 than any other part of the compiler.

 That's no great surprise, since reload is probably the nastiest pass of
 the compiler and even those of us with significant experience still
 struggle with corner case reload problems.

 jeff
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.11 (GNU/Linux)
 Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

 iQEcBAEBAgAGBQJNLbGiAAoJEBRtltQi2kC75ngIAKJJhYdYgQV2l0LsZCxUbhb9
 OxHXr2CBbEZgpT6VRIrTJnJ51QEjxscLCBo0Ip/ZnpMiulb5S+hmyjrQJxXxEyPI
 pF64uV6Gla0qcGgABrVkPWi6UEPDpvkrD0mljpcsqdK6tYtPFIww8sYMC+LecdUM
 GMan7eXcKxgVu51c2xkp57afg9xuVcZXwHAcME74MkYC37vT0KGAPKpRIBum+ues
 PL+2hOfa7wzQ6SbM9d7sVrU4o029IzWEgPPYwWVrw0NSQlIHbAnOf6Q0V+Y9jeeb
 M36Vh/ynzExLmFq1kmESTEeOAqEg9r97mwaiaXPK4vYZEc3r9YMjq1rRUhEFO48=
 =6tO+
 -END PGP SIGNATURE-



Ok,

Thanks for the help!

Gidi.


Re: kfreebsd-gnu etc. issues

2011-01-12 Thread Joseph S. Myers
On Wed, 12 Jan 2011, Robert Millan wrote:

  * These configurations use file_end_indicate_exec_stack to use the
   PT_GNU_STACK convention.  While some of the implementation of this
   is in the GNU linker and glibc, it also requires kernel support for
   correct operation.  Do all these kernels support this convention, or
   should this code actually be disabled for them in GCC and glibc?
 
 I'm not familiar with PT_GNU_STACK.  Does a working
 _dl_make_stack_executable() in glibc [1] indicate it's supported?

I think the glibc code is necessary but may not be sufficient; whatever 
kernel support there is or isn't, glibc needs to know how the kernel will 
have set things up (on Linux, based on PT_GNU_STACK for the dynamic 
linker, I think) in order to adjust it based on the PT_GNU_STACK of the 
executable and shared libraries.  Probably it's possible to get this right 
without kernel support (if glibc does the right things at startup), in 
which case we could consider this a GNU userspace convention.

 The only thing I know for sure is that those 2 syscalls don't work. Is
 there any possibility that linux-unwind.h is useful for GNU/kFreeBSD
 in its current state?

I don't see how it can be useful in its current state for any system using 
different syscall numbers.  Maybe the code using a ucontext would be 
relevant given code checking for different (kernel-dependent) 
instructions.

 I don't understand this code, but what I can do is confirm that disabling
 linux-unwind.h doesn't cause any breakage.  Then we could disable it
 untill/unless someone more clued than me ports it to kFreeBSD.  Would
 this be ok?

That makes sense to me.  If disabled for non-Linux-kernel targets, the 
REG_NAME abstraction may as well be removed as not actually being useful 
at present.

  * A minor point: TARGET_VERSION, referring to Linux, is not overridden
   by these configurations.
 
 Perhaps a common (or a fallback) string mentioning GNU and/or glibc
 would fit.  But where's this displayed anyway?

In collect2 (only, for these targets; mips-tdump and mips-tfile also use 
it).  I've also suggested that we should eliminate TARGET_VERSION 
completely (probably for 4.7) but while it's there, referring to Linux for 
these targets is wrong.

-- 
Joseph S. Myers
jos...@codesourcery.com

Re: Dumb idea for accelerating FOSS development

2011-01-12 Thread Jonathan Wakely
On 12 January 2011 14:07, Bill Cox wrote:

 Well, after a short nap, the thought of fixing this in gcc seems even
 dumber to me, though the problem is quite real.  Another tool called
 before gcc could get the header and library files into a place where
 they could be used.  It could even be compiler independent.

  gcc myprog.c $(magic-lib-installer $publicrepo)

where magic-lib-installer takes care of any fetching, building and
installing of the lib in $tmp, then printing the necessary
-I$tmp/include, -L$tmp/lib and -lblah options for use by gcc.

However it  works, it shouldn't need changes to gcc.


Re: Adding Leon processor to the SPARC list of processors

2011-01-12 Thread David Paterson
Hi all,

I'm in the early stages of a Leon-based project, and have been trying to put 
together a cross toolchain for it.  I'm having some problems getting it 
configured and working correctly, and this proposed option would very likely 
help me a lot.

Is there any time scale for implementation, or any plan for which release it'll 
make it into?

Regards,

Dave


Proposal for automatic generation of c++ header files

2011-01-12 Thread Achilleas Margaritis
Hello all.

I have a idea for automatic generation of headers in a c++ program.
Having to maintain headers is a very time consuming task, and I think
we will all benefit from such a thing. The idea is the following:

Each time the compiler finds the pragma

#pragma autoinclude(foo.hpp)

it does the following:

1) searches the include path for the header foo.hpp.

2) if the header does not exist, then the compiler searches for the
file 'foo.cpp'

3) if the file 'foo.cpp' is found, then the header 'foo.hpp' is
generated automatically from the the .cpp file.

4) if the header exists, then the compiler compares the file dates of
the header and the implementation files. If the header is older than
the implementation file, then a new header is generated from the
implementation file.

When the compiler finds a declaration in a .cpp file that is 100% the
same as a declaration in a header file, then the declaration in the
implementation file is ignored, because it has been created
automatically in the header by the compiler. If there is a difference,
then an error is declared.

Example:

file main.cpp:

#pragma autoinclude (foo.hpp)

int main() {
    Foo *foo = new Foo;
    foo-bar();
    foos.push_back(foo);
}

file foo.cpp:

#include list

class Foo {
public:
    void bar() {
    }
};

std::listFoo * foos;

static int data = 0;

The compiler generates the following header:

#ifndef FOO_HPP
#define FOO_HPP

#include list

class Foo {
public:
    void bar();
};

extern std::listFoo * foos;

#endif //FOO_HPP

If such a feature existed, it would greatly speed up application
development for c++ applications.


Re: kfreebsd-gnu etc. issues

2011-01-12 Thread Ian Lance Taylor
Robert Millan r...@gnu.org writes:

 I'm not familiar with PT_GNU_STACK.  Does a working
 _dl_make_stack_executable() in glibc [1] indicate it's supported?

 [1] 
 http://svn.debian.org/viewsvn/glibc-bsd/trunk/glibc-ports/kfreebsd/dl-execstack.c?revision=1685view=markup

PT_GNU_STACK is a program header recognized by the Linux kernel when
loading an ELF executable or shared library.  If any executable or
shared library has a PT_GNU_STACK segment for which the PF_X bit is set
in the p_flags field, then the kernel will mark the stack as permitting
execution (i.e., will mmap it with PROT_EXEC as well as PROT_READ and
PROT_WRITE).

_dl_make_stack_executable is a related but distinct mechanism which is
used by the dynamic linker to make the stack executable when 1) the
stack was loaded as non-executable; 2) there is now some reason to make
the stack executable, e.g., a dlopen of a shared library which has a
PT_GNU_STACK header indicating that an executable stack is required.

As Joseph said, for the specific (and common) case of dynamically linked
binaries it's possible to make this work without kernel support, under
the assumption that the kernel runs the dynamic linker without an
executable stack.  However, for statically linked binaries, PT_GNU_STACK
is only useful if the kernel supports it.

All that said, I see little harm in using a PT_GNU_STACK header on
binaries even if the kernel does not fully support them.  Except for the
small amount of wasted space in every .o file and every executable, but
I lost that argument years ago.

Ian


Re: Plus Reload

2011-01-12 Thread Dave Korn
On 12/01/2011 13:50, Jeff Law wrote:

 On 01/12/11 01:45, Gidi Nave wrote:
 
 One more question:
 GCC usually knows how to handle cases which need decomposition of
 expressions due to architecture limitations.
 In my case it didn't know.
 How can I foreseen additional such cases, in order to avoid compilation 
 crush?
 I'm not sure there is a reasonable way other than experience and
 intimate knowledge of how reload works.

  If your port makes it all the way through the testsuite without any ICEs,
you can feel at least /statistically/ re-assured that it's not likely to run
into problems during regular day-to-day use.

cheers,
  DaveK



Re: Proposal for automatic generation of c++ header files

2011-01-12 Thread David Brown

On 12/01/2011 16:22, Achilleas Margaritis wrote:

Hello all.

I have a idea for automatic generation of headers in a c++ program.
Having to maintain headers is a very time consuming task, and I think
we will all benefit from such a thing. The idea is the following:

Each time the compiler finds the pragma

#pragma autoinclude(foo.hpp)

it does the following:

1) searches the include path for the header foo.hpp.

2) if the header does not exist, then the compiler searches for the
file 'foo.cpp'

3) if the file 'foo.cpp' is found, then the header 'foo.hpp' is
generated automatically from the the .cpp file.

4) if the header exists, then the compiler compares the file dates of
the header and the implementation files. If the header is older than
the implementation file, then a new header is generated from the
implementation file.

When the compiler finds a declaration in a .cpp file that is 100% the
same as a declaration in a header file, then the declaration in the
implementation file is ignored, because it has been created
automatically in the header by the compiler. If there is a difference,
then an error is declared.

Example:

file main.cpp:

#pragma autoinclude (foo.hpp)

int main() {
 Foo *foo = new Foo;
 foo-bar();
 foos.push_back(foo);
}

file foo.cpp:

#includelist

class Foo {
public:
 void bar() {
 }
};

std::listFoo *  foos;

static int data = 0;

The compiler generates the following header:

#ifndef FOO_HPP
#define FOO_HPP

#includelist

class Foo {
public:
 void bar();
};

extern std::listFoo *  foos;

#endif //FOO_HPP

If such a feature existed, it would greatly speed up application
development for c++ applications.



I can see how such a feature could be useful, but is there any reason 
why it should be part of gcc, rather than a separate program that takes 
a cpp file and generates an hpp file?  Such a program would be much 
easier to develop and maintain than a new gcc pragma, and more flexible 
(for example, it could be used with other compilers).  Your timestamp 
checking features are easily accomplished with make.




Re: Dumb idea for accelerating FOSS development

2011-01-12 Thread Ian Lance Taylor
Bill Cox waywardg...@gmail.com writes:

 $ gcc myprog.c -lgit://github/~waywardgeek/sonic=0.1

In Go we have a program goinstall which looks at import statements and
pulls in required libraries, where the libraries are named based on
where the sources live.  A similar process could work in the C/C++
world, based on #include statements.

http://golang.org/cmd/goinstall/

Ian


Re: Proposal for automatic generation of c++ header files

2011-01-12 Thread Ian Lance Taylor
Achilleas Margaritis axil...@gmail.com writes:

 I have a idea for automatic generation of headers in a c++ program.
 Having to maintain headers is a very time consuming task, and I think
 we will all benefit from such a thing. The idea is the following:

 Each time the compiler finds the pragma

 #pragma autoinclude(foo.hpp)

 it does the following:

 1) searches the include path for the header foo.hpp.

 2) if the header does not exist, then the compiler searches for the
 file 'foo.cpp'

 3) if the file 'foo.cpp' is found, then the header 'foo.hpp' is
 generated automatically from the the .cpp file.

 4) if the header exists, then the compiler compares the file dates of
 the header and the implementation files. If the header is older than
 the implementation file, then a new header is generated from the
 implementation file.

It's an interesting idea.  I think you are trying to create a module
system for C++.  You may want to take a look at
www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2073.pdf .  I think an
approach along those lines might make more sense than inventing header
files based on C++ files, and then modifying the language to make those
invented header files work correctly.

Ian


Re: Adding Leon processor to the SPARC list of processors

2011-01-12 Thread Joel Sherrill

On 01/12/2011 09:17 AM, David Paterson wrote:

Hi all,

I'm in the early stages of a Leon-based project, and have been trying to put 
together a cross toolchain for it.  I'm having some problems getting it 
configured and working correctly, and this proposed option would very likely 
help me a lot.

Is there any time scale for implementation, or any plan for which release it'll 
make it into?


The leon specific bare metal targets are in the SVN head.

If you are using RTEMS, then you can use the RPMs we provide.

Regards,

Dave



--
Joel Sherrill, Ph.D. Director of Research  Development
joel.sherr...@oarcorp.comOn-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
   Support Available (256) 722-9985




Re: Dumb idea for accelerating FOSS development

2011-01-12 Thread Florian Weimer
* Ian Lance Taylor:

 Bill Cox waywardg...@gmail.com writes:

 $ gcc myprog.c -lgit://github/~waywardgeek/sonic=0.1

 In Go we have a program goinstall which looks at import statements and
 pulls in required libraries, where the libraries are named based on
 where the sources live.  A similar process could work in the C/C++
 world, based on #include statements.

Oh.  Has anybody tried to implement this for passing the appropriate
-L/-l flags to the linker?  And why isn't everybody doing this? 8-)


Re: [MIPS] Test case dspr2-MULT is failed

2011-01-12 Thread Mingjie Xing
2011/1/7 Chung-Lin Tang clt...@codesourcery.com:
 I analyzed this testcase regression a while earlier; the direct cause of
 this is due to mips_order_regs_for_local_alloc(), which now serves as
 MIPS' ADJUST_REG_ALLOC_ORDER macro.

 The mips_order_regs_for_local_alloc() function seems to be written for
 the old local-alloc.c, still left as the deprecated
 ORDER_REGS_FOR_LOCAL_ALLOC macro after the transition to IRA (actually
 not called at all during then), and relatively recently 'revived' after
 a patch by Bernd that created the ADJUST_REG_ALLOC_ORDER macro went in.

 So you have a local-alloc.c heuristic working in IRA, which seemed to
 cause these regressions.

 Removing mips_order_regs_for_local_alloc() will let this testcase pass;
 of course the real fix should be to review the MIPS reg-ordering logic,
 left for you MIPS people...

 Chung-Lin


As I can see, mips_order_regs_for_local_alloc() is only used to
reorder $24 (T_REG) for MIPS16.  Since current definition of
REG_ALLOC_ORDER for IRA is not {0,1,2,...} any more, the old loop
code,

  for (i = 0; i  FIRST_PSEUDO_REGISTER; i++)
reg_alloc_order[i] = i;

in mips_order_regs_for_local_alloc() seems inadequate.  Because this
will override the definition of REG_ALLOC_ORDER.

Anyway, when I tried to rewrite the function to keep the register
order, the testcase is passed, but I can't see the speedup on my port.

Thanks,
Mingjie



[Bug tree-optimization/47265] New: [4.6 Regression] Error: SSA name in freelist but still referenced

2011-01-12 Thread d.g.gorbachev at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47265

   Summary: [4.6 Regression] Error: SSA name in freelist but still
referenced
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: d.g.gorbac...@gmail.com


With GCC 4.6.0 20110108 (experimental):

= foo.c 
struct S {
  char a[3];
  char b[3];
};

void bar(char *dst, const char *src, unsigned n)
{
  while (n--)
*dst++ = *src ? *src++ : ' ';
}

void foo(struct S *s)
{
  bar(s-a, s-b, 3);
}


$ gcc -S -O3 foo.c
foo.c: In function 'foo':
foo.c:12:6: error: SSA name in freelist but still referenced
D.1961_2
cc1: note: in statement
src_19 = [cond_expr] D.1974_11 != 0 ? src_20 : D.1961_2;

foo.c:12:6: internal compiler error: verify_stmts failed
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.


[Bug fortran/47260] DLLEXPORT attribute requires additional capabilities to be useful

2011-01-12 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47260

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 CC||burnus at gcc dot gnu.org

--- Comment #3 from Tobias Burnus burnus at gcc dot gnu.org 2011-01-12 
09:10:47 UTC ---
Odd - I thought that procedures had always external linkage (TREE_PUBLIC) -
unless they are internal in Fortran - or static in C. For variables, that's a
different issue (cf. also PR 47030).

The TREE_PUBLIC should be set (in this case) via gfc_create_function_decl,
which calls build_function_decl. That function contains:
  if (!current_function_decl
   !sym-attr.entry_master  !sym-attr.is_main_program)
TREE_PUBLIC (fndecl) = 1;

In principle, current_function_decl == NULL as it is not a contained procedure.


[Bug fortran/47266] New: Optimization: Declare PRIVATE module procedures as TREE_PUBLIC = 0 (static function)

2011-01-12 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47266

   Summary: Optimization: Declare PRIVATE module procedures as
TREE_PUBLIC = 0 (static function)
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: bur...@gcc.gnu.org


Found when thinking about PR 47260.

PRIVATE module procedures are by construction not accessible outside the
translation unit. Well, one can then simply mark them as static (in the C
sense) by not setting TREE_PUBLIC to 1.

For procedures one currently calls gfc_create_function_decl,
which calls build_function_decl. That function contains:
  if (!current_function_decl
   !sym-attr.entry_master  !sym-attr.is_main_program)
TREE_PUBLIC (fndecl) = 1;

Thus, adding  !sym-attr.access == ACCESS_PRIVATE should be sufficient.


Test case
- Expected: With -O2 -c, nm only prints __m_MOD_pub
- Current result, nm shows:
  001e T __m_MOD_priv
   T __m_MOD_pub

module m
  implicit none
  private :: priv
  public  :: pub
contains
  integer function priv()
priv = 44
  end function priv
  subroutine pub(a)
integer :: a
a = priv()
  end subroutine pub
end module m


[Bug objc/46710] fast enumeration tests failing on ia64-suse-linux-gnu

2011-01-12 Thread nicola at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46710

Nicola Pero nicola at gcc dot gnu.org changed:

   What|Removed |Added

   Severity|critical|major

--- Comment #2 from Nicola Pero nicola at gcc dot gnu.org 2011-01-12 09:34:44 
UTC ---
I got access to an ia64-unknown-linux-gnu machine, and tried the failing 
testcases out there, but found that they are working there. :-(

Thanks


[Bug fortran/47267] New: array constructor causing long compile times

2011-01-12 Thread Joost.VandeVondele at pci dot uzh.ch
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47267

   Summary: array constructor causing long compile times
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: joost.vandevond...@pci.uzh.ch


The following program needs about 40s to compile (-O0):

 cat test.f90
   IMPLICIT NONE
   INTEGER, PARAMETER :: wp=8
   INTEGER, PARAMETER :: Niter=3000
   INTEGER, ALLOCATABLE, DIMENSION(:) :: perm1

   INTEGER :: i

   ALLOCATE(perm1(Niter))
   perm1=(/(i,i=1,Niter)/)
END

Time grows linearly with Niter.


[Bug fortran/47267] array constructor causing long compile times

2011-01-12 Thread Joost.VandeVondele at pci dot uzh.ch
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47267

Joost VandeVondele Joost.VandeVondele at pci dot uzh.ch changed:

   What|Removed |Added

   Keywords||compile-time-hog
  Known to fail||4.3.2, 4.6.0

--- Comment #1 from Joost VandeVondele Joost.VandeVondele at pci dot uzh.ch 
2011-01-12 09:43:31 UTC ---
obviously removing the parameter attribute from niter makes compilation very
fast. Presumably something down this call tree should not simplify stuff for
too large constructors

#0  0x76ca9ad9 in _int_malloc () from /lib64/libc.so.6
#1  0x76cacaa9 in malloc () from /lib64/libc.so.6
#2  0x00d9e9a9 in __gmp_default_allocate (size=8) at
../../gcc/gmp/memory.c:44
#3  0x00da39f5 in __gmpz_init (x=0x14f4038) at
../../../gcc/gmp/mpz/init.c:28
#4  0x004ebc39 in gfc_get_constant_expr (type=BT_INTEGER, kind=4,
where=0x136b920) at ../../gcc/gcc/fortran/expr.c:160
#5  0x004ebd6b in gfc_get_int_expr (kind=value optimized out,
where=value optimized out, value=0) at ../../gcc/gcc/fortran/expr.c:215
#6  0x004caf17 in gfc_simplify_iterator_var (e=0x14f3f00) at
../../gcc/gcc/fortran/array.c:1401
#7  0x004f06a8 in gfc_simplify_expr (p=0x14f3f00, type=1) at
../../gcc/gcc/fortran/expr.c:1873
#8  0x004c99a6 in expand_constructor (base=value optimized out) at
../../gcc/gcc/fortran/array.c:1540
#9  0x004c9be9 in expand_expr (base=value optimized out) at
../../gcc/gcc/fortran/array.c:1416
#10 expand_expr (base=value optimized out) at
../../gcc/gcc/fortran/array.c:1515
#11 expand_iterator (base=value optimized out) at
../../gcc/gcc/fortran/array.c:1486
#12 expand_constructor (base=value optimized out) at
../../gcc/gcc/fortran/array.c:1524
#13 0x004cb94d in gfc_array_size (array=0x14f4ad0,
result=0x7fffd830) at ../../gcc/gcc/fortran/array.c:2190
#14 0x005311eb in expression_shape (e=0x14f4ad0) at
../../gcc/gcc/fortran/resolve.c:4812
#15 expression_rank (e=0x14f4ad0) at ../../gcc/gcc/fortran/resolve.c:4888
#16 0x00538742 in gfc_resolve_expr (e=0x14f4ad0) at
../../gcc/gcc/fortran/resolve.c:6060
#17 0x0054176f in resolve_code (code=0x14f4b90, ns=0x14efed0) at
../../gcc/gcc/fortran/resolve.c:8928
#18 0x0054379f in resolve_codes (ns=0x14efed0) at
../../gcc/gcc/fortran/resolve.c:13478


[Bug fortran/47260] DLLEXPORT: TREE_PUBLIC for procedures lost between trans-decl.c and tree.c

2011-01-12 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47260

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||rejects-valid
Summary|DLLEXPORT attribute |DLLEXPORT: TREE_PUBLIC for
   |requires additional |procedures lost between
   |capabilities to be useful   |trans-decl.c and tree.c

--- Comment #4 from Tobias Burnus burnus at gcc dot gnu.org 2011-01-12 
10:17:55 UTC ---
Confirmed. On Linux (should be also in Windows), the TREE_PUBLIC in
build_function_decl is set. On the other hand, Kai confirmed that in MinGW64
the same error occurs. It seems as if the TREE_PUBLIC is lost in between (the
error message is printed in tree.c's handle_dll_attribute).

Fails also with:
  gcc version 4.5.3 20110103 (prerelease) (GCC)
thus it is not a regression
(Obtainted from:
http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Automated%20Builds/
; the 1.0 builds are for GCC 4.5.)

Thus, it does not seem to be an LTO problem or an -fwhole-file issue.


[Bug objc/47262] Better error message upon finding a @property in the instance variable list

2011-01-12 Thread nicola at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47262

Nicola Pero nicola at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.01.12 10:24:01
 Ever Confirmed|0   |1

--- Comment #1 from Nicola Pero nicola at gcc dot gnu.org 2011-01-12 10:24:01 
UTC ---
Confirmed with gcc (GCC) 4.6.0 20110112 (experimental).

Thanks


[Bug libfortran/47268] New: Documentation: missing (Optional) keyword for parameters of get_command_argument() and get_environment_variable()

2011-01-12 Thread thenlich at users dot sourceforge.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47268

   Summary: Documentation: missing (Optional) keyword for
parameters of get_command_argument() and
get_environment_variable()
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libfortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: thenl...@users.sourceforge.net


The argument VALUE of the get_command_argument() intrinsic is correctly marked
as optional in the Syntax section, but in the Arguments section the (Optional)
keyword is missing.

Style issue: For the LENGTH and STATUS arguments the keyword is written as
(Option), not (Optional).

The arguments VALUE,LENGTH,STATUS,TRIM_NAME of the get_environment_variable()
intrinsic are correctly marked as optional in the Syntax section, but in the
Arguments section the (Optional) keyword is missing.


[Bug testsuite/33033] FAIL: gcc.dg/20061124-1.c: undefined reference to `__sync_add_and_fetch_2'

2011-01-12 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33033

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC|ebotcazou at gcc dot|
   |gnu.org |
  Component|target  |testsuite
 AssignedTo|unassigned at gcc dot   |ebotcazou at gcc dot
   |gnu.org |gnu.org

--- Comment #2 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-01-12 
10:35:49 UTC ---
Fixing...


[Bug rtl-optimization/47166] [4.5/4.6 Regression] SpecCpu2000 Ammp segfaults for ARM with -O3 -mthumb

2011-01-12 Thread ibolton at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47166

Ian Bolton ibolton at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||patch

--- Comment #11 from Ian Bolton ibolton at gcc dot gnu.org 2011-01-12 
10:36:39 UTC ---
I have now confirmed Richard's patch
(http://gcc.gnu.org/ml/gcc-patches/2011-01/msg00548.html) is doing the right
thing on 4.5 branch and trunk, for the tests that were previously failing.

Thanks very much for debugging this, Bernd.
Many thanks for your patch, Richard.


[Bug tree-optimization/47233] IPA reference tends to explode in memory use with -fprofile-generate

2011-01-12 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47233

--- Comment #2 from Jan Hubicka hubicka at gcc dot gnu.org 2011-01-12 
10:39:43 UTC ---
Author: hubicka
Date: Wed Jan 12 10:39:39 2011
New Revision: 168700

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168700
Log:
PR tree-optimization/47233
* opts.c (common_handle_option): Disable ipa-reference with profile
feedback.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/opts.c


[Bug middle-end/42371] dead code not eliminated during folding with whole-program

2011-01-12 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42371

Jan Hubicka hubicka at gcc dot gnu.org changed:

   What|Removed |Added

 AssignedTo|hubicka at gcc dot gnu.org  |mjambor at suse dot cz

--- Comment #8 from Jan Hubicka hubicka at gcc dot gnu.org 2011-01-12 
10:43:13 UTC ---
Hi,
the last problem was solved, sadly it is not last.  We still keep the functions
around because we don't see that indirect inlining effectively removes the
reference.  
Martin probably should look into this for 4.7.


[Bug rtl-optimization/47166] [4.5/4.6 Regression] SpecCpu2000 Ammp segfaults for ARM with -O3 -mthumb

2011-01-12 Thread ibolton at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47166

--- Comment #12 from Ian Bolton ibolton at gcc dot gnu.org 2011-01-12 
10:44:11 UTC ---
(In reply to comment #9)
 Created attachment 22945 [details]
 Test patch
 
 Could you try the following? It's a variant of a patch Richard Sandiford
 recently posted.

Just noticed you said this is a variant of Richard's patch.  Hopefully the
two patches can be reconciled?


[Bug tree-optimization/47233] IPA reference tends to explode in memory use with -fprofile-generate

2011-01-12 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47233

Jan Hubicka hubicka at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|NEW
 Blocks|45375   |
 AssignedTo|hubicka at gcc dot gnu.org  |unassigned at gcc dot
   ||gnu.org

--- Comment #3 from Jan Hubicka hubicka at gcc dot gnu.org 2011-01-12 
10:45:40 UTC ---
Workaround comitted, unasigning and removing from list of Mozilla dependencies.


[Bug testsuite/33033] FAIL: gcc.dg/20061124-1.c: undefined reference to `__sync_add_and_fetch_2'

2011-01-12 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33033

--- Comment #3 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-01-12 
10:52:28 UTC ---
Author: ebotcazou
Date: Wed Jan 12 10:52:25 2011
New Revision: 168701

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168701
Log:
PR testsuite/33033
* gcc.dg/20061124-1.c: Pass -mcpu=v9 on the SPARC.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/20061124-1.c


[Bug testsuite/33033] FAIL: gcc.dg/20061124-1.c: undefined reference to `__sync_add_and_fetch_2'

2011-01-12 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33033

--- Comment #4 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-01-12 
10:53:24 UTC ---
Author: ebotcazou
Date: Wed Jan 12 10:53:21 2011
New Revision: 168702

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168702
Log:
PR testsuite/33033
* gcc.dg/20061124-1.c: Pass -mcpu=v9 on the SPARC.

Modified:
branches/gcc-4_5-branch/gcc/testsuite/ChangeLog
branches/gcc-4_5-branch/gcc/testsuite/gcc.dg/20061124-1.c


[Bug testsuite/33033] FAIL: gcc.dg/20061124-1.c: undefined reference to `__sync_add_and_fetch_2'

2011-01-12 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33033

--- Comment #5 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-01-12 
10:54:01 UTC ---
Author: ebotcazou
Date: Wed Jan 12 10:53:59 2011
New Revision: 168703

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168703
Log:
PR testsuite/33033
* gcc.dg/20061124-1.c: Pass -mcpu=v9 on the SPARC.

Modified:
branches/gcc-4_4-branch/gcc/testsuite/ChangeLog
branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/20061124-1.c


[Bug testsuite/33033] FAIL: gcc.dg/20061124-1.c: undefined reference to `__sync_add_and_fetch_2'

2011-01-12 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33033

--- Comment #6 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-01-12 
10:54:38 UTC ---
Author: ebotcazou
Date: Wed Jan 12 10:54:36 2011
New Revision: 168704

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168704
Log:
PR testsuite/33033
* gcc.dg/20061124-1.c: Pass -mcpu=v9 on the SPARC.

Modified:
branches/gcc-4_3-branch/gcc/testsuite/ChangeLog
branches/gcc-4_3-branch/gcc/testsuite/gcc.dg/20061124-1.c


[Bug testsuite/33033] FAIL: gcc.dg/20061124-1.c: undefined reference to `__sync_add_and_fetch_2'

2011-01-12 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33033

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.3.6

--- Comment #7 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-01-12 
10:56:13 UTC ---
At long last.


[Bug lto/47264] [4.6 Regression] Many tests fail with -flto due unaligned load in lto-plugin.c

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47264

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011.01.12 10:49:43
 AssignedTo|unassigned at gcc dot   |rguenth at gcc dot gnu.org
   |gnu.org |
   Target Milestone|--- |4.6.0
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
10:49:43 UTC ---
Ick - what of a bad coding style.

I'll fix it.


[Bug lto/47259] LTO and global register variable

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47259

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||lto
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.01.12 11:06:55
 Ever Confirmed|0   |1

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
11:06:55 UTC ---
Confirmed.  We probably should reject global register vars for LTO.


[Bug tree-optimization/47255] Missed CSE optimization with inline functions, and __attribute__((const))

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47255

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.01.12 11:10:22
  Component|c   |tree-optimization
 Ever Confirmed|0   |1

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
11:10:22 UTC ---
Sure, it is a missed optimization.  It's even easy to fix when you accept
a general compile-time slowdown (just schedule some CSE passes before
inlining).
When you want to avoid the compile-time slowdown then it's not so easy
(it's a usual trade-off with the case where there is no CSE opportunity but
earlier inlining would result in better code).

You can force GCC to not inline the function with using
__attribute__((const,noinline)) (but it of course will then be not
inlined at all).


[Bug objc/46710] fast enumeration tests failing on ia64-suse-linux-gnu

2011-01-12 Thread nicola at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46710

--- Comment #3 from Nicola Pero nicola at gcc dot gnu.org 2011-01-12 11:22:35 
UTC ---
I just noticed that this failure was reported on 9 January 2011, but it is no
longer reported on 10 January 2011.  What changed ?

I asked Matthias Klose if he has more information on his latest reported
failure --

http://gcc.gnu.org/ml/gcc-testresults/2011-01/msg00731.html

Thanks


[Bug target/46993] Optimization on i386 lead to user-visible traps during floating-point operations

2011-01-12 Thread arseny.klimovsky at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46993

--- Comment #1 from Arseny Klimovsky arseny.klimovsky at gmail dot com 
2011-01-12 11:59:13 UTC ---
This bug is quite similar to another one in Debian BTS
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=561611


[Bug target/47246] [4.6 Regression] Invalid immediate offset for Thumb VFP store

2011-01-12 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47246

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

  Component|rtl-optimization|target

--- Comment #2 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-01-12 
11:59:57 UTC ---
More of a target problem I think.


[Bug lto/47264] [4.6 Regression] Many tests fail with -flto due unaligned load in lto-plugin.c

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47264

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
12:04:45 UTC ---
Author: rguenth
Date: Wed Jan 12 12:04:39 2011
New Revision: 168708

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168708
Log:
2011-01-12  Richard Guenther  rguent...@suse.de

PR lto/47264
* lto-plugin.c (parse_table_entry): Use memcpy to access
unaligned fields.

Modified:
trunk/lto-plugin/ChangeLog
trunk/lto-plugin/lto-plugin.c


[Bug rtl-optimization/46894] [4.6 Regression] vector tests fail on powerpc 32-bit

2011-01-12 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46894

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

 Target|powerpc-apple-darwin9   |powerpc-*-*
 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011.01.12 12:05:15
   Host|powerpc-apple-darwin9   |powerpc-*-*
 AssignedTo|unassigned at gcc dot   |ebotcazou at gcc dot
   |gnu.org |gnu.org
Summary|[4.6 Regression] vector |[4.6 Regression] vector
   |fails on powerpc-darwin9|tests fail on powerpc
   ||32-bit
 Ever Confirmed|0   |1
  Build|powerpc-apple-darwin9   |powerpc-*-*

--- Comment #2 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-01-12 
12:05:15 UTC ---
Looking into it.


[Bug c/46946] contradiction in docs for -Ofast and -ffast-math

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46946

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
12:07:49 UTC ---
Author: rguenth
Date: Wed Jan 12 12:07:44 2011
New Revision: 168709

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168709
Log:
2011-01-12  Richard Guenther  rguent...@suse.de

PR other/46946
* doc/invoke.texi (ffast-math): Document it is turned on
with -Ofast.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/doc/invoke.texi


[Bug c/46946] contradiction in docs for -Ofast and -ffast-math

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46946

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
12:08:04 UTC ---
Fixed.


[Bug lto/47264] [4.6 Regression] Many tests fail with -flto due unaligned load in lto-plugin.c

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47264

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
12:08:22 UTC ---
Fixed.


[Bug tree-optimization/47239] [4.6 Regression] (int)func 3 is always optimized to 0 on some targets

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47239

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
12:10:05 UTC ---
Fixed.


[Bug rtl-optimization/47216] [4.6 Regression] gcc.dg/torture/pr43360.c FAILs with -O -fPIC -fgcse -fgcse-sm -fnon-call-exceptions -fno-tree-dse

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47216

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||amacleod at redhat dot com,
   ||law at redhat dot com,
   ||stevenb.gcc at gmail dot
   ||com
  Component|tree-optimization   |rtl-optimization

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
13:03:18 UTC ---
We have in store-motion.c:

static inline bool
store_killed_in_pat (const_rtx x, const_rtx pat, int after)
{
...
  /* Check for memory stores to aliased objects.  */
  if (MEM_P (dest)
   !exp_equiv_p (dest, x, 0, true))
{
  if (after)
{
  if (output_dependence (dest, x))
return true;
}
  else
{
  if (output_dependence (x, dest))
return true;
}
}

and coming in with

gdb) call debug_rtx (dest)
(mem/s/j:SI (reg/f:DI 67) [0 g_3+0 S4 A32])
(gdb) call debug_rtx (x)
(mem/s/c:SI (reg/f:DI 67) [0 MEM[(int *)g_3]+0 S4 A32])

and exp_equiv_p returns true.  But then we seem to completely ignore
that kill(!?), thus we happily sink the first store across the second.
Huh.  Doesn't make sense to me unless the SET_SRCs are also equivalent.

Of course it may be that this shouldn't happen because if it does then
the antic sets are not as expected?

I guess it makes sense if you only look at the description for
store_killed_in_pat and adjust it to looking for any loads which
might make the store in X live (loads don't kill anything).

Ultimatively this leads to a wrong answer from store_killed_after.

Simplified situation is like

 for (;;)
   {
 *x = 1;
 *x = 2;
   }

and store-motion sinks *x = 1 across *x = 2.

svn blame blames steven for store-motion (of course - he split it out).
Steven - do you by any chance have any idea how it works?  The code
dates back to

2001-04-09  Andrew MacLeod  amacl...@redhat.com
   Jeff Law  l...@redhat.com

And I'd just do an uninformed

Index: gcc/store-motion.c
===
--- gcc/store-motion.c  (revision 168707)
+++ gcc/store-motion.c  (working copy)
@@ -367,8 +367,7 @@ store_killed_in_pat (const_rtx x, const_
dest = XEXP (dest, 0);

   /* Check for memory stores to aliased objects.  */
-  if (MEM_P (dest)
-  !exp_equiv_p (dest, x, 0, true))
+  if (MEM_P (dest))
{
  if (after)
{


[Bug lto/47259] LTO and global register variable

2011-01-12 Thread d.g.gorbachev at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47259

--- Comment #3 from Dmitry Gorbachev d.g.gorbachev at gmail dot com 
2011-01-12 13:10:07 UTC ---
For example, linux uses global reg var esp. As there is no need to reserve
this register, can GCC accept it?


[Bug lto/47259] LTO and global register variable

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47259

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
13:32:32 UTC ---
In 99.% of all cases there is a better way than using a global register
variable.

Also it is not clear to me how to merge translation units where a different
set of registers are used in global register variables.  Consider

t1.c:
int g asm(%ecx);

t2.c:
void foo(void)
{
  complex-asm-that-needs-many-regs
}

if we make ecx global in t2.c then we'd fail to assign registers to
the complex asm.  Thus one solution would be to partition the LTO
program in a way that t1.c is completely contained in its own
partition.  But then the user could have compiled t1.c without LTO
which would be my suggested workaround.  Thus, emit

sorry: translation units with global register variables need to be compiled
without LTO


[Bug fortran/47260] DLLEXPORT: TREE_PUBLIC for procedures lost between trans-decl.c and tree.c

2011-01-12 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47260

--- Comment #5 from Tobias Burnus burnus at gcc dot gnu.org 2011-01-12 
13:37:53 UTC ---
Kai sent a draft patch. The issue is that TREE_PUBLIC/TREE_EXTERNAL should come
before setting the attribute - otherwise the decl seems to be inconsistent.

I try to submit the patch soon. (If not, please ping.)


[Bug rtl-optimization/37273] [4.4/4.5/4.6 Regression] IRA does not re-materializes addresses (loads from the TOC)

2011-01-12 Thread law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37273

--- Comment #5 from Jeffrey A. Law law at redhat dot com 2011-01-12 13:38:20 
UTC ---
First I think we need to note that if we allocate the pseudo holding the value
for ext in memory that we get some savings (because ext is already sitting
in memory waiting to be used).

This is very similar to how we recognize some savings from allocating a pseudo
to memory when the pseudo represents an argument loaded from its stack slot in
ira-costs.

Second, in that same code, we're double-counting the cost of allocating the
pseudo to memory.

If those two problems are fixed, we get the desired PPC code; however,
significant benchmarking would be required to determine how this change affects
a broader codebase.

I'll note there's also a deficiency in caller-saves in that it insists on
reloading the value into its original hard reg, even if the hard reg is going
to be immediately copied to a different hard reg.  I don't want to spend too
much time on the caller-save aspects since ultimately I think caller-save needs
to go away or at least have another rewrite.  It's approaching 2 decades since
it's last major revision.


[Bug middle-end/46823] [4.6 Regression] ICE: edge points to wrong declaration

2011-01-12 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46823

--- Comment #18 from Martin Jambor jamborm at gcc dot gnu.org 2011-01-12 
13:50:11 UTC ---
You're right, however in fact all redirections and updates should be
taking place already.  Either in inline_transform() for calls that are
in the function from the beginning of inlining or later when new ones
are added in copy_bb().

So I was looking for why this one did not and figured out that they
are original calls, cgraph_redirect_edge_call_stmt_to_callee() is called
on their edges but it returns immediately because of this condition:

cgraph_get_node (decl) == cgraph_get_node (e-callee-decl)

It is satisfied because the declaration in the IL is an alias, the
function returns and the alias decl stays in the IL.  But e-callee is
not the node that the alias cgraph_node aliases, it is another inline
clone instead.  And the aliased node is also scheduled to be inlined.

After it is inlined, the node is removed together with its alias nodes
and from that point on there is no cgraph_node for the alias
declaration and so when it is stumbled on another time, cgraph_node()
function creates a new one and the verifier explodes.

I therefore propose to remove the quoted condition from
cgraph_redirect_edge_call_stmt_to_callee().  It was originally added
by Jakub in his fix for PR 42508 with a comment (#4) saying:

The cgraphunit.c hunk is only somewhat related, is not necessary to
fix this, I've just noticed that the function was still modifying
GIMPLE_CALL decl unnecessarily (and confusingly), when e-callee is an
inline clone of some cgraph node with same_body aliases and
GIMPLE_CALL calls the same_body alias.

Nevertheless, my patch in comment #16 is also OK (and would save a bit
of unnecessary work) because the call statement is not updated only if
it is not necessary because still the same old function is being
called, just through an alias of what is now an inline clone.

So Honza, what do you prefer?


[Bug fortran/47267] array constructor causing long compile times

2011-01-12 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47267

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 CC||burnus at gcc dot gnu.org,
   ||dfranke at gcc dot gnu.org,
   ||jvdelisle at gcc dot
   ||gnu.org

--- Comment #2 from Tobias Burnus burnus at gcc dot gnu.org 2011-01-12 
13:51:43 UTC ---
You can use -fmax-array-constructor=n to tune this. However, I think
currently there is no distinction made between constructors which have to be be
run at compile time (a) and those which can be run at compile time (b).

n is currently 65535.


Example for (a): Parameter array or initialization expression

   INTEGER, PARAMETER :: Niter=3000
   INTEGER, PARAMETER :: ARRAY(Niter) = (/(i,i=1,Niter)/)

Example for (b): Assignment to an array

   INTEGER, PARAMETER :: Niter=3000
   INTEGER :: ARRAY(Niter)
   ARRAY(Niter) = (/(i,i=1,Niter)/)


[Bug lto/47259] LTO and global register variable

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47259

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 AssignedTo|unassigned at gcc dot   |rguenth at gcc dot gnu.org
   |gnu.org |

--- Comment #5 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
14:01:43 UTC ---
I have a patch.


[Bug fortran/47260] DLLEXPORT: TREE_PUBLIC for procedures lost between trans-decl.c and tree.c

2011-01-12 Thread craig.powers at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47260

--- Comment #6 from Craig Powers craig.powers at gmail dot com 2011-01-12 
14:11:28 UTC ---
I also was unable to get the procedure into a DLL with omission of DLLEXPORT,
instead attempting to get it in using a .DEF file and either gfortran or
dlltool. I'm not sure if that reflects another aspect of the same problem.  If
I do this:
gfortran -shared -o test.dll test.def test.o typedata.o

I get:
Cannot export _compute_load_...@28: symbol not defined

But if I look at the output of nm test.o, I see:
 T _compute_load_...@28


[Bug tree-optimization/47265] [4.6 Regression] Error: SSA name in freelist but still referenced

2011-01-12 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47265

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.01.12 14:21:03
 CC||matz at gcc dot gnu.org
   Target Milestone|--- |4.6.0
 Ever Confirmed|0   |1

--- Comment #1 from H.J. Lu hjl.tools at gmail dot com 2011-01-12 14:21:03 
UTC ---
It is caused by revision 163998:

http://gcc.gnu.org/ml/gcc-cvs/2010-09/msg00290.html


[Bug middle-end/44440] [4.6 regression] ira_initialization and buitins construction taking too much of startup time

2011-01-12 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=0

Jan Hubicka hubicka at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.01.12 14:40:30
Summary|ira_initialization and  |[4.6 regression]
   |buitins construction taking |ira_initialization and
   |too much of startup time|buitins construction taking
   ||too much of startup time
 Ever Confirmed|0   |1

--- Comment #2 from Jan Hubicka hubicka at gcc dot gnu.org 2011-01-12 
14:40:30 UTC ---
compiling empty file 100 times takes 3.8s on 4.6, while it takes 2.4s on on gcc
4.3 as well as gcc 4.5.

This is 50% regression. User time increases 100%. So we probably do a lot more
initialization than before.

2979  9.4936  ggc_internal_alloc_stat
1771  5.6439  ira_init
1539  4.9046  pop_scope
1258  4.0091  init_reg_sets_1
1036  3.3016  ht_lookup_with_hash
986   3.1422  ht_lookup
951   3.0307  decl_attributes
905   2.8841  ix86_hard_regno_mode_ok
852   2.7152  copy_node_stat
750   2.3901  rtx_cost
717   2.2850  bind
635   2.0236  ix86_rtx_costs
633   2.0173  ggc_internal_cleared_alloc_stat
632   2.0141  ix86_memory_move_cost
619   1.9727  c_write_global_declarations_1
566   1.8038  make_node_stat
553   1.7623  htab_find_with_hash
519   1.6540  recog
497   1.5839  iterative_hash


[Bug target/46037] --enable-stage1-languages=c,lto --enable-languages=c,lto --with-build-config=bootstrap-lto fails on darwin

2011-01-12 Thread howarth at nitro dot med.uc.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46037

--- Comment #25 from Jack Howarth howarth at nitro dot med.uc.edu 2011-01-12 
15:00:11 UTC ---
Testresults for lto-bootstrap with revised patch on x86_64-apple-darwin10...

http://gcc.gnu.org/ml/gcc-testresults/2011-01/msg01002.html


[Bug lto/47259] LTO and global register variable

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47259

--- Comment #6 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
15:01:16 UTC ---
Author: rguenth
Date: Wed Jan 12 15:01:09 2011
New Revision: 168713

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168713
Log:
2011-01-12  Richard Guenther  rguent...@suse.de

PR lto/47259
* lto-streamer-out.c (output_gimple_stmt): Do not wrap
register variables in a MEM_REF.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/lto-streamer-out.c


[Bug lto/47259] LTO and global register variable

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47259

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #7 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
15:02:22 UTC ---
Fixed.


[Bug target/47269] New: DSYMUTIL_SPEC doesn't handle -gtoggle

2011-01-12 Thread howarth at nitro dot med.uc.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47269

   Summary: DSYMUTIL_SPEC doesn't handle -gtoggle
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: howa...@nitro.med.uc.edu


Currently on darwin, DSYMUTIL_SPEC is unaware of the -gtoggle flag. This
results in dsymutil not being called as expected when '-g0 -gtoggle' is passed
to the compiler despite any resulting object files containing the expected
DWARF debug information. It is unclear how we can code for this in
DSYMUTIL_SPEC since -gtoggle needs to invert the final accumulative setting of
-g.


[Bug lto/47259] LTO and global register variable

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47259

--- Comment #8 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
15:22:08 UTC ---
Author: rguenth
Date: Wed Jan 12 15:21:59 2011
New Revision: 168715

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168715
Log:
2011-01-12  Richard Guenther  rguent...@suse.de

PR lto/47259
* gcc.dg/lto/pr47259_0.c: New testcase.
* gcc.dg/lto/pr47259_1.c: Likewise.

Added:
trunk/gcc/testsuite/gcc.dg/lto/pr47259_0.c
trunk/gcc/testsuite/gcc.dg/lto/pr47259_1.c
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/47270] New: [4.4/4.5/4.6 Regression] GCC produces unnecessary/wrong code on -O2 and -O3 levels

2011-01-12 Thread d.g.gorbachev at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47270

   Summary: [4.4/4.5/4.6 Regression] GCC produces
unnecessary/wrong code on -O2 and -O3 levels
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: d.g.gorbac...@gmail.com
  Host: i686-pc-linux-gnu
Target: i686-pc-linux-gnu
 Build: i686-pc-linux-gnu


$ cat  testcase.c
register int r asm(esi);

void foo(void)
{
if (r)
__asm__(sar\t%0 : +r (r));

__asm__(sar\t%0 : +r (r));
}
^D
$ gcc -O2 -S testcase.c
$ cat testcase.s
[...]
foo:
.LFB0:
xorl%eax, %eax
testl   %esi, %esi
je  .L2
#APP
# 6 testcase.c 1
sar %esi
# 0  2
#NO_APP
movl%esi, %eax
.L2:
movl%eax, %esi
#APP
# 8 testcase.c 1
sar %esi
# 0  2
#NO_APP
ret
[...]


[Bug driver/47244] [4.6 Regression] plugin linker is used unconditionally

2011-01-12 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47244

--- Comment #6 from Jan Hubicka hubicka at gcc dot gnu.org 2011-01-12 
15:47:36 UTC ---
Author: hubicka
Date: Wed Jan 12 15:47:29 2011
New Revision: 168717

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168717
Log:
PR driver/47244
* gcc.c (PLUGIN_COND): Update to disable plugin unless -flto is used.
(PLUGIN_COND_CLOSE): New macro.
(LINK_COMMAND_SPEC): Update to use PLUGIN_COND_CLOSE.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/gcc.c


[Bug driver/47244] [4.6 Regression] plugin linker is used unconditionally

2011-01-12 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47244

Jan Hubicka hubicka at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #7 from Jan Hubicka hubicka at gcc dot gnu.org 2011-01-12 
15:48:22 UTC ---
fixed.


[Bug c++/11750] class scope using-declaration lookup not implemented

2011-01-12 Thread balakrishnan.erode at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11750

Balakrishnan B balakrishnan.erode at gmail dot com changed:

   What|Removed |Added

 CC||balakrishnan.erode at gmail
   ||dot com

--- Comment #6 from Balakrishnan B balakrishnan.erode at gmail dot com 
2011-01-12 16:57:07 UTC ---
(In reply to comment #0)
 Paragraph 10.3/2 in the C++ standard [ISO/IEC 14882:1998] provides the
 following
 code example:
 
 quote
 
 struct A {
 virtual void f();
 };
 struct B : virtual A {
 virtual void f();
 };
 
 struct C : B , virtual A {
 using A::f; 
 };
 void foo() {
 C c; 
 c.f();  // calls B::f, the final overrider
 c.C::f();   // calls A::f because of the using-declaration
 }
 
 /quote
 
 When a similar program is compiled using G++ 3.3, the method call 'c.f()' in
 function foo() incorrectly invokes A::f and not B::f as specified in the
 standard.
 
 example
 code main.cpp
 #include iostream
 
 struct A {
 virtual void f() { std::cout  A::f()\n; }
 };
 struct B : virtual A {
 virtual void f() { std::cout  B::f()\n; }
 };
 struct C : B, virtual A {
 using A::f;
 };
 
 int main()
 {
 C c;
 c.f();  // ERROR - Incorrectly invokes A::f
 c.C::f();   // OK - Invokes A::f
 }
 /code
 
 build
 $ g++ main.cpp
 
 $ ldd a.out
 libstdc++.so.5 =
 /usr/local/gcc/3.3/lib/gcc-lib/i686-pc-linux-gnu/3.3/libstdc++.so.5
 (0x40017000)
 libm.so.6 = /lib/tls/libm.so.6 (0x400e4000)
 libgcc_s.so.1 =
 /usr/local/gcc/3.3/lib/gcc-lib/i686-pc-linux-gnu/3.3/libgcc_s.so.1 
 (0x40106000)
 libc.so.6 = /lib/tls/libc.so.6 (0x4200)
 /lib/ld-linux.so.2 = /lib/ld-linux.so.2 (0x4000)
 /build
 
 output
 $ ./a.out
 A::f()
 A::f()
 /output
 
 /example

Im using g++ 4.4.5
With the same example with my main function as below,
int main()
{
  C c;
  c.f() // Calls A::f
  C* pc = c;
  pc-f() // Calls B::f
}

With the same object when accessed directly produces different results and when
accessed using a pointer of same type produces a different result. Even if gcc
violates standard, there has to be some proper explanation.


[Bug debug/47209] ICE: SIGSEGV in should_emit_struct_debug (dwarf2out.c:627) with -f{no-,}emit-struct-debug-{baseonly,reduced} -g

2011-01-12 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47209

--- Comment #6 from Kai Tietz ktietz at gcc dot gnu.org 2011-01-12 17:02:51 
UTC ---
Author: ktietz
Date: Wed Jan 12 17:02:41 2011
New Revision: 168718

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168718
Log:
2011-01-12  Kai Tietz  kai.ti...@onevision.com

PR debug/47209
* dwarfout2.c (should_emit_struct_debug): Use TYPE_MAIN_VARIANT
of type.

2011-01-12  Kai Tietz  kai.ti...@onevision.com

PR debug/47209
* g++.dg/debug/pr47209.C: New.


Added:
trunk/gcc/testsuite/g++.dg/debug/pr47209.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/dwarf2out.c
trunk/gcc/testsuite/ChangeLog


[Bug debug/47209] ICE: SIGSEGV in should_emit_struct_debug (dwarf2out.c:627) with -f{no-,}emit-struct-debug-{baseonly,reduced} -g

2011-01-12 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47209

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED

--- Comment #7 from Kai Tietz ktietz at gcc dot gnu.org 2011-01-12 17:06:15 
UTC ---
Fixed.


[Bug c++/11750] class scope using-declaration lookup not implemented

2011-01-12 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11750

--- Comment #7 from Jonathan Wakely redi at gcc dot gnu.org 2011-01-12 
17:10:17 UTC ---
(In reply to comment #6)
 
 With the same object when accessed directly produces different results and 
 when
 accessed using a pointer of same type produces a different result. Even if gcc
 violates standard, there has to be some proper explanation.

The explanation is it's a bug


[Bug c++/11750] class scope using-declaration lookup not implemented

2011-01-12 Thread aschepler at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11750

--- Comment #8 from Andrew Schepler aschepler at gmail dot com 2011-01-12 
17:16:29 UTC ---
(In reply to comment #6)
  struct A {
  virtual void f();
  };
  struct B : virtual A {
  virtual void f();
  };
  
  struct C : B , virtual A {
  using A::f; 
  };

 Im using g++ 4.4.5
 With the same example with my main function as below,
 int main()
 {
   C c;
   c.f() // Calls A::f
   C* pc = c;
   pc-f() // Calls B::f
 }
 
 With the same object when accessed directly produces different results and 
 when
 accessed using a pointer of same type produces a different result. Even if gcc
 violates standard, there has to be some proper explanation.

The reason is that when f is invoked via a pointer or reference, g++ uses the
vtable lookup to call the correct final override.  But when the object in the
member access is not a pointer or reference (it is a non-reference identifier
as here, or qualified id, or class member), g++ can usually optimize away the
virtual call and just call the correct member function.  In this case the logic
for calling the correct member function for that optimization is incorrect, but
virtual calls still work correctly.


[Bug tree-optimization/47265] [4.6 Regression] Error: SSA name in freelist but still referenced

2011-01-12 Thread matz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47265

Michael Matz matz at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED

--- Comment #2 from Michael Matz matz at gcc dot gnu.org 2011-01-12 17:20:00 
UTC ---
The underlying problem is that tree-ssa-forwprop.c recursively calls itself
on the same statement, updating it in the process.  That destroys the 
imm_use iterator for the outer iteration, making us miss on imm-use.
The definition then is removed (under the assumption that all imm-uses
are changed), leaving a stale reference to an SSA name in the free list.

In detail here's what happens, the situation at first:

  src_2 = s_1(D)-b;
  src_20 = src_2 + 1;
  src_19 = [cond_expr] iftmp.0_11 != 0 ? src_20 : src_2;

forward_propagate_addr_expr (src_2) iterates over the imm-uses of src_2.
(1)
The first is the def of src_20, which itself is a pointer addition.
forward_propagate_addr_expr_1 happily tries to look through that one
calling forward_propagate_addr_expr recursively on src_20.  The imm-use
list of src_20 also contains statement src_19, which is now updated via
update_stmt.  Unfortunately that will clobber the iterator at (1)
to not contain the src_19 statement anymore.  So when returning the
outer loop on imm-uses(src_2) will now exit as if all imm-uses were
handled.

Caller will remove def(src_2), leaving us with:

  src_20 = MEM[(void *)s_1(D) + 4B];
  src_19 = [cond_expr] iftmp.0_11 != 0 ? src_20 : src_2;

Boom.  Triggered by my patch perhaps, but latent problem.

The underlying problem is statements that can be reached over multiple
distinct paths of def-use chains.

I'll experiment with totally removing the recursion, it possibly isn't
necessary anymore since MEMREF because looking through type-casts and
the like isn't necessary.  And of course as this one shows it's simply
not correct to recurse on forward_propagate_addr_expr, at least as long
as the destination statement has more than one operand


[Bug c/47271] New: gcc-4.6 -O1 -ftree-vectorize removes a test (if), the function generates invalid outputs

2011-01-12 Thread victor.stinner at haypocalc dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47271

   Summary: gcc-4.6 -O1 -ftree-vectorize removes a test (if), the
function generates invalid outputs
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: critical
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: victor.stin...@haypocalc.com


I tried to compile Python 3.2 (r87949) with gcc (version 4.6.0 20100908) on
AMD64: Python does fail with an assertion error or another strange crash. The
problem comes from a loop in Python/peephole.c. Compiled with -O1, it works
fine. Compiled with -O1 -ftree-vectorize, the functions generates strange
(invalid) outputs.

gcc-4.6 -O1:
-
0x00480991 +5041:  mov%eax,%edx
0x00480993 +5043:  sub%esi,%edx
0x00480995 +5045:  mov%edx,(%r12,%rax,4)
0x00480999 +5049:  movzbl 0x0(%rbp,%rax,1),%edx
0x0048099e +5054:  cmp$0x9,%dl
0x004809a1 +5057:  jne0x4809a8 PyCode_Optimize+5064
0x004809a3 +5059:  add$0x1,%esi
0x004809a6 +5062:  jmp0x4809b2 PyCode_Optimize+5074
0x004809a8 +5064:  mov$0x3,%ecx
0x004809ad +5069:  cmp$0x59,%dl
0x004809b0 +5072:  ja 0x4809b7 PyCode_Optimize+5079
0x004809b2 +5074:  mov$0x1,%ecx
0x004809b7 +5079:  add%rcx,%rax
0x004809ba +5082:  cmp%rax,%rdi
0x004809bd +5085:  jg 0x480991 PyCode_Optimize+5041
-

gcc-4.6 -O1 -ftree-vectorize
-
0x00480991 +5041:  mov%eax,%ecx
0x00480993 +5043:  sub%edx,%ecx
0x00480995 +5045:  mov%ecx,(%r12,%rax,4)
0x00480999 +5049:  movzbl 0x0(%rbp,%rax,1),%ecx
0x0048099e +5054:  lea0x1(%rdx),%esi
0x004809a1 +5057:  cmp$0x9,%cl
0x004809a4 +5060:  cmovne %edx,%esi
0x004809a7 +5063:  cmove  %esi,%edx
0x004809aa +5066:  setne  %cl
0x004809ad +5069:  movzbl %cl,%ecx
0x004809b0 +5072:  lea0x1(%rax,%rcx,2),%rax
0x004809b5 +5077:  cmp%rax,%rdi
0x004809b8 +5080:  jg 0x480991 PyCode_Optimize+5041
-

Extract of the correct output (-O1):

addrmap[0]=0
addrmap[3]=3
addrmap[4]=4
addrmap[7]=7
addrmap[10]=10
addrmap[13]=13
addrmap[16]=16
addrmap[19]=19
addrmap[22]=22
addrmap[23]=22


With -O1 -ftree-vectorize, only addrmap[0] and addrmap[3] are correct:

addrmap[0]=0
addrmap[3]=3
addrmap[4]=0
addrmap[7]=32767
addrmap[10]=16777216
addrmap[13]=0
addrmap[16]=469314288
addrmap[19]=32767
addrmap[22]=469315151
addrmap[23]=32767


See also:
http://bugs.python.org/issue9880

My setup:
 * Intel(R) Pentium(R) 4 CPU 3.00GHz
 * Debian Sid
 * gcc (Debian 20110106-1) 4.6.0 20110106 (experimental) [trunk revision
168538] 
 * Python 3.2 (r87949)


[Bug c/47271] gcc-4.6 -O1 -ftree-vectorize removes a test (if), the function generates invalid outputs

2011-01-12 Thread victor.stinner at haypocalc dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47271

--- Comment #1 from Victor Stinner victor.stinner at haypocalc dot com 
2011-01-12 18:54:32 UTC ---
Created attachment 22951
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22951
Example to reproduce the bug


[Bug c++/46941] [trans-mem] new/delete operator are unsafe

2011-01-12 Thread aldyh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46941

Aldy Hernandez aldyh at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED

--- Comment #6 from Aldy Hernandez aldyh at gcc dot gnu.org 2011-01-12 
19:03:53 UTC ---
Fixed
http://gcc.gnu.org/ml/gcc-patches/2011-01/msg00776.html


[Bug tree-optimization/47271] gcc-4.6 -O1 -ftree-vectorize removes a test (if), the function generates invalid outputs

2011-01-12 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47271

--- Comment #2 from H.J. Lu hjl.tools at gmail dot com 2011-01-12 19:42:38 
UTC ---
It is caused by revision 160030:

http://gcc.gnu.org/ml/gcc-cvs/2010-05/msg01089.html


[Bug tree-optimization/47271] gcc-4.6 -O1 -ftree-vectorize removes a test (if), the function generates invalid outputs

2011-01-12 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47271

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 CC||spop at gcc dot gnu.org
   Target Milestone|--- |4.6.0


[Bug fortran/47240] [F03] segfault with procedure pointer component

2011-01-12 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47240

--- Comment #9 from janus at gcc dot gnu.org 2011-01-12 20:00:37 UTC ---
(In reply to comment #8)
 [macbook] f90/bug% gfc -O2 pr35971_red.f90
 pr35971_red.f90: In function 'gp':
 pr35971_red.f90:67:0: error: non-trivial conversion at assignment
 void (*T64) (void)
 void (*T49d) (struct array1_unknown , integer(kind=4), struct
 array1_integer(kind=4)  restrict)
 __result_gp_72 = make_mess;
 
 pr35971_red.f90:67:0: internal compiler error: verify_stmts failed

sorry, I can not reproduce this at r168655 (plus patch from comment #7), at
least not on x86_64-unknown-linux-gnu. Do you only get this error with the
patch, or also with a clean trunk? I would expect that my patch should not have
any impact on your test case ...


[Bug target/47272] New: In addition to the bug uncovered in 42751, gcc can't bootstrap using --with-cpu=power7

2011-01-12 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47272

   Summary: In addition to the bug uncovered in 42751, gcc can't
bootstrap using --with-cpu=power7
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: target
AssignedTo: meiss...@gcc.gnu.org
ReportedBy: meiss...@gcc.gnu.org
CC: berg...@vnet.ibm.com
Depends on: 42751
  Host: powerpc64-linux
Target: powerpc64-linux
 Build: powerpc64-linux


The VSX support changed to use the VSX form of the instruction if both VSX and
Altivec forms existed.  Unfortunately, there are differences between the
Altivec memory references instructions (LVX/STVX) and the VSX memory reference
instructions (LXVW4X/STXVW4X).  In particular, the Altivec memory instructions
ignore the bottom 3 bits of the address field, and the VSX instructions do not.
 The altivec code in libcpp/lex.c was coded such that it knew about ignoring
the bottom 3 bits of the load.

Thus we should modify __builtin_vec_ld and __builtin_vec_st to use the Altivec
versions of the instructions, and provide other builtins that can use either
the altivec or VSX memory instructions, depending on the switches used.

In addition, during testing, I discovered that __builtin_vec_ld and
__builtin_vec_st don't support the vector double and vector long long types
added with VSX.


[Bug fortran/47240] [F03] segfault with procedure pointer component

2011-01-12 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47240

--- Comment #10 from Dominique d'Humieres dominiq at lps dot ens.fr 
2011-01-12 20:59:31 UTC ---
 sorry, I can not reproduce this at r168655 (plus patch from comment #7), at
 least not on x86_64-unknown-linux-gnu. Do you only get this error with the
 patch, or also with a clean trunk? I would expect that my patch should not 
 have
 any impact on your test case ...

I am rebuilding a clean tree with only the following patch


diff -up ../_clean/gcc/fortran/resolve.c gcc/fortran/resolve.c
--- ../_clean/gcc/fortran/resolve.c2011-01-09 22:13:56.0 +0100
+++ gcc/fortran/resolve.c2011-01-12 21:49:39.0 +0100
@@ -4858,6 +4858,9 @@ expression_rank (gfc_expr *e)

   for (ref = e-ref; ref; ref = ref-next)
 {
+  if (ref-type == REF_COMPONENT  !ref-next)
+rank = ref-u.c.component-as ? ref-u.c.component-as-rank : 0;
+
   if (ref-type != REF_ARRAY)
 continue;

diff -up ../_clean/gcc/fortran/trans-expr.c gcc/fortran/trans-expr.c
--- ../_clean/gcc/fortran/trans-expr.c2011-01-08 20:18:07.0 +0100
+++ gcc/fortran/trans-expr.c2011-01-12 21:49:39.0 +0100
@@ -3044,7 +3044,8 @@ gfc_conv_procedure_call (gfc_se * se, gf
   || (fsym-attr.proc_pointer
!(e-expr_type == EXPR_VARIABLE
e-symtree-n.sym-attr.dummy))
-  || (e-expr_type == EXPR_VARIABLE
+  || (fsym-attr.proc_pointer
+   e-expr_type == EXPR_VARIABLE
gfc_is_proc_ptr_comp (e, NULL))
   || fsym-attr.allocatable))
 {

(your patch for trans-expr.c does not apply cleanly with a copypast from
safari, so I hope I got it right).


[Bug bootstrap/47147] gcc 4.6 fails to compile on NetBSD

2011-01-12 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47147

--- Comment #5 from Jonathan Wakely redi at gcc dot gnu.org 2011-01-12 
21:17:35 UTC ---
Created attachment 22952
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22952
preprocessed source

configured with 
../gcc-4.6-20110108/configure --prefix=/home/redi/work/sandbox
--disable-libgomp --disable-bootstrap --disable-multilib
on netbsd-current

build fails in libstdc++-v3/libsupc++ with these errors:

In file included from
../../../../gcc-4.6-20110108/libstdc++-v3/libsupc++/tinfo.h:31:0,
 from
../../../../gcc-4.6-20110108/libstdc++-v3/libsupc++/array_type_info.cc:25:
/disk/1/archive/tmp/redi/gcc-4.6-20110108/libstdc++-v3/libsupc++/cxxabi.h:70:17:
error: 'size_t' was not declared in this scope
/disk/1/archive/tmp/redi/gcc-4.6-20110108/libstdc++-v3/libsupc++/cxxabi.h:70:17:
note: suggested alternative:
/disk/1/archive/tmp/redi/objdir-4.6-20110108/x86_64-unknown-netbsd5.99.43/libstdc++-v3/include/x86_64-unknown-netbsd5.99.43/bits/c++config.h:88:26:
note:   'std::size_t'

preprocessed source attached

I'll look into it more later and try a build without --disable-boostrap too ...


[Bug objc/47231] Commas inside ObjC method invocation can confuse compiler

2011-01-12 Thread nicola at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47231

Nicola Pero nicola at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.01.12 21:21:12
 Ever Confirmed|0   |1
  Known to fail||4.6.0

--- Comment #1 from Nicola Pero nicola at gcc dot gnu.org 2011-01-12 21:21:12 
UTC ---
Yes, confirmed with gcc version 4.6.0 20110112 (experimental) (GCC).

Thanks


[Bug tree-optimization/47271] [4.6 Regression] if-conversion removes a test (if), the function generates invalid outputs

2011-01-12 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47271

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||wrong-code
   Priority|P3  |P1
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.01.12 21:34:17
Summary|gcc-4.6 -O1 |[4.6 Regression]
   |-ftree-vectorize removes a  |if-conversion removes a
   |test (if), the function |test (if), the function
   |generates invalid outputs   |generates invalid outputs
 Ever Confirmed|0   |1

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2011-01-12 
21:34:17 UTC ---
Confirmed.


[Bug bootstrap/47147] gcc 4.6 fails to compile on NetBSD

2011-01-12 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47147

--- Comment #6 from Jonathan Wakely redi at gcc dot gnu.org 2011-01-12 
21:34:13 UTC ---
./gcc/include/stddef.h is being included, but it doesn't define size_t

machine/ansi.h has the header guard _X86_64_ANSI_H_ but it appears that gcc's
stddef.h is expecting _MACHINE_ANSI_H_


[Bug bootstrap/47147] gcc 4.6 fails to compile on NetBSD

2011-01-12 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47147

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|WAITING |NEW


[Bug fortran/47240] [F03] segfault with procedure pointer component

2011-01-12 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47240

--- Comment #11 from Tobias Burnus burnus at gcc dot gnu.org 2011-01-12 
21:49:23 UTC ---
(In reply to comment #9)
  pr35971_red.f90:67:0: internal compiler error: verify_stmts failed

I can reproduce this with a clean trunk on x86-64-linux with both -m32 and
-m64.

 I can not reproduce this at r168655 (plus patch from comment #7)

How do you configure gfortran? (I did a full bootstrap and did *not* use
--enable-checking=release.)

 * * *

Regarding the test case: I think it is invalid:

  function aux(x)
 interface
subroutine x() bind(C)
end subroutine x
 end interface

but you pass as actual argument the function (!) make_mess which take also
arguments to aux. (In get_funloc everything is still fine - the actual
argument has the proper type: abstract_fun.)

I believe that the argument mismatch is invalid. And the compiler has no chance
to detect this at (front-end) compile time as you use a dummy external y
instead of the explicit interface of aux.

Like always: A compiler can tolerate to a certain extend argument mismatches -
but especially with higher optimization values, it trusts the user that (s)he
knows what he is doing - and that (s)he stays within what the standard allows.
(The same is true for alias analysis.)


[Bug target/47272] GCC can't bootstrap on powerpc64-linx using --with-cpu=power7

2011-01-12 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47272

Michael Meissner meissner at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011.01.12 21:53:09
 Ever Confirmed|0   |1


[Bug target/47272] GCC can't bootstrap on powerpc64-linx using --with-cpu=power7

2011-01-12 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47272

--- Comment #1 from Michael Meissner meissner at gcc dot gnu.org 2011-01-12 
21:54:25 UTC ---
Note, the fixes for 47251 will be needed in addition to changes for this bug in
order to do a full bootstrap on a power7 system using the --with-cpu=power7
configure option.


[Bug fortran/47240] [F03] segfault with procedure pointer component

2011-01-12 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47240

--- Comment #12 from Dominique d'Humieres dominiq at lps dot ens.fr 
2011-01-12 22:18:35 UTC ---
 I can reproduce this with a clean trunk on x86-64-linux with both -m32 and
 -m64.

I confirm that the ICE is not due to the patch.

 Regarding the test case: I think it is invalid:

I have never said that it was valid (it is not mine and you have probably
recognized the style!-). Nevertheless there was no ICE at revision 168625 (I
saw it at revision 168653) and even invalid codes should not give ICE.


  1   2   >