On 07/25/2017 01:55 PM, Richard Biener wrote:
> On Tue, Jul 11, 2017 at 4:35 PM, Martin Liška <mli...@suse.cz> wrote:
>> Hi.
>>
>> There's a small follow-up with remaining occurrences:
>>
>> 1) dwarf2out.c:
>>
>>  20213      origin_die = lookup_type_die (origin);
>>  20214    else if (TREE_CODE (origin) == BLOCK)
>>  20215      origin_die = BLOCK_DIE (origin);
>>  20216
>>  20217    /* XXX: Functions that are never lowered don't always have correct
>> block
>>  20218       trees (in the case of java, they simply have no block tree, in
>> some other
>>  20219       languages).  For these functions, there is nothing we can
>> really do to
>>  20220       output correct debug info for inlined functions in all cases.
>> Rather
>>  20221       than die, we'll just produce deficient debug info now, in that
>> we will
>>  20222       have variables without a proper abstract origin.  In the
>> future, when all
>>  20223       functions are lowered, we should re-add a gcc_assert
>> (origin_die)
>>
>> Probably Jakub can help with that?
> 
> Can you check whether all-language bootstrap passes with the suggested
> gcc_assert?

No, following simple test-case can break it:

$ cat ice.i
__attribute__ ((__always_inline__)) int a ()
{
  int b = 0;
}
void
c ()
{
  a ();
}

Thus maybe a small adjustment of the comment can be done.

> 
>> 2) fold-const.c:
>>
>>   1882    /* The following code implements the floating point to integer
>>   1883       conversion rules required by the Java Language Specification,
>>   1884       that IEEE NaNs are mapped to zero and values that overflow
>>   1885       the target precision saturate, i.e. values greater than
>>   1886       INT_MAX are mapped to INT_MAX, and values less than INT_MIN
>>   1887       are mapped to INT_MIN.  These semantics are allowed by the
>>   1888       C and C++ standards that simply state that the behavior of
>>   1889       FP-to-integer conversion is unspecified upon overflow.  */
>>   1890
>>   1891    wide_int val;
>>   1892    REAL_VALUE_TYPE r;
>>   1893    REAL_VALUE_TYPE x = TREE_REAL_CST (arg1);
>>
>> Can we somehow remove that Richi?
> 
> Remove what?  The comment?  It still matches the code and we have to
> do sth.  So I don't see why we should change this.

Yep, I just mean comment which says that we do such transformation just
because of Java. Which is probably not true I guess.

> 
> Maybe Joseph knows whether future standards / TRs recommend sth different
> or exactly this.
> 
>>
>> 3) gimplify.c:
>>
>>   2771       Java requires that we elaborated nodes in source order.  That
>>   2772       means we must gimplify the inner expression followed by each of
>>   2773       the indices, in order.  But we can't gimplify the inner
>>   2774       expression until we deal with any variable bounds, sizes, or
>>   2775       positions in order to deal with PLACEHOLDER_EXPRs.
>>   2776
>>   2777       So we do this in three steps.  First we deal with the
>> annotations
>>   2778       for any variables in the components, then we gimplify the base,
>>   2779       then we gimplify any indices, from left to right.  */
>>   2780    for (i = expr_stack.length () - 1; i >= 0; i--)
>>
>> Richi?
> 
> Just change the comment to "We elaborate nodes in source order. [...]"
> 
>> 4) tree.c:
>>
>>  13535    if (RECORD_OR_UNION_TYPE_P (t) && TYPE_BINFO (t) && TYPE_BINFO
>> (tv)
>>  13536        && TYPE_BINFO (t) != TYPE_BINFO (tv)
>>  13537        /* FIXME: Java sometimes keep dump TYPE_BINFOs on variant
>> types.
>>  13538           Since there is no cheap way to tell C++/Java type w/o LTO,
>> do checking
>>  13539           at LTO time only.  */
>>  13540        && (in_lto_p && odr_type_p (t)))
>>  13541      {
>>  13542        error ("type variant has different TYPE_BINFO");
>>  13543        debug_tree (tv);
>>  13544        error ("type variant's TYPE_BINFO");
>>  13545        debug_tree (TYPE_BINFO (tv));
>>  13546        error ("type's TYPE_BINFO");
>>  13547        debug_tree (TYPE_BINFO (t));
>>  13548        return false;
>>
>> Can we Honza remove that?
> 
> Try it? (remove in_lto_p &&)
> 
>> Thanks,
>> Martin

For the rest, I've been testing patch.

Martin

Reply via email to