• [^] # Re: allocation de tableau

    Posté par (site web personnel) . En réponse au journal pythran rampe. Évalué à 2.

    Dans ce cas, on peut quand même s'en sortir en déléguant l'évaluation de la condition à l'exécution, ce qui a quelques défauts (dont augmentation de la taille du code) mais pas mal d'avantages aussi.

    Un cas classique pour gérer l'aliasing:

    #include <stdint.h>
    void foo(size_t n, float a[n], float b[n]) {
     // aucune garantie que a et b ne se chevauchent pas partiellement ou totalement
     for(size_t i=1;i< n ; i++) { // cette boucle n'est parallèle que si a et b ne se chevauchent pas
     a[i] = 2*b[i-1];
     }
    
    

    Dans ce cas un petit test dynamique permet de suppléer aux carences de l'analyse statique

    void foo(size_t n, float a[n], float b[n]) {
     if( &a[n]<=&b[0] || &b[n] <= &a[0] ) foo_parallel(n,a,b);
     else foo_sequential(n,a,b);
    }
    
    

    icc fait ça à fond !