Commit 2eea716d by Jakub Jelinek Committed by Jakub Jelinek

re PR target/41985 (Internal compiler error reported.)

	PR target/41985
	* config/i386/i386.c (get_some_local_dynamic_name): Don't assert
	function contains at least one local dynamic name.
	(print_operand) <case '&'>: Instead output operand lossage diagnostics
	here if that happens.

	* gcc.target/i386/pr41985.c: New test.

From-SVN: r154014
parent e0a42b0f
2009-11-08 Jakub Jelinek <jakub@redhat.com>
PR target/41985
* config/i386/i386.c (get_some_local_dynamic_name): Don't assert
function contains at least one local dynamic name.
(print_operand) <case '&'>: Instead output operand lossage diagnostics
here if that happens.
2009-11-08 Zbigniew Chamski <zbigniew.chamski@gmail.com> 2009-11-08 Zbigniew Chamski <zbigniew.chamski@gmail.com>
Joern Rennecke <amylaar@spamcop.net> Joern Rennecke <amylaar@spamcop.net>
...@@ -11301,7 +11301,7 @@ get_some_local_dynamic_name (void) ...@@ -11301,7 +11301,7 @@ get_some_local_dynamic_name (void)
&& for_each_rtx (&PATTERN (insn), get_some_local_dynamic_name_1, 0)) && for_each_rtx (&PATTERN (insn), get_some_local_dynamic_name_1, 0))
return cfun->machine->some_ld_name; return cfun->machine->some_ld_name;
gcc_unreachable (); return NULL;
} }
/* Meaning of CODE: /* Meaning of CODE:
...@@ -11353,8 +11353,15 @@ print_operand (FILE *file, rtx x, int code) ...@@ -11353,8 +11353,15 @@ print_operand (FILE *file, rtx x, int code)
return; return;
case '&': case '&':
assemble_name (file, get_some_local_dynamic_name ()); {
return; const char *name = get_some_local_dynamic_name ();
if (name == NULL)
output_operand_lossage ("'%%&' used without any "
"local dynamic TLS references");
else
assemble_name (file, name);
return;
}
case 'A': case 'A':
switch (ASSEMBLER_DIALECT) switch (ASSEMBLER_DIALECT)
......
2009-11-08 Jakub Jelinek <jakub@redhat.com>
PR target/41985
* gcc.target/i386/pr41985.c: New test.
2009-11-08 Richard Guenther <rguenther@suse.de> 2009-11-08 Richard Guenther <rguenther@suse.de>
* gcc.dg/torture/pta-escape-1.c: New testcase. * gcc.dg/torture/pta-escape-1.c: New testcase.
......
/* PR target/41985 */
/* { dg-do compile } */
/* { dg-options "" } */
int
main ()
{
int i;
asm volatile ("# %&": : "g" (i)); /* { dg-error "used without any local dynamic TLS references" } */
return 0;
}
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