diff mbox

PR 53249: Multiple address modes for same address space

Message ID CAMe9rOquZzzK3g2N0O0EtbyE5yAJCLLkr_nwhiEKt+UHMn1USA@mail.gmail.com
State New
Headers show

Commit Message

H.J. Lu May 9, 2012, 1:34 p.m. UTC
On Tue, May 8, 2012 at 4:05 PM, Richard Henderson <rth@redhat.com> wrote:
> On 05/06/2012 11:41 AM, Richard Sandiford wrote:
>>
>>        PR middle-end/53249
>>        * dwarf2out.h (get_address_mode): Move declaration to...
>>        * rtl.h: ...here.
>>        * dwarf2out.c (get_address_mode): Move definition to...
>>        * rtlanal.c: ...here.
>>        * var-tracking.c (get_address_mode): Delete.
>>        * combine.c (find_split_point): Use get_address_mode instead of
>>        targetm.addr_space.address_mode.
>>        * cselib.c (cselib_record_sets): Likewise.
>>        * dse.c (canon_address, record_store): Likewise.
>>        * emit-rtl.c (adjust_address_1, offset_address): Likewise.
>>        * expr.c (move_by_pieces, emit_block_move_via_loop,
>> store_by_pieces)
>>        (store_by_pieces_1, expand_assignment, store_expr,
>> store_constructor)
>>        (expand_expr_real_1): Likewise.
>>        * ifcvt.c (noce_try_cmove_arith): Likewise.
>>        * optabs.c (maybe_legitimize_operand_same_code): Likewise.
>>        * reload.c (find_reloads): Likewise.
>>        * sched-deps.c (sched_analyze_1, sched_analyze_2): Likewise.
>>        * sel-sched-dump.c (debug_mem_addr_value): Likewise.
>
>
> ok.
>
>
> r~

I checked in this testcase.

Thanks.
diff mbox

Patch

diff --git a/gcc/testsuite/gcc.target/i386/pr53249.c
b/gcc/testsuite/gcc.target/i386/pr53249.c
new file mode 100644
index 0000000..9eab8bc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr53249.c
@@ -0,0 +1,25 @@ 
+/* { dg-do compile { target { ! { ia32 } } } } */
+/* { dg-options "-O2 -mx32 -ftls-model=initial-exec -maddress-mode=short" } */
+
+struct gomp_task
+{
+  struct gomp_task *parent;
+};
+
+struct gomp_thread
+{
+  int foo1;
+  struct gomp_task *task;
+};
+
+extern __thread struct gomp_thread gomp_tls_data;
+
+void
+__attribute__ ((noinline))
+gomp_end_task (void)
+{
+  struct gomp_thread *thr = &gomp_tls_data;
+  struct gomp_task *task = thr->task;
+
+  thr->task = task->parent;
+}