he attached patch would be sufficient. What do you think?
PR target/50354
* config/sparc/linux64.h (TARGET_DEFAULT): Only override if the default
processor is at least V9 and TARGET_64BIT_DEFAULT is defined.
--
Eric Botcazou
Ind
totally harmless.
--
Eric Botcazou
E_INT); mode != VOIDmode;
mode = GET_MODE_WIDER_MODE (mode))
if (GET_MODE_PRECISION (mode) >= bitsize)
break;
if (mode != VOIDmode && GET_MODE_PRECISION (mode) > maxbitsize)
mode = VOIDmode;
if (mode == VOIDmode)
...
--
Eric Botcazou
This is in preparation for the upcoming implementation change. This removes
useless code, modernizes obsolete idioms and makes things more explicit.
Tested on i586-suse-linux, applied on the mainline.
2012-03-09 Eric Botcazou
* gcc-interface/ada-tree.h (TYPE_VAX_FLOATING_POINT_P
kewise.
(gnat_to_gnu) : Likewise.
* gcc-interface/utils.c (shift_unc_components_for_thin_pointers): Kill.
(convert_to_fat_pointer): Adjust handling of thin pointers.
(convert) : Likewise.
* gcc-interface/utils2.c (build_unary_op) : Likewise.
--
Eric Botcazou
Inde
> I'd say that alias.c when processing non-debug insn content should just
> ignore any cselib locs which have DEBUG_INSN_P setting_insn.
That wouldn't work though, as promote_debug_loc overwrites setting_insn.
--
Eric Botcazou
s present only with -g and its location promoted.
--
Eric Botcazou
fication in expand_field_assignment() may call back to
+ get_last_value(), so set safe guard here. */
+ subst_low_luid = DF_INSN_LUID (insn);
No () in comments, just use the function name.
--
Eric Botcazou
akes more sense than GET_MODE_PRECISION here.
--
Eric Botcazou
> Thanks. That seems to get me into Ada bootstrap land together with
> the following two patches applied (but not when I apply only the
> first patch due to the stale TREE_OVERFLOW bits on type/decl sizes).
You're welcome. Let me give them a whirl...
--
Eric Botcazou
rvative with this stuff.
--
Eric Botcazou
> For google/gcc-4_6 branch. (To be submitted for trunk soon.)
The option name sounds like the brainchild of the marketing department. :-)
Can we avoid going nuclear in the compiler and use something more mundane?
--
Eric Botcazou
> I, for one, welcome our new nuclear overlords.
AFAICS the internal switch is called dwarf_split_debug_info so a short moniker
based on it would be more understandable (and avoid a useless pomposity).
--
Eric Botcazou
ee *n_elts, int fncode, tree inner_type,
tree cst0, tree cst1)
--
Eric Botcazou
t.dg/pack16.adb
gnat.dg/pack16_pkg.ads
gnat.dg/specs/pack7.ads
in the testsuite.
--
Eric Botcazou
-- { dg-do compile }
-- { dg-options "-gnatws" }
with Pack16_Pkg; use Pack16_Pkg;
procedure Pack16 is
type Sample_Table_T is array (1 .. N) of Integer;
type Clock_T is r
ast try a bootstrap with the nframes = 2 code ripped out with
> Solaris 9 FCS libc and libthread (and of course the whole rest: latest
> Solaris 9, 10 and 11) and see if anything breaks.
To make things clear upfront: I'll oppose any change that removes something.
--
Eric Botcazou
sed to convey the "debug", so I think that -gsplit-dwarf is
the best proposal (and we already have -gstrict-dwarf for example). Thanks.
--
Eric Botcazou
set will
> be zero by construction? Or by simply not handling bitfields
> properly that start at a variable offset?
Computing the offset in stor-layout.c and storing it in DECL_INITIAL?
> The finish_bitfield_representative hunk implements the fix for 1.,
> the rest the proposed zero-by-construction solution for 2.
Thanks!
--
Eric Botcazou
it until after gimplification ? Then we could use DECL_INITIAL.
--
Eric Botcazou
's it, maybe we need to somehow mark debug-only locs in loc lists, and
> get some code other than VTA to skip the debug-only locs, or somethink like
> that.
Do you mean getting rid of the promotion-to-non-debug-location code?
--
Eric Botcazou
PEs is fine since they are
treated specially by the middle-end, in particular sign-extended. */
size_type_node = gnat_type_for_mode (Pmode, 1);
set_sizetype (size_type_node);
TYPE_NAME (sizetype) = get_identifier ("size_type");
--
Eric Botcazou
the
same setting in all languages would be even better than we used to have.
--
Eric Botcazou
> I am lost here. Which targets (with ptr_mode size != Pmode size !=
> sizetype size) are you referring to ?
Targets for which sizetype mode isn't necessarily equal to ptr_mode like VMS.
Up to GCC 4.6, sizetype was Pmode in Ada, but ptr_mode in C.
--
Eric Botcazou
> It does make sense to give the target control over the mode used for
> sizetype. Of course a global change of the default (for example to
> use Pmode as Ada did) will require testing each affected target,
> so I think it makes sense to keep the default as-is.
No disagreement here.
> Btw, we st
(for now) is a sensible option. Thanks.
--
Eric Botcazou
with Pack8_Pkg;
package Pack8 is
subtype Index_Type is Integer range 1 .. Pack8_Pkg.N;
subtype Str is String( Index_Type);
subtype Str2 is String (1 .. 11);
type Rec is record
S1 : Str;
S2 : Str;
B : Boolean;
uot;negative" offsets.
OK. The definitive fix would be to use ssizetype for offsets and restrict
sizetype to size calculations. Changing the precision would be a kludge.
--
Eric Botcazou
&toffset,
&mode, &unsignedp, &volatilep, false);
This is useless since unsignedp is always set (unlike volatilep).
Tested on i586-suse-linux, OK for the mainline?
2012-03-19 Eric Botcazou
* tree.def (REALPART_EXPR, IMAGPART_EXPR, VIEW_CONVERT_EXPR)
> Ok. I think volatilep should be always set as well.
Thanks. No strong opinion, but at least one caller (fold_truthop through
decode_field_reference) calls the function 4 times in a row and only checks
volatilep at the end to disable the transformation.
--
Eric Botcazou
i' or 'n', have '0' (rtx mem) in ix86_decompose_address,
at config/i386/i386.c:11522
Please submit a full bug report,
with preprocessed source if appropriate.
See mailto:rep...@adacore.com> for instructions.
make[3]: *** [_popcountsi2.o] Error 1
--
Eric Botcazou
and above.
Bootstrapped/regtested on IA-64/Linux, OK for the mainline? Do we also want it
for 4.7.1?
2012-03-21 Eric Botcazou
* config/ia64/unwind-ia64.c (uw_install_context): Manually save LC
if it hasn't been pr
n extract_bit_field_1.
Moreover you need to properly test it on a mainstream big-endian platform.
See http://gcc.gnu.org/contribute.html for a more complete reference.
--
Eric Botcazou
he first field in a
bitfield group starts on a byte boundary, which doesn't hold in Ada.
--
Eric Botcazou
-- { dg-do run }
procedure Pack17 is
type Bitmap_T is array (Natural range <>) of Boolean;
pragma Pack (Bitmap_T);
type Uint8 is range 0 .. 2 ** 8 - 1;
for Uint8'Siz
s is
probably indeed latent in GCC 4.7 as well.
--
Eric Botcazou
t make much sense but is in keeping with store_bit_field.
2. the GCC 4.8 approach where get_bit_range attempts to return a more correct
value, but is currently wrong (bitregion_start=11, bitregion_end=18) because
the representative of the bitfield is wrong. The real representative of the
bitfield is outside the record type.
--
Eric Botcazou
tfield group is entirely contained within a
single record type or we acknowledge that a bitfield group can cross a record
boundary.
--
Eric Botcazou
> Passes bootstrap and regression test powerpc64-linux.
Thanks a lot, Alan!
So, Aurelien, you only need to adjust the formatting of the patch and post a
ChangeLog entry along with it. TIA.
--
Eric Botcazou
An obvious pasto. Applied on the mainline.
2012-03-24 Eric Botcazou
PR target/52656
* config/sparc/sparc.c (sparc_handle_vis_mul8x16): Fix pasto.
--
Eric Botcazou
Index: config/sparc/sparc.c
===
--- config
We need to pass -Av8 to the assembler when -mcpu=leon is specified.
Applied on the mainline and 4.7 branch.
2012-03-24 Eric Botcazou
PR target/52610
* config/sparc/sparc.h (ASM_CPU_SPEC): Pass -Av8 if -mcpu=leon.
--
Eric Botcazou
Index: config/sparc/sparc.h
(GET_MODE (str_rtx)))
for no good reasons.
Bootstrapped/regtested on x86_64-suse-linux, applied on mainline as obvious.
2012-03-24 Eric Botcazou
* expr.c (optimize_bitfield_assignment_op) : Use str_mode
and str_bitsize instead of more convoluted expressions.
--
Eric Botcazou
Now that rest_of_record_type_compilation only deals with the generation of XVE
types, we can return early for types that don't need one.
Tested on i586-suse-linux, applied on the mainline.
2012-03-25 Eric Botcazou
* gcc-interface/utils.c (finish_record_type): Return earl
There is no need to generate both an XVS and an XVE type for the same record
type; we can limit ourselves to the XVS type, which is the simplest of the two
types.
Tested on i586-suse-linux, applied on the mainline.
2012-03-25 Eric Botcazou
* gcc-interface/utils.c
on i586-suse-linux, applied on the mainline and 4.7 branch.
2012-03-25 Eric Botcazou
* gcc-interface/decl.c (SS_MARK_NAME): New define.
(gnat_to_gnu_entity) : Prepend leaf attribute on entities
whose name is SS_MARK_NAME.
2012-03-25 Eric Botcazou
* gn
This has probably no effects in practice, but for the sake of consistency...
Tested on i586-suse-linux, applied on the mainline.
2012-03-25 Eric Botcazou
* gcc-interface/decl.c (gnat_to_gnu_entity) : Copy
the TYPE_PACKED flag from the base type.
--
Eric Botcazou
Index
s the latter.
OK, I think we should enter some sort of a degraded mode for these non-byte
aligned records, as they cannot occur in C/C++. I'll try to come up with
something.
--
Eric Botcazou
rd_layout. If DECL_FIELD_OFFSET doesn't change for the next fields,
DECL_OFFSET_ALIGN will very likely not either.
--
Eric Botcazou
confused with DECL_OFFSET_ALIGN being "relative".
DECL_ALIGN is supposed to be the absolute counterpart. I think we indeed can't
really in stor-layout, so the only place is very likely get_bit_range.
--
Eric Botcazou
* expmed.c (store_bit_field): Assert that BITREGION_START is a multiple
of a unit before computing the offset in units.
* expr.c (get_bit_range): Return the null range if the enclosing record
is part of a larger bit field.
--
Eric Botcazou
In
ld.
I don't think so, DECL_ALIGN of a field is probably honored only if TYPE_ALIGN
of the record is, and TYPE_ALIGN isn't honored for a bit field.
--
Eric Botcazou
ease branches as well?
2012-03-26 Eric Botcazou
PR rtl-optimization/52629
* reload1.c (count_pseudo): Short-circuit common case.
(count_spilled_pseudo): Return early for pseudos without hard regs.
Assert that the pseudo has got a hard reg before manipulating it
Fortunately this only occurs in Ada, which doesn't use the
very questionable C++ memory model (fingers crossed for the future. :-)
--
Eric Botcazou
oo expensive.
There are a lot of calls to get_inner_reference throughout the compiler though.
And it is cheap if you compare it with the 4.7 code, which essentially does the
same processing for _every_ field in the record (and even if the record object
isn't a handled_component_p).
--
Eric Botcazou
e);
>
> + /* In a perfect world, the following condition would be true.
> + Sadly, the Java and Go front ends emit assembly *from the front end*,
> + bypassing the call graph. See PR52739. Fix before GCC 4.8. */
There is no PR52739.
--
Eric Botcazou
> Btw, I put things in stor-layout.c exactly to allow a langhook
> eventually controlling things for the bitfield representative.
> Mind adding one that simply disables them completely for Ada?
> Or maybe, for selected record types, so that we do
>
> if (lang_hooks.types.lower_bitfield_layout (rl
for bitfields.
Understood. According to our internal testing, the issue we're discussing was
the last problem introduced by the bitfield change, and I think that using the
C/C++ model for C/C++-compatible bit fields is fine for GNAT.
May I apply the patch I posted? It boostrapped/regtested
hat branch (PR middle-end/50325). But it's up to the RMs, now CCed.
--
Eric Botcazou
> Bootstrapped/regtested on x86_64-suse-linux, applied on mainline. Should
> it be applied to the release branches as well?
>
>
> 2012-03-26 Eric Botcazou
>
> PR rtl-optimization/52629
> * reload1.c (count_pseudo): Short-circuit common case.
> (co
> With this patch a variable named "_Jv_CLS" is written out. The
> assembly before and after the patch is the same, except for the
> variable name. I want to write out a nameless variable but I don't
> know how.
Try tree_output_constant_def.
--
Eric Botcazou
> What's the impact of this bug? If it is a wrong-code or ice-on-valid
> bug then it's ok for the 4.7 branch.
Neither, it's an out-of-bounds memory access in reload1.c with apparently no
visible effects as it has been introduced with IRA (4.4 series).
--
Eric Botcazou
ch happens to also cover the optimistic
semantics used by local-pure-const.
Tested on x86_64-suse-linux, OK for mainline and 4.7 branch?
2012-03-28 Eric Botcazou
* tree-cfg.c (call_can_make_abnormal_goto): New predicate.
(stmt_can_make_abnormal_goto): Use it.
(is_
Hi,
another kind of bit fields supported in Ada are floating-point bit fields.
They work fine, except that varasm.c rejects static constants (CONSTRUCTORs)
containing them. The attached patch plugs this hole.
Tested on x86_64-suse-linux, OK for mainline?
2012-03-28 Eric Botcazou
Vector support has been seriously damaged in Ada since the re-implementation of
the VECTOR_CST node. This fixes crashes.
Tested on i586-suse-linux, applied on the mainline as obvious.
2012-03-28 Eric Botcazou
* tree.c (tree_size) : New case.
2012-03-28 Eric Botcazou
e assert by
> the following simple patch, bootstrapped and tested on x86_64-linux.
Please do that on the 4.7 branch as well if the assertion is incorrect.
--
Eric Botcazou
_UNIT;
yields the problematic big number.
It would therefore appear that bitstart and bitend need to be signed offsets,
at least until they are adjusted by store_bit_field.
--
Eric Botcazou
-- { dg-do run }
with Pack18_Pkg; use Pack18_Pkg;
procedure Pack18 is
use Pack18_Pkg.Attributes_Tables;
> > Please do that on the 4.7 branch as well if the assertion is incorrect.
>
> Done.
Thanks. I've now reverted the kludge I put for Ada because of it:
http://gcc.gnu.org/ml/gcc-patches/2012-03/msg01616.html
--
Eric Botcazou
d:
gcc/ChangeLog
* config/i386/mingw-w64.h: ...
gcc/cp/ChangeLog:
* decl.c: ...
gcc/testsuite/ChangeLog:
* g++.dg/ext/main.C: ...
--
Eric Botcazou
> Looks ok, given the other ugliness in this macro.
Thanks. There is another pending workaround for IA-64:
http://gcc.gnu.org/ml/gcc-patches/2012-03/msg00451.html
as well as an implementation of stack checking in the back-end:
http://gcc.gnu.org/ml/gcc-patches/2012-03/msg00452.html
--
E
work directly for XFmode on x86. Moreover the
precision seems to be the right property in this bit-field context.
Adjusted patch attached, tested on i586-suse-linux, OK for mainline?
--
Eric Botcazou
Index: varasm.c
===
--- varasm.c
set a flag for the first temp allocation, skip the set_mem_align call if
it is set and pass the type instead of the expression in the final call to
set_mem_attributes if it is set. And I'd handle the second temp allocation
independently and pass the type here too.
--
Eric Botcazou
get_bit_range (&bitregion_start, &bitregion_end, &offset, &bitpos, to);
so as to have a really non-negative bitregion_start/bitregion_end? It would
assert that offset is already non-null in that case.
--
Eric Botcazou
set_mem_* routines, the best thing to do might be to
remove the call to set_mem_attributes altogether in that case.
--
Eric Botcazou
Change type of BITOFFSET to signed. Make sure the lower bound of
the computed range is non-negative by adjusting OFFSET and BITPOS.
(expand_assignment): Adjust call to get_bit_range.
--
Eric Botcazou
Index: expr.c
backports minor fixes from the 4.6 branch. The only potentially
controversial thing is the preprocessor trick in init.c, which arranges for
the new symbol __gl_main_cpu not to be added to the runtime.
Bootstrapped/regtested with 4.3 and 4.6 compilers on x86 and x86-64/Linux.
2012-04-04 Eric Botcazou
> Shouldn't this be * 100 and > 405 ? I mean, we already had GCC
> 2.95, 2.96, 2.97 and 20 + 95 is > 45...
This idiom is the one already used in tracebak.c for example. Would that
really matter in practice?
--
Eric Botcazou
thout this, it will be a pain to keep
testing the 4.5.x Ada compiler on modern Linux distributions.
> The init.c change is clearly already on the edge of kludgy changes and is
> NOT ok as is, it requires a clear comments explaining why it's there.
OK, will add a ??? comment, thanks.
--
Eric Botcazou
> It is a bad idiom, given that we already had >= 10 __GNUC_MINOR__ and it
> is possible we'll have 4.10 as well.
> E.g. __GNUC_PREREQ macro in glibc shifts left major by 16, but even
> multiplying by 100 instead of 10 is better.
OK, we'll change the idiom on mainline.
--
Eric Botcazou
atic_stack_size = cfun->machine->framesize;
> +
>for (i = 0; i < 16; i++)
> if (cfun->machine->need_to_push [i])
> {
s/flag_stack_usage/flag_stack_usage_info/
--
Eric Botcazou
ts type,
we cannot create the temporary using that type. */
is useless, so we could try to revert r122014 in the process.
--
Eric Botcazou
ttributes so that the original expression is never
> +marked as ADDRESSABLE through MEM_EXPR of the temporary. */
> + if (mem_attrs_from_type)
> + set_mem_attributes (op0, TREE_TYPE (exp), 0);
set_mem_attributes (op0, type, 0); is equivalent.
--
Eric Botcazou
, DECL_ASSEMBLER_NAME (decl) depends on TREE_PUBLIC being set or not.
Tested on SPARC/Linux, applied to all active branches.
2012-04-09 Eric Botcazou
PR target/52717
* config/sparc/sparc.c (sparc_file_end): Set TREE_PUBLIC explicitly on
the DECL generated for the special GOT helper
.
(check_effective_target_sync_char_short): Likewise.
--
Eric Botcazou
Index: lib/target-supports.exp
===
--- lib/target-supports.exp (revision 186176)
+++ lib/target-supports.exp (working copy)
@@ -2551,7 +2551,22 @@ proc
subcase for GNAT.
Tested on x86_64-suse-linux, OK for the mainline?
2012-04-09 Eric Botcazou
* dwarf2out.c (add_byte_size_attribute) : Handle variable
reference as size attribute.
--
Eric Botcazou
Index: dwarf2out.c
some cases. This is the
same idiom already used in rest_of_handle_jump2 for example.
Tested on x86_64-suse-linux. Comments?
2012-04-09 Eric Botcazou
* function.c (rest_of_handle_thread_prologue_and_epilogue): Clean up
the CFG before generating prologue/epilogue even whe
+ }
+ else
+ breg = NULL;
+
+ if (!breg)
+ {
+ dead_debug_reset_uses (debug, uses);
+ return 0;
+ }
+ }
Please add a comment explaining what this is doing.
--
Eric Botcazou
nt, no?
At least the patch has a non-null (albeit minor) effect, which pertains mainly
to jump threading (typical diff attached, Ada code at -O0 on x86-64).
--
Eric Botcazou
@@ -648,7 +648,6 @@
jmp .L70
.L206:
nop
-.L71:
leaq -768(%rbp), %rax
addq $448, %rax
movq %rax, %rdi
@
ures will fall into one of the first 3
cases, no __bswaphi2 symbol is added to libgcc. And pass_optimize_bswap isn't
modified to recognize the builtin either, as this seems overkill to me.
Tested on x86, x86-64 and PowerPC Linux, OK for the mainline?
2012-04-09 Eric Botcazou
lso accept pseudo-registers during reload. That isn't true for the
Q constraint of IA-64. The patch also fixes the MEM_VOLATILE_P access not
properly guarded by a MEM_P test in the expression.
Bootstrapped/regtested on IA-64/Linux, OK for mainline and 4.7 branch?
2012-04-11 Eric Botcazo
y
too dangerous in any case. And there may be other affected architectures.
So patch withdrawn. The best fix is very likely in reload1.c in the end.
--
Eric Botcazou
for the memory temporary created for a bitfield.
Fine with me, but the now dangling code in the bitfield case is a bit annoying.
--
Eric Botcazou
> 2012-04-16 Martin Jambor
>
> * expr.c (expand_expr_real_1): Remove setting parent's alias set for
> temporaries created for a bitfield (reverting revision 122014).
OK, thanks.
--
Eric Botcazou
hing for
Darwin too and the fix was a one-liner in the back-end:
http://gcc.gnu.org/ml/gcc-patches/2011-09/msg00351.html
--
Eric Botcazou
ameter to function
> prototype.
> * gcse.c (process_insert_insn): Set IN_GROUP to false.
> * config/s390/s390.c (insn_invalid_p): Set IN_GROUP to false.
config/s390/s390.c (expand_addcc)
OK if you turn the 3 "Set IN_GROUP [parameter] to..." into "Call insn_inv
he fix that way? Thanks in advance.
--
Eric Botcazou
ment.
Aren't all ELF targets of all architectures potentially affected?
--
Eric Botcazou
> We just need to declare it in system.h in order to use the definition in
> libiberty.
OK, this should be fine.
--
Eric Botcazou
_LABEL.
> The normal thing to do is to use the elfos.h defines as-is.
Target macros are meant to be overridden though. If an implicit dependency has
been introduced, then it should be documented and the tree should be audited.
--
Eric Botcazou
expectation. With the patch GCC generates better
> code for S/390 so I would like to see this patch applied.
That isn't compelling enough I think, given the timing.
--
Eric Botcazou
o write access?
Done after the above minor corrections.
--
Eric Botcazou
and...
> +#if defined (__x86_64__)
> + /* Work around #10302855/pr50678 on x86-64 Darwin. */
> + __gnat_adjust_context_for_raise (sig, ucontext);
> +#endif
...remove everything except for the call to _gnat_adjust_context_for_raise.
--
Eric Botcazou
> Dave and Eric, can you please double-check everything and also test
> on Solaris (i.e. RMO).
Yes, I will, but note that Solaris is TSO. The only RMO case was Linux AFAIK.
--
Eric Botcazou
t;
> What do you think?
I'd install it, this really appears to be a sensible change.
--
Eric Botcazou
3701 - 3800 of 4612 matches
Mail list logo