public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Rafał Pietrak" <embedded@ztk-rp.eu>
To: waffl3x <waffl3x@protonmail.com>
Cc: Jonathan Wakely <jwakely.gcc@gmail.com>,
	"gcc@gcc.gnu.org" <gcc@gcc.gnu.org>
Subject: Re: wishlist: support for shorter pointers
Date: Wed, 28 Jun 2023 12:43:35 +0200	[thread overview]
Message-ID: <9bf8d93d-7342-ad21-4f06-864978e580f4@ztk-rp.eu> (raw)
In-Reply-To: <LTyNiNtXqgwmxuNxT7AkJNHtRjnbZxdHlTtP8-par3lP-cWtQYUtJRGL-i4GnUwabs2Y2waEEPM3TJigv3OIFcGL15D4EMRj0lPBfTVp7sA=@protonmail.com>

Hi Alex,

W dniu 28.06.2023 o 11:56, waffl3x pisze:
> Here's a quick and dirty example of how this function could be rewritten with
> modern C++. I omitted some necessary details, particularly the implementation of the
> linked list iterator. I also wrote it out quickly so I can't be certain it's 100%
> correct, but it should give you an idea of whats possible.

trying....

> 
> // I assume you meant to return a pointer
> template<typename Iter>
> auto test_funct(Iter iter, Iter end, char opt) {
>      for (; iter != end; ++iter) {
>          // dereferencing iter would get buff
>          if (!*iter) { *iter = opt; break; }
>      }
>      return iter;
> }
-------------------------- TEST.CPP is the above code
$ g++ -fpermissive -c test.cpp
 >>no error, GOOD :)
$ g++ -fpermissive -S test.cpp
$ cat test.s
	.file	"test.cpp"
	.text
	.ident	"GCC: (Debian 12.2.0-14) 12.2.0"
	.section	.note.GNU-stack,"",@progbits
---------------end-of-file----------

Hmm... that's disappointing :( nothing was generated.

then again. I've noticed that you've changed pointers to indices. I've 
pondered that for my implementation too but discarded the idea for it 
will require adjustments by struct-size (array element size) on every 
access.... Or may be C++ does a different thing with [object++], then 
what plain-c does with [variable++]?

I's hard to analyze code without basic knowledge of the language :(

> 
> I also made an example using the C++ algorithms library.
> 
> template<typename Iter>
> auto test_funct(Iter begin, Iter end, char opt) {
>      auto iter = std::find_if(begin, end, [](auto buff){return !buff;});
>      if (iter) {
>          *iter = opt;
>      }
>      return iter;
> }

here I got:
test2.cpp:3:22: error: ‘find_if’ is not a member of ‘std’
so, it's a nogo for me either.

> As I said, there's quite a bit omitted here, to be blunt, implementing both
> the fancy pointers (especially when I don't know anything about the hardware) and
> the iterators required would be more of a task than I am willing to do. I'm happy
> to help but I don't think I should be doing unpaid labor :).

Fair enough.

[---------]
> 
> I'm happy to answer more questions and help, however I'm concerned this is
> getting fairly unrelated to GCC.

 From my perspective it is related to GCC (well... ok, to CC in general 
- it "smells" like an extention to "C-standard" providing additional 
"funny" semantics to CC. But GCC is a "front-runner" for CC evolution, 
right? :).

Then again. I'm not into drawing anybody into unfruitful and pointless 
support (for my little project). I only hoped that the problem could be 
recognized and may be would inspire some developers out there (as it 
would be silly for me, if I thought its implementation into GCC could 
happen before my small project ends, right?).

Anyway, thanx for the hints and suggestions.

-R

  reply	other threads:[~2023-06-28 10:46 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-27 12:26 Rafał Pietrak
2023-06-28  1:54 ` waffl3x
2023-06-28  7:13   ` Rafał Pietrak
2023-06-28  7:31     ` Jonathan Wakely
2023-06-28  8:35       ` Rafał Pietrak
2023-06-28  9:56         ` waffl3x
2023-06-28 10:43           ` Rafał Pietrak [this message]
2023-06-28 12:12             ` waffl3x
2023-06-28 12:23               ` Rafał Pietrak
2023-07-03 14:52         ` David Brown
2023-07-03 16:29           ` Rafał Pietrak
2023-07-04 14:20             ` Rafał Pietrak
2023-07-04 15:13               ` David Brown
2023-07-04 16:15                 ` Rafał Pietrak
2023-06-28  7:34     ` waffl3x
2023-06-28  8:41       ` Rafał Pietrak
2023-06-28 13:00 ` Martin Uecker
2023-06-28 14:51   ` Rafał Pietrak
2023-06-28 15:44     ` Richard Earnshaw (lists)
2023-06-28 16:07       ` Martin Uecker
2023-06-28 16:49         ` Richard Earnshaw (lists)
2023-06-28 17:00           ` Martin Uecker
2023-06-28 16:48       ` Rafał Pietrak
2023-06-29  6:19       ` Rafał Pietrak
2023-07-03 15:07         ` Ian Lance Taylor
2023-07-03 16:42           ` Rafał Pietrak
2023-07-03 16:57             ` Richard Earnshaw (lists)
2023-07-03 17:34               ` Rafał Pietrak
2023-07-04 12:38             ` David Brown
2023-07-04 12:57               ` Oleg Endo
2023-07-04 14:46               ` Rafał Pietrak
2023-07-04 15:55                 ` David Brown
2023-07-04 16:20                   ` Rafał Pietrak
2023-07-04 22:57                 ` Martin Uecker
2023-07-05  5:26                   ` Rafał Pietrak
2023-07-05  7:29                     ` Martin Uecker
2023-07-05  8:05                       ` Rafał Pietrak
2023-07-05  9:11                         ` David Brown
2023-07-05  9:25                           ` Martin Uecker
2023-07-05 11:34                             ` David Brown
2023-07-05 12:01                               ` Martin Uecker
2023-07-05  9:42                           ` Rafał Pietrak
2023-07-05 11:55                             ` David Brown
2023-07-05 12:25                               ` Rafał Pietrak
2023-07-05 12:57                                 ` David Brown
2023-07-05 13:29                                   ` Rafał Pietrak
2023-07-05 14:45                                     ` David Brown
2023-07-05 16:13                                       ` Rafał Pietrak
2023-07-05 17:39                                         ` David Brown
2023-07-06  7:00                                           ` Rafał Pietrak
2023-07-06 12:53                                             ` David Brown
2023-07-05  9:29                         ` Martin Uecker
2023-07-05 10:17                           ` Rafał Pietrak
2023-07-05 10:48                             ` Martin Uecker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9bf8d93d-7342-ad21-4f06-864978e580f4@ztk-rp.eu \
    --to=embedded@ztk-rp.eu \
    --cc=gcc@gcc.gnu.org \
    --cc=jwakely.gcc@gmail.com \
    --cc=waffl3x@protonmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).