Re: role of dump_file notably for/in plugins?

2011-09-01 Thread Pierre Vittet
Hello,

>From what I understand, the question is not really how do we dump passes
but what a pass (from a plugin or not) should dump? So the question is
what do you expect from a dump file?

Do you expect to have the full internal representation of the code after
the end of the pass? For many dump files, we just get this (lower,cfg,
ssa...).
Or do you expect something more oriented on what the pass did? Like
"this pass remove three unreable basicblocks, they were located here,
here and here"?

Maybe there is no particular rules and it just depends of the pass.
However I guess there should some clear rules about this. Dump files can
be quite useful to understand the compiler behavior (sometimes it is a
huge task to search using the debugger).

Thanks.

Pierre Vittet


gcc-4.5-20110901 is now available

2011-09-01 Thread gccadmin
Snapshot gcc-4.5-20110901 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.5-20110901/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.5 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/branches/gcc-4_5-branch 
revision 178427

You'll find:

 gcc-4.5-20110901.tar.bz2 Complete GCC

  MD5=c1e222654db6e193ef65953ee02d
  SHA1=855f49dd368949a49f4f2fe3544ec72566f3a4ca

Diffs from 4.5-20110825 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.5
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.


Wanted gcov literate person for reviewer

2011-09-01 Thread Joel Sherrill

Hi,

RTEMS is participating in the ESA Summer of
Code in Space.  We have a student who is
enhancing the RTEMS coverage tool[1] to produce
gcno files.  Is there someone who feels
competent in this area who could help review
and guide this student?

I expect this will be a light duty activity.

Thanks.

[1] covoar takes as input whatever trace or
coverage file is available -- usually from
CPU simulators.  This information is at the
level of address executed or branch taken/not
taken. It can merge multiple program runs.
It produces a variety of reports but the focus
is on which code ranges are not executed and
which branches were not fully executed.
The reports correlate the assembly language
with source code.  For example,
reports for the sparc/erc32 are at

http://www.rtems.org/ftp/pub/rtems/people/joel/coverage/erc32/erc32.html

--
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




Is VRP is too conservative to identify boolean value 0 and 1?

2011-09-01 Thread Jiangning Liu
Hi,

For the following small case,

int f(int i, int j)
{
if (i==1 && j==2)
return i;
else
return j;
}

with -O2 option, GCC has vrp2 dump like below,

==

Value ranges after VRP:

i_1: VARYING
i_2(D): VARYING
D.1249_3: [0, +INF]
j_4(D): VARYING
D.1250_5: [0, +INF]
D.1251_6: [0, +INF]
j_10: [2, 2]  EQUIVALENCES: { j_4(D) } (1 elements)


Removing basic block 3
f (int i, int j)
{
  _Bool D.1251;
  _Bool D.1250;
  _Bool D.1249;

:
  D.1249_3 = i_2(D) == 1;
  D.1250_5 = j_4(D) == 2;
  D.1251_6 = D.1250_5 & D.1249_3;
  if (D.1251_6 != 0)
goto ;
  else
goto ;

:

:
  # i_1 = PHI <1(3), j_4(D)(2)>
  return i_1;

}



Variable D.1249_3, D.1250_5 and D.1251_6 should be boolean values, so the
their value ranges should be

D.1249_3: [0, 1]
D.1250_5: [0, 1]
D.1251_6: [0, 1]

So why current VRP can't find out this value range?

I'm asking this question because the optimizations in back-end need this
info to do advanced optimization.

Thanks,
-Jiangning




Re: Is VRP is too conservative to identify boolean value 0 and 1?

2011-09-01 Thread Andrew Pinski
On Thu, Sep 1, 2011 at 10:58 PM, Jiangning Liu  wrote:
> D.1249_3: [0, 1]
> D.1250_5: [0, 1]
> D.1251_6: [0, 1]

Those are equivalent to [0, MAX] as _Bool only has two different
values, 0 and 1 (MAX).  Can you explain more about the optimization
which you are working on that needs the ranges as (int)[0,1] rather
than (_Bool)[0,MAX] ?

Thanks,
Andrew Pinski