Hi!

On Wed, Jun 25, 2014 at 03:36:38PM +0200, Marek Polacek wrote:
>  static void __attribute__ ((noinline, noclone))
>  fn7 (void)
>  {
> -  int n = 5, i;
> +  int n = 5;
> +  volatile int i;
>    volatile int c[n][n][n];
> -  c[5][2][2] = 2;
> -  c[2][5][2] = 2;
> -  c[2][2][5] = 2;
> +  asm ("" : : "r" (&c[5][2][2]) : "memory");
>    i = c[5][2][2];
> +  asm ("" : : "r" (&c[2][5][2]) : "memory");
>    i = c[2][5][2];
> +  asm ("" : : "r" (&c[2][2][5]) : "memory");
>    i = c[2][2][5];

Please don't invoke undefined behavior in the asm statements.
So, "r" (&c[5]) is fine, but not &c[5][2][2] is not, &x[-1] is not, etc.
I'd say it should be ok to always just take address of the base
variable in the asm.  Otherwise it looks good to me.

        Jakub

Reply via email to