Page MenuHomePhabricator

Fix Driver/modules.cpp test to work when build directory name contains '.s'
Needs ReviewPublic

Authored by tstellar on Tue, Aug 13, 3:13 PM.

Details

Reviewers
dyung
rsmith
hansw

Event Timeline

tstellar created this revision.Tue, Aug 13, 3:13 PM
Herald added a project: Restricted Project. · View Herald TranscriptTue, Aug 13, 3:13 PM
dyung added a comment.Tue, Aug 13, 3:39 PM

It's probably a pathological case, but wouldn't this still fail if the build directory contained ".s" followed by a space in the name? Something like "build-foo.s bar"?

tstellar updated this revision to Diff 214960.Tue, Aug 13, 4:04 PM

Another attempt to fix this that depends less on the build directory.

dyung added a comment.Tue, Aug 13, 4:35 PM

Taking a step back and thinking about this, the compile command uses "-S", but explicitly specifies the output file to be "%t/module.pcm.o" (even though it is generating an assembly file instead of an object file), could we change the test to just check for "-o {{.*}}module.pcm.o "? That would work in all cases I think except for the extreme corner case where that string was part of the build directory name.

clang/test/Driver/modules.cpp
19

I'm not sure what the regex module{{2*}} is supposed to match, or prevent from matching? Was this intentional?

It seems it would match "module", "module2", "module22", "module222", etc. When would the compiler ever generate anything other than the first? Unless you are trying to protect yourself against a build directory that contains module in the name, but I'm not sure how this helps that...