committee first. However, you should first check if modules
(C++20) affect the issue.
--
Marc Glisse
_22 used in the last assignment, I have no idea of how
to trace back to its definition on the fourth statement... Thank you
very much!
SSA_NAME_DEF_STMT
_13 = 13;
_14 = _13 + 4;
_15 = 14;
_22 = (unsigned long) _15;
_23 = _22 + _14;
--
Marc Glisse
or lower level
https://gcc.gnu.org/onlinedocs/gccint/Logical-Operators.html#Operand-vector-allocation
But really you need to look at the code of gcc. Search for places that use
SSA_NAME_DEF_STMT and see what they do with the result.
--
Marc Glisse
n possible, not so bad.
--
Marc Glisse
; expr_not_equal_to (@0, wi::minus_one (TYPE_PRECISION (type))
(mult:v{ !single_use (@3) && !single_use (@4 } (plusminus @1 @2) @0
Indeed, something more flexible than '!' would be nice, but I am not so
sure about this version. If we are going to allow inserting code after
resimplification and before validation, maybe we should go even further
and let people insert arbitrary code there...
--
Marc Glisse
those extra
checks block the transformation even for 5*X-4*X -> X which does not
increase the number of multiplications. Which is where '!' (or :v here)
comes in.
Or we could decide that the extra multiplication is not that bad if it
saves an addition, simplifies the expression, possibly gains more insn
parallelism, etc, in which case we could just drop the existing hard
single_use check...
--
Marc Glisse
ease contact the sender immediately and permanently
delete the original and any copies of this email and any attachments thereto.
Could you please get rid of this when posting on public mailing lists?
--
Marc Glisse
nything.
* If so, can you please point me to an example?
* Otherwise, I'd be interested in advice about providing new infrastructure to
support
this. I'm a relative noob with respect to the configury code, and I'm sure my
initial instincts will be wrong. :)
Does the i386 mm_mal
te about the exact meaning of -ftrapping-math, but
don't let that stop you.
--
Marc Glisse
-funsafe-math-optimizations is harder to tell.
--
Marc Glisse
case,
the most common being modular arithmetic: if you know that uint32_t a, b,
c, d are smaller than m (and m!=0), you can compute a*b+c+d in uint64_t,
then use div to compute that modulo m.
--
Marc Glisse
think clang follows gcc and uses the type of the first operand.
--
Marc Glisse
ed int *)c.0_1] = 1311768467463790320;
_4 = c;
Isn't that a clear violation of strict aliasing?
--
Marc Glisse
etected by sanitizers) than silently
get 'x' back.
--
Marc Glisse
0 (exps @1))
+ (mult @0 (exps (negate @1)
+
+/* Simplify x / pow (y,z) -> x * pow(y,-z). */
+(simplify
+ (rdiv @0 (POW @1 @2))
+ (mult @0 (POW @1 (negate @2
+
/* Special case, optimize logN(expN(x)) = x. */
(for logs (LOG LOG2 LOG10)
exps (EXP EXP2 EXP10)
--
Marc Glisse
never had time to finish it.
https://gcc.gnu.org/ml/gcc-patches/2013-11/msg03108.html
--
Marc Glisse
e a carryin argument.
--
Marc Glisse
the function is calloc().
Please help me to find the best alternative so we can implent it.
You may want to read this PR for more context
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56888#c27
--
Marc Glisse
way, or libstdc++ could
redefine it to some other safer form (for some reason __builtin_complex is
currently C-only).
--
Marc Glisse
td::string in gcc-5, can't you?
--
Marc Glisse
tterns (described in
fold-const.c and match.pd), like p + n < p in this case.
--
Marc Glisse
case, and there are bugs (or standard issues)
about having them in the global namespace for the first one).
--
Marc Glisse
seem to remember there are at least 2 open LWG issues on the topic,
one saying that the C++11 change didn't go far enough to match reality,
since it still documents C headers differently from the C standard, and
one saying that all overloads of abs should be declared as soon as one is
(yes, they contradict each other).
--
Marc Glisse
.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#2294
--
Marc Glisse
find docs for how
to request this, so spamming this list.
my account on gcc.gnu.org/bugzilla is "vap...@gentoo.org".
Permissions are automatic for @gcc addresses, you should create a new
account with that one (you can make it follow the old account, etc).
--
Marc Glisse
for what kinds of member functions
are allowed in an empty type.
--
Marc Glisse
your need?
--
Marc Glisse
On Sun, 27 Mar 2016, Allan Sandfeld Jensen wrote:
Would it be possible to add constexpr to the intrinsics headers?
For instance _mm_set_XX and _mm_setzero intrinsics.
Already suggested here:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65197
A patch would be welcome (I started doing it at so
On Mon, 28 Mar 2016, Allan Sandfeld Jensen wrote:
On Sunday 27 March 2016, Marc Glisse wrote:
On Sun, 27 Mar 2016, Allan Sandfeld Jensen wrote:
Would it be possible to add constexpr to the intrinsics headers?
For instance _mm_set_XX and _mm_setzero intrinsics.
Already suggested here:
https
case hat helps.
https://gcc.gnu.org/about.html#cvs
You can send a diff to gcc-patc...@gcc.gnu.org to propose a patch
(possibly Cc: the fortran mailing-list if your patch is related), same as
code changes.
--
Marc Glisse
~
Apparently there is some implicit conversion rule that stops g++ from
doing the expected implicit conversions, but I can't figure out which
rule that is. The fact clang handles the code without an issue does
not help either. Any help will be appreciated.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57572
--
Marc Glisse
rator+, etc), and in
others they don't (conversions in general). We have scalarish_type_p for
things that are scalars or vectors, we could add arithmeticish_type_p ;-)
(I think the name arithmetic comes directly from the standard, so we don't
want to change its meaning)
--
Marc Glisse
,
currently), they will submit a patch to gcc-patc...@gcc.gnu.org, which
will be reviewed. Note that a patch needs to include testcases (see the
files in gcc/testsuite/g++.dg for examples). If you are interested, you
could give it a try...
--
Marc Glisse
ning make install without the -s command line parameter yields
nothing. Have I done something wrong?
"nothing" is not very helpful... Surely it gave some error message.
--
Marc Glisse
itfields (sadly, the standards make it hard to avoid unsigned types...).
--
Marc Glisse
nment-check stuff is not supported by
gcc?
--
Marc Glisse
On Fri, 26 Aug 2016, Richard Biener wrote:
On Thu, Aug 25, 2016 at 9:40 PM, Marc Glisse wrote:
Hello,
I was considering changing the implementation of _mm_loadu_pd in x86's
emmintrin.h to avoid a builtin. Here are 3 versions:
typedef double __m128d __attribute__ ((__vector_size_
time.
--
Marc Glisse
In the mean time, I agree that gimplifying x+1 and 1+x differently makes
little sense, you could file a PR about that.
--
Marc Glisse
n we should avoid the
transformation, just that we should fix the RA issue (by the way, if you
have time to file a separate PR for the RA issue, that would be great,
otherwise I'll try to do it at some point...).
However it seems andnot isn't a standard pattern name, so am not sur
On Thu, 13 Oct 2016, Prathamesh Kulkarni wrote:
On 12 October 2016 at 14:43, Richard Biener wrote:
On Wed, 12 Oct 2016, Marc Glisse wrote:
On Wed, 12 Oct 2016, Prathamesh Kulkarni wrote:
I was having a look at PR71636 and added the following pattern to match.pd:
x & ((1U << b)
dening stuff is such a pain...)
--
Marc Glisse
PR in bugzilla about that if there isn't one already. But
you'll need to provide more info there: your configure command line, the
file config.log in the 32 bit version of classpath, etc.
--
Marc Glisse
to check),
but that doesn't mean we shouldn't fix things.
--
Marc Glisse
gimple_call_fnspec,
and refer to tree-core.h for the meaning of EAF_*, etc. A string like
"2x." means:
'2': the first letter is about the return, here we are returning the
second argument
'x': the first argument is ignored
'.': not saying anything about the second argument.
--
Marc Glisse
other
compilers assume that restrict pointers don't alias other non-derived
pointers (see several PRs in bugzilla). I believe Richard recently added
code that would make implementing the strong version of restrict easier.
Maybe that's what is missing here?
--
Marc Glisse
reasonable semantics for &+. My
recommendation would be for this to be considered a hard error.
Uh? The doc explicitly says "An input operand can be tied to an
earlyclobber operand" and goes on to explain why that is useful. It avoids
using the same register for other input when they are identical.
--
Marc Glisse
On Tue, 1 Jul 2014, Tom de Vries wrote:
On 01-07-14 21:58, Marc Glisse wrote:
So my question is: is the combination of '&' and '+' supported ? If so,
what is the exact semantics ? If not, should we warn or give an error ?
I don't think we can define any rea
On Wed, 2 Jul 2014, Tom de Vries wrote:
On 02-07-14 08:23, Marc Glisse wrote:
I think it could have used (match_dup 0) instead of operand 1, if there
had been only the first alternative. And then the constraint would have
been +&.
isn't that explicitly listed as unsupported here
On Wed, 2 Jul 2014, Tom de Vries wrote:
On 02-07-14 09:02, Marc Glisse wrote:
Still, the meaning of +&, in inline asm for instance, seems relatively
clear, no?
I can't find any testsuite examples using this construct.
Furthermore, I'd expect the same semantics and re
On Wed, 6 Aug 2014, Jakub Jelinek wrote:
- libstdc++ ABI changes
It seems unlikely to be in the next release, it is too late in the cycle.
Chances to break the ABI don't come often, and rushing one at the end of
stage1 would be wasting a good opportunity.
--
Marc Glisse
ge their SONAME dependent on
the compiler version used?!
Yes, just like a move to .so.7 would entail.
--
Marc Glisse
the option to make stuff interoperable
when mixing compiler, either with no effort at all, or some limited
effort. With .so.7, you have no option, nothing will be interoperable.
I disagree that it is worse, but you have more experience, I guess we
will see the results in a few years...
--
Marc Glisse
y missing something obvious, but a pointer would be much
appreciated.
--
Marc Glisse
0;
r = a & b;
if (a & b)
return -r;
return r;
}
Note that in this particular case, we should just return -(a&b) like llvm
does.
--
Marc Glisse
to do just fine. Is that a feature, or
should I file a PR for that... ?
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53155
--
Marc Glisse
l it "the Intel library", that doesn't mean anything.
--
Marc Glisse
On Wed, 17 Sep 2014, Ian Grant wrote:
On Wed, Sep 17, 2014 at 1:36 PM, Marc Glisse wrote:
On Wed, 17 Sep 2014, Ian Grant wrote:
And is there any way to disable the Intel library?
--disable-libcilkrts (same as the other libs)
If it explicitly doesn't support your system, I am
emory.
(If A and B don't have the same size, the argument 20 can be a hint)
--
Marc Glisse
tric]".
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=50677
--
Marc Glisse
tion const if that works (or
provide both a const and a non-const version). Your code is not guaranteed
to work. Lambdas usually provide a fine workaround.
--
Marc Glisse
seful
for other purposes: don't introduce complicated vector/complex operations
after the corresponding lowering passes, do narrowing until a certain
point but then prefer fast integer sizes, etc (I haven't thought about
those particular examples, they are only an illustration).
--
Marc Glisse
collect2: error: ld returned 1 exit status
Is this a bug? If yes, is it known?
GCC 4.8.3 works fine though.
Not a bug, that's what inline means in C99 and later.
--
Marc Glisse
not such a good list for that, comp.lang.c is better suited. This
will be a good list if you have technical issues implementing the feature.
--
Marc Glisse
ption.22_is_not_given_for_-Wno-foo
--
Marc Glisse
change that)
https://gcc.gnu.org/ml/gcc-patches/2013-03/msg00745.html
https://gcc.gnu.org/ml/gcc-patches/2014-06/msg00769.html
In this case, a subreg:V2DI of DImode should work.
--
Marc Glisse
type) i_11;
_4 = _2 + _3;
and in both cases we fail to notice that _4 = (sizetype) tmp_17; (at least
I think that's true).
So there are missing match.pd transformations in addition to whatever
scev/ivdep/other work is needed.
--
Marc Glisse
?
convert2? and specify for which particular conversions the
transformation is valid. Finding out the right conditions to detect
these conversions is often the most painful part of writing a match.pd
transformation.
I hope to get some time again soon to continue looking into this, but if
anybody got any ideas, I'm all ears.
--
Marc Glisse
discover warnings, but gcc devs fear that users will actually
use it for real.
--
Marc Glisse
the estimated frame size on every function, -Walloca-larger-than=0 so it
is equivalent to -Walloca, etc.
--
Marc Glisse
important stuff at address 0, they also want to be able to do
arithmetic there.
--
Marc Glisse
has been
failing for a long time now, and running it for individual .sum files
fails for jit and libphobos. Other scripts in contrib/ may be relevant.
--
Marc Glisse
.
(PTA_GOLDMONT): Likewise.
As you can see, this is very much on purpose. See
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01940.html for the
explanation that came with the patch.
--
Marc Glisse
r2, [r0, #4]@ unaligned
instead of
strdr1, r2, [r0]
--
Marc Glisse
t violates
the standard...
--
Marc Glisse
build recipe:
%define mpfr_version 2.4.2
%define mpc_version0.8.1
%define gmp_version4.3.2
I tried that with gcc 7.1.0 but the build failed complaining
mpfr was too old.
Could you be more precise about how the build failed? AFAIK mpfr-2.4.2 is
still supposed to work.
--
Marc Glisse
e a problem with gcc, maybe optimization creates a path that
corresponds to size==0 and fails to notice that it cannot be taken.
--
Marc Glisse
test of the loop, as can be seen in the dump
produced with -fdump-tree-optimized.
--
Marc Glisse
ou run "gcc -dumpspecs"? If so you could provide a
different specs file. Otherwise, you could check the patches that your
distribution applies to gcc, one of them likely has "pie" in its name.
Easiest is likely to build gcc from the official sources, which shouldn't
use pie by default.
--
Marc Glisse
arith-overflow.c.exe iteration 2 of
PASS: test-arith-overflow.c.exe iteration 4 of 5: verify_u
PASS: test-combination.
PASS: test-combination.c.exe it
[...]
The issue is more likely in the testsuite, but I assume you have a
workflow that allows working around the issue?
--
Marc Glisse
In preferences, you get to choose the behavior "After changing a bug".
Default is "Show next bug in my list".
--
Marc Glisse
don't have much experience there.
--
Marc Glisse
understand there's no mangled name for the class such that
echo | c++filt
outputs the class name (e.g. "Foo<10>"). That wouldn't make sense, since
there's no symbol for the class itself.
$ echo _Z1YI1XE | c++filt
Y
--
Marc Glisse
lity=hidden to
hide everything but a few carefully chosen interfaces.
--
Marc Glisse
ays_inline))
void foo(void){}
};
static inline __attribute__((always_inline,alias("foo")))
void bar(void);
Or you can use an asm label to specify some arbitrary name.
--
Marc Glisse
to help with that? (I
didn't really think about it, maybe it doesn't)
"don't do that" remains the most sensible answer.
--
Marc Glisse
few spaces. A single run of
clang-tidy would likely fix all of them for you.
--
Marc Glisse
r arith
instead?
When I removed their use in the intrinsic headers, I tried to remove them,
but Ada people asked us to keep them
https://gcc.gnu.org/ml/gcc-patches/2014-10/msg00843.html
--
Marc Glisse
nt to patch genmatch.c (near get_operand_type maybe?) so
it doesn't try to guess that the type of absu is the same as its argument.
You can also specify a type in transformations, look for :utype or :etype
in match.pd.
--
Marc Glisse
owns when compiled with GCC vs. ICC.
--
Marc Glisse
st (PR 86024 seems related, there are probably some closer
matches), but indeed more would be helpful.
--
Marc Glisse
On Sun, 8 Jul 2018, Jason Merrill wrote:
On Sun, Jul 8, 2018 at 6:40 PM, Marc Glisse wrote:
On Fri, 6 Jul 2018, Martin Sebor wrote:
On 07/05/2018 05:14 PM, Soul Studios wrote:
Simply because a struct has a constructor does not mean it isn't a
viable target/source for use with m
gory where we don't want to litter the
code with casts to quiet the warnings, I find -Wsign-compare way worse in
practice than -Wclass-memaccess.
--
Marc Glisse
someone has the time,
of course.
--
Marc Glisse
he opposite direction may be both easier and safer, even if it won't
handle everything:
P p+ N is nonnull if P or N is known to be nonnull
(and something similar for &p->field and others)
--
Marc Glisse
value_ranges_intersect_p with a singleton range, but that
function seems dead and broken). When POINTER_PLUS_EXPR is changed to take
a signed argument, your suggested test will need updating :-(
--
Marc Glisse
? Is there a good reason to use
__builtin_clzl instead on platforms where long and long long have the same
size?
In case it matters, this is strictly for compile-time computations
(templates, constexpr).
--
Marc Glisse
that's the best guarantee I could ask for about the existence
of __builtin_clzll.
--
Marc Glisse
LDFLAGS environment setting is partially effective
during gcc build?
Yes. For further stages, there is BOOT_LDFLAGS. There is also a configure
option with a similar name.
--with-stage1-ldflags=
--with-boot-ldflags=
see:
http://gcc.gnu.org/install/configure.html
--
Marc Glisse
at it
means:
#include
int main()
{
std::cout << "ok\n";
}
Can anybody else see this crazy breakage? May be a few days old, AFAICS.
4_6-branch is perfectly fine.
174683 here on linux x64 and everything is fine.
--
Marc Glisse
1 - 100 of 227 matches
Mail list logo