[Bug target/35363] Missing bit field coalescing optimization

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35363

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|NEW |RESOLVED
 CC||pinskia at gcc dot gnu.org
   Target Milestone|--- |8.0

--- Comment #9 from Andrew Pinski  ---
Store merging fixes this for GCC 8 so closing as fixed:
  _5 = MEM[(struct A *)&a];
  _6 = _5 & 4261413056;
  _7 = _6 | 2074;
  MEM[(struct A *)&a] = _7;

I Will have to make sure we don't regress when adding lowering.

[Bug tree-optimization/53947] [meta-bug] vectorizer missed-optimizations

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947
Bug 53947 depends on bug 85283, which changed state.

Bug 85283 Summary: Generates 20 lines of assembly while only one assembly 
instruction is enough.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85283

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

[Bug tree-optimization/85283] Generates 20 lines of assembly while only one assembly instruction is enough.

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85283

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|NEW |RESOLVED
   Target Milestone|--- |11.0

--- Comment #3 from Andrew Pinski  ---
Fixed in GCC 11. Where the x86_64 target emulates 2 float vector inside SSE.

[Bug target/47769] [missed optimization] use of btr (bit test and reset)

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47769

Andrew Pinski  changed:

   What|Removed |Added

   Severity|minor   |enhancement
   Last reconfirmed|2011-02-16 19:46:40 |2021-11-27

[Bug rtl-optimization/98962] Perform bitops on floats directly with SSE

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98962

Andrew Pinski  changed:

   What|Removed |Added

 CC||the4naves at gmail dot com

--- Comment #6 from Andrew Pinski  ---
*** Bug 101311 has been marked as a duplicate of this bug. ***

[Bug target/101311] GCC refuses to use SSE registers to carry out an explicit XOR on a float.

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101311

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |DUPLICATE
 Status|NEW |RESOLVED

--- Comment #4 from Andrew Pinski  ---
Dup of bug 98962.

*** This bug has been marked as a duplicate of bug 98962 ***

[Bug target/64897] Floating-point "and" not optimized on x86-64

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64897

Andrew Pinski  changed:

   What|Removed |Added

 CC||amonakov at gcc dot gnu.org

--- Comment #3 from Andrew Pinski  ---
*** Bug 93039 has been marked as a duplicate of this bug. ***

[Bug target/93039] Fails to use SSE bitwise ops for float-as-int manipulations

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93039

Andrew Pinski  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #6 from Andrew Pinski  ---
Dup of bug 64897.

*** This bug has been marked as a duplicate of bug 64897 ***

[Bug target/64897] Floating-point "and" not optimized on x86-64

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64897

--- Comment #2 from Andrew Pinski  ---
Since GCC 9 we get for fand1:
movq%xmm0, %rax
btrq$63, %rax
movq%rax, %xmm0
ret

The question comes does the movement between sse registers and gprs is cheaper
than the load that and would cause.

[Bug libffi/64618] Missing GCC changes in libffi

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64618

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
   Last reconfirmed||2021-11-28

--- Comment #1 from Andrew Pinski  ---
commit be24203d712c030b4091a50f5d84b7372d5c990c
commit 6b5229ed95ac50728f05fe5f3fd02d697775a5db
Was rewritten:
https://github.com/libffi/libffi/commit/542e004710e3f1d7c137bba305a16538cd6257d6
because of other changes.

commit ab6e5665c356663d99a529db9e38bd79cecc8c35
Was rejected upstream as not really needed.

commit 8cd092c9edd1e155a21a2547c97b80db9e0a1c26
With the latest merge: 4824ed41ba7cd63e60fd9f8769a58b79935a90d1


That only leaves:
commit faff04c34663ff7a5a95ded8a07a46ba81944cac
commit 3a4c5379799b896220ac84e917f3eb5a5e5f61de

[Bug libffi/64620] Missing changes from libffi upstream

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64620

Andrew Pinski  changed:

   What|Removed |Added

   Target Milestone|--- |12.0
 Resolution|--- |FIXED
 Status|NEW |RESOLVED

--- Comment #1 from Andrew Pinski  ---
apinski@xeond:~/src/upstream-gcc-git/gcc/libffi$ git log
./testsuite/libffi.closures/unwindtest.cc
commit 92456a4e5658e138e2cea79e390e3306b07685b0
Author: H.J. Lu 
Date:   Tue Aug 31 07:14:47 2021 -0700

libffi: Sync with libffi 3.4.2

Merged commit: f9ea41683444ebe11cfa45b05223899764df28fb

[Bug target/46219] Generate indirect jump instruction on x86-64

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46219

Andrew Pinski  changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|REOPENED|NEW
   Last reconfirmed|2010-10-28 22:58:27 |2021-11-27
   Severity|normal  |enhancement

[Bug tree-optimization/24026] cleanup_control_expr_graph uses fold to fold COND_EXPR_COND

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24026

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|NEW |RESOLVED
   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=67915

--- Comment #2 from Andrew Pinski  ---
fold is never used there since r0-88576; we use gimple_fold but gimple_fold at
the time called fold, with the fix for PR 67915, we moved over to
gimplify_simplify instead.

See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67915#c1 also which describes
this exact issue.

We have now:
if (gimple_simplify (stmt, &res_op, NULL, no_follow_ssa_edges,
 no_follow_ssa_edges)
&& res_op.code == INTEGER_CST)
  val = res_op.ops[0];

And a different order too:
/* Do cleanup_control_flow_bb in PRE order.  */

static bool
cleanup_control_flow_pre ()

So I am going to say this is fixed.

[Bug driver/48691] Assembler file clobbered with -save-temps (LTO)

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48691

--- Comment #2 from Andrew Pinski  ---
I think this was fixed in GCC 11.

[Bug tree-optimization/47255] Missed CSE optimization with inline functions, and __attribute__((const))

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47255

Andrew Pinski  changed:

   What|Removed |Added

   Severity|normal  |enhancement
   Last reconfirmed|2011-01-12 11:10:22 |2021-11-27

[Bug target/34064] ARM: missed optimization (conditional store)

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34064

--- Comment #3 from Andrew Pinski  ---
The trunk we get:
movsr3, #0
.L2:
cmp r0, r1
bcc .L3
@ sp needed
bx  lr
.L3:
stmia   r0!, {r3}
b   .L2

[Bug target/44132] [4.6 Regression] emutls is broken under a range of circumstances.

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44132

--- Comment #44 from Andrew Pinski  ---
*** Bug 44450 has been marked as a duplicate of this bug. ***

[Bug middle-end/44450] gcc.dg/lto/20090210 fails with emutls

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44450

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |DUPLICATE
 Status|UNCONFIRMED |RESOLVED

--- Comment #1 from Andrew Pinski  ---
Dup of bug 44132. The fix went in July 2010.

*** This bug has been marked as a duplicate of bug 44132 ***

[Bug middle-end/38856] loop iv detection failure

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38856

Andrew Pinski  changed:

   What|Removed |Added

  Known to fail||

--- Comment #9 from Andrew Pinski  ---
I think the original issue has been fixed since GCC 4.5.0 or so.

[Bug tree-optimization/26939] loop number of iterations analysis not working

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26939

--- Comment #25 from Andrew Pinski  ---
In GCC 4.7 (and above), we get:

Analyzing # of iterations of loop 2
  exit condition [1, + , 1](no_overflow) <= i1_6(D)
  bounds on difference of bases: -1 ... 2147483646
  result:
under assumptions i1_6(D) != 2147483647
# of iterations (unsigned int) i1_6(D), bounded by 2147483647
Analyzing # of iterations of loop 1
  exit condition [1, + , 1](no_overflow) <= j1_4(D)
  bounds on difference of bases: -1 ... 2147483646
  result:
under assumptions j1_4(D) != 2147483647
# of iterations (unsigned int) j1_4(D), bounded by 2147483647

Is there anything to fix in this bug left?


(In reply to Dmitry G. Dyachenko from comment #24)
> is this the same problem? -- 'i*2 < 35' can't overflow
The warning for this one is gone in GCC 4.6.0+

[Bug c/42136] Inconsistent strict-aliasing warning with cast from char[]

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42136

Andrew Pinski  changed:

   What|Removed |Added

   Target Milestone|--- |7.2
 Resolution|--- |FIXED
 Status|NEW |RESOLVED
  Known to work||7.2.0, 8.1.0
  Known to fail||7.1.0
   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=80593

--- Comment #2 from Andrew Pinski  ---
Fixed in GCC 7.2.0 and above by the patch which fixed PR 80593.

[Bug tree-optimization/32073] Loop unrolling does not exploit VRP for loop bound

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32073

--- Comment #2 from Andrew Pinski  ---
Note there is a few things here that can be improved even more.
With a slightly different testcase:
void short_loop(int* __restrict dest, int* __restrict src, int count) {
  // same happens for assert(count <= 4) and if(count > 4) exit(-1)
  if(count > 4)
count = 4;

  for(int i=0; i < count; i++)
dest[i] = src[i] + 1;
}

In VRP2 we have:
  _5 = MIN_EXPR ;
  if (count_10(D) > 0)
goto ; [80.00%]
  else
goto ; [20.00%]

   [local count: 171798694]:
  _23 = (unsigned int) _5;
  niters.4_24 = _5 > 0 ? _23 : 1;

Which we don't optimize niters.4_24 to just _23.

Without the +1 we optimize the above to memcpy (and still have the above issue
too) and the expansion there needs help (which I thought I filed as another bug
but I can't find it).
There might be other issues where the vectorizer and such don't see that the
count <= 4 and count >= 1.

[Bug target/31238] Too many instructions as not reversing loop

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=31238

Andrew Pinski  changed:

   What|Removed |Added

   Target Milestone|--- |4.5.0
 Status|NEW |RESOLVED
  Known to fail||4.1.2, 4.4.7
 Resolution|--- |FIXED
   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=40886
  Known to work||4.5.3, 4.7.1, 5.1.0, 7.1.0

--- Comment #3 from Andrew Pinski  ---
Fixed in GCC 4.5.0; most likely by the patch which fixed PR 40886.

[Bug target/11997] libgcc build fails because crtbeginS.o not built for sh-netbsdelf

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11997

Andrew Pinski  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |WONTFIX

--- Comment #5 from Andrew Pinski  ---
This is only a bug for pre NetBSD 1.7 (2.0).
Anything older than that was not setup to use GCC's crtstuff and really bug a
not.
Since NetBSD 2.0 was released in 2004, this is a won't fix. Plus this might
have been fixed along the way when libgcc configuration went into its own
directory.

[Bug other/19089] Environment variable TMP may yield gcc: abort with internal error

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=19089

Andrew Pinski  changed:

   What|Removed |Added

URL||https://gcc.gnu.org/piperma
   ||il/gcc-patches/2021-Novembe
   ||r/585591.html
   Keywords||patch

--- Comment #5 from Andrew Pinski  ---
Patch submitted:
https://gcc.gnu.org/pipermail/gcc-patches/2021-November/585591.html

The only issue is hosts where S_ISDIR is not defined (I don't think there is
any left but it least it will just fail like it used to).

[Bug other/19089] Environment variable TMP may yield gcc: abort with internal error

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=19089

--- Comment #4 from Andrew Pinski  ---
Something like after the access check has passed:

#ifdef S_ISDIR
struct stat s;
if (stat(dir, &s) <0)
  return NULL;
if (!S_ISDIR (s.st_mode))
  return NULL;
#endif

[Bug other/19089] Environment variable TMP may yield gcc: abort with internal error

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=19089

Andrew Pinski  changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |pinskia at gcc dot 
gnu.org
 Status|NEW |ASSIGNED

--- Comment #3 from Andrew Pinski  ---
I can't reproduce the crash any more but it should not be hard to fix.

The problem is in make-temp-file.c where we do:
static inline const char *
try_dir (const char *dir, const char *base)
{
  if (base != 0)
return base;
  if (dir != 0
  && access (dir, R_OK | W_OK | X_OK) == 0)
return dir;
  return 0;
}

But we don't check to see if the dir is actually a directory.

[Bug bootstrap/103306] [12 Regression] parallel build hangs since r12-5234-g04c5a9 when /usr/include includes broken symbolic links

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103306

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

--- Comment #20 from Andrew Pinski  ---
Fixed so closing.

[Bug sanitizer/62157] make distclean error when libsanitizer is configured not to build 'tsan'

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62157

Andrew Pinski  changed:

   What|Removed |Added

   Keywords||patch
URL||https://gcc.gnu.org/piperma
   ||il/gcc-patches/2021-Novembe
   ||r/585590.html

--- Comment #6 from Andrew Pinski  ---
Patch submitted:
https://gcc.gnu.org/pipermail/gcc-patches/2021-November/585590.html

[Bug c++/94484] ICE in cp_finish_decl, at cp/decl.c:7447

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94484

Andrew Pinski  changed:

   What|Removed |Added

   Last reconfirmed|2020-04-04 00:00:00 |2021-11-27

--- Comment #3 from Andrew Pinski  ---
Note the ICE on the trunk is:

:3:34: internal compiler error: tree check: expected var_decl or
function_decl or field_decl or type_decl or concept_decl or template_decl, have
parm_decl in push_template_decl, at cp/pt.c:6133
3 |   [](auto a, int = ({decltype(a) i; i * 2;})){}(a);
  |  ^
0x20e9d19 internal_error(char const*, ...)
???:0

[Bug c++/84653] internal compiler error: Segmentation fault (prep_operand)

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84653

Andrew Pinski  changed:

   What|Removed |Added

   Keywords||needs-bisection

--- Comment #2 from Andrew Pinski  ---
This looks like it was fixed in the GCC 8.1.0 release.

[Bug c/101057] [gimplefe] GIMPLE frontend issues

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101057
Bug 101057 depends on bug 101035, which changed state.

Bug 101035 Summary: ICE: in wide_int_to_tree_1, at tree.c:1751
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101035

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

[Bug c/101035] ICE: in wide_int_to_tree_1, at tree.c:1751

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101035

Andrew Pinski  changed:

   What|Removed |Added

   Keywords|needs-bisection |
 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED
   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=102763

--- Comment #2 from Andrew Pinski  ---
Fixed by r12-4431 which fixed PR 102763.

[Bug c++/98042] error diagnostic for unmatched parentheses could be improved

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98042

Andrew Pinski  changed:

   What|Removed |Added

   Last reconfirmed||2021-11-28
 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW
   Severity|normal  |enhancement

--- Comment #1 from Andrew Pinski  ---
Confirmed, the C front-end does a better job:

:4:11: error: expected ')' before 'double'
4 |   ((char *double(foo))[(sizeof(foo)-1)] = '\0';  // ')' instead of
'double'
  |~  ^~
  |   )

[Bug c/101035] ICE: in wide_int_to_tree_1, at tree.c:1751

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101035

Andrew Pinski  changed:

   What|Removed |Added

   Keywords||needs-bisection

--- Comment #1 from Andrew Pinski  ---
Looks fixed on the trunk.

[Bug middle-end/29231] need a way to produce trampolines not on the stack

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29231

Andrew Pinski  changed:

   What|Removed |Added

 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2021-11-28

--- Comment #5 from Andrew Pinski  ---
.

[Bug sanitizer/62157] make distclean error when libsanitizer is configured not to build 'tsan'

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62157

--- Comment #5 from Andrew Pinski  ---
From:
https://www.gnu.org/software/automake/manual/html_node/SUBDIRS-vs-DIST_005fSUBDIRS.html

If SUBDIRS contains AC_SUBST variables, DIST_SUBDIRS will not be defined
correctly because Automake does not know the possible values of these
variables. In this case DIST_SUBDIRS needs to be defined manually.

And from
https://www.gnu.org/software/automake/manual/html_node/Unconfigured-Subdirectories.html

For instance, if you define SUBDIRS conditionally using AC_SUBST and do not
define DIST_SUBDIRS explicitly, it will be default to ‘$(SUBDIRS)’; another
possibility is to force DIST_SUBDIRS = $(SUBDIRS).

[Bug sanitizer/62157] make distclean error when libsanitizer is configured not to build 'tsan'

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62157

Andrew Pinski  changed:

   What|Removed |Added

 Ever confirmed|0   |1
 Status|UNCONFIRMED |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |pinskia at gcc dot 
gnu.org
   Last reconfirmed||2021-11-27

--- Comment #4 from Andrew Pinski  ---
I have a patch.

[Bug bootstrap/3415] make distclean (in gcc subdirectory) does not clean up all the way

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3415
Bug 3415 depends on bug 100987, which changed state.

Bug 100987 Summary: make distclean error "hwasan: No such file or directory"
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100987

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |DUPLICATE

[Bug sanitizer/62157] make distclean error when libsanitizer is configured not to build 'tsan'

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62157

Andrew Pinski  changed:

   What|Removed |Added

 CC||antony at cosmologist dot info

--- Comment #3 from Andrew Pinski  ---
*** Bug 100987 has been marked as a duplicate of this bug. ***

[Bug sanitizer/100987] make distclean error "hwasan: No such file or directory"

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100987

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |DUPLICATE
 Status|NEW |RESOLVED

--- Comment #3 from Andrew Pinski  ---
This is a dup of bug 62157 really.

*** This bug has been marked as a duplicate of bug 62157 ***

[Bug libstdc++/103453] ASAN detection with clang

2021-11-27 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103453

Jonathan Wakely  changed:

   What|Removed |Added

   Last reconfirmed||2021-11-27
 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW

[Bug sanitizer/100987] make distclean error "hwasan: No such file or directory"

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100987

Andrew Pinski  changed:

   What|Removed |Added

   Last reconfirmed||2021-11-27
 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW
 CC||pinskia at gcc dot gnu.org

--- Comment #2 from Andrew Pinski  ---
Confirmed.

[Bug c++/98071] no_unique_address and reusing tail padding

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98071

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |INVALID
 Status|UNCONFIRMED |RESOLVED

--- Comment #2 from Andrew Pinski  ---
Invalid as mentioned.

[Bug c++/97285] Interaction between no_unique_address and has_unique_object_representations

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97285

--- Comment #2 from Andrew Pinski  ---
clang has fixed this on the their trunk.
That is std::has_unique_object_representations_v is true there.

[Bug fortran/103263] ICE in gfc_check_reshape, at fortran/check.c:4830

2021-11-27 Thread anlauf at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103263

anlauf at gcc dot gnu.org changed:

   What|Removed |Added

 CC||anlauf at gcc dot gnu.org

--- Comment #4 from anlauf at gcc dot gnu.org ---
Likely fixed by this constructor patch:

https://gcc.gnu.org/pipermail/fortran/2021-November/057066.html

[Bug fortran/102043] Wrong array types used for negative stride accesses

2021-11-27 Thread mikael at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102043

Mikael Morin  changed:

   What|Removed |Added

  Attachment #51839|0   |1
is obsolete||

--- Comment #26 from Mikael Morin  ---
Created attachment 51891
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51891&action=edit
latest patch

Here is the patch I have arrived to so far.
I have managed to reduce the number of regressions to 24.
The ones that remain are more and more difficult to analyze and fix, with some
iterating code for internal io that seems mishandled, and a few bind(c) stuff.
There are also middle-end regressions (loop versioning) that I haven’t looked
at.

[Bug libstdc++/103453] New: ASAN detection with clang

2021-11-27 Thread glisse at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103453

Bug ID: 103453
   Summary: ASAN detection with clang
   Product: gcc
   Version: 12.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: glisse at gcc dot gnu.org
  Target Milestone: ---

Libstdc++ uses __SANITIZE_ADDRESS__ to detect if ASAN is enabled, but with
clang that should be __has_feature(address_sanitizer). This means that
_GLIBCXX_SANITIZE_STD_ALLOCATOR is not automatically defined, and thus defining
_GLIBCXX_SANITIZE_VECTOR has no effect.

(noticed in https://stackoverflow.com/q/70117470/1918193 )

[Bug middle-end/103431] [12 Regression] wrong code with -O -fno-tree-bit-ccp -fno-tree-dominator-opts since r12-4853-g2a83259f837e5cbd

2021-11-27 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103431

Jakub Jelinek  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #8 from Jakub Jelinek  ---
Fixed.

[Bug other/63426] [meta-bug] Issues found with -fsanitize=undefined

2021-11-27 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63426
Bug 63426 depends on bug 103435, which changed state.

Bug 103435 Summary: [12 Regression] gcc/gimple-ssa-store-merging.c:879:13: 
runtime error: shift exponent 64 is too large for 64-bit type 'long unsigned 
int'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103435

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

[Bug tree-optimization/103435] [12 Regression] gcc/gimple-ssa-store-merging.c:879:13: runtime error: shift exponent 64 is too large for 64-bit type 'long unsigned int'

2021-11-27 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103435

Jakub Jelinek  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|UNCONFIRMED |RESOLVED

--- Comment #3 from Jakub Jelinek  ---
Fixed.

[Bug middle-end/103431] [12 Regression] wrong code with -O -fno-tree-bit-ccp -fno-tree-dominator-opts since r12-4853-g2a83259f837e5cbd

2021-11-27 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103431

--- Comment #7 from CVS Commits  ---
The master branch has been updated by Jakub Jelinek :

https://gcc.gnu.org/g:f7e4f57f1c7883721b6f5ad48953e10ebfb5a756

commit r12-5558-gf7e4f57f1c7883721b6f5ad48953e10ebfb5a756
Author: Jakub Jelinek 
Date:   Sat Nov 27 13:02:06 2021 +0100

x86: Fix up x86_{,64_}sh{l,r}d patterns [PR103431]

The following testcase is miscompiled because the x86_{,64_}sh{l,r}d
patterns don't properly describe what the instructions do.  One thing
is left out, in particular that there is initial count &= 63 for
sh{l,r}dq and initial count &= 31 for sh{l,r}d{l,w}.  And another thing
not described properly, in particular the behavior when count (after the
masking) is 0.  The pattern says it is e.g.
res = (op0 << op2) | (op1 >> (64 - op2))
but that triggers UB on op1 >> 64.  For op2 0 we actually want
res = (op0 << op2) | 0
When constants are propagated to these patterns during RTL optimizations,
both such problems trigger wrong-code issues.
This patch represents the patterns as e.g.
res = (op0 << (op2 & 63)) | (unsigned long long) ((uint128_t) op1 >> (64 -
(op2 & 63)))
so there is both the initial masking and op2 == 0 behavior results in
zero being ored.
The patch introduces alternate patterns for constant op2 where
simplify-rtx.c will fold those expressions into simple numbers,
and define_insn_and_split pre-reload splitter for how the patterns
looked before into the new form, so that it can pattern match during
combine even computations that assumed the shift amount will be in
the range of 1 .. bitsize-1.

2021-11-27  Jakub Jelinek  

PR middle-end/103431
* config/i386/i386.md (x86_64_shld, x86_shld, x86_64_shrd,
x86_shrd):
Change insn pattern to accurately describe the instructions.
(*x86_64_shld_1, *x86_shld_1, *x86_64_shrd_1, *x86_shrd_1): New
define_insn patterns.
(*x86_64_shld_2, *x86_shld_2, *x86_64_shrd_2, *x86_shrd_2): New
define_insn_and_split patterns.
(*ashl3_doubleword_mask, *ashl3_doubleword_mask_1,
*3_doubleword_mask, *3_doubleword_mask_1,
ix86_rotl3_doubleword, ix86_rotr3_doubleword): Adjust
splitters for x86_{,64_}sh{l,r}d pattern changes.

* gcc.dg/pr103431.c: New test.

[Bug tree-optimization/103435] [12 Regression] gcc/gimple-ssa-store-merging.c:879:13: runtime error: shift exponent 64 is too large for 64-bit type 'long unsigned int'

2021-11-27 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103435

--- Comment #2 from CVS Commits  ---
The master branch has been updated by Jakub Jelinek :

https://gcc.gnu.org/g:567d5f3d62fba2a23a9e975f7e7c7b61bb67cf24

commit r12-5557-g567d5f3d62fba2a23a9e975f7e7c7b61bb67cf24
Author: Jakub Jelinek 
Date:   Sat Nov 27 13:00:55 2021 +0100

bswap: Fix UB in find_bswap_or_nop_finalize [PR103435]

On gcc.c-torture/execute/pr103376.c in the following code we trigger UB
in the compiler.  n->range is 8 because it is 64-bit load and rsize is 0
because it is a bswap sequence with load and known to be 0:
  /* Find real size of result (highest non-zero byte).  */
  if (n->base_addr)
for (tmpn = n->n, rsize = 0; tmpn; tmpn >>= BITS_PER_MARKER, rsize++);
  else
rsize = n->range;
The shifts then shift uint64_t by 64 bits.  For this case mask is 0
and we want both *cmpxchg and *cmpnop as 0, the operation can be done as
both nop and bswap and callers will prefer nop.

2021-11-27  Jakub Jelinek  

PR tree-optimization/103435
* gimple-ssa-store-merging.c (find_bswap_or_nop_finalize): Avoid UB
if
n->range - rsize == 8, just clear both *cmpnop and *cmpxchg in that
case.

[Bug libstdc++/103448] unexpected tuple collapse

2021-11-27 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103448

--- Comment #9 from Jonathan Wakely  ---
With class template argument deduction, T(T{}) will always make a copy
of the same type, and not wrap it in a different specialization of the
template.

There is no bug here, as Andrew said.

[Bug ipa/103451] [12 Regression] crash at gcc/range-op.cc:1836 since r12-5531-g1b0acc4b800b589a

2021-11-27 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103451

Martin Liška  changed:

   What|Removed |Added

  Component|c   |ipa
   Target Milestone|--- |12.0
   Priority|P3  |P1
 Ever confirmed|0   |1
 CC||hubicka at gcc dot gnu.org,
   ||marxin at gcc dot gnu.org
Summary|crash at|[12 Regression] crash at
   |gcc/range-op.cc:1836|gcc/range-op.cc:1836 since
   ||r12-5531-g1b0acc4b800b589a
   Last reconfirmed||2021-11-27
 Status|UNCONFIRMED |NEW
  Known to fail||12.0

--- Comment #1 from Martin Liška  ---
Started with r12-5531-g1b0acc4b800b589a.

[Bug ipa/103449] [12 Regression] use-after-free in ipa_param_body_adjustments::prepare_debug_expressions(tree_node*) (ipa-param-manipulation.c:1283) since r12-4920-g1ece90ffa9ce63b4

2021-11-27 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103449

Martin Liška  changed:

   What|Removed |Added

   Last reconfirmed||2021-11-27
   Priority|P3  |P1
 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW
 CC||jamborm at gcc dot gnu.org
Summary|[12 Regression] |[12 Regression]
   |use-after-free in   |use-after-free in
   |ipa_param_body_adjustments: |ipa_param_body_adjustments:
   |:prepare_debug_expressions( |:prepare_debug_expressions(
   |tree_node*) |tree_node*)
   |(ipa-param-manipulation.c:1 |(ipa-param-manipulation.c:1
   |283)|283) since
   ||r12-4920-g1ece90ffa9ce63b4
   Target Milestone|--- |12.0

--- Comment #1 from Martin Liška  ---
Started with r12-4920-g1ece90ffa9ce63b4.

[Bug rtl-optimization/103450] [12 Regression] ICE: SIGSEGV in memory_operand (recog.c:1818) with -Og -fharden-compares -fschedule-insns2 -fno-tree-dce -fno-tree-fre since r12-5536-g90cb088ece8d8cc1

2021-11-27 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103450

Martin Liška  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 CC||lingling.kong7 at gmail dot 
com,
   ||marxin at gcc dot gnu.org
   Target Milestone|--- |12.0
 Ever confirmed|0   |1
   Last reconfirmed||2021-11-27
   Priority|P3  |P1
Summary|ICE: SIGSEGV in |[12 Regression] ICE:
   |memory_operand  |SIGSEGV in memory_operand
   |(recog.c:1818) with -Og |(recog.c:1818) with -Og
   |-fharden-compares   |-fharden-compares
   |-fschedule-insns2   |-fschedule-insns2
   |-fno-tree-dce -fno-tree-fre |-fno-tree-dce -fno-tree-fre
   ||since
   ||r12-5536-g90cb088ece8d8cc1

--- Comment #1 from Martin Liška  ---
Started with r12-5536-g90cb088ece8d8cc1.

[Bug bootstrap/103452] *** Configuration arm-unknown-mingw32ce not supported

2021-11-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103452

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |WONTFIX
 Status|UNCONFIRMED |RESOLVED
   Target Milestone|--- |4.8.0

--- Comment #4 from Andrew Pinski  ---
arm wince support was removed in GCC 4.8.0 with r0-117302 because it used the
old FPA fpu and the ABI support for it was removed at the same time.

I highly doubt you have a windows CE machine floating around either.


Closing as won't fix.


Now arm-mingw might get some support later on. Or aarch64-mingw might be a
better choice really.

[Bug c++/101853] [12 Regression] g++.dg/modules/xtreme-header-5_b.C ICE

2021-11-27 Thread hp at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101853

Hans-Peter Nilsson  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
   Last reconfirmed||2021-11-27

--- Comment #9 from Hans-Peter Nilsson  ---
(In reply to Hans-Peter Nilsson from comment #8)
> Then as above, no change up to and including 665f726b8a15 (r12-5545).

Still there at caa04517e6f7 (r12-5549), then at f4ed2e3ae7d9 (r12-), the
g++.dg/modules/xtreme-header-2_b.C regression is gone again.

(I see this was still UNCONFIRMED, now changed to NEW.)

[Bug middle-end/77721] -Wformat-truncation not uses arg range for converted vars

2021-11-27 Thread dimhen at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77721

--- Comment #7 from Dmitry G. Dyachenko  ---
Sounds like gcc-8.0.1 PASS for me

r257061 FAIL
r258034 PASS
r12-5546 PASS

$ ~/arch-gcc/SVN/gcc_258034/bin/gcc --version
gcc (GCC) 8.0.1 20180227 (experimental) [trunk revision 258034]

$ ~/arch-gcc/SVN/gcc_258034/bin/gcc -O2 -S -Wall -Woverflow -Wconversion
-Wpedantic -Wformat-truncation=2 -xc x.c

$ cat x.c
int snprintf (char*, __SIZE_TYPE__, const char*, ...);

void foo(unsigned j, char *p)
{
if(j > 999)
return;
snprintf(p, 4, "%3u", j);
}

void bar(int j, char *p)
{
const unsigned k = (unsigned) j;
if(k > 999)
return;
snprintf(p, 4, "%3u", k);
}

[Bug bootstrap/103452] *** Configuration arm-unknown-mingw32ce not supported

2021-11-27 Thread schwab--- via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103452

--- Comment #3 from Andreas Schwab  ---
Nobody has contributed support for it.  Do you want to be the first?

[Bug bootstrap/103452] *** Configuration arm-unknown-mingw32ce not supported

2021-11-27 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103452

--- Comment #2 from cqwrteur  ---
Created attachment 51890
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51890&action=edit
stdout logs

[Bug bootstrap/103452] *** Configuration arm-unknown-mingw32ce not supported

2021-11-27 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103452

--- Comment #1 from cqwrteur  ---
Created attachment 51889
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51889&action=edit
err

[Bug bootstrap/103452] New: *** Configuration arm-unknown-mingw32ce not supported

2021-11-27 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103452

Bug ID: 103452
   Summary: *** Configuration arm-unknown-mingw32ce not supported
   Product: gcc
   Version: 12.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
  Assignee: unassigned at gcc dot gnu.org
  Reporter: unlvsur at live dot com
  Target Milestone: ---

But i did see arm mingw32ce in the gcc's config + binutils-gdb can be built
without any issues.

What's wrong here?

[Bug c/103451] New: crash at gcc/range-op.cc:1836

2021-11-27 Thread dcb314 at hotmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103451

Bug ID: 103451
   Summary: crash at gcc/range-op.cc:1836
   Product: gcc
   Version: 12.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dcb314 at hotmail dot com
  Target Milestone: ---

For this C code:

int func_10_ptr_12;

void func_10(long li_8) 
{
  long *ptr_9 = &li_8;
  li_8 &= *ptr_9 / 0 ?: li_8;
  for (;;)
func_10_ptr_12 &= 4 ? *ptr_9 : 4;
}

void func_9_s_8() 
{ 
  func_10(func_9_s_8); 
}

on recent gcc, does this:

$ /home/dcb/gcc/results/bin/gcc -c -O2 bug775.c
during IPA pass: inline
bug775.c: At top level:
bug775.c:14:1: internal compiler error: Segmentation fault
   14 | }
  | ^
0xdabcb9 crash_signal(int)
../../trunk.git/gcc/toplev.c:322
0x1c98f2f operator_div::wi_fold(irange&, tree_node*,
generic_wide_int const&, generic_wide_int
const&, generic_wide_int const&,
generic_wide_int const&) const
../../trunk.git/gcc/range-op.cc:1836

The bug first seems to occur sometime between git hash 415f9ee404dc9e8a
and 4a2007594cff78fb, a distance of 22 commits.

[Bug rtl-optimization/103450] New: ICE: SIGSEGV in memory_operand (recog.c:1818) with -Og -fharden-compares -fschedule-insns2 -fno-tree-dce -fno-tree-fre

2021-11-27 Thread zsojka at seznam dot cz via Gcc-bugs
ing-yes-rtl-df-extra-nobootstrap-amd64
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.0.0 20211127 (experimental) (GCC)

[Bug ipa/103449] New: [12 Regression] use-after-free in ipa_param_body_adjustments::prepare_debug_expressions(tree_node*) (ipa-param-manipulation.c:1283)

2021-11-27 Thread zsojka at seznam dot cz via Gcc-bugs
0] (ipa-inline-transform.c:715)
==23072==by 0x13C08CB: inline_transform(cgraph_node*)
(ipa-inline-transform.c:777)
==23072==by 0x1539F15: execute_one_ipa_transform_pass (passes.c:2290)
==23072==by 0x1539F15: execute_all_ipa_transforms(bool) (passes.c:2337)
==23072== 

$ x86_64-pc-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=/repo/gcc-trunk/binary-latest-amd64/bin/x86_64-pc-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/repo/gcc-trunk/binary-trunk-r12--20211127001619-gf4ed2e3ae7d-checking-yes-rtl-df-extra-nobootstrap-amd64/bin/../libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /repo/gcc-trunk//configure --enable-languages=c,c++
--enable-valgrind-annotations --disable-nls --enable-checking=yes,rtl,df,extra
--disable-bootstrap --with-cloog --with-ppl --with-isl
--build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu
--target=x86_64-pc-linux-gnu --with-ld=/usr/bin/x86_64-pc-linux-gnu-ld
--with-as=/usr/bin/x86_64-pc-linux-gnu-as --disable-libstdcxx-pch
--prefix=/repo/gcc-trunk//binary-trunk-r12--20211127001619-gf4ed2e3ae7d-checking-yes-rtl-df-extra-nobootstrap-amd64
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.0.0 20211127 (experimental) (GCC)

[Bug libstdc++/103445] build failure for old versions of mingw32 (not mingw-w64)

2021-11-27 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103445

--- Comment #5 from cqwrteur  ---
(In reply to Jonathan Wakely from comment #4)
> Sorry, I don't understand anything above. I don't care whether you're using
> mingw or mingw-w64, what I asked is how old it is. Libstdc++ expects a
> recent version, and I'm not surprised if it doesn't work with older
> versions. It's just not worth the effort to support very old version.
> 
> Maybe we can add some more configure checks for _wstat64 and ftruncate64 and
> skip all the filesystem code if building against an old CRT.

I do not know how old it is. it comes from dev c++ 4.9.9.2 (dev c++ is a dead
project) which uses gcc 3.4.2.

The issue I encountered is that mingw-w64 does not run properly sometimes for
certain reasons on old version of windows.

"Maybe we can add some more configure checks for _wstat64 and ftruncate64 and
skip all the filesystem code if building against an old CRT."
Yeah. Sounds good. But I think support that version of crt from dev c++ has
more issues than just this.

I think just better just add a configure to skip filesystem code manually. That
would trivialize a lot of things, rather than wasting time supporting old
versions of crt.