Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #77145

Re: Aliasing through a union pointer

From Ian Collins <ian-news@hotmail.com>
Newsgroups comp.lang.c
Subject Re: Aliasing through a union pointer
Date 2015-11-25 18:28 +1300
Message-ID <dbkv7bFjpqnU26@mid.individual.net> (permalink)
References (6 earlier) <slrnn58t2f.5q5.grahn+nntp@frailea.sa.invalid> <n32md3$v2d$1@dont-email.me> <n32oaa$789$1@dont-email.me> <dbkbrsFjpqnU25@mid.individual.net> <10e6da2d-3050-4672-a66d-38fd9bddc22e@googlegroups.com>

Show all headers | View raw


supercat@casperkitty.com wrote:
> On Tuesday, November 24, 2015 at 5:58:04 PM UTC-6, Ian Collins wrote:
>> The "Why should I un-pickle an entire object just to test the one
>> field?" problem can be solved by lazy extraction: only extract that one
>> field and keep the raw buffer around to be processed later.
>
> It could be solved even more nicely if a language provided built-in support
> for such a semantics.  I would aver that:
>
> 1. While working with data in externally-imposed formats isn't necessary in
>     all projects, nor is it an obscure requirement that's only needed on a
>     few specialized systems.  Such semantics often play an important rule in
>     things like audio-visual decoding, where performance can be very
>     important.
>
> 2. It would be possible to formulate a list of required features that would
>     handle the vast majority of applicable usage cases.
>
> 3. It would greatly ease porting of code between machines with different
>     architectures.
>
> 4. In many cases, the most efficient way to code something will vary
>     enormously based not just on the target architecture, but also on context.
>     If a field's value will be needed twice, it may make sense to cache it
>     in a native-format register, or to simply fetch it when needed, but a
>     programmer can't be expected to know which approach will be faster.
>     By contrast, if a typed-memory-barrier directive were required to separate
>     accesses to a memory-imaged type from accesses to any other type which
>     might alias it, a compiler would be able to apply optimizations much more
>     effectively than a programmer could.
>
> IMHO, rather than trying to push optimization at the expense of everything
> else, it would be more helpful for C to offer more ways for programmers to
> specify their requirements declaratively rather than imperatively, and let
> the compiler figure out how to satisfy such declarative requirements rather
> than trying to infer requirements from imperative-language code.

The language doesn't because it can't.

Some targets simply don't support misaligned access and others support 
it at great cost (a trap in the case of SPARC).  On those that do, 
compiler extensions (such as those offered by gcc) are the recognised 
and appropriate solution.  I would argue that it is important for the 
programmer to be aware that they are entering the realm of 
implementation defined behaviour in this case.

-- 
Ian Collins

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Aliasing through a union pointer Ian Pilcher <arequipeno@gmail.com> - 2015-11-23 10:14 -0600
  Re: Aliasing through a union pointer Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-11-23 11:43 -0500
    Re: Aliasing through a union pointer Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-11-23 11:49 -0500
    Re: Aliasing through a union pointer Ian Pilcher <arequipeno@gmail.com> - 2015-11-23 13:22 -0600
      Re: Aliasing through a union pointer Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-11-23 14:38 -0500
        Re: Aliasing through a union pointer Tim Rentsch <txr@alumni.caltech.edu> - 2015-11-25 10:38 -0800
          Re: Aliasing through a union pointer Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-11-25 14:17 -0500
            Re: Aliasing through a union pointer Tim Rentsch <txr@alumni.caltech.edu> - 2015-11-27 13:16 -0800
      Re: Aliasing through a union pointer David Brown <david.brown@hesbynett.no> - 2015-11-23 21:46 +0100
        Re: Aliasing through a union pointer Jorgen Grahn <grahn+nntp@snipabacken.se> - 2015-11-23 22:20 +0000
          Re: Aliasing through a union pointer Stephen Sprunk <stephen@sprunk.org> - 2015-11-23 16:52 -0600
            Re: Aliasing through a union pointer Jorgen Grahn <grahn+nntp@snipabacken.se> - 2015-11-23 23:10 +0000
              Re: Aliasing through a union pointer Stephen Sprunk <stephen@sprunk.org> - 2015-11-23 19:05 -0600
          Re: Aliasing through a union pointer Nick Bowler <nbowler@draconx.ca> - 2015-11-23 22:51 +0000
          Re: Aliasing through a union pointer Keith Thompson <kst-u@mib.org> - 2015-11-23 15:49 -0800
            Re: Aliasing through a union pointer supercat@casperkitty.com - 2015-11-23 16:01 -0800
          Re: Aliasing through a union pointer David Brown <david.brown@hesbynett.no> - 2015-11-24 09:55 +0100
            Re: Aliasing through a union pointer Jorgen Grahn <grahn+nntp@snipabacken.se> - 2015-11-24 14:29 +0000
              Re: Aliasing through a union pointer David Brown <david.brown@hesbynett.no> - 2015-11-24 22:58 +0100
                Re: Aliasing through a union pointer Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-11-24 17:30 -0500
                Re: Aliasing through a union pointer supercat@casperkitty.com - 2015-11-24 15:27 -0800
                Re: Aliasing through a union pointer Ian Collins <ian-news@hotmail.com> - 2015-11-25 12:57 +1300
                Re: Aliasing through a union pointer supercat@casperkitty.com - 2015-11-24 16:31 -0800
                Re: Aliasing through a union pointer Ian Collins <ian-news@hotmail.com> - 2015-11-25 18:28 +1300
                Re: Aliasing through a union pointer supercat@casperkitty.com - 2015-11-25 06:54 -0800
                Re: Aliasing through a union pointer Ian Collins <ian-news@hotmail.com> - 2015-11-26 08:59 +1300
                Re: Aliasing through a union pointer supercat@casperkitty.com - 2015-11-25 13:01 -0800
                Re: Aliasing through a union pointer Ian Collins <ian-news@hotmail.com> - 2015-11-26 12:58 +1300
                Re: Aliasing through a union pointer supercat@casperkitty.com - 2015-11-25 16:44 -0800
                Re: Aliasing through a union pointer Ian Collins <ian-news@hotmail.com> - 2015-11-26 14:12 +1300
                Re: Aliasing through a union pointer supercat@casperkitty.com - 2015-11-25 21:34 -0800
                Re: Aliasing through a union pointer Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-11-25 21:55 -0800
                Re: Aliasing through a union pointer Ian Collins <ian-news@hotmail.com> - 2015-11-26 20:51 +1300
                Re: Aliasing through a union pointer supercat@casperkitty.com - 2015-11-26 11:39 -0800
                Re: Aliasing through a union pointer Jorgen Grahn <grahn+nntp@snipabacken.se> - 2015-11-26 00:06 +0000
            Re: Aliasing through a union pointer Keith Thompson <kst-u@mib.org> - 2015-11-24 11:51 -0800
              Re: Aliasing through a union pointer supercat@casperkitty.com - 2015-11-24 12:20 -0800
                Re: Aliasing through a union pointer Keith Thompson <kst-u@mib.org> - 2015-11-24 21:52 -0800
                Re: Aliasing through a union pointer supercat@casperkitty.com - 2015-11-25 08:30 -0800
              Re: Aliasing through a union pointer David Brown <david.brown@hesbynett.no> - 2015-11-24 23:04 +0100
  Re: Aliasing through a union pointer Tim Rentsch <txr@alumni.caltech.edu> - 2015-11-25 10:10 -0800
    Re: Aliasing through a union pointer Richard Damon <Richard@Damon-Family.org> - 2015-11-25 11:02 -0800
      Re: Aliasing through a union pointer Philip Lantz <prl@canterey.us> - 2015-11-26 13:06 -0800
        Re: Aliasing through a union pointer Richard Damon <Richard@Damon-Family.org> - 2015-11-26 13:09 -0800
      Re: Aliasing through a union pointer Tim Rentsch <txr@alumni.caltech.edu> - 2015-11-27 13:08 -0800

csiph-web