The second equality here: (in lib/Bitcode/Reader/BitcodeReader.cpp) AtomicOrdering Ordering = GetDecodedOrdering(Record[OpNum+2]); if (Ordering == NotAtomic || Ordering == Release || Ordering == AcquireRelease) return Error("Invalid STOREATOMIC record"); Is failing on this assembly, which was generated by Clang: store atomic i32 0, i32* @mutex release, align 4 Is this a typo or is there some reason why this assembly is invalid? Thanks, - pdox
On Sat, Sep 17, 2011 at 1:00 PM, David Meyer <pdox at google.com> wrote:> The second equality here: (in lib/Bitcode/Reader/BitcodeReader.cpp) > > AtomicOrdering Ordering = GetDecodedOrdering(Record[OpNum+2]); > if (Ordering == NotAtomic || Ordering == Release || > Ordering == AcquireRelease) > return Error("Invalid STOREATOMIC record"); > > Is failing on this assembly, which was generated by Clang: > > store atomic i32 0, i32* @mutex release, align 4 > > Is this a typo or is there some reason why this assembly is invalid?Typo; that should read "Ordering == NotAtomic || Ordering == Acquire || Ordering == AcquireRelease". I'll commit a fix soon. -Eli
On Sat, Sep 17, 2011 at 1:34 PM, Eli Friedman <eli.friedman at gmail.com> wrote:> On Sat, Sep 17, 2011 at 1:00 PM, David Meyer <pdox at google.com> wrote: >> The second equality here: (in lib/Bitcode/Reader/BitcodeReader.cpp) >> >> AtomicOrdering Ordering = GetDecodedOrdering(Record[OpNum+2]); >> if (Ordering == NotAtomic || Ordering == Release || >> Ordering == AcquireRelease) >> return Error("Invalid STOREATOMIC record"); >> >> Is failing on this assembly, which was generated by Clang: >> >> store atomic i32 0, i32* @mutex release, align 4 >> >> Is this a typo or is there some reason why this assembly is invalid? > > Typo; that should read "Ordering == NotAtomic || Ordering == Acquire > || Ordering == AcquireRelease". I'll commit a fix soon.r140040. -Eli