Bug 47926 - [x32] nested function pointer doesn't work
Summary: [x32] nested function pointer doesn't work
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.6.0
: P3 normal
Target Milestone: 4.7.0
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-02-28 17:11 UTC by H.J. Lu
Modified: 2011-07-26 22:12 UTC (History)
0 users

See Also:
Host:
Target: x32
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2011-02-28 17:11:21 UTC
[hjl@gnu-6 ilp32-25]$ cat x.c
void callme (void (*callback) (void));
int
tryme (void)
{
  int ok = 0;
  void callback (void) { ok = 1; }
  callme (&callback);
  return ok;
}
[hjl@gnu-6 ilp32-25]$ make
/export/build/gnu/gcc-x32/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc-x32/build-x86_64-linux/gcc/ -S -o x.s -mx32 -O2 -g  x.c
x.c: In function ‘tryme’:
x.c:3:1: internal compiler error: in emit_move_insn, at expr.c:3355
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make: *** [x.s] Error 1
[hjl@gnu-6 ilp32-25]$
Comment 1 hjl@gcc.gnu.org 2011-02-28 19:12:24 UTC
Author: hjl
Date: Mon Feb 28 19:12:18 2011
New Revision: 170571

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=170571
Log:
Always use ptr_mode on address.

2011-02-28  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/47926
	* config/i386/i386.c (ix86_trampoline_init): Always use ptr_mode
	on address.

Modified:
    branches/x32/gcc/ChangeLog.x32
    branches/x32/gcc/config/i386/i386.c
Comment 2 hjl@gcc.gnu.org 2011-03-01 17:31:35 UTC
Author: hjl
Date: Tue Mar  1 17:31:31 2011
New Revision: 170598

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=170598
Log:
Use movl to load trampoline address for x32.

2011-03-01  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/47926
	* config/i386/i386.c (ix86_trampoline_init): Use movl instead
	of movabs for x32.

Modified:
    branches/x32/gcc/ChangeLog.x32
    branches/x32/gcc/config/i386/i386.c
Comment 3 Uroš Bizjak 2011-07-26 22:12:34 UTC
Fixed.