ich dies kompilieren:Mit Clang und LLVM
int main(){
}
Mit Klirren, diese Befehlszeile:
clang++.exe -S -o %OUTFILE%.clang -emit-llvm %INFILE% -I. -I%INCLUDE_PATH% -std=c++14 -ftemplate-depth=1000
Was mich llvm Byte-Code gibt.
Dann benutze ich llc
wie so, die Byte-Code in C-Code zu konvertieren:
llc "%IN_FILE%.clang" -march=c -o foo.c
Und diesen Fehler:
error: unterminated attribute group
attributes #0 = { norecurse nounwind uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
Was mache ich falsch? Diese
ist, was Klirren ++ mir gibt:
; ModuleID = 'C:\Users\Owner\Documents\C++\SVN\prototypeInd\util\StaticBigInt.cpp'
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc18.0.0"
; Function Attrs: norecurse nounwind readnone uwtable
define i32 @main() #0 {
entry:
ret i32 0
}
attributes #0 = { norecurse nounwind readnone uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
!llvm.module.flags = !{!0}
!llvm.ident = !{!1}
!0 = !{i32 1, !"PIC Level", i32 2}
!1 = !{!"clang version 3.8.0 (branches/release_38)"}
Hinweis: Ich verwende clang
Version 3.8 und llc
Version 3.4
Es sieht wie eine Versionsinkompatibilität zwischen 'clang' und' llc' aus. Können Sie eine komplette "% IN_FILE% .clang" posten? – deniss
@deniss Sicher ... ein Moment – DarthRubik
Ihr Code ist in Ordnung mit der aktuellen 'llc' Version, außer dass [c backend in 3.1 entfernt wurde] (http://llvm.org/releases/3.1/docs/ReleaseNotes). html # whatsnew) – deniss