This commit is contained in:
Tom Rodriguez 2008-06-17 11:32:42 -07:00
commit 31d647daea
2 changed files with 16 additions and 1 deletions

View File

@ -36,6 +36,7 @@ public class Database {
private FileList outerFiles; private FileList outerFiles;
private FileList indivIncludes; private FileList indivIncludes;
private FileList grandInclude; // the results for the grand include file private FileList grandInclude; // the results for the grand include file
private HashMap<String,String> platformDepFiles;
private long threshold; private long threshold;
private int nOuterFiles; private int nOuterFiles;
private int nPrecompiledFiles; private int nPrecompiledFiles;
@ -57,6 +58,7 @@ public class Database {
outerFiles = new FileList("outerFiles", plat); outerFiles = new FileList("outerFiles", plat);
indivIncludes = new FileList("IndivIncludes", plat); indivIncludes = new FileList("IndivIncludes", plat);
grandInclude = new FileList(plat.getGIFileTemplate().nameOfList(), plat); grandInclude = new FileList(plat.getGIFileTemplate().nameOfList(), plat);
platformDepFiles = new HashMap<String,String>();
threshold = t; threshold = t;
nOuterFiles = 0; nOuterFiles = 0;
@ -209,6 +211,10 @@ public class Database {
FileList p = allFiles.listForFile(includer); FileList p = allFiles.listForFile(includer);
p.setPlatformDependentInclude(pdName.dirPreStemSuff()); p.setPlatformDependentInclude(pdName.dirPreStemSuff());
// Record the implicit include of this file so that the
// dependencies for precompiled headers can mention it.
platformDepFiles.put(newIncluder, includer);
// Add an implicit dependency on platform // Add an implicit dependency on platform
// specific file for the generic file // specific file for the generic file
@ -408,6 +414,12 @@ public class Database {
for (Iterator iter = grandInclude.iterator(); iter.hasNext(); ) { for (Iterator iter = grandInclude.iterator(); iter.hasNext(); ) {
FileList list = (FileList) iter.next(); FileList list = (FileList) iter.next();
gd.println(list.getName() + " \\"); gd.println(list.getName() + " \\");
String platformDep = platformDepFiles.get(list.getName());
if (platformDep != null) {
// make sure changes to the platform dependent file will
// cause regeneration of the pch file.
gd.println(platformDep + " \\");
}
} }
gd.println(); gd.println();
gd.println(); gd.println();

View File

@ -45,10 +45,13 @@ Node *SubNode::Identity( PhaseTransform *phase ) {
return in(2)->in(2); return in(2)->in(2);
} }
// Convert "(X+Y) - Y" into X // Convert "(X+Y) - Y" into X and "(X+Y) - X" into Y
if( in(1)->Opcode() == Op_AddI ) { if( in(1)->Opcode() == Op_AddI ) {
if( phase->eqv(in(1)->in(2),in(2)) ) if( phase->eqv(in(1)->in(2),in(2)) )
return in(1)->in(1); return in(1)->in(1);
if (phase->eqv(in(1)->in(1),in(2)))
return in(1)->in(2);
// Also catch: "(X + Opaque2(Y)) - Y". In this case, 'Y' is a loop-varying // Also catch: "(X + Opaque2(Y)) - Y". In this case, 'Y' is a loop-varying
// trip counter and X is likely to be loop-invariant (that's how O2 Nodes // trip counter and X is likely to be loop-invariant (that's how O2 Nodes
// are originally used, although the optimizer sometimes jiggers things). // are originally used, although the optimizer sometimes jiggers things).