Commit 1eb50e95 by Christian Bruel Committed by Christian Bruel

arm.md (*call_value_symbol): Fix operand for interworking.

2015-09-17  Christian Bruel  <christian.bruel@st.com>

	* config/arm/arm.md (*call_value_symbol): Fix operand for interworking.

From-SVN: r227880
parent 4e9a8214
2015-09-17 Christian Bruel <christian.bruel@st.com>
* config/arm/arm.md (*call_value_symbol): Fix operand for interworking.
2015-09-17 Richard Henderson <rth@redhat.com> 2015-09-17 Richard Henderson <rth@redhat.com>
PR libstdc++/65913 PR libstdc++/65913
...@@ -7891,7 +7891,7 @@ ...@@ -7891,7 +7891,7 @@
/* Switch mode now when possible. */ /* Switch mode now when possible. */
if (SYMBOL_REF_DECL (op) && !TREE_PUBLIC (SYMBOL_REF_DECL (op)) if (SYMBOL_REF_DECL (op) && !TREE_PUBLIC (SYMBOL_REF_DECL (op))
&& arm_arch5 && arm_change_mode_p (SYMBOL_REF_DECL (op))) && arm_arch5 && arm_change_mode_p (SYMBOL_REF_DECL (op)))
return NEED_PLT_RELOC ? \"blx%?\\t%a0(PLT)\" : \"blx%?\\t(%a0)\"; return NEED_PLT_RELOC ? \"blx%?\\t%a1(PLT)\" : \"blx%?\\t(%a1)\";
return NEED_PLT_RELOC ? \"bl%?\\t%a1(PLT)\" : \"bl%?\\t%a1\"; return NEED_PLT_RELOC ? \"bl%?\\t%a1(PLT)\" : \"bl%?\\t%a1\";
}" }"
......
2015-09-17 Christian Bruel <christian.bruel@st.com>
* gcc.target/arm/attr_thumb-static2.c: New test.
2015-09-17 Eric Botcazou <ebotcazou@adacore.com> 2015-09-17 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/overflow_sum3.adb: New test. * gnat.dg/overflow_sum3.adb: New test.
......
/* Check that interwork between static functions is correctly resolved. */
/* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */
/* { dg-options "-O0 -march=armv7-a -mfloat-abi=hard" } */
/* { dg-do compile } */
struct _NSPoint
{
float x;
float y;
};
typedef struct _NSPoint NSPoint;
static NSPoint
__attribute__ ((target("arm")))
NSMakePoint (float x, float y)
{
NSPoint point;
point.x = x;
point.y = y;
return point;
}
static NSPoint
__attribute__ ((target("thumb")))
RelativePoint (NSPoint point, NSPoint refPoint)
{
return NSMakePoint (refPoint.x + point.x, refPoint.y + point.y);
}
NSPoint
__attribute__ ((target("arm")))
g(NSPoint refPoint)
{
float pointA, pointB;
return RelativePoint (NSMakePoint (0, pointA), refPoint);
}
/* { dg-final { scan-assembler-times "blx" 2 } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment