diff options
author | Craig Topper <craig.topper@gmail.com> | 2014-12-27 07:00:08 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2014-12-27 07:00:08 +0000 |
commit | dd84ec5fd9b0a2fe6d9611c53bad36291bc97c0e (patch) | |
tree | eef034d67cf6f5dbcf62ef313a8e5e1202b6889f /clang/lib/Sema/SemaChecking.cpp | |
parent | 2094d8fe88712d40504ff21e788b5b0f7d304368 (diff) | |
download | bcm5719-llvm-dd84ec5fd9b0a2fe6d9611c53bad36291bc97c0e.tar.gz bcm5719-llvm-dd84ec5fd9b0a2fe6d9611c53bad36291bc97c0e.zip |
[x86] Add range checking to the constant argument of cmpps/pd/ss/sd builtinas.
llvm-svn: 224880
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 55de70826bc..f4e33c6cb09 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -836,12 +836,16 @@ bool Sema::CheckMipsBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) { } bool Sema::CheckX86BuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) { + unsigned i = 0, l = 0, u = 0; switch (BuiltinID) { - case X86::BI_mm_prefetch: - // This is declared to take (const char*, int) - return SemaBuiltinConstantArgRange(TheCall, 1, 0, 3); + default: return false; + case X86::BI_mm_prefetch: i = 1; l = 0; u = 3; break; + case X86::BI__builtin_ia32_cmpps: + case X86::BI__builtin_ia32_cmpss: + case X86::BI__builtin_ia32_cmppd: + case X86::BI__builtin_ia32_cmpsd: i = 2; l = 0; u = 31; break; } - return false; + return SemaBuiltinConstantArgRange(TheCall, i, l, u); } /// Given a FunctionDecl's FormatAttr, attempts to populate the FomatStringInfo |