Commit 575a6235 by Tristan Gingold

vms-c.c (vms_construct_include_filename): New function.

2012-03-09  Tristan Gingold  <gingold@adacore.com>

	* config/vms/vms-c.c (vms_construct_include_filename): New function.
	(vms_c_register_includes): Reference it.

From-SVN: r185133
parent 0d7de0e1
2012-03-09 Tristan Gingold <gingold@adacore.com>
* config/vms/vms-c.c (vms_construct_include_filename): New function.
(vms_c_register_includes): Reference it.
2012-03-09 Andrew Pinski <apinski@cavium.com> 2012-03-09 Andrew Pinski <apinski@cavium.com>
PR middle-end/51988 PR middle-end/51988
...@@ -7,8 +12,8 @@ ...@@ -7,8 +12,8 @@
value_replacement instead of just the singleton one. value_replacement instead of just the singleton one.
(value_replacement): Change return type to int. Return 0 instead of (value_replacement): Change return type to int. Return 0 instead of
false. false.
Allow the middle basic block to contain more than just the definings Allow the middle basic block to contain more than just the defining
tatement. statement.
Handle non empty middle basic blocks. Handle non empty middle basic blocks.
* Makefile.in (tree-ssa-phiopt.o): Add tree-pretty-print.h. * Makefile.in (tree-ssa-phiopt.o): Add tree-pretty-print.h.
......
...@@ -304,6 +304,36 @@ vms_c_register_pragma (void) ...@@ -304,6 +304,36 @@ vms_c_register_pragma (void)
c_register_pragma (NULL, "__extern_prefix", vms_pragma_extern_prefix); c_register_pragma (NULL, "__extern_prefix", vms_pragma_extern_prefix);
} }
/* Canonicalize the filename (remove directory prefix, force the .h extension),
and append it to the directory to create the path, but don't
turn / into // or // into ///; // may be a namespace escape. */
static char *
vms_construct_include_filename (const char *fname, cpp_dir *dir)
{
size_t dlen, flen;
char *path;
const char *fbasename = lbasename (fname);
size_t i;
dlen = dir->len;
flen = strlen (fbasename) + 2;
path = XNEWVEC (char, dlen + 1 + flen + 1);
memcpy (path, dir->name, dlen);
if (dlen && !IS_DIR_SEPARATOR (path[dlen - 1]))
path[dlen++] = '/';
for (i = 0; i < flen; i++)
if (fbasename[i] == '.')
break;
else
path[dlen + i] = TOLOWER (fbasename[i]);
path[dlen + i + 0] = '.';
path[dlen + i + 1] = 'h';
path[dlen + i + 2] = 0;
return path;
}
/* Standard modules list. */ /* Standard modules list. */
static const char * const vms_std_modules[] = { "rtldef", "starlet_c", NULL }; static const char * const vms_std_modules[] = { "rtldef", "starlet_c", NULL };
...@@ -341,7 +371,7 @@ vms_c_register_includes (const char *sysroot, ...@@ -341,7 +371,7 @@ vms_c_register_includes (const char *sysroot,
p->next = NULL; p->next = NULL;
p->name = path; p->name = path;
p->sysp = 1; p->sysp = 1;
p->construct = 0; p->construct = vms_construct_include_filename;
p->user_supplied_p = 0; p->user_supplied_p = 0;
add_cpp_dir_path (p, SYSTEM); add_cpp_dir_path (p, SYSTEM);
} }
......
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