summaryrefslogtreecommitdiffstats
path: root/bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx')
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx18
1 files changed, 10 insertions, 8 deletions
diff --git a/bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx
index a85d756a823f..ae9f0b889ebc 100644
--- a/bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx
@@ -68,9 +68,9 @@ void callVirtualMethod( void * pAdjustedThisPtr,
// never called
if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something
- volatile long o0 = 0, o1 = 0; // for register returns
- volatile double f0d = 0;
- volatile float f0f = 0;
+ long o0, o1; // for register returns
+ double f0d;
+ float f0f;
volatile long long saveReg[7];
__asm__ (
@@ -229,12 +229,14 @@ void callVirtualMethod( void * pAdjustedThisPtr,
"ldd [%%l7], %%o4\n\t"
"add %%l7, 8, %%l7\n\t"
"ldd [%%l7], %%l6\n\t"
- : :
- "m"(o0),
- "m"(o1),
- "m"(f0d),
- "m"(f0f),
+ :
+ "=m"(o0),
+ "=m"(o1),
+ "=m"(f0d),
+ "=m"(f0f),
+ :
"r"(&saveReg[0])
+ : "memory"
);
switch( eReturnType )
{