forked from OSchip/llvm-project
Fix crash with conversion to an address-space-qualified pointer. Bug
reported on cfe-dev by Cédric Venet. Note that I seriously doubt that this perticular construct is useful, though: it's a pointer in an alternate address space pointing into unqualified address space. llvm-svn: 52076
This commit is contained in:
parent
7dbab8a6a1
commit
3ce7b20590
|
@ -632,7 +632,7 @@ public:
|
|||
|
||||
// Handle pointer conversions next: pointers can only be converted to/from
|
||||
// other pointers and integers.
|
||||
if (isa<PointerType>(DstType)) {
|
||||
if (isa<llvm::PointerType>(DstTy)) {
|
||||
// The source value may be an integer, or a pointer.
|
||||
if (isa<llvm::PointerType>(Src->getType()))
|
||||
return llvm::ConstantExpr::getBitCast(Src, DstTy);
|
||||
|
@ -640,7 +640,7 @@ public:
|
|||
return llvm::ConstantExpr::getIntToPtr(Src, DstTy);
|
||||
}
|
||||
|
||||
if (isa<PointerType>(SrcType)) {
|
||||
if (isa<llvm::PointerType>(Src->getType())) {
|
||||
// Must be an ptr to int cast.
|
||||
assert(isa<llvm::IntegerType>(DstTy) && "not ptr->int?");
|
||||
return llvm::ConstantExpr::getPtrToInt(Src, DstTy);
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
// RUN: clang -emit-llvm < %s
|
||||
|
||||
volatile unsigned char* const __attribute__((address_space(1))) serial_ctrl = 0x02;
|
||||
|
Loading…
Reference in New Issue