* [Bug rtl-optimization/49169] ARM: optimisations strip the Thumb/ARM mode bit off function pointers
2011-05-26 2:23 [Bug rtl-optimization/49169] New: ARM: optimisations strip the Thumb/ARM mode bit off function pointers michael.hope at linaro dot org
@ 2011-05-26 7:59 ` mikpe at it dot uu.se
2011-05-26 8:22 ` rguenth at gcc dot gnu.org
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: mikpe at it dot uu.se @ 2011-05-26 7:59 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49169
Mikael Pettersson <mikpe at it dot uu.se> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |mikpe at it dot uu.se
--- Comment #1 from Mikael Pettersson <mikpe at it dot uu.se> 2011-05-26 07:56:05 UTC ---
Try passing the function pointer through an opaque identity transform:
asm("" : "=r"(p) : "0"(main));
if ((uintptr_t)p & 1) /* do thumb case */
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/49169] ARM: optimisations strip the Thumb/ARM mode bit off function pointers
2011-05-26 2:23 [Bug rtl-optimization/49169] New: ARM: optimisations strip the Thumb/ARM mode bit off function pointers michael.hope at linaro dot org
2011-05-26 7:59 ` [Bug rtl-optimization/49169] " mikpe at it dot uu.se
@ 2011-05-26 8:22 ` rguenth at gcc dot gnu.org
2011-05-26 8:48 ` rguenth at gcc dot gnu.org
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu.org @ 2011-05-26 8:22 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49169
--- Comment #2 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-05-26 08:20:22 UTC ---
There are several places in the compiler where we assume DECL_ALIGN
constraints the lower bits of the address of the DECL.
See several similar bugs in the past (PR47239 comes to my mind).
fold-const.c:get_pointer_modulus_and_residue looks suspicious to me here,
so you might want to try
Index: gcc/fold-const.c
===================================================================
--- gcc/fold-const.c (revision 174266)
+++ gcc/fold-const.c (working copy)
@@ -9219,7 +9219,8 @@ get_pointer_modulus_and_residue (tree ex
*residue = 0;
code = TREE_CODE (expr);
- if (code == ADDR_EXPR)
+ if (code == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND (expr, 0)) != FUNCTION_DECL)
{
unsigned int bitalign;
bitalign = get_object_alignment_1 (TREE_OPERAND (expr, 0), residue);
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/49169] ARM: optimisations strip the Thumb/ARM mode bit off function pointers
2011-05-26 2:23 [Bug rtl-optimization/49169] New: ARM: optimisations strip the Thumb/ARM mode bit off function pointers michael.hope at linaro dot org
2011-05-26 7:59 ` [Bug rtl-optimization/49169] " mikpe at it dot uu.se
2011-05-26 8:22 ` rguenth at gcc dot gnu.org
@ 2011-05-26 8:48 ` rguenth at gcc dot gnu.org
2011-06-07 7:33 ` rsandifo at gcc dot gnu.org
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu.org @ 2011-05-26 8:48 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49169
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-05-26 08:30:21 UTC ---
Btw, we finally should introduce a target hook for this I think.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/49169] ARM: optimisations strip the Thumb/ARM mode bit off function pointers
2011-05-26 2:23 [Bug rtl-optimization/49169] New: ARM: optimisations strip the Thumb/ARM mode bit off function pointers michael.hope at linaro dot org
` (2 preceding siblings ...)
2011-05-26 8:48 ` rguenth at gcc dot gnu.org
@ 2011-06-07 7:33 ` rsandifo at gcc dot gnu.org
2011-06-27 9:34 ` rsandifo at gcc dot gnu.org
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: rsandifo at gcc dot gnu.org @ 2011-06-07 7:33 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49169
rsandifo@gcc.gnu.org <rsandifo at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rsandifo at gcc dot gnu.org
--- Comment #4 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> 2011-06-07 07:32:37 UTC ---
(In reply to comment #3)
> Btw, we finally should introduce a target hook for this I think.
Thanks for the patch in comment #2. How strongly do you feel
about the hook though? In PR35705, it sounded like a lot of
targets actually need an opt-out for functions, either because
of ISA encoding (ARM, MIPS, SH) or because of function
descriptors (IA-64, PA, PPC).
I notice that ARM and mcore also have optimisation-dependent
FUNCTION_BOUNDARYs. Arguably (very arguably) that's a bug,
and they should be using align_functions instead. But if we
make a deliberate decision to honour DECL_ALIGN on functions,
then FUNCTION_BOUNDARY really will be an ABI property.
I'm just worried that the combination of that and the need
to identify exactly which targets should define the hook
might be more hassle than the optimisation is worth.
You said in that bug that masking function addresses isn't
likely to be a common operation, and TBH, I still agree.
Richard
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/49169] ARM: optimisations strip the Thumb/ARM mode bit off function pointers
2011-05-26 2:23 [Bug rtl-optimization/49169] New: ARM: optimisations strip the Thumb/ARM mode bit off function pointers michael.hope at linaro dot org
` (3 preceding siblings ...)
2011-06-07 7:33 ` rsandifo at gcc dot gnu.org
@ 2011-06-27 9:34 ` rsandifo at gcc dot gnu.org
2011-07-08 15:05 ` ramana at gcc dot gnu.org
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: rsandifo at gcc dot gnu.org @ 2011-06-27 9:34 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49169
--- Comment #5 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> 2011-06-27 09:33:10 UTC ---
Author: rsandifo
Date: Mon Jun 27 09:33:06 2011
New Revision: 175427
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=175427
Log:
gcc/
2011-07-24 Richard Guenther <rguenther@suse.de>
PR tree-optimization/49169
* fold-const.c (get_pointer_modulus_and_residue): Don't rely on
the alignment of function decls.
gcc/testsuite/
2011-07-24 Michael Hope <michael.hope@linaro.org>
Richard Sandiford <richard.sandiford@linaro.org>
PR tree-optimization/49169
* gcc.dg/torture/pr49169.c: New test.
Added:
trunk/gcc/testsuite/gcc.dg/torture/pr49169.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/fold-const.c
trunk/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/49169] ARM: optimisations strip the Thumb/ARM mode bit off function pointers
2011-05-26 2:23 [Bug rtl-optimization/49169] New: ARM: optimisations strip the Thumb/ARM mode bit off function pointers michael.hope at linaro dot org
` (4 preceding siblings ...)
2011-06-27 9:34 ` rsandifo at gcc dot gnu.org
@ 2011-07-08 15:05 ` ramana at gcc dot gnu.org
2011-09-19 9:00 ` jye2 at gcc dot gnu.org
2012-07-31 1:00 ` ramana at gcc dot gnu.org
7 siblings, 0 replies; 9+ messages in thread
From: ramana at gcc dot gnu.org @ 2011-07-08 15:05 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49169
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |wrong-code
Status|UNCONFIRMED |NEW
Last reconfirmed| |2011.07.08 15:04:22
CC| |ramana at gcc dot gnu.org
Ever Confirmed|0 |1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/49169] ARM: optimisations strip the Thumb/ARM mode bit off function pointers
2011-05-26 2:23 [Bug rtl-optimization/49169] New: ARM: optimisations strip the Thumb/ARM mode bit off function pointers michael.hope at linaro dot org
` (5 preceding siblings ...)
2011-07-08 15:05 ` ramana at gcc dot gnu.org
@ 2011-09-19 9:00 ` jye2 at gcc dot gnu.org
2012-07-31 1:00 ` ramana at gcc dot gnu.org
7 siblings, 0 replies; 9+ messages in thread
From: jye2 at gcc dot gnu.org @ 2011-09-19 9:00 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49169
--- Comment #6 from jye2 at gcc dot gnu.org 2011-09-19 08:13:09 UTC ---
Author: jye2
Date: Mon Sep 19 08:13:02 2011
New Revision: 178955
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=178955
Log:
2011-09-19 Jiangning Liu <jiangning.liu@arm.com>
Backport r175427 from mainline
2011-06-27 Richard Guenther <rguenther@suse.de>
PR tree-optimization/49169
* fold-const.c (get_pointer_modulus_and_residue): Don't rely on
the alignment of function decls.
2011-09-19 Jiangning Liu <jiangning.liu@arm.com>
Backport r175208 from mainline
2011-06-20 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
PR target/49385
* config/arm/thumb2.md (*thumb2_movhi_insn): Make sure atleast
one of the operands is a register.
2011-09-19 Jiangning Liu <jiangning.liu@arm.com>
Backport r174803 from mainline
2011-06-08 Julian Brown <julian@codesourcery.com>
* config/arm/arm.c (arm_libcall_uses_aapcs_base): Use correct ABI
for double-precision helper functions in hard-float mode if only
single-precision arithmetic is supported in hardware.
Modified:
branches/ARM/embedded-4_6-branch/gcc/ChangeLog.arm
branches/ARM/embedded-4_6-branch/gcc/config/arm/arm.c
branches/ARM/embedded-4_6-branch/gcc/config/arm/thumb2.md
branches/ARM/embedded-4_6-branch/gcc/fold-const.c
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/49169] ARM: optimisations strip the Thumb/ARM mode bit off function pointers
2011-05-26 2:23 [Bug rtl-optimization/49169] New: ARM: optimisations strip the Thumb/ARM mode bit off function pointers michael.hope at linaro dot org
` (6 preceding siblings ...)
2011-09-19 9:00 ` jye2 at gcc dot gnu.org
@ 2012-07-31 1:00 ` ramana at gcc dot gnu.org
7 siblings, 0 replies; 9+ messages in thread
From: ramana at gcc dot gnu.org @ 2012-07-31 1:00 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49169
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
Target Milestone|--- |4.7.0
--- Comment #7 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> 2012-07-31 01:00:46 UTC ---
This should be marked FIXED as of 4.7.0 .
Ramana
^ permalink raw reply [flat|nested] 9+ messages in thread