From 040f758e3abc75bdf6ddb1ce7bea1e1ed1293ccf Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 25 Apr 2009 21:26:00 +0000 Subject: [PATCH] testcase and asmparser fix for PR4066 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70080 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AsmParser/LLParser.cpp | 7 +++++-- test/Assembler/2009-04-25-AliasGEP.ll | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 test/Assembler/2009-04-25-AliasGEP.ll diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp index af309926afd..a2edf050508 100644 --- a/lib/AsmParser/LLParser.cpp +++ b/lib/AsmParser/LLParser.cpp @@ -357,7 +357,9 @@ bool LLParser::ParseNamedGlobal() { /// ParseAlias: /// ::= GlobalVar '=' OptionalVisibility 'alias' OptionalLinkage Aliasee /// Aliasee -/// ::= TypeAndValue | 'bitcast' '(' TypeAndValue 'to' Type ')' +/// ::= TypeAndValue +/// ::= 'bitcast' '(' TypeAndValue 'to' Type ')' +/// ::= 'getelementptr' '(' ... ')' /// /// Everything through visibility has already been parsed. /// @@ -379,7 +381,8 @@ bool LLParser::ParseAlias(const std::string &Name, LocTy NameLoc, Constant *Aliasee; LocTy AliaseeLoc = Lex.getLoc(); - if (Lex.getKind() != lltok::kw_bitcast) { + if (Lex.getKind() != lltok::kw_bitcast && + Lex.getKind() != lltok::kw_getelementptr) { if (ParseGlobalTypeAndValue(Aliasee)) return true; } else { // The bitcast dest type is not present, it is implied by the dest type. diff --git a/test/Assembler/2009-04-25-AliasGEP.ll b/test/Assembler/2009-04-25-AliasGEP.ll new file mode 100644 index 00000000000..6d07208defe --- /dev/null +++ b/test/Assembler/2009-04-25-AliasGEP.ll @@ -0,0 +1,8 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis +; PR4066 +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128" +target triple = "i386-apple-darwin9" + %struct.i2c_device_id = type { } +@w83l785ts_id = internal constant [0 x %struct.i2c_device_id] zeroinitializer, align 1 ; <[0 x %struct.i2c_device_id]*> [#uses=1] + +@__mod_i2c_device_table = alias getelementptr ([0 x %struct.i2c_device_id]* @w83l785ts_id, i32 0, i32 0) ; <%struct.i2c_device_id*> [#uses=0]