forked from OSchip/llvm-project
[Stack Alignment] emit warning instead of a hard error
Per discussion in rdar://13127907, we should emit a hard error only if people write code where the requested alignment is larger than achievable and assumes the low bits are zeros. A warning should be good enough when we are not sure if the source code assumes the low bits are zeros. rdar://13127907 llvm-svn: 174336
This commit is contained in:
parent
56aecccee0
commit
86b1d868ba
|
@ -479,11 +479,11 @@ static inline unsigned clampStackAlignment(bool ShouldClamp, unsigned PrefAlign,
|
|||
if (!ShouldClamp || PrefAlign <= StackAlign)
|
||||
return PrefAlign;
|
||||
if (Alloca && MinAlign > StackAlign)
|
||||
Alloca->getParent()->getContext().emitError(Alloca,
|
||||
"Requested Minimal Alignment exceeds the Stack Alignment!");
|
||||
Alloca->getParent()->getContext().emitWarning(Alloca,
|
||||
"Requested alignment exceeds the stack alignment!");
|
||||
else
|
||||
assert(MinAlign <= StackAlign &&
|
||||
"Requested Minimal Alignment exceeds the Stack Alignment!");
|
||||
"Requested alignment exceeds the stack alignment!");
|
||||
return StackAlign;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
; If alignment for alloc is smaller than or equal to stack alignment, but the
|
||||
; preferred type alignment is bigger, the alignment will be clamped.
|
||||
; If alignment for alloca is bigger than stack alignment, the compiler
|
||||
; will emit an error.
|
||||
; will emit a warning.
|
||||
define void @test(<16 x float>* noalias sret %agg.result) nounwind ssp {
|
||||
entry:
|
||||
; CHECK: Requested Minimal Alignment exceeds the Stack Alignment!
|
||||
; CHECK: warning: Requested alignment exceeds the stack alignment!
|
||||
%retval = alloca <16 x float>, align 16
|
||||
%0 = load <16 x float>* @T3_retval, align 16
|
||||
store <16 x float> %0, <16 x float>* %retval
|
||||
|
|
Loading…
Reference in New Issue