aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGClass.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-06-14 01:37:52 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-06-14 01:37:52 +0000
commitea5e4da116aae0eb932d32b73e7cec2f04932248 (patch)
tree8bc1c234b5ee38e8dffdb8fe46ce55196d9666de /lib/CodeGen/CGClass.cpp
parentbd32beee8a0f22e1d5245112f5e34ad4669994ae (diff)
The LLVM IR representation of byval arguments has a rather strange property: if the alignment of an argument to a call is less than the specified byval alignment for that argument, there is no way to specify the alignment of the implied copy. Therefore, we must ensure that the alignment of the argument is at least the byval alignment. To do this, we have to mess with the alignment of relevant alloca's in some cases, and insert a copy that conceptually shouldn't be necessary in some cases.
This patch tries relatively hard to avoid creating an extra copy if it can be avoided (see test3 in the included testcase), but it is not possible to avoid in some cases (like test2 in the included testcase). rdar://9483886 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132957 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGClass.cpp')
0 files changed, 0 insertions, 0 deletions