]> granicus.if.org Git - clang/commit
Use the correct address space when bitcasting func pointer to int pointer
authorDylan McKay <me@dylanmckay.io>
Fri, 9 Nov 2018 19:42:05 +0000 (19:42 +0000)
committerDylan McKay <me@dylanmckay.io>
Fri, 9 Nov 2018 19:42:05 +0000 (19:42 +0000)
commit027e892af88b4f3310e8d8d1b603f149a5708e8d
tree663bfabb40b71f8852e75f0b8c6750f1ab428fe2
parent29b9417c18f6a4b529fe7ced36cc3f575e56ca51
Use the correct address space when bitcasting func pointer to int pointer

When we cast a function pointer to an int pointer, at some pointer later
it gets bitcasted back to a function and called.

In backends that have a nonzero program memory address space specified
in the data layout, the old code would lose the address space data. When
LLVM later attempted to generate the bitcast from i8* to i8(..)*
addrspace(1), it would fail because the pointers are not in the same
address space.

With this patch, the address space of the function will carry on to the
address space of the i8* pointer. This is because all function pointers
in Harvard architectures need to be assigned to the correct address
space.

This has no effect to any in-tree backends except AVR.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@346548 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CGException.cpp