Questions sur strict-aliasing

11
réponses

Quelle est la stricte aliasing règle?

en posant des questions sur comportement commun non défini dans C , les âmes plus éclairées que je me suis référé à la règle stricte d'alias. De quoi parlent-ils?
demandé sur 2008-09-19 05:30:27
3
réponses

L'utilisation de ce pointeur provoque une étrange désoptimisation en boucle chaude

j'ai récemment rencontré une étrange désoptimisation (ou plutôt l'occasion manquée d'optimisation). considère ... n cache d'un pointeur de membre dans une boucle chaude semble être une technique d'optimisation manuelle nécessaire.
demandé sur 2014-10-10 12:38:56
5
réponses

"déréférencement de type punned pointeur de la pause-strict-aliasing règles d'avertissement"

j'utilise un code où je lance un enum* à int*. Quelque chose comme ceci: enum foo { ... } ... foo foobar; int * ... eux pas faire une règle Makefile séparée pour ce fichier source)? et oui, j'ai besoin de ce genre d'alias.
demandé sur 2010-11-12 12:20:53
3
réponses

Pourquoi l'optimisation supprime-t-elle cette fonction?

nous avons récemment eu une conférence à l'université sur la programmation des émissions spéciales en plusieurs langue ... pas même s'il pense qu'elles ne sont jamais lues ou écrites, mais je ne saurais pas pourquoi cela se produirait ici.
demandé sur 2014-01-04 19:08:03
7
réponses

Dereferencing type-pointeur pointu va briser les règles d'aliasing strictes

j'ai utilisé le code suivant pour lire des données à partir de fichiers dans le cadre d'un programme plus vaste. ... ssements. Que recommanderiez-vous? [update] j'ai substitué l'exemple du jouet avec la fonction réelle.
demandé sur 2010-07-14 16:48:35
6
réponses

gcc, stricte-aliasing, et les histoires d'horreur

Dans gcc-strict-aliasing-et-casting-par-un-union j'ai demandé si quelqu'un avait rencontré des problèmes avec l' ... c'est OK dans gcc-strict-aliasing-et-casting-par-un-union mais jusqu'à présent, personne n'est en désaccord.
demandé sur 2010-06-02 18:27:00
4
réponses

GCC Aliasing Vérifie w/Limiter les pointeurs

Envisager la suite de deux extraits: #define ALIGN_BYTES 32 #define ASSUME_ALIGNED(x) x = __builtin_assume_alig ... pq %rax, %rdx ja .L20 .L12: vzeroupper ret .L19: xorl %eax, %eax jmp .L20 .cfi_endproc
demandé sur 2013-03-25 15:21:23
7
réponses

gcc, aliasing strict, et la diffusion à travers une union

avez-vous des histoires d'horreur à raconter? Le manuel GCC a récemment ajouté un avertissement concernant-fstrict-al ... pas =3 , produit warning: dereferencing type-punned pointer might break strict-aliasing rules pour l'exemple ici.
demandé sur 2010-05-25 20:06:42
2
réponses

Est - ce que tous les pointeurs dérivés des pointeurs vers les types de structure sont les mêmes?

La Question il n'est pas facile de répondre à la question de savoir si tous les pointeurs dérivés des pointeurs vers les ... lisée dans toute la norme, nous ne pouvons pas conclure si elle s'applique à une dérivation récursive de tels pointeurs.
demandé sur 2014-06-19 14:32:31
5
réponses

Quelles précautions dois-je prendre pour faire un pool de mémoire qui n'invoque pas un comportement indéfini?

mon problème initial est que j'ai, sur un projet, plusieurs objets qui partagent une vie (i.e., une fois que j'en ai libé ... e programme bien comporté? (en supposant qu'il soit possible de l'implémenter sans invoquer un comportement non défini.)
demandé sur 2016-09-22 16:35:53
4
réponses

Pourquoi GCC et Clang ne font-ils pas cette alias-optimisation?

j'ai un cas où un ami lui jette un non-objet de classe de base de type "Base" à une classe d'objet de type "Déri ... " et elles sont exclues de l'optimisation." . Quelqu'un peut-il fournir une preuve de cela pour GCC ou Clang?
demandé sur 2013-06-19 18:14:51
1
réponses

stockage aligné et aliasing strict

j'utilise actuellement aligned_storage pour implémenter un type 'optionnel' similaire à celui de boost::optional. Pour ac ... , je me sentirais mieux si vous pouviez faire référence à la norme dans votre réponse (elle m'aide à dormir la nuit :P).
demandé sur 2012-11-20 08:20:19
3
réponses

L'alias T* avec char* est autorisé. Est-il permis aussi dans l'autre sens?

Note: cette question a été renommée et réduite pour la rendre plus précise et plus lisible. La plupart des comme ... e sens. Par exemple: char * c = read_socket(...); unsigned * u = reinterpret_cast<unsigned*>(c); // huh?
demandé sur 2012-09-27 04:45:24
2
réponses

Est-ce que cela enfreint vraiment les règles d'aliasing strict?

quand je compile ce code d'exemple en utilisant g++, Je reçois cet avertissement: attention: dereferencing type-poin ... iasing strict? Le fait que c'est un char[] et pas char* signifie qu'il ne peut pas réellement alias n'importe quel type?
demandé sur 2014-11-18 23:49:16
2
réponses

Est-ce un comportement non défini à `réinterpréter cast` a `T*` à `T(*)[N]`?

envisager le scénario suivant: std::array<int, 8> a; auto p = reinterpret_cast<int(*)[8]>(a.data()) ... tableau de 8 int objets y a-t-il une règle qui me manque pour que ce reinterpret_cast soit valide?
demandé sur 2018-01-25 16:28:18
1
réponses

Fournir une API C à votre bibliothèque C++ et un aliasing strict

un motif courant lors de la fourniture d'une API C est de transmettre déclarer certains types opaques dans votre en-tête ... 'alias? Si non, pourquoi pas? Et si oui, comment ce type d'abstraction à l'interface publique limite obtenue légalement?
demandé sur 2018-03-12 14:25:40
2
réponses

Façon correcte et portable d'interpréter le tampon comme une structure

le contexte de mon problème est dans la programmation réseau. Disons que je veux envoyer des messages sur le réseau en ... cette réponse, c'est certainement [edit - pas] rupture stricte-aliasing et a donc un comportement indéfini.
demandé sur 2013-10-03 21:08:34
6
réponses

Réutiliser un tampon flottant pour les doubles sans comportement non défini

dans une fonction C++ particulière, il se trouve que j'ai un pointeur vers un grand tampon de flotteurs que je veux ut ... autorisée en C++). on peut supposer que le float buffer est correctement aligné pour l'utiliser en double.
demandé sur 2018-07-11 18:35:46
4
réponses

Comment lancer le stockage de sockaddr et éviter de briser les règles d'aliasing strictes

j'utilise le Guide de Beej sur le réseautage et je suis tombé sur un problème d'alias. Il propose une fonction pour reto ... es pratiques. aussi, si quelqu'un peut expliquer exactement où le problème d'alias a lieu, je l'apprécierais beaucoup.
demandé sur 2009-09-16 01:10:40
2
réponses

Quand est-ce que char* est sûr pour l'aliasing pointeur strict?

j'ai essayé de comprendre les règles d'alias strictes comme elles s'appliquent au pointeur de char. Ici ... et que je le projette sur une structure? Comment faites-vous gérer cette situation dans un monde strictement aliasé?
demandé sur 2008-11-04 19:31:50
5
réponses

Est-ce que le mot-clé restrict de C peut être émulé en utilisant l'alias strict dans C++?

Le Problème restrict le mot-clé en C est absent en C++, donc par intérêt je cherchais un moyen d'émuler la même fonctionn ... c++1z; serait-il possible? Si le ci-dessus, quelque chose de similaire à noalias apparaissent dans la bibliothèque standard?
demandé sur 2016-06-18 23:16:17
1
réponses

Quel est le type d'un objet écrit par memset?

Code 1: unsigned int *p = malloc(sizeof *p); memset(p, 0x55, sizeof *p); unsigned int u = *p; Code 2: void *d = mallo ... emset se comporte comme écrire à travers une valeur de type de caractère, ou quelque chose d'autre. La description de
demandé sur 2015-06-22 02:14:20
4
réponses

bouts de flotteur et aliasing strict

j'essaie d'extraire les bits d'un flotteur sans invoquer un comportement non défini. Voici ma première tentative: unsign ... irement<sizeof(unsigned)==sizeof(float), unsigned>::type u; memcpy(&u, &x, sizeof u); return u; }
demandé sur 2010-12-01 22:40:16
2
réponses

Est-ce une violation d'alias stricte pour alias une struct comme son premier membre?

exemple de code: struct S { int x; }; int func() { S s{2}; return (int &)s; // Equivalent to *reinterpr ... 11.6. ma question Est la suivante: ce code est-il correct, et si oui, sous lequel des points ci-dessus est-il permis?
demandé sur 2018-05-17 07:06:17
1
réponses

Un pointeur std::byte a-t-il les mêmes implications que char*?

C++ (et C) la stricte aliasing règles prévoient qu'un char* et unsigned char* peut-alias tout autre pointeur. AFAIK il n ... ntation d'objet), mais contrairement à ces types, ce n'est pas un type de caractère et n'est pas un type arithmétique.
demandé sur 2017-04-21 23:40:00
7
réponses

Quelle est la bonne façon de taper un flotteur sur un int et vice-versa?

le code ci-dessous effectue une opération de racine carrée inverse rapide par quelques hacks de bits. L'algorithme a proba ... 32_t*)&x; i = 0x5f3759df - (i>>1); x = *(float*)&i; x = x*(1.5f - xhalf*x*x); return x; }
demandé sur 2013-07-22 18:18:08
5
réponses

Correction pour le déréférencement type-pointeur pointu cassera strict-aliasing

j'essaie de corriger deux avertissements lors de la compilation d'un programme spécifique en utilisant GCC. Les avertiss ... eu de nombreuses suggestions pour utiliser un syndicat - qu'est-ce qui pourrait être un syndicat approprié pour ce cas?
demandé sur 2012-01-11 22:28:29
4
réponses

aliasing et alignement stricts

j'ai besoin d'un moyen sûr pour alias entre les types de POD arbitraires, conforme à ISO-C++11 explicitement en considéra ... x -Wall -Wextra -O3 -fstrict-aliasing -o alias.exe alias.cpp * Edit: Et si non, comment pourrait-on modifier ce légal?
demandé sur 2012-04-01 16:34:11
4
réponses

Ce recours aux syndicats est-il strictement conforme?

etant Donné le code: struct s1 {unsigned short x;}; struct s2 {unsigned short x;}; union s1s2 { struct s1 v1; struct s2 v ... que chose dans la norme qui justifierait un tel comportement, ou les compilateurs ne le suivent-ils tout simplement pas?
demandé sur 2017-09-13 22:49:13
3
réponses

Comment affecter de la mémoire pour un tableau et une structure dans un appel malloc sans rompre l'alias strict?

lors de l'allocation de la mémoire pour un tableau de taille variable, je fais souvent quelque chose comme ceci: struct a ... uand je la libère, ce qui compliquerait le code. Ce serait aussi probablement plus lent. Ce n'est pas ce que je cherche.
demandé sur 2018-02-10 00:24:23