[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] C undefined behavior fix


Erik Trulsson <ertr1013 _at_ student.uu.se> writes:

> The compiler is not free to do only one load there if v is declared
> volatile.
> The relevant part of the C standard would be the following paragraph:
>
> [6.7.3]
>        [#6] An object  that  has  volatile-qualified  type  may  be
>        modified in ways unknown to the implementation or have other
>        unknown side effects.  Therefore any expression referring to
>        such  an object shall be evaluated strictly according to the
>        rules of the abstract  machine,  as  described  in  5.1.2.3.
>        Furthermore,  at  every sequence point the value last stored
>        in the object  shall  agree  with  that  prescribed  by  the
>        abstract  machine, except as modified by the unknown factors
>        mentioned previously.105)  What constitutes an access to  an
>        object  that  has volatile-qualified type is implementation-
>        defined.

And 5.1.2.3 states:

       [#2]  Accessing  a  volatile  object,  modifying  an object,
       modifying a file, or calling a function  that  does  any  of
       those  operations are all side effects,11) which are changes
       in the state of the execution environment.  Evaluation of an
       expression  may  produce side effects.  At certain specified
       points in the execution sequence called sequence points, all
       side  effects  of previous evaluations shall be complete and
       no side effects of subsequent evaluations shall  have  taken
       place.   (A summary of the sequence points is given in annex
       C.)

So it seems to be obvious ;-) that the compiler must not remove
seemingly unnecessary references to volatile objects.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo _at_ vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
References: