Re: [RFC] Confusing fall through BB pc in conditional jump

2019-06-28 Thread Segher Boessenkool
Hi Kewen,

On Fri, Jun 28, 2019 at 09:56:58AM +0800, Kewen.Lin wrote:
> > It's probably a good idea to spend a line on this even in slim mode, it's
> > really easy to miss and get confused and waste time without it.  Nice :-)
> > 
> >> The dumping will look like:
> >> 6: NOTE_INSN_BASIC_BLOCK 2
> >>...
> >>12: r135:CC=cmp(r122:DI,0)
> >>13: pc={(r135:CC!=0)?L52:pc}
> >>   REG_DEAD r135:CC
> >>   REG_BR_PROB 1041558836
> >> ;;  pc (fall through) -> L67
> >>31: L31:
> >>17: NOTE_INSN_BASIC_BLOCK 3
> > 
> > I think it should say the BB number it falls through to.  Is the label
> > number (insn number) useful?  Maybe the BB number isn't always printed
> > in slim dumps?
> 
> OK, to use the label was meant to keep the same as what we print for jump
> targets of jump insn.  Yes, I think it's better to use BB number.
> I think we can get the BB number from NOTE_INSN_BASIC_BLOCK now, it's 
> always printed in slim dumps.

Ah cool.  I don't often look at "normal" slim dumps, sorry if some things
I said were more confusing than helpful :-)  (I see the thing combine
prints at the start of the dump a lot, but that skips all non-insns.  I
should change that to make BB boundaries visible, it's pretty crucial for
combine :-) )

> > Maybe slim dumps should always spend a line on showing basic block
> > boundaries?  Something visual like maybe
> > ; --
> > or
> > ; BB 456 --
> > or
> > ;  falls through to BB 123
> > or
> > ;  falls through to BB 123
> > ; BB 456 --
> > 
> 
> It seems the current NOTE_INSN_BASIC_BLOCK is enough for the beginning?

Yes, you are right.  That note itself is probably enough to make it obvious
there is a BB boundary, when skimming a dump.

> > I don't use slim dumps much, they lose too much information, but maybe
> > that can be fixed :-)
> 
> OK, since I haven't got used to lisp format, the slim seems more 
> understandable to me.  If it's not used too much, maybe this confusion 
> and possible improvement is too trivial.  :)

Slim dumps are much more compact, so you can do some things with it that
you cannot with "full" dumps.  But they miss just a little bit *too* much
information; your patch helps to fix that.  I'm all for it :-)


[ Unrelated...  One of my biggest problems with slim dumps...  subregs...
  If it says

r128:CC=cmp(r124:DI#4,0)

  then in what mode is the compare actually done?  Now because I know what
  target this is in which configuration, the #4 is a good hint it is SImode,
  but what if it was LE so it would say #0?  And for some ops you really
  cannot guess at all, say when picking apart a register. ]


Segher


Re: [AArch64 ELF ABI] Vector calls and lazy binding on AArch64

2019-06-28 Thread Szabolcs Nagy
On 22/05/2019 15:42, Szabolcs Nagy wrote:
> [AAELF64]: ELF for the Arm 64-bit Architecture (AArch64)
>https://developer.arm.com/docs/ihi0056/latest
> [VABI64]:  Vector Function ABI Specification for AArch64
>
> https://developer.arm.com/tools-and-software/server-and-hpc/arm-architecture-tools/arm-compiler-for-hpc/vector-function-abi

the new ABI has been published with minor wording changes
compared to the draft version.

the ABI is implemented in gcc, binutils and glibc in a
series of patches listed below.


gcc:

commit 779640c76d37b32f4d8a7b97637ed9e345d750b4
Commit: nsz 
CommitDate: 2019-06-03 13:50:53 +

aarch64: emit .variant_pcs for aarch64_vector_pcs symbol references
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271869 
138bc75d-0d04-0410-961f-82ee72b054a4

commit d403a7711c2cf9a7a4892d76b875a1c99a690f89
Commit: nsz 
CommitDate: 2019-06-04 16:16:52 +

aarch64: fix asm visibility for extern symbols
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271913 
138bc75d-0d04-0410-961f-82ee72b054a4

commit 042371f341a956de8c76557df700ebdc1af9ab4f
Commit: nsz 
CommitDate: 2019-06-18 11:11:07 +

aarch64: fix gcc.target/aarch64/pcs_attribute-2.c on non-gnu targets
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272414 
138bc75d-0d04-0410-961f-82ee72b054a4


binutils:

commit 2301ed1c9af1316b4bad3747d2b03f7d44940f87
Commit: Szabolcs Nagy 
CommitDate: 2019-05-24 15:05:57 +0100

aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS

commit f166ae0188dcb89c5ae925034260a708a254ab2f
Commit: Szabolcs Nagy 
CommitDate: 2019-05-24 15:07:42 +0100

aarch64: handle .variant_pcs directive in gas

commit 0b4eac57c44ec4c9e13f5201b40936c3b3e6c639
Commit: Szabolcs Nagy 
CommitDate: 2019-05-24 15:09:06 +0100

aarch64: override default elf .set handling in gas

commit 823710d5856996d1f54f04ecb2f7647aeae99b5b
Commit: Szabolcs Nagy 
CommitDate: 2019-05-24 15:11:00 +0100

aarch64: handle STO_AARCH64_VARIANT_PCS in bfd

commit 65f381e729bedb933f3e1376e7f53f0ff63ac9a8
Commit: Szabolcs Nagy 
CommitDate: 2019-05-28 12:03:51 +0100

aarch64: fix variant_pcs ld tests


glibc:

commit 55f82d328d2dd1c7c13c1992f4b9bf9c95b57551
Commit: Szabolcs Nagy 
CommitDate: 2019-06-13 09:44:44 +0100

aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS

commit 82bc69c012838a381c4167c156a06f4598f34227
Commit: Szabolcs Nagy 
CommitDate: 2019-06-13 09:45:00 +0100

aarch64: handle STO_AARCH64_VARIANT_PCS



Threadsafe Garbage Collection allocation

2019-06-28 Thread Giuliano Belinassi
Hi,

***
Question: What are all the possible ways to allocate and deallocate memory
through the Garbage Collector?
***

Context: I am parallelizing GCC internals and I am facing problems with the GCC
Garbage Collector, and therefore I need to make it threadsafe to continue with
the project.

Currently, I want to do a palliative solution to this, which is locking a mutex
every time a chunk of memory is allocated or deallocated. For this, I need to
know all the possibilities to allocate and deallocate memory and lock/unlock
the mutex there.

As far as I have seen, there are the macros XALLOC, XNEW, XNEWVEC... defined in
libiberty.h which are called everywhere in GCC, but I don't know if these are
the only ways to allocate memory in GCC through the Garbage Collector.

Thank you for your support,
Giuliano.


Re: Threadsafe Garbage Collection allocation

2019-06-28 Thread Jeff Law
On 6/28/19 2:48 PM, Giuliano Belinassi wrote:
> Hi,
> 
> ***
> Question: What are all the possible ways to allocate and deallocate memory
> through the Garbage Collector?
> ***
> 
> Context: I am parallelizing GCC internals and I am facing problems with the 
> GCC
> Garbage Collector, and therefore I need to make it threadsafe to continue with
> the project.
> 
> Currently, I want to do a palliative solution to this, which is locking a 
> mutex
> every time a chunk of memory is allocated or deallocated. For this, I need to
> know all the possibilities to allocate and deallocate memory and lock/unlock
> the mutex there.
> 
> As far as I have seen, there are the macros XALLOC, XNEW, XNEWVEC... defined 
> in
> libiberty.h which are called everywhere in GCC, but I don't know if these are
> the only ways to allocate memory in GCC through the Garbage Collector.
Those allocate via malloc, not the GC system.

ggc_alloc is where you want to be looking.

jeff


gcc-8-20190628 is now available

2019-06-28 Thread gccadmin
Snapshot gcc-8-20190628 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/8-20190628/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 8 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/branches/gcc-8-branch 
revision 272801

You'll find:

 gcc-8-20190628.tar.xzComplete GCC

  SHA256=5b1a5a543dffb9900784691eae85f8a8b17730097d92e9920291ffbe20ed4bbd
  SHA1=2b68ef3dd0e97549e4baa629ff73b2af98de544a

Diffs from 8-20190621 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-8
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.


Re: Threadsafe Garbage Collection allocation

2019-06-28 Thread Richard Biener
On June 28, 2019 10:48:51 PM GMT+02:00, Giuliano Belinassi 
 wrote:
>Hi,
>
>***
>Question: What are all the possible ways to allocate and deallocate
>memory
>through the Garbage Collector?
>***
>
>Context: I am parallelizing GCC internals and I am facing problems with
>the GCC
>Garbage Collector, and therefore I need to make it threadsafe to
>continue with
>the project.
>
>Currently, I want to do a palliative solution to this, which is locking
>a mutex
>every time a chunk of memory is allocated or deallocated. For this, I
>need to
>know all the possibilities to allocate and deallocate memory and
>lock/unlock
>the mutex there.
>
>As far as I have seen, there are the macros XALLOC, XNEW, XNEWVEC...
>defined in
>libiberty.h which are called everywhere in GCC, but I don't know if
>these are
>the only ways to allocate memory in GCC through the Garbage Collector.

GC allocation will eventually call ggc_alloc_internal and manual freeing 
ggc_free. Collection goes via ggc_collect and is done only at specific points 
triggered from the pass manager. 

Richard. 

>Thank you for your support,
>Giuliano.