summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenModule.h
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2008-06-01 07:38:42 +0000
committerDuncan Sands <baldrick@free.fr>2008-06-01 07:38:42 +0000
commit0397cd2ec4356d77f044977c3e12600399e6f109 (patch)
tree352afb22c371548af31087e7b61a83ad95cf9f7f /clang/lib/CodeGen/CodeGenModule.h
parentbdedc148a8b7fda14f506e4247fb278ef5719f33 (diff)
downloadbcm5719-llvm-0397cd2ec4356d77f044977c3e12600399e6f109.tar.gz
bcm5719-llvm-0397cd2ec4356d77f044977c3e12600399e6f109.zip
When simplifying a call to a bitcast function, tighten up
the conditions for performing the transform when only the function declaration is available: no longer allow turning i32 into i64 for example. Only allow changing between pointer types, and between pointer types and integers of the same size. For return values ptr -> intptr was already allowed; I added ptr -> ptr and intptr -> ptr while there. As shown by a recent objc testcase, changing the way parameters/return values are passed can be fatal when calling code written in assembler that directly manipulates call arguments and return values unless the transform has no impact on the way they are passed at the codegen level. While it is possible to imagine an ABI that treats integers of pointer size differently to pointers, I don't think LLVM supports any so the transform should now be safe while still being useful. llvm-svn: 51834
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud