[LLVMdev] "grep -w" irregularity

Daniel Berlin dberlin at dberlin.org
Tue Dec 30 19:36:11 PST 2008


On Tue, Dec 30, 2008 at 8:59 PM, Scott Michel <scottm at aero.org> wrote:
> On Dec 30, 2008, at 5:47 PM, Chris Lattner wrote:
>>
>> On Dec 30, 2008, at 5:24 PM, Scott Michel wrote:
>>
>>> Chris:
>>>
>>> On my _local_ x86_64 Ubuntu 7.10 machine, the shift_ops.ll is an
>>> unexpected success (i.e., "grep -w shlh %t1.s | count 9" succeeds.)
>>>
>>> I get the same unexpected success on my x86_64 Mac 10.4.11.
>>>
>>> On the x86_64 buildbot, the same test fails. The culprit is grep,
>>> evidently. It's just that simple.
>>
>> Not necessarily.  That builder could be getting a different .s file
>> from LLC.
>
> Given that I have an x86_64 machine here and the buildbot is x86_64,
> and given that my local x86_64 machine "unexpectedly" succeeds, I'm
> less inclined to suspect LLC at this point.
>
> Granted, I'm probably not running the same Linux distribution that
> the buildbot is running. But still, my local Linux x86_64 box
> succeeds where the buildbot fails, using the same svn version (i.e.,
> no diffs between the LLVM repo and my local copy.)

The buildbot is running 8.04 of ubuntu.
This actually does appear to be a bug in grep.

The grep -w command on the buildbot produces the following output:

	shlh	$3, $3, $4
	shlh	$3, $4, $3
	shlh	$3, $3, $4
	shlh	$3, $4, $3
	shlh	$3, $3, $4
	shlh	$3, $4, $3
	shlh	$3, $4, $3
	shlh	$3, $4, $3
	.size	shlhi_i16_7,.-shlhi_i16_7
	shlh	$3, $4, $3

man grep says the following for -w:

  -w, --word-regexp
              Select  only  those  lines  containing  matches  that form whole
              words.  The test is that the matching substring must  either  be
              at  the  beginning  of  the  line,  or  preceded  by  a non-word
              constituent character.  Similarly, it must be either at the  end
              of  the  line  or  followed by a non-word constituent character.
              Word-constituent  characters  are  letters,  digits,   and   the
              underscore.


Clearly, it does not match the ending criteria since neither of the
matches on the .size line are followed by non-word constituent
characters or eol.



More information about the llvm-dev mailing list