summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/mangle-exprs.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-07-30 04:02:24 +0000
committerChris Lattner <sabre@nondot.org>2010-07-30 04:02:24 +0000
commit8a2f3c778e9dc3aa5d49b3c97f7bc247b004ea3a (patch)
tree6f61cf6f651fab7c5ac4327994f57a60016459d6 /clang/test/CodeGenCXX/mangle-exprs.cpp
parentb8cba97cde9dfd0a5fa7ac9893ae96d075fcfe88 (diff)
downloadbcm5719-llvm-8a2f3c778e9dc3aa5d49b3c97f7bc247b004ea3a.tar.gz
bcm5719-llvm-8a2f3c778e9dc3aa5d49b3c97f7bc247b004ea3a.zip
fix PR5179 and correctly fix PR5831 to not miscompile.
The X86-64 ABI code didn't handle the case when a struct would get classified and turn up as "NoClass INTEGER" for example. This is perfectly possible when the first slot is all padding (e.g. due to empty base classes). In this situation, the first 8-byte doesn't take a register at all, only the second 8-byte does. This fixes this by enhancing the x86-64 abi stuff to allow and handle this case, reverts the broken fix for PR5831, and enhances the target independent stuff to be able to handle an argument value in registers being accessed at an offset from the memory value. This is the last x86-64 calling convention related miscompile that I'm aware of. llvm-svn: 109848
Diffstat (limited to 'clang/test/CodeGenCXX/mangle-exprs.cpp')
-rw-r--r--clang/test/CodeGenCXX/mangle-exprs.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/test/CodeGenCXX/mangle-exprs.cpp b/clang/test/CodeGenCXX/mangle-exprs.cpp
index d68425f5a57..7322171856d 100644
--- a/clang/test/CodeGenCXX/mangle-exprs.cpp
+++ b/clang/test/CodeGenCXX/mangle-exprs.cpp
@@ -39,6 +39,6 @@ namespace Casts {
// CHECK: define weak_odr void @_ZN5Casts7static_ILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE
template void static_<4>(void*);
- // CHECK: define weak_odr i8 @_ZN5Casts1fILi6EEENS_1TIXT_EEEv
+ // CHECK: define weak_odr void @_ZN5Casts1fILi6EEENS_1TIXT_EEEv
template T<6> f<6>();
}
OpenPOWER on IntegriCloud