Akira Hatanaka
e867e422e2
[X86, inlineasm] Do not allow using constraint 'x' for a variable larger than
...
128-bit unless the target CPU supports AVX.
rdar://problem/11846140
llvm-svn: 218082
2014-09-18 21:58:54 +00:00
Hans Wennborg
3c619a43d5
[X86, inline-asm] Allow 256-bit wide operands for the 'x' constraints
...
The 'x' constraint is for "any SSE register", and GCC seems to include the
256-bit ymm registers in that concept.
llvm-svn: 218073
2014-09-18 20:24:04 +00:00
Akira Hatanaka
974131ea88
[X86, inlineasm] Check that the output size is correct for the given constraint.
...
llvm-svn: 218064
2014-09-18 18:17:18 +00:00
Akira Hatanaka
31c6d3b71e
[X86, inline-asm] Check that the input size is correct for constraints R, q, Q,
...
S, D, A, y, x, f, t, and u.
This is a follow-up patch for r167717.
rdar://problem/11846140
rdar://problem/17476970
llvm-svn: 217994
2014-09-17 23:35:14 +00:00
Bill Wendling
c4fc3a2ba5
Emit an error message instead of crashing when dereferencing an incomplete pointer type.
...
If the ASM statement is dereferencing an incomplete pointer type, issue an error
instead of crashing.
<rdar://problem/12700799>
llvm-svn: 177915
2013-03-25 21:09:49 +00:00
Bill Wendling
b3b4a37138
Use RequireCompleteType() instead of isIncompleteType().
...
isIncompleteType() returns true or false for template types depending on whether
the type is instantiated yet. In this context, that's arbitrary. The better way
to check for a complete type is RequireCompleteType().
Thanks to Eli Friedman for noticing this!
<rdar://problem/12700799>
llvm-svn: 177768
2013-03-22 21:33:46 +00:00
Bill Wendling
0cc8bc4d63
That's causing an error.
...
llvm-svn: 167763
2012-11-12 22:14:27 +00:00
Bill Wendling
b1da2cb3fd
Don't test for incomplete types.
...
llvm-svn: 167761
2012-11-12 22:01:56 +00:00
Bill Wendling
039136664d
Update testcase to show that we don't emit an error for sizes <= 32-bits.
...
llvm-svn: 167748
2012-11-12 21:13:35 +00:00
Bill Wendling
887b485dbe
Check that the input size is correct for the given constraint.
...
The 'a', 'c', and 'd' constraints on i386 mean a 32-bit register. We cannot
place a 64-bit value into the 32-bit register. Error out instead of causing the
compiler to spew general badness.
<rdar://problem/12415959>
llvm-svn: 167717
2012-11-12 06:42:51 +00:00