diff options
author | Filipe Cabecinhas <me@filcab.net> | 2015-05-18 21:48:55 +0000 |
---|---|---|
committer | Filipe Cabecinhas <me@filcab.net> | 2015-05-18 21:48:55 +0000 |
commit | 11bb8495f6f44ec842bed641f837df2e3cbc29fa (patch) | |
tree | 890d9c9f9fa22bf21bfaeec9573b348b2aae189e /llvm/test/Bitcode/invalid.test | |
parent | 41216393a43930f66e9ea697ed9a03b7f3b66cf1 (diff) | |
download | bcm5719-llvm-11bb8495f6f44ec842bed641f837df2e3cbc29fa.tar.gz bcm5719-llvm-11bb8495f6f44ec842bed641f837df2e3cbc29fa.zip |
Extract the load/store type verification to a separate function.
Summary:
Added isLoadableOrStorableType to PointerType.
We were doing some checks in some places, occasionally assert()ing instead
of telling the caller. With this patch, I'm putting all type checking in
the same place for load/store type instructions, and verifying the same
thing every time.
I also added a check for load/store of a function type.
Applied extracted check to Load, Store, and Cmpxcg.
I don't have exhaustive tests for all of these, but all Error() calls in
TypeCheckLoadStoreInst are being tested (in invalid.test).
Reviewers: dblaikie, rafael
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9785
llvm-svn: 237619
Diffstat (limited to 'llvm/test/Bitcode/invalid.test')
-rw-r--r-- | llvm/test/Bitcode/invalid.test | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/test/Bitcode/invalid.test b/llvm/test/Bitcode/invalid.test index fbd1cb9f4d9..7dd97a4f49a 100644 --- a/llvm/test/Bitcode/invalid.test +++ b/llvm/test/Bitcode/invalid.test @@ -35,7 +35,7 @@ BAD-TYPE-TABLE-FORWARD-REF: Invalid TYPE table: Only named structs can be forwar BAD-BITWIDTH: Bitwidth for integer type out of range BAD-ALIGN: Invalid alignment value MISMATCHED-EXPLICIT-GEP: Explicit gep type does not match pointee type of pointer operand -MISMATCHED-EXPLICIT-LOAD: Explicit load type does not match pointee type of pointer operand +MISMATCHED-EXPLICIT-LOAD: Explicit load/store type does not match pointee type of pointer operand MISMATCHED-EXPLICIT-GEP-OPERATOR: Explicit gep operator type does not match pointee type of pointer operand MISMATCHED-EXPLICIT-CALL: Explicit call type does not match pointee type of callee operand NON-FUNCTION-EXPLICIT-CALL: Explicit call type is not a function type @@ -121,7 +121,7 @@ HUGE-FWDREF: Invalid record RUN: not llvm-dis -disable-output %p/Inputs/invalid-load-pointer-type.bc 2>&1 | \ RUN: FileCheck --check-prefix=LOAD-BAD-TYPE %s -LOAD-BAD-TYPE: Load operand is not a pointer type +LOAD-BAD-TYPE: Load/Store operand is not a pointer type RUN: not llvm-dis -disable-output %p/Inputs/invalid-GCTable-overflow.bc 2>&1 | \ RUN: FileCheck --check-prefix=GCTABLE-OFLOW %s @@ -137,3 +137,8 @@ RUN: not llvm-dis -disable-output %p/Inputs/invalid-extract-0-indices.bc 2>&1 | RUN: FileCheck --check-prefix=EXTRACT-0-IDXS %s EXTRACT-0-IDXS: EXTRACTVAL: Invalid instruction with 0 indices + +RUN: not llvm-dis -disable-output %p/Inputs/invalid-load-ptr-type.bc 2>&1 | \ +RUN: FileCheck --check-prefix=BAD-LOAD-PTR-TYPE %s + +BAD-LOAD-PTR-TYPE: Cannot load/store from pointer |