Is it possible to set a maximum alignment for local variables, either by passing a command line option or using target-specific hooks? <br>For example, in the code shown below, if the maximum alignment is 8, the alignment attribute in the source code (__aligned__(16)) will be ignored, and local variable a will be aligned on an 8-byte boundary. <br>
<br># align2.c<br>#define N 16<br>  <br>int main1 (int n, int *a);<br><br>int main (void)<br>{<br>  int a[N+1] __attribute__ ((__aligned__(16)));<br><br>  main1 (N, a+1);<br><br>  return 0;<br>}<br><br># .ll <br># clang  -O3 -S -o - -emit-llvm align2.c<br>
; ModuleID = 'align2.c'<br>target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"<br>target triple = "i386-pc-linux-gnu"<br>
<br>define i32 @main() nounwind {<br>entry:<br>  %a = alloca [17 x i32], align 16; <br>  %add.ptr = getelementptr inbounds [17 x i32]* %a, i32 0, i32 1<br>  %call = call i32 @main1(i32 16, i32* %add.ptr) nounwind<br>  ret i32 0<br>
}<br><br>declare i32 @main1(i32, i32*)<br><br><br>