1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 10:42:39 +01:00

OpaquePtr: Reject 'ptr*' again when parsing textual IR

Bring back the testcase dropped in
1e6303e60ca5af4fbe7ca728572fd65666a98271 and get it passing by checking
explicitly for `ptr*` in LLParser. Uses `Type::isOpaquePointerTy()` from
ad4bb8280952c2cacf497e30560ee94c119b36e0.

Differential Revision: https://reviews.llvm.org/D104938
This commit is contained in:
Duncan P. N. Exon Smith 2021-06-25 11:53:27 -07:00
parent 905b300022
commit a6ff73a905
3 changed files with 16 additions and 0 deletions

View File

@ -2597,6 +2597,8 @@ bool LLParser::parseType(Type *&Result, const Twine &Msg, bool AllowVoid) {
return tokError("basic block pointers are invalid");
if (Result->isVoidTy())
return tokError("pointers to void are invalid - use i8* instead");
if (Result->isOpaquePointerTy())
return tokError("ptr* is invalid - use ptr instead");
if (!PointerType::isValidElementType(Result))
return tokError("pointer to this type is invalid");
Result = PointerType::getUnqual(Result);

View File

@ -0,0 +1,7 @@
; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s
; CHECK: ptr* is invalid - use ptr instead
define void @f(ptr addrspace(3) %a) {
%b = bitcast ptr addrspace(3) %a to ptr addrspace(3)*
ret void
}

View File

@ -0,0 +1,7 @@
; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s
; CHECK: ptr* is invalid - use ptr instead
define void @f(ptr %a) {
%b = bitcast ptr %a to ptr*
ret void
}