e;
return (is_gimple_variable (t) || is_gimple_min_invariant (t));
}
and is_gimple_val is a formal predicate IIUC. In this latter case, we
wouldn't have much leeway and is_gimple_min_invariant should simply
implement the GIMPLE grammar, i.e the CONST in
val : ID
| CONST
--
Eric Botcazou
nts).
Right. I guess that most consumers expect is_gimple_min_invariant to mean
"minimal invariant in GIMPLE form". I'll try to come up with the maximally
valid predicate implementing this for ADDR_EXPR expressions.
Thanks for your feedback.
--
Eric Botcazou
> #define BEFORE_RELOAD_P (!reload_in_progress && !reload_completed)
I'd personally vote for something like this.
--
Eric Botcazou
re more substantial changes in the gimplifier than what is
required to fix the is_gimple_min_invariant problem. Can't we live with it?
--
Eric Botcazou
case INTEGER_CST:
case REAL_CST:
or by uncoupling the 2 functions, i.e creating a recursive predicate for use
outside of gimplification?
--
Eric Botcazou
> op2 -> val
> op3 -> val
>
> index-val: ID | CONST
>
> val: index-val | invariant
>
> invariant: rhs with TREE_INVARIANT set
I don't see why you're special-casing ARRAY_REF (and ARRAY_RANGE_REF). As
Richard pointed out, there are other rules that would need to be changed.
--
Eric Botcazou
t. */
if (!do_fre && n_basic_blocks < 4000)
{
compute_antic_safe ();
compute_antic ();
insert ();
}
--
Eric Botcazou
&& simplified != rhs)
{
VN_INFO (lhs)->expr = simplified;
VN_INFO (lhs)->has_constants = true;
changed = set_ssa_val_to (lhs, simplified);
goto done;
}
--
Eric Botcazou
ne and unroll is_gimple_addressable. */
while (1)
{
t = TREE_OPERAND (t, 0);
if (is_gimple_id (t))
return true;
if (!handled_component_p (t))
return false;
}
}
return true;
}
--
Eric Botcazou
> Note that I spent less time writing this patch than I did replying to
> the e-mail messages on this thread.
You're probably going to hit the roof :-) but could you rename the predicate
to can_create_pseudo_p? "may" is somewhat ambiguous for non-native speakers.
--
Eric Botcazou
alue_number_call (tree stmt)
tree-ssa-pre.c:can_value_number_operation (tree op)
tree-ssa-pre.c:can_PRE_operation (tree op)
--
Eric Botcazou
> Why would the RTL represent target CONST_INT as HOST_WIDE_INT?
HOST_WIDE_INT is the wide integer type used throughout the compiler.
--
Eric Botcazou
> How does this work for 32-bit hosts and 64-bit targets?
Some (most?) 64-bit targets require a 64-bit HOST_WIDE_INT.
--
Eric Botcazou
90
need_64bit_hwint=yes
;;
sh[123456789lbe]*-*-*)
cpu_type=sh
need_64bit_hwint=yes
;;
--
Eric Botcazou
> Sorry: I guess my information is dated. What changed so that it's now
> required?
I presume the reasons you gave + the usual nasty bugs prompted someone to
decide that it was not worth the troubles after all.
--
Eric Botcazou
0);
+ }
+ if (!is_gimple_addressable (t))
+ return false;
+ break;
+ }
case TRUTH_NOT_EXPR:
if (!is_gimple_val (TREE_OPERAND (expr, 0)))
--
Eric Botcazou
what options do I need to set on the configure line in order for this to
work?
See http://gcc.gnu.org/gcc-4.2/changes.html , SPARC section.
--
Eric Botcazou
The default cpu is v8plus.
v9 actually, which automatically enables the V8+ stuff in 32-bit mode.
--
Eric Botcazou
pping between -mcpu settings and 32-bit ABI levels is as follows:
-mcpu 32-bit ABI
v7 v7
v8 v8
v9 v8plus
ultrasparc v8plusa
ultrasparc3v8plusb
--
Eric Botcazou
ions to the SPARC toolchain by Sun or
Canonical people over the last few years.
--
Eric Botcazou
ARC toolchain from Sun. There have been indirect contributions, e.g. for
Solaris 10 support, and AFAIK they have been merged in the FSF tree.
--
Eric Botcazou
const_double rtx and I appreciate
> help regarding this.
CONST0_RTX (SFmode)
--
Eric Botcazou
nu
Looks like
2007-08-31 Ben Elliston <[EMAIL PROTECTED]>
* Makefile.in (LIBGNAT_TARGET_PAIRS): Use system-linux-ppc64.ads
when compiling for powerpc64-*-linux.
* system-linux-ppc64.ads: New file.
needs to be refined.
--
Eric Botcazou
> Sorry, folks. I've rolled this back.
Thanks, but this was not really necessary, Ada doesn't define
LANG_HOOKS_EXPAND_CONSTANT, you only needed to restore lhd_return_tree.
--
Eric Botcazou
> Seemed safer to just roll things back and sort it out later.
Understood, thanks again for the quick turn around.
--
Eric Botcazou
> I would appreciate it is one of the SPARC/Solaris
> users would see if they can duplicate this.
I cannot duplicate on SPARC/Solaris, but my tree is not pristine.
This is for a --disable--bootstrap compiler built at -O0 -g.
--
Eric Botcazou
> The two files in question do compile at -O0 so you wouldn't
> trip it.
You misunderstood, only the compiler is built at -O0 -g, the runtime is built
normally at -O2 -g.
--
Eric Botcazou
cause it's a builtin. More generally, the RTL back-end
is allowed to mangle symbol names at its pleasure. You can display the RTL
associated with a FUNCTION_DECL by invoking debug_tree on it from within GDB.
--
Eric Botcazou
if you care about OpenMP on Solaris 10.
--
Eric Botcazou
-testresults/2007-10/msg00390.html
They are more noisy than usual because of -fpic/-fPIC testing.
--
Eric Botcazou
x-gnu
> i386-unknown-freebsd5.5
> i686-pc-linux-gnu (2)
> ia64-unknown-linux-gnu
> s390-ibm-linux-gnu
> s390x-ibm-linux-gnu
> sparc-sun-solaris2.8
> sparc64-unknown-linux-gnu
> x86_64-unknown-linux-gnu (2)
Thanks!
--
Eric Botcazou
> If you make the function static then gcc can chose ABI-incompatible
> calling conventions.
Right, and the gain can be significant on x86.
--
Eric Botcazou
> I get the following ICE running bootstrap with -O2 on ppc,
> --with-cpu=default32 r129655:
http://gcc.gnu.org/ml/gcc-patches/2007-10/msg01543.html
--
Eric Botcazou
le for each version of the library.
The surge comes from the fix for PR tree-optimization/33870 (rev 129675).
With it, 'make all-target-libjava' takes 261 min user time. If I revert it,
do a 'make quickstrap' and run the command again, it only takes 109 min.
--
Eric Botcazou
> I'm working on it.
Thanks. However, don't we simply void the benefit of memory partitioning by
recursing on the MPTs?
--
Eric Botcazou
mong other things.
>
> But if *v is simply shared, do all stores to it matter? No, only the
> final value is relevant.
Define "final value".
--
Eric Botcazou
rom
the viewpoint of the current thread, this is the crux of the matter.
--
Eric Botcazou
> The value that will be seen by other threads after they synchronize
> memory (with pthread_mutex_lock(), for instance).
What does it mean from the viewpoint of the current thread?
--
Eric Botcazou
> Let's see what the results are on the now "optimal" first strategy.
Far better, but I've still a 51 min gap on a full checking bootstrap.
--
Eric Botcazou
.
See gcc/gthr-posix.h for a proper use of "volatile" for a shared access.
--
Eric Botcazou
> The use doesn't become proper simply because it appears in the code,
> even if in the code of GCC. volatile might be used there for
> completely different reasons.
No, I put it there for this purpose.
--
Eric Botcazou
> I have applied the "final" patch, if you want to re-test.
Slightly better, but not much (7 min for a full-checking bootstrap).
--
Eric Botcazou
mer has
> asked for, is often an overall loss.
That's a little outdated though, 4.x behaves differently.
--
Eric Botcazou
not all
or nothing like your earlier message[*] seemed to imply.
[*] http://gcc.gnu.org/ml/gcc/2007-10/msg00663.html
--
Eric Botcazou
mple you gave in your first message.
--
Eric Botcazou
> Please read the _description_ that comes along with the code example.
I did.
> Anyways, the patch is there.
The one for ifcvt.c, yes; more will be needed though, see for example
http://gcc.gnu.org/ml/gcc/2007-10/msg00754.html
--
Eric Botcazou
he fix for PR tree-optimization/33870 basically short-circuited it.
--
Eric Botcazou
es by providing more accurate
> insns lengths?
Yes, but this should work automatically. IOW, as Ian said, you shouldn't need
to do anything special. Maybe it's simply a latent bug in the PPC back-end.
--
Eric Botcazou
an instruction should not be true under
> INSN_P. Yet, INSN_P returns true for DEBUG_INSN. This is already
> leading to a lot of special-casing of DEBUG_INSN throughout the RTL
> bits of the compiler on the branch.
I share your concerns, but I've not looked at the specifics.
--
Eric Botcazou
gt; Anyways shouldnt reload be checking for live registers before reloading into
> them ?
Of course, it goes to great length to do so but there can be bugs. You didn't
specify which version of the compiler you're using though; they may have been
already fixed on the mainline.
--
Eric Botcazou
> Oh, I am using quite a new version of the compiler - rev 129547,
> DATESTAMP 20071022.
OK. AFAICS there is nothing glaring in the RTL you posted so you'll have to
put a watchpoint and find out who has set reg_rtx for this particular reload.
--
Eric Botcazou
3 $c3 [ ivtmp.103 ]))
>(expr_list:REG_DEP_TRUE (use (reg:SI 2 $c2 [ h ]))
>(expr_list:REG_DEP_TRUE (use (reg:SI 1 $c1 [ ivtmp.101 ]))
>(nil))
I don't think so, it should be in dead_or_set, the value contained in $c1 dies
in the insn.
--
Eric Botcazou
nder pressure. Do you define REG_ALLOC_ORDER for your
port? If so, in what position is $c1?
--
Eric Botcazou
ick an open PR in Bugzilla (http://gcc.gnu.org/bugzilla) and
try to fix the problem. We have dozens of these. :-) Some of them have been
pre-analyzed. An ICE (internal compiler error) is probably easier to start
with than a wrong-code bug.
--
Eric Botcazou
> I'm still seeing the same failure on x86_64-unknown-linux-gnu, is this
> going to get fixed?
You're not supposed to configure the compiler with --disable-checking as this
disables the internal assertions, use --enable-checking=release instead.
--
Eric Botcazou
compiler are a feature, --disable-checking should not be advertised since
all the assertions are now predicated on at least --enabled-checking=release.
That being said, if there is a bug, I agree that we should try and fix it.
--
Eric Botcazou
> I opened a bug
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34144
Thanks!
--
Eric Botcazou
ptimization set to -O3.
Thanks for doing this!
> Thanks to Sun for donating a T2000 to Debian and to OSU's Open Source
> Lab for hosting the machine.
Seconded. :-)
--
Eric Botcazou
> Can anyone report that Ada works on the
> head on a SPARC or PowerPC self-hosted
> system?
http://gcc.gnu.org/ml/gcc-testresults/2007-11/msg00945.html
--
Eric Botcazou
gnat_begin_handler
> + __gnat_end_handler
>
> Where do those come from and how do I turn them on?
raise-gcc.c and a-exexpr-gcc.adb, you need to add
EH_MECHANISM=-gcc
to the RTEMS section of Makefile.in.
--
Eric Botcazou
time from -O2 -> -O0 to work around the
> huge compile time. Is it possible that that
> is breaking the run-time?
That should not, in any cases.
--
Eric Botcazou
olaris), probably why nobody had noticed until recently.
Does RTEMS support DWARF-2 EH? If so, change the following lines to True
ZCX_By_Default: constant Boolean := False;
GCC_ZCX_Support : constant Boolean := False;
in system-rtems.ads.
--
Eric Botcazou
> Well it is now up to 13 minutes of compile time
> on that one file when it is 30 seconds at -O0 so
> this doesn't appear to help significantly.
OK, sounds like a real problem then.
--
Eric Botcazou
t makes it possible to reproduce it even on platforms where
it doesn't arise natively, by making the opposite change you made.
> Is there a PR for this or do I need to try to file one?
No, I don't think there is one.
--
Eric Botcazou
> FWIW. I see the same behavior for i386-unknown-netbsdelf3.1 too (when
> compiling natively, i.e. not using cross compiler).
For native platforms, I would suggest to switch to DWARF-2 EH, see for
example system-freebsd-x86.ads.
--
Eric Botcazou
ACATS and GNAT
testsuites are also clean. Maybe occurs only on non-DWARF2 platforms too.
--
Eric Botcazou
finding it
> by searching the mailing-list is not practical and it is not coupled
> with the checkin.
That's how it has always worked so it should be more or less practical.
For PRs, there is a link (URL: field), maybe we should use PRs more often.
--
Eric Botcazou
>
> gcc/
> * config/sh/sh.md (cmpgeusi_t): Fix condition.
>
> which I used as suggested.
Not really in my opinion, it's a trivial fix and totally unrelated to Ada in
itself, "Fix typo" or "Fix obvious mistake" would have been just fine too.
--
Eric Botcazou
> I'll take an example from one of your recent changes in gcc/ChangeLog:
>
> 2007-11-19 Eric Botcazou <[EMAIL PROTECTED]>
>
>* stor-layout.c (lang_adjust_rli): Delete.
>(set_lang_adjust_rli): Likewise.
>(layout_type):
> Sure, but as you explained yourself in the message I cited, the reason
> to do this change was because of a problem in STABS info generation :)
"reason" is not quite appropriate in this case, "occasion" is more accurate.
--
Eric Botcazou
uite effective "executive summaries" for the patches and helpful to the
reader/reviewer. Please let's not throw the baby with the bath's water.
--
Eric Botcazou
e One True
> Way seems very suspect to me. After all, how else would they ever
> improve if nobody tries anything different?
The people who wrote them presumably thought about these issues, too.
--
Eric Botcazou
> Right, because surely one size fits all projects and possibilities,
It was supposed to be the Coding Standards for The GNU Project.
> and workflow and processes have certainly not changed since then.
In my opinion, it's now easier to work around their perceived deficiencies
s simply not true, the ChangeLog and the commit messages in the
ada/ subdirectory are on par with the rest of the GCC tree, and that's fine.
--
Eric Botcazou
> If you have a better justification, i'd love to hear it.
Justification for what? I only tried to explain to Sam why we do things the
way we do, I didn't write the GNU Coding Standards either.
--
Eric Botcazou
> a few cases but not in all. How can this happen?
You should not need to pass -fdelayed-branch explicitly. If you do, this
means you're compiling at -O0, in which case the problem you run into is not
very surprising. Just compile with bare -O1 at a minimum.
--
Eric Botcazou
p' on it and
compile at -O -gnatp.
Thanks in advance.
--
Eric Botcazou
package Q is
procedure Read(S : out Integer);
procedure Restore(S : in out Integer);
end Q;
package P is
type Int_Ptr is access all Integer;
procedure Exec(P : Int_Ptr);
end P;
with Q; use Q;
package
> This sounds like PR31081.
Indeed, the C++ testcase is the exact translation of my Ada testcase. :-)
The problem seems to arise relatively often in Ada, I think the PR should be
made "critical".
--
Eric Botcazou
wrong and should be reverted ASAP.
--
Eric Botcazou
> Release managers.
They certainly have authority on the timing, but not on the contents.
> Working on that right now, sorry..
OK, thanks in advance.
--
Eric Botcazou
the discriminant since it is assigned in the CONSTRUCTOR, so
the gimplifier is indeed presumably not wired to eliminate them on its own.
--
Eric Botcazou
r it in an object (SUBSTITUTE_PLACEHOLDER_IN_EXPR). You can presumably do
it through the gimplification hook.
--
Eric Botcazou
ormation available.
If you try to debug at an optimization level higher than -Og, your mileage may
vary and depend on various factors; that's apparently an example where the
debug info is slightly less damaged at -O3 on x86 than on PowerPC, but there
are probably cases where this will be
> Hope this is helpful; please let me know if you see any mistakes, or if
> there's room for improvement
Nice work! In the "inside cc1" chapter, I think that IR is usually meant for
"Intermediate Representation" rather than "Internal Representation" in this
context.
--
Eric Botcazou
> So what could be causing it?
An oversight in https://gcc.gnu.org/pipermail/gcc-cvs/2022-August/370830.html
has broken --disable-sjlj-exceptions. That's now fixed.
--
Eric Botcazou
:DI 34)
> (pc))) "bad_cc.c":12:10 15 {condjump}
> (expr_list:REG_DEAD (reg:CC 66 cc)
> (int_list:REG_BR_PROB 365072228 (nil)))
> -> 34)
>
> Please observe the REG_DEAD note on the both jump instructions.
Passes that consume REG_DEAD/REG_UNUSED notes need to recompute them
explicitly, they are not updated on the fly.
--
Eric Botcazou
not cover
the basic block containing insn 14 and 15?
--
Eric Botcazou
> rs6000 indeed doesn't implement {,u}{add,sub,mul}v4_optab for
> any mode and thus leaves it to the generic code.
https://gcc.gnu.org/pipermail/gcc-patches/2016-October/460209.html
--
Eric Botcazou
> I'm assuming the problem also extends to the other __gthr_win32 routines as
> well, __gthr_win32_create just happens to be the first symbol it cannot
> find.
>
> Is there a way to fix this issue?
How did you configure the compiler and what version of MinGW64 do you use?
--
Eric Botcazou
s
not on x86[_64]/Linux where you *cannot* probe below the stack pointer.
--
Eric Botcazou
zation if -fno-delete-dead-exceptions is not specified).
--
Eric Botcazou
racter is not matched by '*' or some such.
--
Eric Botcazou
I checked this with the
> following spec file:
But you wouldn't have a problem if it was, would you? What happens if the '+'
is changed to another character in the line passed to the driver.
--
Eric Botcazou
just aligns
the compiler with the assembler.
Bootstrapped/regtested on SPARC64/Solaris 11, applied on the mainline.
2025-01-18 Eric Botcazou
PR target/118512
* config/sparc/sparc-c.cc (sparc_target_macros): Deal with VIS 3B.
* config/sparc/sparc.cc (dump_target_flag_bits
ib/gcc/x86_64-w64-mingw32/13.3.1/../../../../x86_64-
w64-mingw32/bin/ld.exe: C:\tmp\ccCnskmU.o (symbol from plugin): symbol
`__fpclassify' definition: UNDEF, visibility: DEFAULT, resolution:
RESOLVED_EXEC
attempt to open C:\tmp\ccbENa6D.ltrans0.ltrans.o succeeded
C:\tmp\ccbENa6D.ltrans0.ltrans.o
This is with GNU ld.
--
Eric Botcazou
1001 - 1095 of 1095 matches
Mail list logo